Skip to content

Commit 91cfda3

Browse files
authored
[file_packager] Support --obj-output + --depfile (#25050)
1 parent 4d2e76b commit 91cfda3

File tree

2 files changed

+33
-16
lines changed

2 files changed

+33
-16
lines changed

test/test_other.py

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3986,21 +3986,32 @@ def test_file_packager_export_es6(self):
39863986
self.assertContained('hello data', self.run_js('run.js'))
39873987

39883988
@crossplatform
3989-
def test_file_packager_depfile(self):
3989+
@parameterized({
3990+
'': (False,),
3991+
'embed': (True,),
3992+
})
3993+
def test_file_packager_depfile(self, embed):
39903994
create_file('data1.txt', 'data1')
39913995
ensure_dir('subdir')
39923996
create_file('subdir/data2.txt', 'data2')
39933997

3994-
self.run_process([FILE_PACKAGER, 'test.data', '--js-output=test.js', '--depfile=test.data.d', '--from-emcc', '--preload', '.'])
3995-
output = read_file('test.data.d')
3998+
if embed:
3999+
self.run_process([FILE_PACKAGER, 'test.data', '--obj-output=out.o', '--depfile=out.o.d', '--from-emcc', '--embed', '.'])
4000+
output = read_file('out.o.d')
4001+
else:
4002+
self.run_process([FILE_PACKAGER, 'test.data', '--js-output=test.js', '--depfile=test.data.d', '--from-emcc', '--preload', '.'])
4003+
output = read_file('test.data.d')
39964004
file_packager = utils.normalize_path(shared.replace_suffix(FILE_PACKAGER, '.py'))
39974005
file_packager = file_packager.replace(' ', '\\ ')
39984006
lines = output.splitlines()
39994007
split = lines.index(': \\')
40004008
before, after = set(lines[:split]), set(lines[split + 1:])
40014009
# Set comparison used because depfile is not order-sensitive.
4002-
self.assertTrue('test.data \\' in before)
4003-
self.assertTrue('test.js \\' in before)
4010+
if embed:
4011+
self.assertTrue('out.o \\' in before)
4012+
else:
4013+
self.assertTrue('test.data \\' in before)
4014+
self.assertTrue('test.js \\' in before)
40044015
self.assertTrue(file_packager + ' \\' in after)
40054016
self.assertTrue('. \\' in after)
40064017
self.assertTrue('./data1.txt \\' in after)

tools/file_packager.py

Lines changed: 17 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -545,6 +545,23 @@ def was_seen(name):
545545

546546
metadata = {'files': []}
547547

548+
if options.depfile:
549+
targets = []
550+
if options.obj_output:
551+
targets.append(options.obj_output)
552+
if options.jsoutput:
553+
targets.append(data_target)
554+
targets.append(options.jsoutput)
555+
with open(options.depfile, 'w') as f:
556+
for target in targets:
557+
if target:
558+
f.write(escape_for_makefile(target))
559+
f.write(' \\\n')
560+
f.write(': \\\n')
561+
for dependency in walked:
562+
f.write(escape_for_makefile(dependency))
563+
f.write(' \\\n')
564+
548565
if options.obj_output:
549566
if not options.has_embedded:
550567
diagnostics.error('--obj-output is only applicable when embedding files')
@@ -570,17 +587,6 @@ def was_seen(name):
570587
if options.separate_metadata:
571588
utils.write_file(options.jsoutput + '.metadata', json.dumps(metadata, separators=(',', ':')))
572589

573-
if options.depfile:
574-
with open(options.depfile, 'w') as f:
575-
for target in (data_target, options.jsoutput):
576-
if target:
577-
f.write(escape_for_makefile(target))
578-
f.write(' \\\n')
579-
f.write(': \\\n')
580-
for dependency in walked:
581-
f.write(escape_for_makefile(dependency))
582-
f.write(' \\\n')
583-
584590
return 0
585591

586592

0 commit comments

Comments
 (0)