diff options
| author | Yuichiro MASUI <[email protected]> | 2013-01-21 22:15:15 +0900 |
|---|---|---|
| committer | Yuichiro MASUI <[email protected]> | 2013-01-21 22:15:15 +0900 |
| commit | a1c4992905e6e3df1e6841085c552b33cf525b0f (patch) | |
| tree | 9bda643a53d362612d019f99f4b01069ece6ff06 /tasks/mruby_build_commands.rake | |
| parent | cc2e4e73deea917ffd0c9ce6ad2840455df7b60b (diff) | |
| download | mruby-a1c4992905e6e3df1e6841085c552b33cf525b0f.tar.gz mruby-a1c4992905e6e3df1e6841085c552b33cf525b0f.zip | |
Added flags_before_libraries to linker
Diffstat (limited to 'tasks/mruby_build_commands.rake')
| -rw-r--r-- | tasks/mruby_build_commands.rake | 32 |
1 files changed, 18 insertions, 14 deletions
diff --git a/tasks/mruby_build_commands.rake b/tasks/mruby_build_commands.rake index 8ffafe9b0..abaf3a72c 100644 --- a/tasks/mruby_build_commands.rake +++ b/tasks/mruby_build_commands.rake @@ -48,18 +48,16 @@ module MRuby def all_flags(_defineds=[], _include_paths=[], _flags=[]) define_flags = [defines, _defineds].flatten.map{ |d| option_define % d } - include_path_flags = [include_paths, _include_paths].flatten.map{ |f| option_include_path % filename(f) } + include_path_flags = [include_paths, _include_paths].flatten.map do |f| + option_include_path % filename(f) + end [flags, define_flags, include_path_flags, _flags].flatten.join(' ') end def run(outfile, infile, _defineds=[], _include_paths=[], _flags=[]) FileUtils.mkdir_p File.dirname(outfile) - define_flags = [defines, _defineds].flatten.map{ |d| option_define % d } - include_path_flags = [include_paths, _include_paths, File.dirname(infile)].flatten.map do |f| - option_include_path % filename(f) - end _pp "CC #{filename(infile)} > #{filename(outfile)}" - _run compile_options, { :flags => (flags + define_flags + include_path_flags + _flags).join(' '), + _run compile_options, { :flags => all_flags(_defineds, [_include_paths, File.dirname(infile)], _flags), :infile => filename(infile), :outfile => filename(outfile) } end @@ -104,36 +102,42 @@ module MRuby end class Command::Linker < Command - attr_accessor :flags, :libraries, :library_paths + attr_accessor :flags, :flags_before_libraries, :libraries, :library_paths attr_accessor :link_options, :option_library, :option_library_path def initialize(build) super @command = ENV['LD'] || 'gcc' @flags = (ENV['LDFLAGS'] || []) + @flags_before_libraries = [] @libraries = [] @library_paths = [] @option_library = '-l%s' @option_library_path = '-L%s' - @link_options = "%{flags} -o %{outfile} %{objs} %{libs}" + @link_options = "%{flags} -o %{outfile} %{objs} %{flags_before_libraries} %{libs}" end def all_flags(_library_paths=[], _flags=[]) - library_path_flags = [library_paths, _library_paths].flatten.map{ |f| option_library_path % filename(f) } + library_path_flags = [library_paths, _library_paths].flatten.map do |f| + option_library_path % filename(f) + end [flags, library_path_flags, _flags].flatten.join(' ') end def library_flags(_libraries) - [libraries, _libraries].flatten.reverse.map{ |d| option_library % d }.join(' ') + [libraries, _libraries].flatten.reverse.map do |d| + option_library % d + end.join(' ') end - def run(outfile, objfiles, _libraries=[], _library_paths=[], _flags=[]) + def run(outfile, objfiles, _libraries=[], _library_paths=[], _flags=[], _flags_before_libraries=[]) FileUtils.mkdir_p File.dirname(outfile) - library_flags = [libraries, _libraries].flatten.reverse.map{ |d| option_library % d } - library_path_flags = [library_paths, _library_paths].flatten.map{ |f| option_library_path % filename(f) } + library_flags = [libraries, _libraries].flatten.reverse.map { |d| option_library % d } + library_path_flags = [library_paths, _library_paths].flatten.map { |f| option_library_path % filename(f) } _pp "LD #{filename(outfile)}" - _run link_options, { :flags => (flags + library_path_flags + _flags).join(' '), + _run link_options, { :flags => all_flags(_library_paths, _flags), :outfile => filename(outfile) , :objs => filename(objfiles).join(' '), + :flags_before_libraries => [flags_before_libraries, _flags_before_libraries].flatten.join(' '), :libs => library_flags.join(' ') } end end |
