From ba497e62f29b10ad83cb4467fbbaff155ec89c99 Mon Sep 17 00:00:00 2001 From: anrp Date: Fri, 2 Jun 2023 05:53:05 -0400 Subject: [PATCH] Force Unreal toolchain to use Unreal sysroot Not doing this can lead to the Unreal toolchain examining the host system, which can cause it to attempt to use glibc features newer than the Unreal target of 2.17 provides (specifically, rpclib can accidentaly pick up the symbol pthread_cond_clockwait, which is provided by Ubuntu 20.04 glibc 2.31 but *not* by Unreal glibc 2.17, which then causes a missing symbol linker error when trying to build CARLA. The reason is that libc++ attempts to detect glibc version in its headers and conditionally uses that symbol.) --- Util/BuildTools/Setup.sh | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/Util/BuildTools/Setup.sh b/Util/BuildTools/Setup.sh index 42147adbc..2859edd3c 100755 --- a/Util/BuildTools/Setup.sh +++ b/Util/BuildTools/Setup.sh @@ -57,6 +57,7 @@ pushd ${CARLA_BUILD_FOLDER} >/dev/null LLVM_INCLUDE="$UE4_ROOT/Engine/Source/ThirdParty/Linux/LibCxx/include/c++/v1" LLVM_LIBPATH="$UE4_ROOT/Engine/Source/ThirdParty/Linux/LibCxx/lib/Linux/x86_64-unknown-linux-gnu" +UNREAL_HOSTED_CFLAGS="--sysroot=$UE4_ROOT/Engine/Extras/ThirdPartyNotUE/SDKs/HostLinux/Linux_x64/v17_clang-10.0.1-centos7/x86_64-unknown-linux-gnu/" # ============================================================================== # -- Get boost includes -------------------------------------------------------- @@ -173,7 +174,7 @@ else pushd ${RPCLIB_BASENAME}-libcxx-build >/dev/null cmake -G "Ninja" \ - -DCMAKE_CXX_FLAGS="-fPIC -std=c++14 -stdlib=libc++ -I${LLVM_INCLUDE} -Wl,-L${LLVM_LIBPATH} -DBOOST_NO_EXCEPTIONS -DASIO_NO_EXCEPTIONS" \ + -DCMAKE_CXX_FLAGS="-fPIC -std=c++14 -stdlib=libc++ -I${LLVM_INCLUDE} -Wl,-L${LLVM_LIBPATH} -DBOOST_NO_EXCEPTIONS -DASIO_NO_EXCEPTIONS ${UNREAL_HOSTED_CFLAGS}" \ -DCMAKE_INSTALL_PREFIX="../${RPCLIB_BASENAME}-libcxx-install" \ ../${RPCLIB_BASENAME}-source @@ -237,7 +238,7 @@ else pushd ${GTEST_BASENAME}-libcxx-build >/dev/null cmake -G "Ninja" \ - -DCMAKE_CXX_FLAGS="-std=c++14 -stdlib=libc++ -I${LLVM_INCLUDE} -Wl,-L${LLVM_LIBPATH} -DBOOST_NO_EXCEPTIONS -fno-exceptions" \ + -DCMAKE_CXX_FLAGS="-std=c++14 -stdlib=libc++ -I${LLVM_INCLUDE} -Wl,-L${LLVM_LIBPATH} -DBOOST_NO_EXCEPTIONS -fno-exceptions ${UNREAL_HOSTED_CFLAGS}" \ -DCMAKE_INSTALL_PREFIX="../${GTEST_BASENAME}-libcxx-install" \ ../${GTEST_BASENAME}-source @@ -530,7 +531,7 @@ if ${USE_CHRONO} ; then pushd ${CHRONO_SRC_DIR}/build >/dev/null cmake -G "Ninja" \ - -DCMAKE_CXX_FLAGS="-fPIC -std=c++14 -stdlib=libc++ -I${LLVM_INCLUDE} -L${LLVM_LIBPATH} -Wno-unused-command-line-argument" \ + -DCMAKE_CXX_FLAGS="-fPIC -std=c++14 -stdlib=libc++ -I${LLVM_INCLUDE} -L${LLVM_LIBPATH} -Wno-unused-command-line-argument ${UNREAL_HOSTED_CFLAGS}" \ -DEIGEN3_INCLUDE_DIR="../../${EIGEN_INCLUDE}" \ -DCMAKE_INSTALL_PREFIX="../../${CHRONO_INSTALL_DIR}" \ -DCMAKE_BUILD_TYPE=Release \ @@ -840,9 +841,9 @@ cp ${LIBSTDCPP_TOOLCHAIN_FILE}.gen ${LIBCPP_TOOLCHAIN_FILE}.gen cat >>${LIBCPP_TOOLCHAIN_FILE}.gen <