Sha256: 52110b2cc51a7ac3fb62d067fc78bf367168cd3dcfc36c7dd85a0c86b87d4c31

Contents?: true

Size: 1.16 KB

Versions: 3

Compression:

Stored size: 1.16 KB

Contents

module Rscons
  # A default RScons builder that knows how to link object files into an
  # executable program.
  class Program < 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)
      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

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
rscons-0.2.1 lib/rscons/builders/program.rb
rscons-0.2.0 lib/rscons/builders/program.rb
rscons-0.1.0 lib/rscons/builders/program.rb