akro 0.0.5 → 0.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/lib/akro.rb +16 -9
  3. data/lib/akrobuild.rake +8 -7
  4. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a9cde35182bf4c229ae6c69f93d9b93845dd465b
4
- data.tar.gz: b4eddd80a57434cc08afa83573c224a6eacdb4c0
3
+ metadata.gz: 4edd5eba5c3d173422d004d467b3b1421ca106aa
4
+ data.tar.gz: 7da62956faa155e9745c302051d400cd1fe10b53
5
5
  SHA512:
6
- metadata.gz: ee4b34956e2f1e70b517f42aaa7fa58fe27a355695c71d80b2c1ca24beb16e41d7b4eecac1695df45d9d886917876951b72894d4965ce963dbd45372f5a960d7
7
- data.tar.gz: c48a54a82ab33aa85a42b5047bc42fa774fcc84222879adbd2813300cdf9de6d7a1c1c3f0eed9417f6c7be4bdbc3bd5bcbd0333738c79ec86ffc6aa379786ca4
6
+ metadata.gz: e9e183811d8e7a9810ebecd5069835834c7a812b207d4a66b2b381050bf1faadd3f920ac1ebfe32d85c79c3c930ab0ee1b2465d681eb47831fea3faa3cb2ed00
7
+ data.tar.gz: ad7ae1cba7049a6965cf2de198c95f2a729955fe7cfaac375e9f4346b647deb5aa5aedb86011115646f22ff9fbf3ccf6fe17b96e94a57a5942239674cceb7b11
@@ -46,13 +46,8 @@ def windows?
46
46
  (RUBY_PLATFORM =~ /cygwin|mswin|mingw|bccwin|wince|emx/) != nil
47
47
  end
48
48
 
49
- if windows?
50
- $HEADER_EXTENSIONS = [".H", ".hpp"]
51
- $CPP_EXTENSIONS = [".C", ".cc", ".cpp", ".cxx", ".c++"]
52
- else
53
- $HEADER_EXTENSIONS = [".h", ".hpp", ".H"]
54
- $CPP_EXTENSIONS = [".c", ".cc", ".cpp", ".cxx", ".c++", ".C"]
55
- end
49
+ $HEADER_EXTENSIONS = [".h", ".hpp", ".H"]
50
+ $CPP_EXTENSIONS = [".c", ".cc", ".cpp", ".cxx", ".c++", ".C"]
56
51
  $OBJ_EXTENSION = ".o"
57
52
  $STATIC_LIB_EXTENSION = ".a"
58
53
  if windows?
@@ -83,12 +78,13 @@ $AKRO_BINARIES = []
83
78
  $BIN_EXTRA_FLAGS = Hash.new
84
79
 
85
80
  def add_binaries(*paths)
81
+ puts("add_binaries call is obsolete. Use add_binary with array instead")
86
82
  paths.each do |path|
87
83
  $AKRO_BINARIES << path.to_str()
88
84
  end
89
85
  end
90
86
 
91
- def add_binary(path: nil, additional_link_params: nil)
87
+ def add_binary_internal(path: nil, additional_link_params: nil)
92
88
  raise "Must specify path for binary" if path.nil?
93
89
  if !additional_link_params.nil? && additional_link_params != ""
94
90
  $BIN_EXTRA_FLAGS[path] = additional_link_params
@@ -96,6 +92,17 @@ def add_binary(path: nil, additional_link_params: nil)
96
92
  $AKRO_BINARIES << path.to_str()
97
93
  end
98
94
 
95
+ def add_binary(path: nil, additional_link_params: nil)
96
+ raise "No path defined" if path.nil?
97
+ files = path;
98
+ if !files.kind_of?(Array)
99
+ files = [path]
100
+ end
101
+ files.each do |file|
102
+ add_binary_internal(path: file, additional_link_params: additional_link_params)
103
+ end
104
+ end
105
+
99
106
  AkroLibrary = Struct.new("AkroLibrary", :path, :sources, :static, :recurse, :capture_deps, :additional_params)
100
107
  $AKRO_LIBS = []
101
108
 
@@ -141,7 +148,7 @@ module CmdLine
141
148
  def CmdLine.link_cmdline(mode, objs, bin)
142
149
  nomodebin = FileMapper.strip_mode(bin)
143
150
  per_file_flags = if $BIN_EXTRA_FLAGS.has_key?(nomodebin) then " " + $BIN_EXTRA_FLAGS[nomodebin] else "" end
144
- "#{$LINKER_PREFIX}#{$LINKER} #{$LINK_FLAGS} #{$MODE_LINK_FLAGS[mode]} #{objs.join(' ')} #{$ADDITIONAL_LINK_FLAGS}#{per_file_flags} -o #{bin}"
151
+ "#{$LINKER_PREFIX}#{$LINKER} #{$LINK_FLAGS} #{objs.join(' ')} #{$ADDITIONAL_LINK_FLAGS}#{per_file_flags} #{$MODE_LINK_FLAGS[mode]} -o #{bin}"
145
152
  end
146
153
  def CmdLine.static_lib_cmdline(objs, bin)
147
154
  "#{$AR} rcs #{bin} #{objs.join(' ')}"
@@ -74,8 +74,9 @@ module FileMapper
74
74
  def FileMapper.map_obj_to_cpp(path)
75
75
  raise "#{path} is not a #{$OBJ_EXTENSION} file" if !path.end_with?($OBJ_EXTENSION)
76
76
  file = FileMapper.strip_mode(path)
77
- file = file[0..-$OBJ_EXTENSION.length-1]
78
- srcs = $CPP_EXTENSIONS.map{|ext| file + ext}.select{|fname| File.exist?(fname)}
77
+ file = file[0..-$OBJ_EXTENSION.length-1]
78
+ # Under windows, make_relative_path also canonicalizes the path.
79
+ srcs = $CPP_EXTENSIONS.map{|ext| file + ext}.select{|fname| File.exist?(fname)}.map{|fname| Util.make_relative_path(fname)}.uniq
79
80
  raise "Multiple sources for base name #{file}: #{srcs.join(' ')}" if srcs.length > 1
80
81
  srcs.length == 0? nil : srcs[0]
81
82
  end
@@ -139,8 +140,6 @@ module FileMapper
139
140
  rel_path = Util.make_relative_path(path)
140
141
  # file is not local
141
142
  return nil if rel_path.nil?
142
- #$HEADER_EXTENSIONS.select{|ext| rel_path.end_with?(ext)}.each do |ext|
143
- #end
144
143
  srcs = $HEADER_EXTENSIONS.select{|ext| rel_path.end_with?(ext)}.collect{ |ext|
145
144
  base_path = rel_path[0..-ext.length-1]
146
145
  $CPP_EXTENSIONS.map{|cppext| base_path + cppext}.select{|file| File.exist?(file)}
@@ -295,7 +294,7 @@ rule ".dynlinkcmd" => ->(dc) {
295
294
  dynlib = FileMapper.map_linkcmd_to_dynamic_lib(dc)
296
295
  raise "Internal error - linkcmd not mapped for #{dynlib}" if !$LINK_BINARY_OBJS.has_key?(dynlib)
297
296
  mode = FileMapper.get_mode_from_akpath(dc)
298
- cmd = CmdLine.dynamic_lib_cmdline(mode, $LINK_BINARY_OBJS[dynlib], "", dynlib)
297
+ cmd = CmdLine.dynamic_lib_cmdline(mode, $LINK_BINARY_OBJS[dynlib], $LINK_LIBRARY_EXTRAFLAGS[dynlib], dynlib)
299
298
  if File.exists?(dc) && File.read(dc).strip == cmd.strip then
300
299
  []
301
300
  else
@@ -307,7 +306,7 @@ rule ".dynlinkcmd" => ->(dc) {
307
306
  FileUtils.mkdir_p(basedir)
308
307
  output = File.open(task.name, "w")
309
308
  mode = FileMapper.get_mode_from_akpath(task.name)
310
- output << CmdLine.dynamic_lib_cmdline(mode, $LINK_BINARY_OBJS[dynlib], "", dynlib) << "\n"
309
+ output << CmdLine.dynamic_lib_cmdline(mode, $LINK_BINARY_OBJS[dynlib], $LINK_LIBRARY_EXTRAFLAGS[dynlib], dynlib) << "\n"
311
310
  output.close
312
311
  end
313
312
 
@@ -334,7 +333,7 @@ end
334
333
 
335
334
  rule ".depcache" => ->(dc){
336
335
  [FileMapper.map_dc_to_compcmd(dc), FileMapper.map_dc_to_cpp(dc)] +
337
- (File.exist?(dc) ? File.readlines(dc).map{|line| line.strip}: [])
336
+ (File.exist?(dc) ? File.readlines(dc).map{|line| line.strip}.map{|file| File.exist?(file) ? file : "always"}: [])
338
337
  } do |task|
339
338
  src = FileMapper.map_dc_to_cpp(task.name)
340
339
  Builder.create_depcache(src, task.name)
@@ -356,6 +355,7 @@ def libname(mode, lib)
356
355
  end
357
356
 
358
357
  $LINK_BINARY_OBJS = Hash.new
358
+ $LINK_LIBRARY_EXTRAFLAGS = Hash.new
359
359
 
360
360
  rule ".exe" => ->(binary){
361
361
  obj = binary.gsub(/\.exe$/, $OBJ_EXTENSION)
@@ -462,6 +462,7 @@ rule $DYNAMIC_LIB_EXTENSION => ->(library) {
462
462
  $CAPTURING_LIBS << library
463
463
  end
464
464
  $LINK_BINARY_OBJS[library] = objs
465
+ $LINK_LIBRARY_EXTRAFLAGS[library] = libspec.additional_params
465
466
  [FileMapper.map_dynamic_lib_to_linkcmd(library)] + objs
466
467
  } do |task|
467
468
  libspec = nil
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: akro
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.0.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Vlad Petric
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-10-16 00:00:00.000000000 Z
11
+ date: 2017-03-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake