forked from Mirror/wren
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.
94 lines
2.1 KiB
Python
Executable File
94 lines
2.1 KiB
Python
Executable File
#!/usr/bin/env python
|
|
|
|
# Runs GYP to generate the right project then uses that to build libuv.
|
|
|
|
from __future__ import print_function
|
|
|
|
import os
|
|
import platform
|
|
import shutil
|
|
import sys
|
|
|
|
from util import ensure_dir, python2_binary, run
|
|
|
|
LIB_UV_VERSION = "v1.10.0"
|
|
LIB_UV_DIR = "deps/libuv"
|
|
|
|
|
|
def build_libuv_mac():
|
|
# Create the XCode project.
|
|
run([
|
|
python2_binary(), LIB_UV_DIR + "/gyp_uv.py", "-f", "xcode"
|
|
])
|
|
|
|
# Compile it.
|
|
# TODO: Support debug builds too.
|
|
run([
|
|
"xcodebuild",
|
|
# Build a 32-bit + 64-bit universal binary:
|
|
"ARCHS=i386 x86_64", "ONLY_ACTIVE_ARCH=NO",
|
|
"BUILD_DIR=out",
|
|
"-project", LIB_UV_DIR + "/uv.xcodeproj",
|
|
"-configuration", "Release",
|
|
"-target", "libuv"
|
|
])
|
|
|
|
|
|
def build_libuv_linux(arch):
|
|
# Set up the Makefile to build for the right architecture.
|
|
args = [python2_binary(), "gyp_uv.py", "-f", "make"]
|
|
if arch == "-32":
|
|
args.append("-Dtarget_arch=ia32")
|
|
elif arch == "-64":
|
|
args.append("-Dtarget_arch=x64")
|
|
|
|
run(args, cwd=LIB_UV_DIR)
|
|
run(["make", "-C", "out", "BUILDTYPE=Release"], cwd=LIB_UV_DIR)
|
|
|
|
|
|
def build_libuv_windows(arch):
|
|
args = ["cmd", "/c", "vcbuild.bat", "release"]
|
|
if arch == "-32":
|
|
args.append("x86")
|
|
elif arch == "-64":
|
|
args.append("x64")
|
|
run(args, cwd=LIB_UV_DIR)
|
|
|
|
|
|
def build_libuv(arch, out):
|
|
if platform.system() == "Darwin":
|
|
build_libuv_mac()
|
|
elif platform.system() == "Linux":
|
|
build_libuv_linux(arch)
|
|
elif platform.system() == "Windows":
|
|
build_libuv_windows(arch)
|
|
else:
|
|
print("Unsupported platform: " + platform.system())
|
|
sys.exit(1)
|
|
|
|
# Copy the build library to the build directory for Mac and Linux where we
|
|
# support building for multiple architectures.
|
|
if platform.system() != "Windows":
|
|
ensure_dir(os.path.dirname(out))
|
|
shutil.copyfile(
|
|
os.path.join(LIB_UV_DIR, "out", "Release", "libuv.a"), out)
|
|
|
|
|
|
def main(args):
|
|
expect_usage(len(args) >= 1 and len(args) <= 2)
|
|
|
|
arch = "" if len(args) < 2 else args[2]
|
|
out = os.path.join("build", "libuv" + arch + ".a")
|
|
|
|
build_libuv(arch, out)
|
|
|
|
|
|
def expect_usage(condition):
|
|
if (condition): return
|
|
|
|
print("Usage: build_libuv.py [-32|-64]")
|
|
sys.exit(1)
|
|
|
|
|
|
main(sys.argv)
|