Commit c9721d4d authored by Deomid Ryabkov's avatar Deomid Ryabkov Committed by Cesanta Bot

Re-enable amalgam tools publishing

PUBLISHED_FROM=f7fb01509b3f3982724cc3b05e357d8dd385a546
parent c848372b
...@@ -51,6 +51,10 @@ parser.add_argument('--public-header', dest="public", ...@@ -51,6 +51,10 @@ parser.add_argument('--public-header', dest="public",
' included at the beginning of the file') ' included at the beginning of the file')
parser.add_argument('--autoinc', action='store_true', parser.add_argument('--autoinc', action='store_true',
help='automatically embed include files') help='automatically embed include files')
parser.add_argument('--strict', action='store_true',
help='fail loudly if an include file cannot be resolved')
parser.add_argument('--norel', action='store_true',
help="do not try to compute a friendly relative path")
parser.add_argument('--exportable-headers', dest="export", action='store_true', parser.add_argument('--exportable-headers', dest="export", action='store_true',
help='allow exporting internal headers') help='allow exporting internal headers')
parser.add_argument('-I', default=".", dest='include_path', help='include path') parser.add_argument('-I', default=".", dest='include_path', help='include path')
...@@ -77,7 +81,7 @@ ignore_files = [i.strip() for i in args.ignore.split(',')] ...@@ -77,7 +81,7 @@ ignore_files = [i.strip() for i in args.ignore.split(',')]
def should_ignore(name): def should_ignore(name):
return (name in already_included return (name in already_included
or not os.path.exists(resolve(name)) or not (args.strict or os.path.exists(resolve(name)))
or name in ignore_files) or name in ignore_files)
def resolve(path): def resolve(path):
...@@ -85,9 +89,9 @@ def resolve(path): ...@@ -85,9 +89,9 @@ def resolve(path):
p = path p = path
else: else:
p = os.path.join(args.include_path, path) p = os.path.join(args.include_path, path)
if os.path.exists(p): if os.path.exists(p) and not args.norel:
p = os.path.realpath(p).replace('%s/' % os.getcwd(), '') p = os.path.realpath(p).replace('%s/' % os.getcwd(), '')
# print >>sys.stderr, '%s -> %s' % (path, p) # print >>sys.stderr, '%s -> %s (cwd %s)' % (path, p, os.getcwd())
return p return p
def emit_line_directive(out, name): def emit_line_directive(out, name):
...@@ -100,13 +104,13 @@ def emit_line_directive(out, name): ...@@ -100,13 +104,13 @@ def emit_line_directive(out, name):
def emit_body(out, name): def emit_body(out, name):
path = resolve(name) path = resolve(name)
if not os.path.exists(path): if not args.strict and not os.path.exists(path):
print >>out, '#include "%s"' % (name,) print >>out, '#include "%s"' % (name,)
return return
with open(resolve(name)) as f: with open(resolve(name)) as f:
for l in f: for l in f:
match = re.match('(#include "(.*)")', l) match = re.match('( *#include "(.*)")', l)
if match: if match:
all, path = match.groups() all, path = match.groups()
if args.autoinc: if args.autoinc:
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment