Ports: Make it possible to build (some) ports with Clang
This commit introduces the changes needed in the port build system that will allow us to compile ports with Clang. Note that many ports still don't build, especially due to linker differences. Fixing these is outside the scope of this PR. For now, building bash, ncurses and nano is known to work. Bash runs fine, while nano crashes due to DT_VERSYM not being supported by our dynamic loader.
This commit is contained in:
parent
928665d3bc
commit
dabd8dbedd
Notes:
sideshowbarker
2024-07-18 02:14:13 +09:00
Author: https://github.com/BertalanD Commit: https://github.com/SerenityOS/serenity/commit/dabd8dbedd7 Pull-request: https://github.com/SerenityOS/serenity/pull/9378 Reviewed-by: https://github.com/ADKaster ✅ Reviewed-by: https://github.com/itamar8910 Reviewed-by: https://github.com/linusg ✅ Reviewed-by: https://github.com/nico Reviewed-by: https://github.com/timschumi
2 changed files with 19 additions and 6 deletions
|
@ -1,11 +1,23 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
export SERENITY_SOURCE_DIR="$(realpath "${SCRIPT}/../")"
|
||||
export SERENITY_BUILD_DIR="${SERENITY_SOURCE_DIR}/Build/${SERENITY_ARCH}"
|
||||
export CC="${SERENITY_ARCH}-pc-serenity-gcc"
|
||||
export CXX="${SERENITY_ARCH}-pc-serenity-g++"
|
||||
export AR="${SERENITY_ARCH}-pc-serenity-ar"
|
||||
export RANLIB="${SERENITY_ARCH}-pc-serenity-ranlib"
|
||||
export PATH="${SERENITY_SOURCE_DIR}/Toolchain/Local/${SERENITY_ARCH}/bin:${HOST_PATH}"
|
||||
|
||||
if [ "$SERENITY_TOOLCHAIN" = "Clang" ]; then
|
||||
export SERENITY_BUILD_DIR="${SERENITY_SOURCE_DIR}/Build/${SERENITY_ARCH}clang"
|
||||
export CC="clang --target=${SERENITY_ARCH}-pc-serenity --sysroot=${SERENITY_BUILD_DIR}/Root"
|
||||
export CXX="clang++ --target=${SERENITY_ARCH}-pc-serenity --sysroot=${SERENITY_BUILD_DIR}/Root"
|
||||
export AR="llvm-ar"
|
||||
export RANLIB="llvm-ranlib"
|
||||
export PATH="${SERENITY_SOURCE_DIR}/Toolchain/Local/clang/bin:${HOST_PATH}"
|
||||
else
|
||||
export SERENITY_BUILD_DIR="${SERENITY_SOURCE_DIR}/Build/${SERENITY_ARCH}"
|
||||
export CC="${SERENITY_ARCH}-pc-serenity-gcc"
|
||||
export CXX="${SERENITY_ARCH}-pc-serenity-g++"
|
||||
export AR="${SERENITY_ARCH}-pc-serenity-ar"
|
||||
export RANLIB="${SERENITY_ARCH}-pc-serenity-ranlib"
|
||||
export PATH="${SERENITY_SOURCE_DIR}/Toolchain/Local/${SERENITY_ARCH}/bin:${HOST_PATH}"
|
||||
fi
|
||||
|
||||
export PKG_CONFIG_DIR=""
|
||||
export PKG_CONFIG_SYSROOT_DIR="${SERENITY_BUILD_DIR}/Root"
|
||||
export PKG_CONFIG_LIBDIR="${PKG_CONFIG_SYSROOT_DIR}/usr/lib/pkgconfig/:${PKG_CONFIG_SYSROOT_DIR}/usr/local/lib/pkgconfig"
|
||||
|
|
|
@ -3,6 +3,7 @@ set -eu
|
|||
|
||||
SCRIPT="$(dirname "${0}")"
|
||||
export SERENITY_ARCH="${SERENITY_ARCH:-i686}"
|
||||
export SERENITY_TOOLCHAIN="${SERENITY_TOOLCHAIN:-GCC}"
|
||||
|
||||
if [ -z "${HOST_CC:=}" ]; then
|
||||
export HOST_CC="${CC:=cc}"
|
||||
|
|
Loading…
Add table
Reference in a new issue