akro 0.0.5 → 0.0.6
Sign up to get free protection for your applications and to get access to all the features.
- 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
|