ladybird/Meta/shell_include.sh
Timothy Flynn 4ffca2089e Meta: Change the default build directories to exclude "ladybird" prefix
The reason for this change is that CMake/vcpkg are unable to detect a
change to VCPKG_LIBRARY_LINKAGE. So when we switch to dynamic builds,
the switch would be non-functional, and every developer would have to
remove their Build and vcpkg cache directories manually. By changing
these directories, vcpkg is able to detect it must rebuild.
2024-11-06 10:38:57 -07:00

96 lines
2.6 KiB
Bash

# shellcheck shell=bash
# shellcheck disable=SC2034
# SC2034: "Variable appears unused. Verify it or export it."
# Those are intentional here, as the file is meant to be included elsewhere.
# NOTE: If using another privilege escalation binary make sure it is configured or has the appropriate flag
# to keep the current environment variables in the launched process (in sudo's case this is achieved
# through the -E flag described in sudo(8).
die() {
echo "die: $*"
exit 1
}
exit_if_running_as_root() {
if [ "$(id -u)" -eq 0 ]; then
die "$*"
fi
}
# Usage: check_program_version_at_least <Display Name> <Program Name> <Version String>
check_program_version_at_least()
{
echo -n "Checking for $1 version at least $3... "
if ! command -v "$2" > /dev/null 2>&1; then
echo "ERROR: Cannot find $2 ($1)"
return 1
fi
v=$("$2" --version 2>&1 | grep -E -o '[0-9]+\.[0-9\.]+[a-z]*' | head -n1)
if printf '%s\n' "$3" "$v" | sort --version-sort --check &>/dev/null; then
echo "ok, found $v"
return 0;
else
echo "ERROR: found version $v, too old!"
return 1;
fi
}
get_number_of_processing_units() {
number_of_processing_units="nproc"
SYSTEM_NAME="$(uname -s)"
if [ "$SYSTEM_NAME" = "OpenBSD" ]; then
number_of_processing_units="sysctl -n hw.ncpuonline"
elif [ "$SYSTEM_NAME" = "FreeBSD" ]; then
number_of_processing_units="sysctl -n hw.ncpu"
elif [ "$SYSTEM_NAME" = "Darwin" ]; then
number_of_processing_units="sysctl -n hw.ncpu"
fi
($number_of_processing_units)
}
get_top_dir() {
git rev-parse --show-toplevel
}
ensure_ladybird_source_dir() {
if [ -z "$LADYBIRD_SOURCE_DIR" ] || [ ! -d "$LADYBIRD_SOURCE_DIR" ]; then
LADYBIRD_SOURCE_DIR="$(get_top_dir)"
export LADYBIRD_SOURCE_DIR
fi
}
get_build_dir() {
ensure_ladybird_source_dir
# Note: Keep in sync with buildDir defaults in CMakePresets.json
case "$1" in
"default")
BUILD_DIR="${LADYBIRD_SOURCE_DIR}/Build/release"
;;
"Debug")
BUILD_DIR="${LADYBIRD_SOURCE_DIR}/Build/debug"
;;
"Sanitizer")
BUILD_DIR="${LADYBIRD_SOURCE_DIR}/Build/sanitizers"
;;
*)
echo "Unknown BUILD_PRESET: '$1'" >&2
exit 1
;;
esac
echo "${BUILD_DIR}"
}
absolutize_path() {
directory="$(eval echo "$(dirname "$1")")"
if [ -d "$directory" ]; then
resolved_directory="$(cd "$directory" && pwd)"
echo "${resolved_directory%/}/$(basename "$1")"
else
echo "No such directory: '$directory'" >&2
return 1
fi
}