mirror of
https://github.com/RGBCube/serenity
synced 2025-07-24 03:27:42 +00:00
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:
parent
2f426765a6
commit
77953a937d
2 changed files with 30 additions and 5 deletions
|
@ -6,8 +6,9 @@ ARG0=$0
|
||||||
print_help() {
|
print_help() {
|
||||||
NAME=$(basename "$ARG0")
|
NAME=$(basename "$ARG0")
|
||||||
cat <<EOF
|
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 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:
|
Supported COMMANDs:
|
||||||
build: Compiles the target binaries, [ARGS...] are passed through to ninja
|
build: Compiles the target binaries, [ARGS...] are passed through to ninja
|
||||||
install: Installs the target binary
|
install: Installs the target binary
|
||||||
|
@ -86,9 +87,23 @@ if [ -n "$1" ]; then
|
||||||
else
|
else
|
||||||
TARGET="${SERENITY_ARCH:-"i686"}"
|
TARGET="${SERENITY_ARCH:-"i686"}"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
case "$1" in
|
||||||
|
gcc|clang)
|
||||||
|
TOOLCHAIN_TYPE="$1"; shift
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
TOOLCHAIN_TYPE="gcc"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
CMD_ARGS=( "$@" )
|
CMD_ARGS=( "$@" )
|
||||||
CMAKE_ARGS=()
|
CMAKE_ARGS=()
|
||||||
|
|
||||||
|
if [ "$TOOLCHAIN_TYPE" = "clang" ]; then
|
||||||
|
CMAKE_ARGS+=("-DUSE_CLANG_TOOLCHAIN=1")
|
||||||
|
fi
|
||||||
|
|
||||||
get_top_dir() {
|
get_top_dir() {
|
||||||
git rev-parse --show-toplevel
|
git rev-parse --show-toplevel
|
||||||
}
|
}
|
||||||
|
@ -154,10 +169,15 @@ cmd_with_target() {
|
||||||
SERENITY_SOURCE_DIR="$(get_top_dir)"
|
SERENITY_SOURCE_DIR="$(get_top_dir)"
|
||||||
export SERENITY_SOURCE_DIR
|
export SERENITY_SOURCE_DIR
|
||||||
fi
|
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
|
if [ "$TARGET" != "lagom" ]; then
|
||||||
export SERENITY_ARCH="$TARGET"
|
export SERENITY_ARCH="$TARGET"
|
||||||
TOOLCHAIN_DIR="$SERENITY_SOURCE_DIR/Toolchain/Build/$TARGET"
|
TOOLCHAIN_DIR="$SERENITY_SOURCE_DIR/Toolchain/Local/$TARGET_TOOLCHAIN/$TARGET"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -184,7 +204,12 @@ delete_target() {
|
||||||
}
|
}
|
||||||
|
|
||||||
build_toolchain() {
|
build_toolchain() {
|
||||||
|
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 )
|
( cd "$SERENITY_SOURCE_DIR/Toolchain" && ARCH="$TARGET" ./BuildIt.sh )
|
||||||
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
ensure_toolchain() {
|
ensure_toolchain() {
|
||||||
|
|
|
@ -12,7 +12,7 @@ LLVM_ARCH=
|
||||||
[ "$ARCH" = "i686" ] && LLVM_ARCH="i386" || LLVM_ARCH="$ARCH"
|
[ "$ARCH" = "i686" ] && LLVM_ARCH="i386" || LLVM_ARCH="$ARCH"
|
||||||
LLVM_TARGET="$LLVM_ARCH-pc-serenity"
|
LLVM_TARGET="$LLVM_ARCH-pc-serenity"
|
||||||
PREFIX="$DIR/Local/clang/$ARCH"
|
PREFIX="$DIR/Local/clang/$ARCH"
|
||||||
BUILD="$DIR/../Build/$ARCH"
|
BUILD="$DIR/../Build/clang/$ARCH"
|
||||||
SYSROOT="$BUILD/Root"
|
SYSROOT="$BUILD/Root"
|
||||||
|
|
||||||
MD5SUM="md5sum"
|
MD5SUM="md5sum"
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue