#!/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))