Skip to content

Commit 28ca7fb

Browse files
authored
Handle pre/post JS file processing in a single location. NFC (#14949)
1 parent 1bc4a96 commit 28ca7fb

File tree

1 file changed

+26
-17
lines changed

1 file changed

+26
-17
lines changed

emcc.py

Lines changed: 26 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -232,10 +232,10 @@ def __init__(self):
232232
self.use_closure_compiler = None
233233
self.closure_args = []
234234
self.js_transform = None
235-
self.pre_js = '' # before all js
236-
self.post_js = '' # after all js
237-
self.extern_pre_js = '' # before all js, external to optimized code
238-
self.extern_post_js = '' # after all js, external to optimized code
235+
self.pre_js = [] # before all js
236+
self.post_js = [] # after all js
237+
self.extern_pre_js = [] # before all js, external to optimized code
238+
self.extern_post_js = [] # after all js, external to optimized code
239239
self.preload_files = []
240240
self.embed_files = []
241241
self.exclude_files = []
@@ -498,6 +498,11 @@ def fix_windows_newlines(text):
498498
return text
499499

500500

501+
def read_js_files(files):
502+
contents = '\n'.join(read_file(f) for f in files)
503+
return fix_windows_newlines(contents)
504+
505+
501506
def cxx_to_c_compiler(cxx):
502507
# Convert C++ compiler name into C compiler name
503508
dirname, basename = os.path.split(cxx)
@@ -1366,19 +1371,24 @@ def phase_linker_setup(options, state, newargs, settings_map):
13661371
add_link_flag(state, sys.maxsize, f)
13671372

13681373
if options.emrun:
1369-
options.pre_js += read_file(utils.path_from_root('src/emrun_prejs.js')) + '\n'
1370-
options.post_js += read_file(utils.path_from_root('src/emrun_postjs.js')) + '\n'
1374+
options.pre_js.append(utils.path_from_root('src/emrun_prejs.js'))
1375+
options.post_js.append(utils.path_from_root('src/emrun_postjs.js'))
13711376
# emrun mode waits on program exit
13721377
settings.EXIT_RUNTIME = 1
13731378

13741379
if options.cpu_profiler:
1375-
options.post_js += read_file(utils.path_from_root('src/cpuprofiler.js')) + '\n'
1380+
options.post_js.append(utils.path_from_root('src/cpuprofiler.js'))
13761381

13771382
if options.memory_profiler:
13781383
settings.MEMORYPROFILER = 1
13791384

13801385
if options.thread_profiler:
1381-
options.post_js += read_file(utils.path_from_root('src/threadprofiler.js')) + '\n'
1386+
options.post_js.append(utils.path_from_root('src/threadprofiler.js'))
1387+
1388+
options.pre_js = read_js_files(options.pre_js)
1389+
options.post_js = read_js_files(options.post_js)
1390+
options.extern_pre_js = read_js_files(options.extern_pre_js)
1391+
options.extern_post_js = read_js_files(options.extern_post_js)
13821392

13831393
if options.memory_init_file is None:
13841394
options.memory_init_file = settings.OPT_LEVEL >= 2
@@ -2597,9 +2607,8 @@ def phase_source_transforms(options, target):
25972607
with open(final_js, 'w') as f:
25982608
# pre-js code goes right after the Module integration code (so it
25992609
# can use Module), we have a marker for it
2600-
f.write(do_replace(src, '// {{PRE_JSES}}', fix_windows_newlines(options.pre_js)))
2601-
f.write(fix_windows_newlines(options.post_js))
2602-
options.pre_js = src = options.post_js = None
2610+
f.write(do_replace(src, '// {{PRE_JSES}}', options.pre_js))
2611+
f.write(options.post_js)
26032612
save_intermediate('pre-post')
26042613

26052614
# Apply a source code transformation, if requested
@@ -2675,9 +2684,9 @@ def phase_final_emitting(options, state, target, wasm_target, memfile):
26752684
src = read_file(final_js)
26762685
final_js += '.epp.js'
26772686
with open(final_js, 'w') as f:
2678-
f.write(fix_windows_newlines(options.extern_pre_js))
2687+
f.write(options.extern_pre_js)
26792688
f.write(src)
2680-
f.write(fix_windows_newlines(options.extern_post_js))
2689+
f.write(options.extern_post_js)
26812690
save_intermediate('extern-pre-post')
26822691

26832692
shared.JS.handle_license(final_js)
@@ -2816,13 +2825,13 @@ def consume_arg_file():
28162825
elif check_arg('--js-transform'):
28172826
options.js_transform = consume_arg()
28182827
elif check_arg('--pre-js'):
2819-
options.pre_js += read_file(consume_arg_file()) + '\n'
2828+
options.pre_js.append(consume_arg_file())
28202829
elif check_arg('--post-js'):
2821-
options.post_js += read_file(consume_arg_file()) + '\n'
2830+
options.post_js.append(consume_arg_file())
28222831
elif check_arg('--extern-pre-js'):
2823-
options.extern_pre_js += read_file(consume_arg_file()) + '\n'
2832+
options.extern_pre_js.append(consume_arg_file())
28242833
elif check_arg('--extern-post-js'):
2825-
options.extern_post_js += read_file(consume_arg_file()) + '\n'
2834+
options.extern_post_js.append(consume_arg_file())
28262835
elif check_arg('--compiler-wrapper'):
28272836
config.COMPILER_WRAPPER = consume_arg()
28282837
elif check_flag('--post-link'):

0 commit comments

Comments
 (0)