From 913511249bbf0fdd61f59a1ba82653b3e419f8c3 Mon Sep 17 00:00:00 2001 From: Jean-Paul Balabanian Date: Sun, 2 Jan 2022 22:02:00 +0100 Subject: [PATCH] Toolchain: Add support for Clang on MacOS This commit adds Darwin as a possible host for building the toolchain with Clang. --- Toolchain/BuildClang.sh | 17 +++++++++++++---- Toolchain/CMake/LLVMRuntimesConfig.cmake | 4 ++++ 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/Toolchain/BuildClang.sh b/Toolchain/BuildClang.sh index fddec1654c..b909d7c9fb 100755 --- a/Toolchain/BuildClang.sh +++ b/Toolchain/BuildClang.sh @@ -16,6 +16,8 @@ MD5SUM="md5sum" REALPATH="realpath" MAKE="make" NPROC="nproc" +INSTALL="install" +SED="sed" SYSTEM_NAME="$(uname -s)" @@ -31,6 +33,13 @@ elif [ "$SYSTEM_NAME" = "FreeBSD" ]; then MD5SUM="md5 -q" MAKE="gmake" NPROC="sysctl -n hw.ncpu" +elif [ "$SYSTEM_NAME" = "Darwin" ]; then + MD5SUM="md5 -q" + MAKE="make" + NPROC="sysctl -n hw.ncpu" + REALPATH="grealpath" # GNU coreutils + INSTALL="ginstall" # GNU coreutils + SED="gsed" # GNU sed fi if [ -z "$MAKEJOBS" ]; then @@ -81,7 +90,7 @@ BINUTILS_BASE_URL="https://ftp.gnu.org/gnu/binutils" buildstep() { NAME=$1 shift - "$@" 2>&1 | sed $'s|^|\e[34m['"${NAME}"$']\e[39m |' + "$@" 2>&1 | "$SED" $'s|^|\e[34m['"${NAME}"$']\e[39m |' } buildstep_ninja() { @@ -250,8 +259,8 @@ for arch in $ARCHS; do pushd "$BUILD/${arch}clang" mkdir -p Root/usr/include/ for header in $FILES; do - target=$(echo "$header" | sed -e "s@$SRC_ROOT/Userland/Libraries/LibC@@" -e "s@$SRC_ROOT/Userland/Libraries/LibM@@" -e "s@$SRC_ROOT/Userland/Libraries/LibPthread@@" -e "s@$SRC_ROOT/Userland/Libraries/LibDl@@" -e "s@$SRC_ROOT/Kernel/@Kernel/@") - buildstep "system_headers" install -D "$header" "Root/usr/include/$target" + target=$(echo "$header" | "$SED" -e "s@$SRC_ROOT/Userland/Libraries/LibC@@" -e "s@$SRC_ROOT/Userland/Libraries/LibM@@" -e "s@$SRC_ROOT/Userland/Libraries/LibPthread@@" -e "s@$SRC_ROOT/Userland/Libraries/LibDl@@" -e "s@$SRC_ROOT/Kernel/@Kernel/@") + buildstep "system_headers" "$INSTALL" -D "$header" "Root/usr/include/$target" done popd done @@ -299,7 +308,7 @@ pushd "$DIR/Build/clang" mkdir -p binutils pushd binutils buildstep "binutils/configure" "$DIR/Tarballs/$BINUTILS_NAME/configure" --prefix="$PREFIX" \ - --enable-targets="$(echo "$ARCHS" | sed -E "s@(\S)(\s|$)@\1-pc-serenity,@g")" \ + --enable-targets="$(echo "$ARCHS" | "$SED" -E "s@(\S)(\s|$)@\1-pc-serenity,@g")" \ --program-prefix="gnu-" \ --disable-nls \ --disable-gas \ diff --git a/Toolchain/CMake/LLVMRuntimesConfig.cmake b/Toolchain/CMake/LLVMRuntimesConfig.cmake index bb1fe6b2d7..a1b7fd1368 100644 --- a/Toolchain/CMake/LLVMRuntimesConfig.cmake +++ b/Toolchain/CMake/LLVMRuntimesConfig.cmake @@ -11,6 +11,10 @@ set(LLVM_ENABLE_RUNTIMES "libcxx;libcxxabi;libunwind" CACHE STRING "") set(CMAKE_SYSTEM_NAME SerenityOS CACHE STRING "") set(target_triple ${SERENITY_TOOLCHAIN_ARCH}-pc-serenity) +IF(${CMAKE_HOST_SYSTEM_NAME} MATCHES "Darwin") + set(CMAKE_BUILD_WITH_INSTALL_RPATH ON CACHE BOOL "") +ENDIF() + set(LLVM_ENABLE_PER_TARGET_RUNTIME_DIR ON CACHE BOOL "") set(LLVM_ENABLE_BINDINGS OFF CACHE BOOL "") set(LLVM_INCLUDE_BENCHMARKS OFF CACHE BOOL "")