Sha256: d3771e68aca2241c4fa2400cc322da3dfcb0946c1b8b57f8bda8be21f426af7f

Contents?: true

Size: 1.31 KB

Versions: 2

Compression:

Stored size: 1.31 KB

Contents

module Rscons
  module Builders
    # A default RScons builder that knows how to link object files into an
    # executable program.
    class Rscons::Builders::Program < Rscons::Builder
      def default_variables(env)
        {
          'LD' => nil,
          'OBJSUFFIX' => '.o',
          'LIBSUFFIX' => '.a',
          'LDFLAGS' => [],
          'LIBPATH' => [],
          'LIBS' => [],
          'LDCMD' => ['${LD}', '-o', '${_TARGET}', '${LDFLAGS}', '${_SOURCES}', '-L${LIBPATH}', '-l${LIBS}']
        }
      end

      def run(target, sources, cache, env, vars)
        # build sources to linkable objects
        objects = env.build_sources(sources, [env['OBJSUFFIX'], env['LIBSUFFIX']].flatten, cache, vars)
        return false unless objects
        ld = if env["LD"]
               env["LD"]
             elsif sources.find {|s| s.has_suffix?(env["DSUFFIX"])}
               env["DC"]
             elsif sources.find {|s| s.has_suffix?(env["CXXSUFFIX"])}
               env["CXX"]
             else
               env["CC"]
             end
        vars = vars.merge({
          '_TARGET' => target,
          '_SOURCES' => objects,
          'LD' => ld,
        })
        command = env.build_command(env['LDCMD'], vars)
        standard_build("LD #{target}", target, command, objects, env, cache)
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
rscons-0.3.1 lib/rscons/builders/program.rb
rscons-0.3.0 lib/rscons/builders/program.rb