Sha256: 2b5636a57a7258acb9a11270c11d702b388832ea1a1e2634e9707a06b45cfa52

Contents?: true

Size: 1.29 KB

Versions: 1

Compression:

Stored size: 1.29 KB

Contents

module RbPlusPlus
  module Writers

    # Writes out the code for building the extension.
    # This writer takes care of building the extconf.rb
    # file with the appropriate options.
    class ExtensionWriter < Base

      # List of -I directives
      attr_accessor :includes

      # List of -L directives
      attr_accessor :library_paths

      # List of -l directives
      attr_accessor :libraries

      # Extra CXXFLAGS
      attr_accessor :cxxflags

      # Extra LDFLAGS
      attr_accessor :ldflags

      def write
        extconf = File.join(working_dir, "extconf.rb")

        @includes ||= []

        inc_str = @includes.flatten.uniq.map {|i| "-I#{i}"}.join(" ")
        inc_str += " " + @cxxflags.flatten.join(" ")
        lib_path_str = @library_paths.flatten.uniq.map {|i| "-L#{i}"}.join(" ")
        lib_str = @libraries.flatten.uniq.map {|i| "-l#{i}"}.join(" ")
        lib_str += " " + @ldflags.flatten.join(" ")

        File.open(extconf, "w+") do |file|
          file.puts "require \"rubygems\""
          file.puts "require \"mkmf-rice\""
          file.puts %Q($CPPFLAGS = $CPPFLAGS + " -I#{working_dir} #{inc_str}")
          file.puts %Q($LDFLAGS = $LDFLAGS + " #{lib_path_str} #{lib_str}")
          file.puts "create_makefile(\"#{builder.name}\")"
        end
      end

    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
rbplusplus-0.1.1 lib/rbplusplus/writers/extension.rb