82 lines
1.9 KiB
Text
82 lines
1.9 KiB
Text
|
#!/usr/bin/env python
|
||
|
|
||
|
import sys
|
||
|
import subprocess
|
||
|
from os import environ
|
||
|
from os.path import basename, join
|
||
|
|
||
|
libs = [ ]
|
||
|
objects = [ ]
|
||
|
output = None
|
||
|
|
||
|
copylibs = environ.get('COPYLIBS', '0') == '1'
|
||
|
|
||
|
i = 1
|
||
|
while i < len(sys.argv):
|
||
|
opt = sys.argv[i]
|
||
|
i += 1
|
||
|
|
||
|
if opt == "-o":
|
||
|
output = sys.argv[i]
|
||
|
i += 1
|
||
|
continue
|
||
|
|
||
|
if opt.startswith(("-l", "-L")):
|
||
|
libs.append(opt)
|
||
|
continue
|
||
|
|
||
|
if opt in ("-r", "-pipe", "-no-cpp-precomp"):
|
||
|
continue
|
||
|
|
||
|
if opt in ("--sysroot", "-isysroot", "-framework", "-undefined",
|
||
|
"-macosx_version_min"):
|
||
|
i += 1
|
||
|
continue
|
||
|
|
||
|
if opt.startswith(
|
||
|
("-I", "-isystem", "-m", "-f", "-O", "-g", "-D", "-R")):
|
||
|
|
||
|
if opt.startswith("-"):
|
||
|
print(sys.argv)
|
||
|
print("Unknown option: %s" % opt)
|
||
|
sys.exit(1)
|
||
|
|
||
|
if not opt.endswith('.o'):
|
||
|
continue
|
||
|
|
||
|
objects.append(opt)
|
||
|
|
||
|
|
||
|
print('liblink path is', str(environ.get('LIBLINK_PATH')))
|
||
|
abs_output = join(environ.get('LIBLINK_PATH'), basename(output))
|
||
|
|
||
|
if not copylibs:
|
||
|
f = open(output, "w")
|
||
|
f.close()
|
||
|
|
||
|
output = abs_output
|
||
|
|
||
|
f = open(output + ".libs", "w")
|
||
|
f.write(" ".join(libs))
|
||
|
f.close()
|
||
|
|
||
|
sys.exit(subprocess.call([
|
||
|
environ.get('LD'), '-r',
|
||
|
'-o', output + '.o'
|
||
|
#, '-arch', environ.get('ARCH')
|
||
|
] + objects))
|
||
|
else:
|
||
|
with open(abs_output + '.libs', 'w') as f_libs:
|
||
|
with open(abs_output + '.libdirs', 'w') as f_libdirs:
|
||
|
for l in libs:
|
||
|
if l[1] == 'l':
|
||
|
f_libs.write(l[2:])
|
||
|
f_libs.write(' ')
|
||
|
else:
|
||
|
f_libdirs.write(l[2:])
|
||
|
f_libdirs.write(' ')
|
||
|
|
||
|
libargs = ' '.join(["'%s'" % arg for arg in sys.argv[1:]])
|
||
|
cmd = '%s -shared %s %s' % (environ['CC'], environ['LDFLAGS'], libargs)
|
||
|
sys.exit(subprocess.call(cmd, shell=True))
|