Meta: Add the ability to specify clang with serenity.sh

This enables maintaining gcc and clang builds side-by-side.
This commit is contained in:
Tom 2021-09-03 14:12:07 -06:00 committed by Andreas Kling
parent 2f426765a6
commit 77953a937d
2 changed files with 30 additions and 5 deletions

View file

@ -6,8 +6,9 @@ ARG0=$0
print_help() {
NAME=$(basename "$ARG0")
cat <<EOF
Usage: $NAME COMMAND [TARGET] [ARGS...]
Usage: $NAME COMMAND [TARGET] [TOOLCHAIN] [ARGS...]
Supported TARGETs: aarch64, i686, x86_64, lagom. Defaults to SERENITY_ARCH, or i686 if not set.
Supported TOOLCHAINs: gcc, clang. Defaults to gcc if not set.
Supported COMMANDs:
build: Compiles the target binaries, [ARGS...] are passed through to ninja
install: Installs the target binary
@ -86,9 +87,23 @@ if [ -n "$1" ]; then
else
TARGET="${SERENITY_ARCH:-"i686"}"
fi
case "$1" in
gcc|clang)
TOOLCHAIN_TYPE="$1"; shift
;;
*)
TOOLCHAIN_TYPE="gcc"
;;
esac
CMD_ARGS=( "$@" )
CMAKE_ARGS=()
if [ "$TOOLCHAIN_TYPE" = "clang" ]; then
CMAKE_ARGS+=("-DUSE_CLANG_TOOLCHAIN=1")
fi
get_top_dir() {
git rev-parse --show-toplevel
}
@ -154,10 +169,15 @@ cmd_with_target() {
SERENITY_SOURCE_DIR="$(get_top_dir)"
export SERENITY_SOURCE_DIR
fi
BUILD_DIR="$SERENITY_SOURCE_DIR/Build/$TARGET"
local TARGET_TOOLCHAIN=""
if [[ "$TOOLCHAIN_TYPE" != "gcc" && "$TARGET" != "lagom" ]]; then
# Only append the toolchain if it's not gcc
TARGET_TOOLCHAIN="$TOOLCHAIN_TYPE"
fi
BUILD_DIR="$SERENITY_SOURCE_DIR/Build/$TARGET$TARGET_TOOLCHAIN"
if [ "$TARGET" != "lagom" ]; then
export SERENITY_ARCH="$TARGET"
TOOLCHAIN_DIR="$SERENITY_SOURCE_DIR/Toolchain/Build/$TARGET"
TOOLCHAIN_DIR="$SERENITY_SOURCE_DIR/Toolchain/Local/$TARGET_TOOLCHAIN/$TARGET"
fi
}
@ -184,7 +204,12 @@ delete_target() {
}
build_toolchain() {
( cd "$SERENITY_SOURCE_DIR/Toolchain" && ARCH="$TARGET" ./BuildIt.sh )
echo "build_toolchain: $TOOLCHAIN_DIR"
if [ "$TOOLCHAIN_TYPE" = "clang" ]; then
( cd "$SERENITY_SOURCE_DIR/Toolchain" && ARCH="$TARGET" ./BuildClang.sh )
else
( cd "$SERENITY_SOURCE_DIR/Toolchain" && ARCH="$TARGET" ./BuildIt.sh )
fi
}
ensure_toolchain() {

View file

@ -12,7 +12,7 @@ LLVM_ARCH=
[ "$ARCH" = "i686" ] && LLVM_ARCH="i386" || LLVM_ARCH="$ARCH"
LLVM_TARGET="$LLVM_ARCH-pc-serenity"
PREFIX="$DIR/Local/clang/$ARCH"
BUILD="$DIR/../Build/$ARCH"
BUILD="$DIR/../Build/clang/$ARCH"
SYSROOT="$BUILD/Root"
MD5SUM="md5sum"