213 lines
10 KiB
Plaintext
213 lines
10 KiB
Plaintext
diff --git a/swift/utils/build-script-impl b/swift/utils/build-script-impl
|
|
index b1d060328bc..218c9215260 100755
|
|
--- a/swift/utils/build-script-impl
|
|
+++ b/swift/utils/build-script-impl
|
|
@@ -690,6 +690,8 @@ function set_build_options_for_host() {
|
|
;;
|
|
android-aarch64)
|
|
SWIFT_HOST_VARIANT_ARCH="aarch64"
|
|
+ SWIFT_HOST_TRIPLE="aarch64-unknown-linux-android"
|
|
+ llvm_target_arch="AArch64"
|
|
;;
|
|
esac
|
|
;;
|
|
@@ -703,6 +705,8 @@ function set_build_options_for_host() {
|
|
llvm_cmake_options+=(
|
|
-DLLVM_TOOL_COMPILER_RT_BUILD:BOOL="$(false_true ${SKIP_BUILD_COMPILER_RT})"
|
|
-DLLVM_BUILD_EXTERNAL_COMPILER_RT:BOOL="$(false_true ${SKIP_BUILD_COMPILER_RT})"
|
|
+ -DDEFAULT_SYSROOT:STRING="$(dirname @TERMUX_PREFIX@)"
|
|
+ -DCOMPILER_RT_INCLUDE_TESTS:BOOL="OFF"
|
|
)
|
|
|
|
# If we are asked to not generate test targets for LLVM and or Swift,
|
|
@@ -1028,7 +1032,7 @@ function make_relative_symlink() {
|
|
CROSS_COMPILE_HOSTS=($CROSS_COMPILE_HOSTS)
|
|
for t in "${CROSS_COMPILE_HOSTS[@]}"; do
|
|
case ${t} in
|
|
- iphone* | appletv* | watch* | linux-armv6 | linux-armv7 )
|
|
+ iphone* | appletv* | watch* | linux-armv6 | linux-armv7 | android-aarch64 )
|
|
;;
|
|
*)
|
|
echo "Unknown host to cross-compile for: ${t}"
|
|
@@ -1060,7 +1064,7 @@ function get_host_install_destdir() {
|
|
# If this is one of the hosts we should lipo, install in to a temporary subdirectory.
|
|
local host_install_destdir="${BUILD_DIR}/intermediate-install/${host}"
|
|
else
|
|
- local host_install_destdir="${INSTALL_DESTDIR}/${host}"
|
|
+ local host_install_destdir="${INSTALL_DESTDIR}"
|
|
fi
|
|
else
|
|
local host_install_destdir="${INSTALL_DESTDIR}"
|
|
@@ -1422,6 +1426,26 @@ function swift_c_flags() {
|
|
fi
|
|
}
|
|
|
|
+function android_cross_cmake_options() {
|
|
+ local -n options=$1
|
|
+ options+=(
|
|
+ -DCMAKE_SYSTEM_NAME=Android
|
|
+ -DCMAKE_SYSTEM_VERSION=@TERMUX_PKG_API_LEVEL@
|
|
+ -DCMAKE_SYSTEM_PROCESSOR=@TERMUX_ARCH@
|
|
+ -DCMAKE_ANDROID_STANDALONE_TOOLCHAIN="@TERMUX_STANDALONE_TOOLCHAIN@"
|
|
+ -DCMAKE_C_FLAGS="$CFLAGS --target=$CCTERMUX_HOST_PLATFORM $CPPFLAGS"
|
|
+ -DCMAKE_CXX_FLAGS="$CXXFLAGS --target=$CCTERMUX_HOST_PLATFORM $CPPFLAGS"
|
|
+ -DCMAKE_EXE_LINKER_FLAGS="$LDFLAGS --target=$CCTERMUX_HOST_PLATFORM"
|
|
+ -DCMAKE_MODULE_LINKER_FLAGS="$LDFLAGS --target=$CCTERMUX_HOST_PLATFORM"
|
|
+ -DCMAKE_SHARED_LINKER_FLAGS="$LDFLAGS --target=$CCTERMUX_HOST_PLATFORM"
|
|
+ -DCMAKE_FIND_ROOT_PATH=@TERMUX_PREFIX@
|
|
+ -DCMAKE_FIND_ROOT_PATH_MODE_PROGRAM=NEVER
|
|
+ -DCMAKE_FIND_ROOT_PATH_MODE_INCLUDE=ONLY
|
|
+ -DCMAKE_FIND_ROOT_PATH_MODE_LIBRARY=ONLY
|
|
+ -DCMAKE_HAVE_LIBC_PTHREAD=True
|
|
+ )
|
|
+}
|
|
+
|
|
function cmake_config_opt() {
|
|
product=$1
|
|
if [[ "${CMAKE_GENERATOR}" == "Xcode" ]] ; then
|
|
@@ -1653,6 +1682,13 @@ for host in "${ALL_HOSTS[@]}"; do
|
|
-DCMAKE_BUILD_TYPE:STRING="${CMARK_BUILD_TYPE}"
|
|
"${cmark_cmake_options[@]}"
|
|
)
|
|
+ if [[ $(is_cross_tools_host ${host}) ]] ; then
|
|
+ cmake_options=(
|
|
+ "${cmake_options[@]}"
|
|
+ -DCMAKE_C_FLAGS="$(cmark_c_flags ${host}) --target=$CCTERMUX_HOST_PLATFORM"
|
|
+ -DCMAKE_CXX_FLAGS="$(cmark_c_flags ${host}) --target=$CCTERMUX_HOST_PLATFORM"
|
|
+ )
|
|
+ fi
|
|
skip_build=${SKIP_BUILD_CMARK}
|
|
build_targets=(all)
|
|
;;
|
|
@@ -1758,6 +1794,7 @@ for host in "${ALL_HOSTS[@]}"; do
|
|
-DCLANG_TABLEGEN=$(build_directory "${LOCAL_HOST}" llvm)/bin/clang-tblgen
|
|
-DLLVM_NATIVE_BUILD=$(build_directory "${LOCAL_HOST}" llvm)
|
|
)
|
|
+ android_cross_cmake_options cmake_options
|
|
fi
|
|
|
|
;;
|
|
@@ -1768,12 +1812,18 @@ for host in "${ALL_HOSTS[@]}"; do
|
|
|
|
swift)
|
|
|
|
- if [[ ! "${SKIP_BUILD_ANDROID}" ]]; then
|
|
+ if [[ "${ANDROID_API_LEVEL}" ]]; then
|
|
+ cmake_options=(
|
|
+ "${cmake_options[@]}"
|
|
+ -DSWIFT_ANDROID_API_LEVEL:STRING="${ANDROID_API_LEVEL}"
|
|
+ )
|
|
+ fi
|
|
+
|
|
+ if [[ $(is_cross_tools_host ${host}) ]] ; then
|
|
cmake_options=(
|
|
"${cmake_options[@]}"
|
|
-DSWIFT_ANDROID_NDK_PATH:STRING="${ANDROID_NDK}"
|
|
-DSWIFT_ANDROID_NDK_GCC_VERSION:STRING="${ANDROID_NDK_GCC_VERSION}"
|
|
- -DSWIFT_ANDROID_API_LEVEL:STRING="${ANDROID_API_LEVEL}"
|
|
-DSWIFT_ANDROID_${ANDROID_ARCH}_ICU_UC:STRING="${ANDROID_ICU_UC}"
|
|
-DSWIFT_ANDROID_${ANDROID_ARCH}_ICU_UC_INCLUDE:STRING="${ANDROID_ICU_UC_INCLUDE}"
|
|
-DSWIFT_ANDROID_${ANDROID_ARCH}_ICU_I18N:STRING="${ANDROID_ICU_I18N}"
|
|
@@ -2116,6 +2163,7 @@ for host in "${ALL_HOSTS[@]}"; do
|
|
-DCMAKE_CXX_COMPILER:PATH="${CLANG_BIN}/clang++"
|
|
-DCMAKE_INSTALL_PREFIX:PATH="$(get_host_install_prefix ${host})"
|
|
-DCMAKE_Swift_COMPILER:PATH=${SWIFTC_BIN}
|
|
+ -DCMAKE_Swift_FLAGS="${TERMUX_SWIFT_FLAGS}"
|
|
|
|
-DLLBUILD_ENABLE_ASSERTIONS:BOOL=$(true_false "${LLBUILD_ENABLE_ASSERTIONS}")
|
|
-DLLBUILD_SUPPORT_BINDINGS:=Swift
|
|
@@ -2144,6 +2192,11 @@ for host in "${ALL_HOSTS[@]}"; do
|
|
-DSQLite3_LIBRARY:PATH="/usr/lib/libsqlite3.dylib"
|
|
)
|
|
fi
|
|
+
|
|
+ build_targets=(llbuildSwift)
|
|
+ if [[ $(is_cross_tools_host ${host}) ]] ; then
|
|
+ android_cross_cmake_options cmake_options
|
|
+ fi
|
|
;;
|
|
xctest)
|
|
XCTEST_BUILD_DIR=$(build_directory ${host} xctest)
|
|
@@ -2189,6 +2242,7 @@ for host in "${ALL_HOSTS[@]}"; do
|
|
-DCMAKE_C_COMPILER:PATH="${CLANG_BIN}/clang"
|
|
-DCMAKE_CXX_COMPILER:PATH="${CLANG_BIN}/clang++"
|
|
-DCMAKE_Swift_COMPILER:PATH=${SWIFTC_BIN}
|
|
+ -DCMAKE_Swift_FLAGS="${TERMUX_SWIFT_FLAGS}"
|
|
-DCMAKE_INSTALL_PREFIX:PATH="$(get_host_install_prefix ${host})"
|
|
-DCMAKE_INSTALL_LIBDIR:PATH="lib"
|
|
|
|
@@ -2204,6 +2258,10 @@ for host in "${ALL_HOSTS[@]}"; do
|
|
|
|
-DENABLE_TESTING=YES
|
|
)
|
|
+
|
|
+ if [[ $(is_cross_tools_host ${host}) ]] ; then
|
|
+ android_cross_cmake_options cmake_options
|
|
+ fi
|
|
;;
|
|
esac
|
|
|
|
@@ -2268,6 +2326,7 @@ for host in "${ALL_HOSTS[@]}"; do
|
|
-DCMAKE_C_COMPILER:PATH=${CLANG_BIN}/clang
|
|
-DCMAKE_CXX_COMPILER:PATH=${CLANG_BIN}/clang++
|
|
-DCMAKE_SWIFT_COMPILER:PATH=${SWIFTC_BIN}
|
|
+ -DCMAKE_Swift_FLAGS="${TERMUX_SWIFT_FLAGS}"
|
|
-DCMAKE_Swift_COMPILER:PATH=${SWIFTC_BIN}
|
|
-DCMAKE_INSTALL_PREFIX:PATH=$(get_host_install_prefix ${host})
|
|
|
|
@@ -2281,6 +2340,9 @@ for host in "${ALL_HOSTS[@]}"; do
|
|
-DBUILD_SHARED_LIBS=$([[ ${product} == foundation_static ]] && echo "NO" || echo "YES")
|
|
)
|
|
|
|
+ if [[ $(is_cross_tools_host ${host}) ]] ; then
|
|
+ android_cross_cmake_options cmake_options
|
|
+ fi
|
|
;;
|
|
libdispatch|libdispatch_static)
|
|
LIBDISPATCH_BUILD_DIR=$(build_directory ${host} ${product})
|
|
@@ -2307,6 +2369,7 @@ for host in "${ALL_HOSTS[@]}"; do
|
|
-DCMAKE_CXX_COMPILER:PATH="${CLANG_BIN}/clang++"
|
|
-DCMAKE_SWIFT_COMPILER:PATH="${SWIFTC_BIN}"
|
|
-DCMAKE_Swift_COMPILER:PATH="${SWIFTC_BIN}"
|
|
+ -DCMAKE_Swift_FLAGS="${TERMUX_SWIFT_FLAGS}"
|
|
-DCMAKE_INSTALL_PREFIX:PATH="$(get_host_install_prefix ${host})"
|
|
-DCMAKE_INSTALL_LIBDIR:PATH="lib"
|
|
|
|
@@ -2315,6 +2378,11 @@ for host in "${ALL_HOSTS[@]}"; do
|
|
-DENABLE_TESTING=YES
|
|
-DBUILD_SHARED_LIBS=$([[ ${product} == libdispatch_static ]] && echo "NO" || echo "YES")
|
|
)
|
|
+
|
|
+ build_targets=(swiftDispatch)
|
|
+ if [[ $(is_cross_tools_host ${host}) ]] ; then
|
|
+ android_cross_cmake_options cmake_options
|
|
+ fi
|
|
;;
|
|
esac
|
|
|
|
@@ -2452,6 +2520,8 @@ for host in "${ALL_HOSTS[@]}"; do
|
|
HOST_CXX_HEADERS_DIR="$HOST_CXX_DIR/../../usr/include/c++"
|
|
elif [[ "$(uname -s)" == "Haiku" ]] ; then
|
|
HOST_CXX_HEADERS_DIR="/boot/system/develop/headers/c++"
|
|
+ elif [[ "${ANDROID_DATA}" ]] ; then
|
|
+ HOST_CXX_HEADERS_DIR="$PREFIX/include/c++"
|
|
else # Linux
|
|
HOST_CXX_HEADERS_DIR="/usr/include/c++"
|
|
fi
|
|
@@ -2929,7 +2999,14 @@ for host in "${ALL_HOSTS[@]}"; do
|
|
if [[ -z "${INSTALL_LLBUILD}" ]] ; then
|
|
continue
|
|
fi
|
|
- INSTALL_TARGETS="install-swift-build-tool install-libllbuildSwift"
|
|
+ INSTALL_TARGETS="install-libllbuildSwift"
|
|
+ # Remove most libdispatch products before building the package manager.
|
|
+ rm -rf @TERMUX_PREFIX@/lib/swift{,_static}/{Block,os}
|
|
+ rm @TERMUX_PREFIX@/lib/swift{,_static}/dispatch/*.h
|
|
+ sed -i -e "s%dispatch\.h%@TERMUX_PREFIX@/include/dispatch/dispatch.h%" \
|
|
+ -e "s%introspection\.h%@TERMUX_PREFIX@/include/dispatch/introspection.h%" \
|
|
+ @TERMUX_PREFIX@/lib/swift/dispatch/module.modulemap
|
|
+ cp @TERMUX_PREFIX@/lib/swift/dispatch/module.modulemap @TERMUX_PREFIX@/lib/swift_static/dispatch/module.modulemap
|
|
;;
|
|
# Products from this here install themselves; they don't fall-through.
|
|
lldb)
|