#!/bin/bash set -eu ARCH=x86_64-unknown-linux-gnu SCRIPT_DIR=$(cd "$(dirname "$BASH_SOURCE")" ; pwd) UE_THIRD_PARTY_DIR=$(cd "${SCRIPT_DIR}/../../../.."; pwd) SYMS_DIR=$(cd "${SCRIPT_DIR}"; pwd) CFLAGS="-ffunction-sections -fdata-sections" CXXFLAGS="-ffunction-sections -fdata-sections -I$UE_THIRD_PARTY_DIR/Unix/LibCxx/include -I$UE_THIRD_PARTY_DIR/Unix/LibCxx/include/c++/v1" LIBS="$UE_THIRD_PARTY_DIR/Unix/LibCxx/lib/Unix/${ARCH}/libc++.a $UE_THIRD_PARTY_DIR/Unix/LibCxx/lib/Unix/${ARCH}/libc++abi.a -lm -lc -lgcc_s -lgcc -lpthread" # Get num of cores export CORES=$(getconf _NPROCESSORS_ONLN) echo "Using ${CORES} cores for building" BuildLibSyms() { export ARCH=$1 export FLAVOR=$2 local EXT=$3 local BUILD_DIR=/tmp/Build-Syms-${ARCH}-${FLAVOR} echo "Building ${ARCH} ${FLAVOR}" rm -rf ${BUILD_DIR} mkdir -p ${BUILD_DIR}/Build pushd ${BUILD_DIR}/Build set -x cmake \ -DCMAKE_TOOLCHAIN_FILE="/tmp/__cmake_toolchain.cmake" \ -DCMAKE_MAKE_PROGRAM=$(which make) \ -DCMAKE_BUILD_TYPE=${FLAVOR} \ -DCMAKE_POSITION_INDEPENDENT_CODE=ON \ ${SYMS_DIR}/ set +x VERBOSE=1 make -j ${CORES} mkdir -p ${SYMS_DIR}/lib/Unix/${ARCH} cp -v ${BUILD_DIR}/Build/libsyms.a ${SYMS_DIR}/lib/Unix/${ARCH}/libsyms${EXT}_fPIC.a popd } ( cat <<_EOF_ ## autogenerated by ${BASH_SOURCE} script SET(LINUX_MULTIARCH_ROOT \$ENV{UE_SDKS_ROOT}/HostLinux/Linux_x64/v22_clang-16.0.6-centos7) SET(ARCHITECTURE_TRIPLE \$ENV{ARCH}) message (STATUS "LINUX_MULTIARCH_ROOT is '\${LINUX_MULTIARCH_ROOT}'") message (STATUS "ARCHITECTURE_TRIPLE is '\${ARCHITECTURE_TRIPLE}'") SET(CMAKE_CROSSCOMPILING TRUE) SET(CMAKE_SYSTEM_NAME Linux) SET(CMAKE_SYSTEM_VERSION 1) # sysroot SET(CMAKE_SYSROOT \${LINUX_MULTIARCH_ROOT}/\${ARCHITECTURE_TRIPLE}) SET(CMAKE_LIBRARY_ARCHITECTURE \${ARCHITECTURE_TRIPLE}) # specify the cross compiler SET(CMAKE_C_COMPILER \${CMAKE_SYSROOT}/bin/clang) SET(CMAKE_C_COMPILER_TARGET \${ARCHITECTURE_TRIPLE}) SET(CMAKE_C_FLAGS "-target \${ARCHITECTURE_TRIPLE} ${CFLAGS}") SET(CMAKE_CXX_COMPILER \${CMAKE_SYSROOT}/bin/clang++) SET(CMAKE_CXX_COMPILER_TARGET \${ARCHITECTURE_TRIPLE}) SET(CMAKE_CXX_FLAGS "-target \${ARCHITECTURE_TRIPLE} ${CXXFLAGS}") SET(CMAKE_SHARED_LINKER_FLAGS "${LIBS}") SET(CMAKE_ASM_COMPILER \${CMAKE_SYSROOT}/bin/clang) SET(CMAKE_FIND_ROOT_PATH \${LINUX_MULTIARCH_ROOT}) # hoping to force it to use ar set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM ONLY) set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) _EOF_ ) > /tmp/__cmake_toolchain.cmake BuildLibSyms ${ARCH} Release "" BuildLibSyms ${ARCH} Debug "d"