aboutsummaryrefslogtreecommitdiffstats
path: root/python
diff options
context:
space:
mode:
authorbors-servo <lbergstrom+bors@mozilla.com>2018-08-20 18:23:22 -0400
committerGitHub <noreply@github.com>2018-08-20 18:23:22 -0400
commit5c8ede4b05f3940cfaa94d6341984502c920685d (patch)
treea80924c2d87b67e8963c1f23dee425f012ed23a5 /python
parent561908a965e6eef79800d3cc7598e5e6ea534cf9 (diff)
parent74c1e00d8163f255bb4141ff3549bbdedd7ea766 (diff)
downloadservo-5c8ede4b05f3940cfaa94d6341984502c920685d.tar.gz
servo-5c8ede4b05f3940cfaa94d6341984502c920685d.zip
Auto merge of #21029 - asajeffrey:smup, r=Manishearth,nox
Upgrade to SM 60 <!-- Please describe your changes on the following line: --> This is the mozjs_sys smup PR. Depends on https://github.com/servo/mozjs/pull/138 and https://github.com/servo/rust-mozjs/pull/430. --- <!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `__` with appropriate data: --> - [X] `./mach build -d` does not report any errors - [X] `./mach test-tidy` does not report any errors - [X] These changes fix #20585 <!-- Either: --> - [X] These changes do not require tests because the existing tests will ensure SM is still working <!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.--> <!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. --> <!-- Reviewable:start --> --- This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/21029) <!-- Reviewable:end -->
Diffstat (limited to 'python')
-rw-r--r--python/servo/build_commands.py79
-rw-r--r--python/servo/command_base.py28
-rw-r--r--python/servo/packages.py2
3 files changed, 76 insertions, 33 deletions
diff --git a/python/servo/build_commands.py b/python/servo/build_commands.py
index fb2a61681ac..d788b092c05 100644
--- a/python/servo/build_commands.py
+++ b/python/servo/build_commands.py
@@ -25,6 +25,7 @@ from mach.decorators import (
)
from mach.registrar import Registrar
+from mach_bootstrap import _get_exec_path
from servo.command_base import CommandBase, cd, call, check_call, BIN_SUFFIX
from servo.util import host_triple
@@ -271,8 +272,10 @@ class MachCommands(CommandBase):
sys.exit(1)
android_platform = self.config["android"]["platform"]
- android_toolchain = self.config["android"]["toolchain_name"]
- android_arch = "arch-" + self.config["android"]["arch"]
+ android_toolchain_name = self.config["android"]["toolchain_name"]
+ android_toolchain_prefix = self.config["android"]["toolchain_prefix"]
+ android_lib = self.config["android"]["lib"]
+ android_arch = self.config["android"]["arch"]
# Build OpenSSL for android
env["OPENSSL_VERSION"] = "1.0.2k"
@@ -298,7 +301,7 @@ class MachCommands(CommandBase):
sys.exit(1)
env["RUST_TARGET"] = target
- env["ANDROID_TOOLCHAIN_NAME"] = self.config["android"]["toolchain_prefix"]
+ env["ANDROID_TOOLCHAIN_NAME"] = android_toolchain_name
with cd(openssl_dir):
status = call(
make_cmd + ["-f", "openssl.makefile"],
@@ -324,30 +327,67 @@ class MachCommands(CommandBase):
host_suffix = "x86_64"
host = os_type + "-" + host_suffix
- env['PATH'] = path.join(
- env['ANDROID_NDK'], "toolchains", android_toolchain, "prebuilt", host, "bin"
- ) + ':' + env['PATH']
- env['ANDROID_SYSROOT'] = path.join(env['ANDROID_NDK'], "platforms", android_platform, android_arch)
+ host_cc = env.get('HOST_CC') or _get_exec_path(["clang"]) or _get_exec_path(["gcc"])
+ host_cxx = env.get('HOST_CXX') or _get_exec_path(["clang++"]) or _get_exec_path(["g++"])
+
+ llvm_toolchain = path.join(env['ANDROID_NDK'], "toolchains", "llvm", "prebuilt", host)
+ gcc_toolchain = path.join(env['ANDROID_NDK'], "toolchains",
+ android_toolchain_prefix + "-4.9", "prebuilt", host)
+ gcc_libs = path.join(gcc_toolchain, "lib", "gcc", android_toolchain_name, "4.9.x")
+
+ env['PATH'] = (path.join(llvm_toolchain, "bin") + ':'
+ + path.join(gcc_toolchain, "bin") + ':'
+ + env['PATH'])
+ env['ANDROID_SYSROOT'] = path.join(env['ANDROID_NDK'], "platforms",
+ android_platform, "arch-" + android_arch)
support_include = path.join(env['ANDROID_NDK'], "sources", "android", "support", "include")
- cxx_include = path.join(
- env['ANDROID_NDK'], "sources", "cxx-stl", "llvm-libc++", "libcxx", "include")
- cxxabi_include = path.join(
- env['ANDROID_NDK'], "sources", "cxx-stl", "llvm-libc++abi", "libcxxabi", "include")
- sysroot_include = path.join(
- env['ANDROID_SYSROOT'], "usr", "include")
+ cxx_include = path.join(env['ANDROID_NDK'], "sources", "cxx-stl",
+ "llvm-libc++", "libcxx", "include")
+ sysroot_include = path.join(env['ANDROID_SYSROOT'], "usr", "include")
+ env['HOST_CC'] = host_cc
+ env['HOST_CXX'] = host_cxx
env['HOST_CFLAGS'] = ''
+ env['HOST_CXXFLAGS'] = ''
+ env['CC'] = path.join(llvm_toolchain, "bin", "clang")
+ env['CPP'] = path.join(llvm_toolchain, "bin", "clang") + " -E"
+ env['CXX'] = path.join(llvm_toolchain, "bin", "clang++")
+ env['ANDROID_TOOLCHAIN'] = gcc_toolchain
+ env['GCC_TOOLCHAIN'] = gcc_toolchain
+ gcc_toolchain_bin = path.join(gcc_toolchain, android_toolchain_name, "bin")
+ env['AR'] = path.join(gcc_toolchain_bin, "ar")
+ env['RANLIB'] = path.join(gcc_toolchain_bin, "ranlib")
+ env['OBJCOPY'] = path.join(gcc_toolchain_bin, "objcopy")
+ env['YASM'] = path.join(env['ANDROID_NDK'], 'prebuilt', host, 'bin', 'yasm')
+ # A cheat-sheet for some of the build errors caused by getting the search path wrong...
+ #
+ # fatal error: 'limits' file not found
+ # -- add -I cxx_include
+ # unknown type name '__locale_t' (when running bindgen in mozjs_sys)
+ # -- add -isystem sysroot_include
+ # error: use of undeclared identifier 'UINTMAX_C'
+ # -- add -D__STDC_CONSTANT_MACROS
+ #
+ # Also worth remembering: autoconf uses C for its configuration,
+ # even for C++ builds, so the C flags need to line up with the C++ flags.
env['CFLAGS'] = ' '.join([
+ "--target=" + target,
"--sysroot=" + env['ANDROID_SYSROOT'],
- "-I" + support_include])
+ "--gcc-toolchain=" + gcc_toolchain,
+ "-isystem", sysroot_include,
+ "-L" + gcc_libs])
env['CXXFLAGS'] = ' '.join([
+ "--target=" + target,
"--sysroot=" + env['ANDROID_SYSROOT'],
+ "--gcc-toolchain=" + gcc_toolchain,
"-I" + support_include,
"-I" + cxx_include,
- "-I" + cxxabi_include,
- "-I" + sysroot_include])
+ "-isystem", sysroot_include,
+ "-L" + gcc_libs,
+ "-D__STDC_CONSTANT_MACROS",
+ "-D__NDK_FPABI__="])
env["NDK_ANDROID_VERSION"] = android_platform.replace("android-", "")
env['CPPFLAGS'] = ' '.join(["--sysroot", env['ANDROID_SYSROOT']])
- env["CMAKE_ANDROID_ARCH_ABI"] = self.config["android"]["lib"]
+ env["CMAKE_ANDROID_ARCH_ABI"] = android_lib
env["CMAKE_TOOLCHAIN_FILE"] = path.join(self.android_support_dir(), "toolchain.cmake")
# Set output dir for gradle aar files
aar_out_dir = self.android_aar_dir()
@@ -355,6 +395,11 @@ class MachCommands(CommandBase):
os.makedirs(aar_out_dir)
env["AAR_OUT_DIR"] = aar_out_dir
+ if very_verbose:
+ print (["Calling", "cargo", "build"] + opts)
+ for key in env:
+ print((key, env[key]))
+
status = self.call_rustup_run(["cargo", "build"] + opts, env=env, verbose=verbose)
elapsed = time() - build_start
diff --git a/python/servo/command_base.py b/python/servo/command_base.py
index e858dc703e9..7d81b5a29ef 100644
--- a/python/servo/command_base.py
+++ b/python/servo/command_base.py
@@ -503,8 +503,13 @@ class CommandBase(object):
env["OPENSSL_INCLUDE_DIR"] = path.join(package_dir("openssl"), "include")
env["OPENSSL_LIB_DIR"] = path.join(package_dir("openssl"), "lib" + msvc_x64)
env["OPENSSL_LIBS"] = "libsslMD:libcryptoMD"
- # Link moztools
- env["MOZTOOLS_PATH"] = path.join(package_dir("moztools"), "bin")
+ # Link moztools, used for building SpiderMonkey
+ env["MOZTOOLS_PATH"] = os.pathsep.join([
+ path.join(package_dir("moztools"), "bin"),
+ path.join(package_dir("moztools"), "msys", "bin"),
+ ])
+ # Link autoconf 2.13, used for building SpiderMonkey
+ env["AUTOCONF"] = path.join(package_dir("moztools"), "msys", "local", "bin", "autoconf-2.13")
# Link LLVM
env["LIBCLANG_PATH"] = path.join(package_dir("llvm"), "lib")
@@ -650,21 +655,13 @@ class CommandBase(object):
return "emulator"
def handle_android_target(self, target):
- if target == "arm-linux-androideabi":
- self.config["android"]["platform"] = "android-18"
- self.config["android"]["target"] = target
- self.config["android"]["toolchain_prefix"] = target
- self.config["android"]["arch"] = "arm"
- self.config["android"]["lib"] = "armeabi"
- self.config["android"]["toolchain_name"] = target + "-4.9"
- return True
- elif target == "armv7-linux-androideabi":
+ if target == "armv7-linux-androideabi":
self.config["android"]["platform"] = "android-18"
self.config["android"]["target"] = target
self.config["android"]["toolchain_prefix"] = "arm-linux-androideabi"
self.config["android"]["arch"] = "arm"
self.config["android"]["lib"] = "armeabi-v7a"
- self.config["android"]["toolchain_name"] = "arm-linux-androideabi-4.9"
+ self.config["android"]["toolchain_name"] = "arm-linux-androideabi"
return True
elif target == "aarch64-linux-android":
self.config["android"]["platform"] = "android-21"
@@ -672,15 +669,16 @@ class CommandBase(object):
self.config["android"]["toolchain_prefix"] = target
self.config["android"]["arch"] = "arm64"
self.config["android"]["lib"] = "arm64-v8a"
- self.config["android"]["toolchain_name"] = target + "-4.9"
+ self.config["android"]["toolchain_name"] = target
return True
elif target == "i686-linux-android":
- self.config["android"]["platform"] = "android-18"
+ # https://github.com/jemalloc/jemalloc/issues/1279
+ self.config["android"]["platform"] = "android-21"
self.config["android"]["target"] = target
self.config["android"]["toolchain_prefix"] = "x86"
self.config["android"]["arch"] = "x86"
self.config["android"]["lib"] = "x86"
- self.config["android"]["toolchain_name"] = "x86-4.9"
+ self.config["android"]["toolchain_name"] = target
return True
return False
diff --git a/python/servo/packages.py b/python/servo/packages.py
index decb2695ba1..f34a495fcc8 100644
--- a/python/servo/packages.py
+++ b/python/servo/packages.py
@@ -5,7 +5,7 @@
WINDOWS_MSVC = {
"cmake": "3.7.2",
"llvm": "6.0.0",
- "moztools": "0.0.1-5",
+ "moztools": "3.2",
"ninja": "1.7.1",
"openssl": "1.1.0e-vs2015",
}