@@ -1050,7 +1050,7 @@ def run(args):
1050
1050
if state .mode == Mode .POST_LINK_ONLY :
1051
1051
settings .limit_settings (None )
1052
1052
target , wasm_target = phase_linker_setup (options , state , newargs , settings_map )
1053
- process_libraries (state . link_flags , state . lib_dirs , [])
1053
+ process_libraries (state , [])
1054
1054
if len (input_files ) != 1 :
1055
1055
exit_with_error ('--post-link requires a single input file' )
1056
1056
phase_post_link (options , state , input_files [0 ][1 ], wasm_target , target )
@@ -1113,7 +1113,7 @@ def phase_calculate_linker_inputs(options, state, linker_inputs):
1113
1113
state .link_flags = filter_link_flags (state .link_flags , using_lld )
1114
1114
1115
1115
# Decide what we will link
1116
- state .link_flags = process_libraries (state . link_flags , state . lib_dirs , linker_inputs )
1116
+ state .link_flags = process_libraries (state , linker_inputs )
1117
1117
1118
1118
linker_args = [val for _ , val in sorted (linker_inputs + state .link_flags )]
1119
1119
@@ -3502,18 +3502,20 @@ def find_library(lib, lib_dirs):
3502
3502
return None
3503
3503
3504
3504
3505
- def process_libraries (link_flags , lib_dirs , linker_inputs ):
3505
+ def process_libraries (state , linker_inputs ):
3506
3506
new_flags = []
3507
3507
libraries = []
3508
3508
suffixes = STATICLIB_ENDINGS + DYNAMICLIB_ENDINGS
3509
3509
system_libs_map = system_libs .Library .get_usable_variations ()
3510
3510
3511
3511
# Find library files
3512
- for i , flag in link_flags :
3512
+ for i , flag in state . link_flags :
3513
3513
if not flag .startswith ('-l' ):
3514
3514
new_flags .append ((i , flag ))
3515
3515
continue
3516
+
3516
3517
lib = strip_prefix (flag , '-l' )
3518
+ logger .debug ('looking for library "%s"' , lib )
3517
3519
# We don't need to resolve system libraries to absolute paths here, we can just
3518
3520
# let wasm-ld handle that. However, we do want to map to the correct variant.
3519
3521
# For example we map `-lc` to `-lc-mt` if we are building with threading support.
@@ -3522,23 +3524,30 @@ def process_libraries(link_flags, lib_dirs, linker_inputs):
3522
3524
new_flags .append ((i , '-l' + strip_prefix (lib .get_base_name (), 'lib' )))
3523
3525
continue
3524
3526
3525
- logger .debug ('looking for library "%s"' , lib )
3527
+ js_libs , native_lib = building .map_to_js_libs (lib )
3528
+ if js_libs is not None :
3529
+ libraries += [(i , js_lib ) for js_lib in js_libs ]
3530
+ # If native_lib is returned then include it in the link
3531
+ # via forced_stdlibs.
3532
+ if native_lib :
3533
+ state .forced_stdlibs .append (native_lib )
3534
+ continue
3535
+
3536
+ if building .map_and_apply_to_settings (lib ):
3537
+ continue
3526
3538
3527
3539
path = None
3528
3540
for suff in suffixes :
3529
3541
name = 'lib' + lib + suff
3530
- path = find_library (name , lib_dirs )
3542
+ path = find_library (name , state . lib_dirs )
3531
3543
if path :
3532
3544
break
3533
3545
3534
3546
if path :
3535
3547
linker_inputs .append ((i , path ))
3536
3548
continue
3537
- jslibs = building .map_to_js_libs (lib )
3538
- if jslibs is not None :
3539
- libraries += [(i , jslib ) for jslib in jslibs ]
3540
- elif not building .map_and_apply_to_settings (lib ):
3541
- new_flags .append ((i , flag ))
3549
+
3550
+ new_flags .append ((i , flag ))
3542
3551
3543
3552
settings .SYSTEM_JS_LIBRARIES += libraries
3544
3553
0 commit comments