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.
- checksums.yaml +4 -4
- data/lib/akro.rb +16 -9
- data/lib/akrobuild.rake +8 -7
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4edd5eba5c3d173422d004d467b3b1421ca106aa
|
4
|
+
data.tar.gz: 7da62956faa155e9745c302051d400cd1fe10b53
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e9e183811d8e7a9810ebecd5069835834c7a812b207d4a66b2b381050bf1faadd3f920ac1ebfe32d85c79c3c930ab0ee1b2465d681eb47831fea3faa3cb2ed00
|
7
|
+
data.tar.gz: ad7ae1cba7049a6965cf2de198c95f2a729955fe7cfaac375e9f4346b647deb5aa5aedb86011115646f22ff9fbf3ccf6fe17b96e94a57a5942239674cceb7b11
|
data/lib/akro.rb
CHANGED
@@ -46,13 +46,8 @@ def windows?
|
|
46
46
|
(RUBY_PLATFORM =~ /cygwin|mswin|mingw|bccwin|wince|emx/) != nil
|
47
47
|
end
|
48
48
|
|
49
|
-
|
50
|
-
|
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
|
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} #{
|
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(' ')}"
|
data/lib/akrobuild.rake
CHANGED
@@ -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
|
-
|
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],
|
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],
|
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.
|
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:
|
11
|
+
date: 2017-03-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|