Skip to content

Commit 33e4fa2

Browse files
committed
Handle pre/post JS file processing in a single location. NFC
1 parent 246209c commit 33e4fa2

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(type, 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
@@ -2599,9 +2609,8 @@ def phase_source_transforms(options, target):
25992609
with open(final_js, 'w') as f:
26002610
# pre-js code goes right after the Module integration code (so it
26012611
# can use Module), we have a marker for it
2602-
f.write(do_replace(src, '// {{PRE_JSES}}', fix_windows_newlines(options.pre_js)))
2603-
f.write(fix_windows_newlines(options.post_js))
2604-
options.pre_js = src = options.post_js = None
2612+
f.write(do_replace(src, '// {{PRE_JSES}}', options.pre_js))
2613+
f.write(options.post_js)
26052614
save_intermediate('pre-post')
26062615

26072616
# Apply a source code transformation, if requested
@@ -2677,9 +2686,9 @@ def phase_final_emitting(options, state, target, wasm_target, memfile):
26772686
src = read_file(final_js)
26782687
final_js += '.epp.js'
26792688
with open(final_js, 'w') as f:
2680-
f.write(fix_windows_newlines(options.extern_pre_js))
2689+
f.write(options.extern_pre_js)
26812690
f.write(src)
2682-
f.write(fix_windows_newlines(options.extern_post_js))
2691+
f.write(options.extern_post_js)
26832692
save_intermediate('extern-pre-post')
26842693

26852694
shared.JS.handle_license(final_js)
@@ -2818,13 +2827,13 @@ def consume_arg_file():
28182827
elif check_arg('--js-transform'):
28192828
options.js_transform = consume_arg()
28202829
elif check_arg('--pre-js'):
2821-
options.pre_js += read_file(consume_arg_file()) + '\n'
2830+
options.pre_js.append(consume_arg_file())
28222831
elif check_arg('--post-js'):
2823-
options.post_js += read_file(consume_arg_file()) + '\n'
2832+
options.post_js.append(consume_arg_file())
28242833
elif check_arg('--extern-pre-js'):
2825-
options.extern_pre_js += read_file(consume_arg_file()) + '\n'
2834+
options.extern_pre_js.append(consume_arg_file())
28262835
elif check_arg('--extern-post-js'):
2827-
options.extern_post_js += read_file(consume_arg_file()) + '\n'
2836+
options.extern_post_js.append(consume_arg_file())
28282837
elif check_arg('--compiler-wrapper'):
28292838
config.COMPILER_WRAPPER = consume_arg()
28302839
elif check_flag('--post-link'):

0 commit comments

Comments
 (0)