Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
tree: 2409d22cf6
Fetching contributors…

Cannot retrieve contributors at this time

executable file 61 lines (48 sloc) 1.688 kb
#!/usr/bin/env python
'''
emld - linker helper script
===========================
This script acts as a frontend replacement for the ld linker. See emcc.
We could use the compiler code for this, but here we want to be careful to use all the linker flags we have been passed, sending them to ld.
'''
import os, subprocess, sys
from tools import shared
DEBUG = os.environ.get('EMCC_DEBUG')
if DEBUG:
print >> sys.stderr, 'emld:', sys.argv
ALLOWED_LINK_ARGS = ['-f', '-help', '-o', '-print-after', '-print-after-all', '-print-before',
'-print-before-all', '-time-passes', '-v', '-verify-dom-info', '-version' ]
TWO_PART_DISALLOWED_LINK_ARGS = ['-L'] # Ignore thingsl like |-L .|
# Check for specified target
target = None
for i in range(len(sys.argv)-1):
if sys.argv[i].startswith('-o='):
raise Exception('Invalid syntax: do not use -o=X, use -o X')
if sys.argv[i] == '-o':
target = sys.argv[i+1]
sys.argv = sys.argv[:i] + sys.argv[i+2:]
break
call = shared.LLVM_LD
newargs = ['-disable-opt']
i = 0
while i < len(sys.argv)-1:
i += 1
arg = sys.argv[i]
if arg.startswith('-'):
prefix = arg.split('=')[0]
if prefix in ALLOWED_LINK_ARGS:
newargs.append(arg)
if arg in TWO_PART_DISALLOWED_LINK_ARGS:
i += 1
elif arg.endswith('.so'):
continue # .so's do not exist yet, in many cases
else:
# not option, so just append
newargs.append(arg)
if target:
actual_target = target
if target.endswith('.js'):
actual_target = unsuffixed(target) + '.bc'
newargs.append('-o=' + actual_target)
if DEBUG: print >> sys.stderr, "emld running:", call, ' '.join(newargs)
subprocess.call([call] + newargs)
Jump to Line
Something went wrong with that request. Please try again.