@@ -814,14 +814,7 @@ def array_contains_any_of(hay, needles):
814
814
815
815
816
816
def get_clang_flags ():
817
- return ['-target' , get_llvm_target ()]
818
-
819
-
820
- def get_llvm_target ():
821
- if settings .MEMORY64 :
822
- return 'wasm64-unknown-emscripten'
823
- else :
824
- return 'wasm32-unknown-emscripten'
817
+ return ['-target' , shared .get_llvm_target ()]
825
818
826
819
827
820
cflags = None
@@ -979,6 +972,41 @@ def get_subresource_location(path, data_uri=None):
979
972
return os .path .basename (path )
980
973
981
974
975
+ @ToolchainProfiler .profile_block ('package_files' )
976
+ def package_files (options , target ):
977
+ rtn = []
978
+ logger .debug ('setting up files' )
979
+ file_args = ['--from-emcc' , '--export-name=' + settings .EXPORT_NAME ]
980
+ if options .preload_files :
981
+ file_args .append ('--preload' )
982
+ file_args += options .preload_files
983
+ if options .embed_files :
984
+ file_args .append ('--embed' )
985
+ file_args += options .embed_files
986
+ if options .exclude_files :
987
+ file_args .append ('--exclude' )
988
+ file_args += options .exclude_files
989
+ if options .use_preload_cache :
990
+ file_args .append ('--use-preload-cache' )
991
+ if settings .LZ4 :
992
+ file_args .append ('--lz4' )
993
+ if options .use_preload_plugins :
994
+ file_args .append ('--use-preload-plugins' )
995
+ if not settings .ENVIRONMENT_MAY_BE_NODE :
996
+ file_args .append ('--no-node' )
997
+ if options .embed_files :
998
+ object_file = in_temp ('embedded_files.o' )
999
+ file_args += ['--obj-output=' + object_file ]
1000
+ rtn .append (object_file )
1001
+
1002
+ cmd = [shared .FILE_PACKAGER , shared .replace_suffix (target , '.data' )] + file_args
1003
+ file_code = shared .check_call (cmd , stdout = PIPE ).stdout
1004
+
1005
+ options .pre_js = js_manipulation .add_files_pre_js (options .pre_js , file_code )
1006
+
1007
+ return rtn
1008
+
1009
+
982
1010
run_via_emxx = False
983
1011
984
1012
@@ -1053,7 +1081,7 @@ def run(args):
1053
1081
return 0
1054
1082
1055
1083
if '-dumpmachine' in args :
1056
- print (get_llvm_target ())
1084
+ print (shared . get_llvm_target ())
1057
1085
return 0
1058
1086
1059
1087
if '-dumpversion' in args : # gcc's doc states "Print the compiler version [...] and don't do anything else."
@@ -1129,6 +1157,10 @@ def run(args):
1129
1157
# Link object files using wasm-ld or llvm-link (for bitcode linking)
1130
1158
linker_arguments = phase_calculate_linker_inputs (options , state , linker_inputs )
1131
1159
1160
+ # Embed and preload files
1161
+ if len (options .preload_files ) or len (options .embed_files ):
1162
+ linker_arguments += package_files (options , target )
1163
+
1132
1164
if options .oformat == OFormat .OBJECT :
1133
1165
logger .debug (f'link_to_object: { linker_arguments } -> { target } ' )
1134
1166
building .link_to_object (linker_arguments , target )
@@ -2700,7 +2732,7 @@ def phase_post_link(options, state, in_wasm, wasm_target, target):
2700
2732
2701
2733
phase_emscript (options , in_wasm , wasm_target , memfile )
2702
2734
2703
- phase_source_transforms (options , target )
2735
+ phase_source_transforms (options )
2704
2736
2705
2737
if memfile and not settings .MINIMAL_RUNTIME :
2706
2738
# MINIMAL_RUNTIME doesn't use `var memoryInitializer` but instead expects Module['mem'] to
@@ -2731,33 +2763,9 @@ def phase_emscript(options, in_wasm, wasm_target, memfile):
2731
2763
2732
2764
2733
2765
@ToolchainProfiler .profile_block ('source transforms' )
2734
- def phase_source_transforms (options , target ):
2766
+ def phase_source_transforms (options ):
2735
2767
global final_js
2736
2768
2737
- # Embed and preload files
2738
- if len (options .preload_files ) or len (options .embed_files ):
2739
- logger .debug ('setting up files' )
2740
- file_args = ['--from-emcc' , '--export-name=' + settings .EXPORT_NAME ]
2741
- if len (options .preload_files ):
2742
- file_args .append ('--preload' )
2743
- file_args += options .preload_files
2744
- if len (options .embed_files ):
2745
- file_args .append ('--embed' )
2746
- file_args += options .embed_files
2747
- if len (options .exclude_files ):
2748
- file_args .append ('--exclude' )
2749
- file_args += options .exclude_files
2750
- if options .use_preload_cache :
2751
- file_args .append ('--use-preload-cache' )
2752
- if settings .LZ4 :
2753
- file_args .append ('--lz4' )
2754
- if options .use_preload_plugins :
2755
- file_args .append ('--use-preload-plugins' )
2756
- if not settings .ENVIRONMENT_MAY_BE_NODE :
2757
- file_args .append ('--no-node' )
2758
- file_code = shared .check_call ([shared .FILE_PACKAGER , shared .replace_suffix (target , '.data' )] + file_args , stdout = PIPE ).stdout
2759
- options .pre_js = js_manipulation .add_files_pre_js (options .pre_js , file_code )
2760
-
2761
2769
# Apply pre and postjs files
2762
2770
if final_js and (options .pre_js or options .post_js ):
2763
2771
logger .debug ('applying pre/postjses' )
0 commit comments