mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-08-24 19:28:48 +00:00
Meta: Migrate find_compiler.sh logic to a python script
This will allow us to re-use this logic from within other python scripts. The find_compiler.sh script still exists, as it is used by some other bash scripts. The pick_host_compiler() function will now execute find_compiler.py and store its result in $CC and $CXX. Note that the python script supports Windows.
This commit is contained in:
parent
8e792cd094
commit
3d0fdaacff
Notes:
github-actions[bot]
2025-05-29 23:35:21 +00:00
Author: https://github.com/trflynn89
Commit: 3d0fdaacff
Pull-request: https://github.com/LadybirdBrowser/ladybird/pull/4904
Reviewed-by: https://github.com/ADKaster
4 changed files with 247 additions and 69 deletions
|
@ -1,78 +1,22 @@
|
|||
# shellcheck shell=bash
|
||||
|
||||
HOST_COMPILER=""
|
||||
|
||||
is_supported_compiler() {
|
||||
local COMPILER="$1"
|
||||
if [ -z "$COMPILER" ]; then
|
||||
return 1
|
||||
fi
|
||||
|
||||
local VERSION=""
|
||||
VERSION="$($COMPILER -dumpversion 2> /dev/null)" || return 1
|
||||
local MAJOR_VERSION=""
|
||||
MAJOR_VERSION="${VERSION%%.*}"
|
||||
if $COMPILER --version 2>&1 | grep "Apple clang" >/dev/null; then
|
||||
# Apple Clang version check
|
||||
BUILD_VERSION=$(echo | $COMPILER -dM -E - | grep __apple_build_version__ | cut -d ' ' -f3)
|
||||
# Xcode 14.3, based on upstream LLVM 15
|
||||
[ "$BUILD_VERSION" -ge 14030022 ] && return 0
|
||||
elif $COMPILER --version 2>&1 | grep "clang" >/dev/null; then
|
||||
# Clang version check
|
||||
[ "$MAJOR_VERSION" -ge 17 ] && return 0
|
||||
else
|
||||
# GCC version check
|
||||
[ "$MAJOR_VERSION" -ge 13 ] && return 0
|
||||
fi
|
||||
return 1
|
||||
}
|
||||
|
||||
find_newest_compiler() {
|
||||
local BEST_VERSION=0
|
||||
local BEST_CANDIDATE=""
|
||||
for CANDIDATE in "$@"; do
|
||||
if ! command -v "$CANDIDATE" >/dev/null 2>&1; then
|
||||
continue
|
||||
fi
|
||||
if ! $CANDIDATE -dumpversion >/dev/null 2>&1; then
|
||||
continue
|
||||
fi
|
||||
local VERSION=""
|
||||
VERSION="$($CANDIDATE -dumpversion)"
|
||||
local MAJOR_VERSION="${VERSION%%.*}"
|
||||
if [ "$MAJOR_VERSION" -gt "$BEST_VERSION" ]; then
|
||||
BEST_VERSION=$MAJOR_VERSION
|
||||
BEST_CANDIDATE="$CANDIDATE"
|
||||
fi
|
||||
done
|
||||
HOST_COMPILER=$BEST_CANDIDATE
|
||||
}
|
||||
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||
|
||||
pick_host_compiler() {
|
||||
CC=${CC:-"cc"}
|
||||
CXX=${CXX:-"c++"}
|
||||
local output
|
||||
local status
|
||||
|
||||
if is_supported_compiler "$CC" && is_supported_compiler "$CXX"; then
|
||||
return
|
||||
output=$("${DIR}/find_compiler.py")
|
||||
status=$?
|
||||
|
||||
if [[ ${status} -ne 0 ]] ; then
|
||||
exit ${status}
|
||||
fi
|
||||
|
||||
find_newest_compiler clang clang-17 clang-18 clang-19 clang-20 /opt/homebrew/opt/llvm/bin/clang
|
||||
if is_supported_compiler "$HOST_COMPILER"; then
|
||||
export CC="${HOST_COMPILER}"
|
||||
export CXX="${HOST_COMPILER/clang/clang++}"
|
||||
return
|
||||
if [[ "${output}" != *"CC="* || "${output}" != *"CXX="* ]] ; then
|
||||
echo "Unexpected output from find_compiler.py"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
find_newest_compiler egcc gcc gcc-13 gcc-14 /usr/local/bin/gcc-{13,14} /opt/homebrew/bin/gcc-{13,14}
|
||||
if is_supported_compiler "$HOST_COMPILER"; then
|
||||
export CC="${HOST_COMPILER}"
|
||||
export CXX="${HOST_COMPILER/gcc/g++}"
|
||||
return
|
||||
fi
|
||||
|
||||
if [ "$(uname -s)" = "Darwin" ]; then
|
||||
die "Please make sure that Xcode 14.3, Homebrew Clang 17, or higher is installed."
|
||||
else
|
||||
die "Please make sure that GCC version 13, Clang version 17, or higher is installed."
|
||||
fi
|
||||
eval "${output}"
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue