74 lines
3.8 KiB
CMake
74 lines
3.8 KiB
CMake
if(NOT _VCPKG_UE_LINUX_TOOLCHAIN)
|
|
set(_VCPKG_UE_LINUX_TOOLCHAIN 1)
|
|
set(LINUX_MULTIARCH_ROOT $ENV{LINUX_MULTIARCH_ROOT})
|
|
|
|
if(VCPKG_TARGET_ARCHITECTURE STREQUAL "x64")
|
|
set(CMAKE_SYSTEM_PROCESSOR x86_64 CACHE STRING "")
|
|
set(ARCHITECTURE_TRIPLE "x86_64-unknown-linux-gnu" CACHE STRING "")
|
|
elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "aarch64")
|
|
set(CMAKE_SYSTEM_PROCESSOR aarch64 CACHE STRING "")
|
|
set(ARCHITECTURE_TRIPLE "aarch64-unknown-linux-gnueabi" CACHE STRING "")
|
|
endif()
|
|
|
|
set(UE_INCLUDE $ENV{THIRD_PARTY}/Unix/LibCxx/include)
|
|
set(UE_LIBS $ENV{THIRD_PARTY}/Unix/LibCxx/lib/Unix/${ARCHITECTURE_TRIPLE})
|
|
|
|
set(CMAKE_CROSSCOMPILING ON CACHE BOOL "")
|
|
|
|
message (STATUS "CMAKE_HOST_SYSTEM_NAME is '${CMAKE_HOST_SYSTEM_NAME}'")
|
|
message (STATUS "CMAKE_SYSTEM_NAME is '${CMAKE_SYSTEM_NAME}'")
|
|
message (STATUS "LINUX_MULTIARCH_ROOT is '${LINUX_MULTIARCH_ROOT}'")
|
|
message (STATUS "VCPKG_TARGET_ARCHITECTURE is '${VCPKG_TARGET_ARCHITECTURE}'")
|
|
message (STATUS "ARCHITECTURE_TRIPLE is '${ARCHITECTURE_TRIPLE}'")
|
|
|
|
# sysroot
|
|
set(CMAKE_SYSROOT ${LINUX_MULTIARCH_ROOT}/${ARCHITECTURE_TRIPLE} CACHE PATH "")
|
|
|
|
set(CMAKE_LIBRARY_ARCHITECTURE ${ARCHITECTURE_TRIPLE} CACHE STRING "")
|
|
|
|
set(CMAKE_FIND_ROOT_PATH ${CMAKE_SYSROOT})
|
|
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
|
|
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
|
|
set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)
|
|
|
|
# specify the cross compiler
|
|
set(CMAKE_INSTALL_OLDINCLUDEDIR ${CMAKE_SYSROOT}/usr/include CACHE STRING "")
|
|
|
|
set(CMAKE_C_COMPILER_TARGET ${ARCHITECTURE_TRIPLE} CACHE STRING "")
|
|
set(CMAKE_CXX_COMPILER_TARGET ${ARCHITECTURE_TRIPLE} CACHE STRING "")
|
|
|
|
set(CMAKE_CXX_STANDARD 17 CACHE STRING "")
|
|
|
|
# Compile options
|
|
include_directories(BEFORE SYSTEM ${UE_INCLUDE} ${UE_INCLUDE}/c++/v1)
|
|
add_compile_options(-fPIC -fms-extensions -fno-math-errno -fdiagnostics-absolute-paths)
|
|
add_compile_options($<$<COMPILE_LANGUAGE:CXX>:-stdlib=libc++>)
|
|
if(VCPKG_TARGET_ARCHITECTURE STREQUAL "x64")
|
|
add_compile_options(-mssse3)
|
|
elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "aarch64")
|
|
add_compile_options(-funwind-tables)
|
|
endif()
|
|
|
|
# Link options
|
|
add_link_options(-stdlib=libc++ -L${UE_LIBS} ${UE_LIBS}/libc++.a ${UE_LIBS}/libc++abi.a)
|
|
|
|
set(CMAKE_AR ${CMAKE_SYSROOT}/bin/llvm-ar CACHE FILEPATH "")
|
|
set(CMAKE_ASM_COMPILER ${CMAKE_SYSROOT}/bin/clang CACHE FILEPATH "")
|
|
set(CMAKE_C_COMPILER ${CMAKE_SYSROOT}/bin/clang CACHE FILEPATH "")
|
|
set(CMAKE_C_COMPILER_AR ${CMAKE_SYSROOT}/bin/llvm-ar CACHE FILEPATH "")
|
|
set(CMAKE_CXX_COMPILER ${CMAKE_SYSROOT}/bin/clang++ CACHE FILEPATH "")
|
|
set(CMAKE_CXX_COMPILER_AR ${CMAKE_SYSROOT}/bin/llvm-ar CACHE FILEPATH "")
|
|
set(CMAKE_OBJCOPY ${CMAKE_SYSROOT}/bin/llvm-objcopy CACHE FILEPATH "")
|
|
|
|
set(CMAKE_ADDR2LINE ${CMAKE_SYSROOT}/bin/${ARCHITECTURE_TRIPLE}-addr2line CACHE FILEPATH "")
|
|
set(CMAKE_C_COMPILER_RANLIB ${CMAKE_SYSROOT}/bin/${ARCHITECTURE_TRIPLE}-ranlib CACHE FILEPATH "")
|
|
set(CMAKE_CXX_COMPILER_RANLIB ${CMAKE_SYSROOT}/bin/${ARCHITECTURE_TRIPLE}-ranlib CACHE FILEPATH "")
|
|
set(CMAKE_LINKER ${CMAKE_SYSROOT}/bin/${ARCHITECTURE_TRIPLE}-ld CACHE FILEPATH "")
|
|
set(CMAKE_NM ${CMAKE_SYSROOT}/bin/${ARCHITECTURE_TRIPLE}-nm CACHE FILEPATH "")
|
|
set(CMAKE_OBJDUMP ${CMAKE_SYSROOT}/bin/${ARCHITECTURE_TRIPLE}-objdump CACHE FILEPATH "")
|
|
set(CMAKE_RANLIB ${CMAKE_SYSROOT}/bin/${ARCHITECTURE_TRIPLE}-ranlib CACHE FILEPATH "")
|
|
set(CMAKE_READELF ${CMAKE_SYSROOT}/bin/${ARCHITECTURE_TRIPLE}-readelf CACHE FILEPATH "")
|
|
set(CMAKE_STRIP ${CMAKE_SYSROOT}/bin/${ARCHITECTURE_TRIPLE}-strip CACHE FILEPATH "")
|
|
set(COVERAGE_COMMAND ${CMAKE_SYSROOT}/bin/${ARCHITECTURE_TRIPLE}-gcov CACHE FILEPATH "")
|
|
endif()
|