Skip to content

Commit

Permalink
Meta: Automatically pick an appropriate GCC binary
Browse files Browse the repository at this point in the history
  • Loading branch information
gunnarbeutner committed Jul 10, 2021
1 parent 1e5c2c6 commit 9780cdf
Showing 1 changed file with 28 additions and 0 deletions.
28 changes: 28 additions & 0 deletions Meta/serenity.sh
Original file line number Diff line number Diff line change
Expand Up @@ -107,8 +107,36 @@ create_build_dir() {
cmake -GNinja "${CMAKE_ARGS[@]}" -S . -B "$BUILD_DIR"
}

pick_gcc() {
local BEST_VERSION=0
local BEST_GCC_CANDIDATE=""
for GCC_CANDIDATE in gcc gcc-10 gcc-11 gcc-12 /usr/local/bin/gcc-11 /opt/homebrew/bin/gcc-11; do
if ! command -v $GCC_CANDIDATE >/dev/null 2>&1; then
continue
fi
if $GCC_CANDIDATE --version 2>&1 | grep "Apple clang" >/dev/null; then
continue
fi
if ! $GCC_CANDIDATE -dumpversion >/dev/null 2>&1; then
continue
fi
local VERSION="$($GCC_CANDIDATE -dumpversion)"
local MAJOR_VERSION="${VERSION%%.*}"
if [ "$MAJOR_VERSION" -gt "$BEST_VERSION" ]; then
BEST_VERSION=$MAJOR_VERSION
BEST_GCC_CANDIDATE="$GCC_CANDIDATE"
fi
done
CMAKE_ARGS+=("-DCMAKE_C_COMPILER=$BEST_GCC_CANDIDATE")
CMAKE_ARGS+=("-DCMAKE_CXX_COMPILER=${BEST_GCC_CANDIDATE/gcc/g++}")
if [ "$BEST_VERSION" -lt 10 ]; then
die "Please make sure that GCC version 10.2 or higher is installed."
fi
}

cmd_with_target() {
is_valid_target || ( >&2 echo "Unknown target: $TARGET"; usage )
pick_gcc

if [ ! -d "$SERENITY_SOURCE_DIR" ]; then
SERENITY_SOURCE_DIR="$(get_top_dir)"
Expand Down

0 comments on commit 9780cdf

Please sign in to comment.