forked from Mirror/wren
Repaired amalgamation script
The amalgamation script now searches for files in the different directories of src. Also the full paths in the amalgamation were replaced by the basename to produce the same content on all machines. The makefile now creates the build directory for the amalgamation if it does not exist.
This commit is contained in:
@ -1,7 +1,7 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
import sys
|
||||
from os.path import basename, dirname, join, realpath
|
||||
from os.path import basename, dirname, join, realpath, isfile
|
||||
from glob import iglob
|
||||
import re
|
||||
|
||||
@ -12,6 +12,18 @@ WREN_DIR = dirname(dirname(realpath(__file__)))
|
||||
seen_files = set()
|
||||
out = sys.stdout
|
||||
|
||||
# Find a file in the different folders of the src dir.
|
||||
def find_file(filename):
|
||||
names = [
|
||||
join(WREN_DIR, 'src', 'include', filename),
|
||||
join(WREN_DIR, 'src', 'vm', filename),
|
||||
join(WREN_DIR, 'src', 'optional', filename),
|
||||
]
|
||||
for f in names:
|
||||
if isfile(f):
|
||||
return f
|
||||
raise Exception('File "{0}" not found!'.format(filename))
|
||||
|
||||
# Prints a plain text file, adding comment markers.
|
||||
def add_comment_file(filename):
|
||||
with open(filename, 'r') as f:
|
||||
@ -26,19 +38,18 @@ def add_file(filename):
|
||||
if bname in seen_files:
|
||||
return
|
||||
once = False
|
||||
path = dirname(filename)
|
||||
|
||||
out.write('// Begin file "{0}"\n'.format(filename))
|
||||
out.write('// Begin file "{0}"\n'.format(bname))
|
||||
with open(filename, 'r') as f:
|
||||
for line in f:
|
||||
m = INCLUDE_PATTERN.match(line)
|
||||
if m:
|
||||
add_file(join(path, m.group(1)))
|
||||
add_file(find_file(m.group(1)))
|
||||
else:
|
||||
out.write(line)
|
||||
if GUARD_PATTERN.match(line):
|
||||
once = True
|
||||
out.write('// End file "{0}"\n'.format(filename))
|
||||
out.write('// End file "{0}"\n'.format(bname))
|
||||
|
||||
# Only skip header files which use #ifndef guards.
|
||||
# This is necessary because of the X Macro technique.
|
||||
@ -57,3 +68,6 @@ add_file(join(WREN_DIR, 'src', 'vm', 'wren_debug.h'))
|
||||
|
||||
for f in iglob(join(WREN_DIR, 'src', 'vm', '*.c')):
|
||||
add_file(f)
|
||||
|
||||
for f in iglob(join(WREN_DIR, 'src', 'optional', '*.c')):
|
||||
add_file(f)
|
||||
|
||||
Reference in New Issue
Block a user