diff options
author | bors-servo <lbergstrom+bors@mozilla.com> | 2018-08-20 18:23:22 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-08-20 18:23:22 -0400 |
commit | 5c8ede4b05f3940cfaa94d6341984502c920685d (patch) | |
tree | a80924c2d87b67e8963c1f23dee425f012ed23a5 /python/servo | |
parent | 561908a965e6eef79800d3cc7598e5e6ea534cf9 (diff) | |
parent | 74c1e00d8163f255bb4141ff3549bbdedd7ea766 (diff) | |
download | servo-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/servo')
-rw-r--r-- | python/servo/build_commands.py | 79 | ||||
-rw-r--r-- | python/servo/command_base.py | 28 | ||||
-rw-r--r-- | python/servo/packages.py | 2 |
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", } |