21
21
-- imports
22
22
import (" core.base.option" )
23
23
import (" core.project.config" )
24
- import (" core.tool.linker" )
25
- import (" core.tool.compiler" )
26
24
import (" core.tool.toolchain" )
27
25
import (" core.cache.memcache" )
28
26
import (" lib.detect.find_tool" )
27
+ import (" private.utils.toolchain" , {alias = " toolchain_utils" })
29
28
30
29
-- translate paths
31
30
function _translate_paths (paths )
@@ -78,16 +77,6 @@ function _get_msvc_runenvs(package)
78
77
return os .joinenvs (_get_msvc (package ):runenvs ())
79
78
end
80
79
81
- -- map compiler flags
82
- function _map_compflags (package , langkind , name , values )
83
- return compiler .map_flags (langkind , name , values , {target = package })
84
- end
85
-
86
- -- map linker flags
87
- function _map_linkflags (package , targetkind , sourcekinds , name , values )
88
- return linker .map_flags (targetkind , sourcekinds , name , values , {target = package })
89
- end
90
-
91
80
-- is cross compilation?
92
81
function _is_cross_compilation (package )
93
82
if not package :is_plat (os .subhost ()) then
@@ -199,13 +188,13 @@ function _get_cflags_from_packagedeps(package, opt)
199
188
local result = {}
200
189
if values then
201
190
if values .defines then
202
- table .join2 (result , _map_compflags (package , " cxx" , " define" , values .defines ))
191
+ table .join2 (result , toolchain_utils . map_compflags_for_package (package , " cxx" , " define" , values .defines ))
203
192
end
204
193
if values .includedirs then
205
- table .join2 (result , _translate_paths (_map_compflags (package , " cxx" , " includedir" , values .includedirs )))
194
+ table .join2 (result , _translate_paths (toolchain_utils . map_compflags_for_package (package , " cxx" , " includedir" , values .includedirs )))
206
195
end
207
196
if values .sysincludedirs then
208
- table .join2 (result , _translate_paths (_map_compflags (package , " cxx" , " sysincludedir" , values .sysincludedirs )))
197
+ table .join2 (result , _translate_paths (toolchain_utils . map_compflags_for_package (package , " cxx" , " sysincludedir" , values .sysincludedirs )))
209
198
end
210
199
end
211
200
return result
@@ -230,16 +219,16 @@ function _get_ldflags_from_packagedeps(package, opt)
230
219
local result = {}
231
220
if values then
232
221
if values .linkdirs then
233
- table .join2 (result , _translate_paths (_map_linkflags (package , " binary" , {" cxx" }, " linkdir" , values .linkdirs )))
222
+ table .join2 (result , _translate_paths (toolchain_utils . map_linkflags_for_package (package , " binary" , {" cxx" }, " linkdir" , values .linkdirs )))
234
223
end
235
224
if values .links then
236
- table .join2 (result , _map_linkflags (package , " binary" , {" cxx" }, " link" , values .links ))
225
+ table .join2 (result , toolchain_utils . map_linkflags_for_package (package , " binary" , {" cxx" }, " link" , values .links ))
237
226
end
238
227
if values .syslinks then
239
- table .join2 (result , _translate_paths (_map_linkflags (package , " binary" , {" cxx" }, " syslink" , values .syslinks )))
228
+ table .join2 (result , _translate_paths (toolchain_utils . map_linkflags_for_package (package , " binary" , {" cxx" }, " syslink" , values .syslinks )))
240
229
end
241
230
if values .frameworks then
242
- table .join2 (result , _map_linkflags (package , " binary" , {" cxx" }, " framework" , values .frameworks ))
231
+ table .join2 (result , toolchain_utils . map_linkflags_for_package (package , " binary" , {" cxx" }, " framework" , values .frameworks ))
243
232
end
244
233
end
245
234
return result
@@ -306,21 +295,21 @@ function buildenvs(package, opt)
306
295
table .join2 (cxxflags , _get_cflags_from_packagedeps (package , opt ))
307
296
table .join2 (cppflags , _get_cflags_from_packagedeps (package , opt ))
308
297
table .join2 (ldflags , _get_ldflags_from_packagedeps (package , opt ))
309
- table .join2 (cflags , _map_compflags (package , " c" , " define" , defines ))
310
- table .join2 (cflags , _map_compflags (package , " c" , " includedir" , includedirs ))
311
- table .join2 (cflags , _map_compflags (package , " c" , " sysincludedir" , sysincludedirs ))
312
- table .join2 (asflags , _map_compflags (package , " as" , " define" , defines ))
313
- table .join2 (asflags , _map_compflags (package , " as" , " includedir" , includedirs ))
314
- table .join2 (asflags , _map_compflags (package , " as" , " sysincludedir" , sysincludedirs ))
315
- table .join2 (cxxflags , _map_compflags (package , " cxx" , " define" , defines ))
316
- table .join2 (cxxflags , _map_compflags (package , " cxx" , " includedir" , includedirs ))
317
- table .join2 (cxxflags , _map_compflags (package , " cxx" , " sysincludedir" , sysincludedirs ))
318
- table .join2 (ldflags , _map_linkflags (package , " binary" , {" cxx" }, " link" , links ))
319
- table .join2 (ldflags , _map_linkflags (package , " binary" , {" cxx" }, " syslink" , syslinks ))
320
- table .join2 (ldflags , _map_linkflags (package , " binary" , {" cxx" }, " linkdir" , linkdirs ))
321
- table .join2 (shflags , _map_linkflags (package , " shared" , {" cxx" }, " link" , links ))
322
- table .join2 (shflags , _map_linkflags (package , " shared" , {" cxx" }, " syslink" , syslinks ))
323
- table .join2 (shflags , _map_linkflags (package , " shared" , {" cxx" }, " linkdir" , linkdirs ))
298
+ table .join2 (cflags , toolchain_utils . map_compflags_for_package (package , " c" , " define" , defines ))
299
+ table .join2 (cflags , toolchain_utils . map_compflags_for_package (package , " c" , " includedir" , includedirs ))
300
+ table .join2 (cflags , toolchain_utils . map_compflags_for_package (package , " c" , " sysincludedir" , sysincludedirs ))
301
+ table .join2 (asflags , toolchain_utils . map_compflags_for_package (package , " as" , " define" , defines ))
302
+ table .join2 (asflags , toolchain_utils . map_compflags_for_package (package , " as" , " includedir" , includedirs ))
303
+ table .join2 (asflags , toolchain_utils . map_compflags_for_package (package , " as" , " sysincludedir" , sysincludedirs ))
304
+ table .join2 (cxxflags , toolchain_utils . map_compflags_for_package (package , " cxx" , " define" , defines ))
305
+ table .join2 (cxxflags , toolchain_utils . map_compflags_for_package (package , " cxx" , " includedir" , includedirs ))
306
+ table .join2 (cxxflags , toolchain_utils . map_compflags_for_package (package , " cxx" , " sysincludedir" , sysincludedirs ))
307
+ table .join2 (ldflags , toolchain_utils . map_linkflags_for_package (package , " binary" , {" cxx" }, " link" , links ))
308
+ table .join2 (ldflags , toolchain_utils . map_linkflags_for_package (package , " binary" , {" cxx" }, " syslink" , syslinks ))
309
+ table .join2 (ldflags , toolchain_utils . map_linkflags_for_package (package , " binary" , {" cxx" }, " linkdir" , linkdirs ))
310
+ table .join2 (shflags , toolchain_utils . map_linkflags_for_package (package , " shared" , {" cxx" }, " link" , links ))
311
+ table .join2 (shflags , toolchain_utils . map_linkflags_for_package (package , " shared" , {" cxx" }, " syslink" , syslinks ))
312
+ table .join2 (shflags , toolchain_utils . map_linkflags_for_package (package , " shared" , {" cxx" }, " linkdir" , linkdirs ))
324
313
envs .CC = package :build_getenv (" cc" )
325
314
envs .AS = package :build_getenv (" as" )
326
315
envs .AR = package :build_getenv (" ar" )
@@ -341,13 +330,9 @@ function buildenvs(package, opt)
341
330
end
342
331
local runtimes = package :runtimes ()
343
332
if runtimes then
344
- local fake_target = {is_shared = function (_ ) return false end ,
345
- sourcekinds = function (_ ) return " cxx" end }
346
- table .join2 (cxxflags , _map_compflags (fake_target , " cxx" , " runtime" , runtimes ))
347
- table .join2 (ldflags , _map_linkflags (fake_target , " binary" , {" cxx" }, " runtime" , runtimes ))
348
- fake_target = {is_shared = function (_ ) return true end ,
349
- sourcekinds = function (_ ) return " cxx" end }
350
- table .join2 (shflags , _map_linkflags (fake_target , " shared" , {" cxx" }, " runtime" , runtimes ))
333
+ table .join2 (cxxflags , toolchain_utils .map_compflags_for_package (package , " cxx" , " runtime" , runtimes ))
334
+ table .join2 (ldflags , toolchain_utils .map_linkflags_for_package (package , " binary" , {" cxx" }, " runtime" , runtimes ))
335
+ table .join2 (shflags , toolchain_utils .map_linkflags_for_package (package , " shared" , {" cxx" }, " runtime" , runtimes ))
351
336
end
352
337
if package :config (" asan" ) then
353
338
table .join2 (cflags , package :_generate_sanitizer_configs (" address" , " cc" ).cflags )
0 commit comments