mirror of
https://github.com/wren-lang/wren.git
synced 2026-01-11 14:18:42 +01:00
Instead of dynamically downloading these as needed during a build, this checks in those two dependencies directly into the Wren repo. That's a little lame because users of Wren who aren't building the CLI don't actually need them, but they aren't too big, so it's not a huge deal. It makes builds (particularly on Travis) more reliable, because they don't have to pull down additional content over the network.
95 lines
2.7 KiB
Python
Executable File
95 lines
2.7 KiB
Python
Executable File
#!/usr/bin/env python
|
|
|
|
import os
|
|
import platform
|
|
import sys
|
|
|
|
try:
|
|
import multiprocessing.synchronize
|
|
gyp_parallel_support = True
|
|
except ImportError:
|
|
gyp_parallel_support = False
|
|
|
|
|
|
CC = os.environ.get('CC', 'cc')
|
|
script_dir = os.path.dirname(__file__)
|
|
uv_root = os.path.normpath(script_dir)
|
|
output_dir = os.path.join(os.path.abspath(uv_root), 'out')
|
|
|
|
sys.path.insert(0, os.path.join(uv_root, 'build', 'gyp', 'pylib'))
|
|
try:
|
|
import gyp
|
|
except ImportError:
|
|
print('You need to install gyp in build/gyp first. See the README.')
|
|
sys.exit(42)
|
|
|
|
|
|
def host_arch():
|
|
machine = platform.machine()
|
|
if machine == 'i386': return 'ia32'
|
|
if machine == 'AMD64': return 'x64'
|
|
if machine == 'x86_64': return 'x64'
|
|
if machine.startswith('arm'): return 'arm'
|
|
if machine.startswith('mips'): return 'mips'
|
|
return machine # Return as-is and hope for the best.
|
|
|
|
|
|
def run_gyp(args):
|
|
rc = gyp.main(args)
|
|
if rc != 0:
|
|
print('Error running GYP')
|
|
sys.exit(rc)
|
|
|
|
|
|
if __name__ == '__main__':
|
|
args = sys.argv[1:]
|
|
|
|
# GYP bug.
|
|
# On msvs it will crash if it gets an absolute path.
|
|
# On Mac/make it will crash if it doesn't get an absolute path.
|
|
if sys.platform == 'win32':
|
|
args.append(os.path.join(uv_root, 'uv.gyp'))
|
|
common_fn = os.path.join(uv_root, 'common.gypi')
|
|
options_fn = os.path.join(uv_root, 'options.gypi')
|
|
# we force vs 2010 over 2008 which would otherwise be the default for gyp
|
|
if not os.environ.get('GYP_MSVS_VERSION'):
|
|
os.environ['GYP_MSVS_VERSION'] = '2010'
|
|
else:
|
|
args.append(os.path.join(os.path.abspath(uv_root), 'uv.gyp'))
|
|
common_fn = os.path.join(os.path.abspath(uv_root), 'common.gypi')
|
|
options_fn = os.path.join(os.path.abspath(uv_root), 'options.gypi')
|
|
|
|
if os.path.exists(common_fn):
|
|
args.extend(['-I', common_fn])
|
|
|
|
if os.path.exists(options_fn):
|
|
args.extend(['-I', options_fn])
|
|
|
|
args.append('--depth=' + uv_root)
|
|
|
|
# There's a bug with windows which doesn't allow this feature.
|
|
if sys.platform != 'win32':
|
|
if '-f' not in args:
|
|
args.extend('-f make'.split())
|
|
if 'eclipse' not in args and 'ninja' not in args:
|
|
args.extend(['-Goutput_dir=' + output_dir])
|
|
args.extend(['--generator-output', output_dir])
|
|
|
|
if not any(a.startswith('-Dhost_arch=') for a in args):
|
|
args.append('-Dhost_arch=%s' % host_arch())
|
|
|
|
if not any(a.startswith('-Dtarget_arch=') for a in args):
|
|
args.append('-Dtarget_arch=%s' % host_arch())
|
|
|
|
if not any(a.startswith('-Duv_library=') for a in args):
|
|
args.append('-Duv_library=static_library')
|
|
|
|
# Some platforms (OpenBSD for example) don't have multiprocessing.synchronize
|
|
# so gyp must be run with --no-parallel
|
|
if not gyp_parallel_support:
|
|
args.append('--no-parallel')
|
|
|
|
gyp_args = list(args)
|
|
print(gyp_args)
|
|
run_gyp(gyp_args)
|