From 62e9bfa5d30101efa1782b54bec8455aaf76c5ae Mon Sep 17 00:00:00 2001 From: Josh Holtrop Date: Sun, 16 Jun 2013 22:41:47 -0400 Subject: [PATCH] add Environment.execute(); implement first version of Program builder --- lib/rscons/builders/cc.rb | 2 +- lib/rscons/builders/program.rb | 12 +++++++++++- lib/rscons/environment.rb | 11 ++++++++++- 3 files changed, 22 insertions(+), 3 deletions(-) diff --git a/lib/rscons/builders/cc.rb b/lib/rscons/builders/cc.rb index 0aff664..98f48a2 100644 --- a/lib/rscons/builders/cc.rb +++ b/lib/rscons/builders/cc.rb @@ -7,7 +7,7 @@ module Rscons 'OBJSUFFIX' => '.o', } - def run(env, sources) + def run(env, target, sources) end end end diff --git a/lib/rscons/builders/program.rb b/lib/rscons/builders/program.rb index 094c26a..45b978d 100644 --- a/lib/rscons/builders/program.rb +++ b/lib/rscons/builders/program.rb @@ -5,10 +5,20 @@ module Rscons 'OBJSUFFIX' => '.o', 'LIBSUFFIX' => '.a', 'LDFLAGS' => [], + 'LIBPATHS' => [], 'LIBS' => [], } - def run(env, sources) + def run(env, target, sources) + command = [ + env['LD'] || env['CC'], + '-o', target, + *env['LDFLAGS'], + *sources, + *env['LIBPATHS'].map {|lp| "-L#{lp}"}, + *env['LIBS'].map {|lib| "-l#{lib}"} + ] + env.execute("LINK #{target}", command) end end end diff --git a/lib/rscons/environment.rb b/lib/rscons/environment.rb index f34d973..50cb671 100644 --- a/lib/rscons/environment.rb +++ b/lib/rscons/environment.rb @@ -44,11 +44,20 @@ module Rscons @build_dirs[src_dir] = build_dir end + def execute(short_desc, command) + if @echo == :command + puts command.join(' ') + elsif @echo == :short + puts short_desc + end + system(*command) + end + def method_missing(method, *args) if @builders.has_key?(method.to_s) # TODO: build sources if necessary builder = @builders[method.to_s].new - builder.run(self, args.first) + builder.run(self, *args) end end end