-
Notifications
You must be signed in to change notification settings - Fork 159
Expand file tree
/
Copy pathunreal-linux-toolchain.cmake
More file actions
76 lines (63 loc) · 2.74 KB
/
Copy pathunreal-linux-toolchain.cmake
File metadata and controls
76 lines (63 loc) · 2.74 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
# ---------------------------------------------------------------------------------------------------------------------
#
# Copyright (C) Microsoft Corporation.
# Copyright (C) 2025 IAMAI CONSULTING CORP
#
# MIT License. All rights reserved.
#
# Module Name:
#
# unreal-linux-toolchain.cmake
#
# Abstract:
#
# Basic CMake Linux toolchain file following https://cmake.org/cmake/help/latest/manual/cmake-toolchains.7.html#cross-compiling-for-linux
#
# ---------------------------------------------------------------------------------------------------------------------
set(CMAKE_SYSTEM_NAME Linux)
set(CMAKE_SYSTEM_PROCESSOR x86_64)
# ExternalProject configure steps can run long after the parent configuration,
# when the caller's UE_ROOT may point at a different checkout. Prefer the root
# captured in this build tree and use the environment only for first configure.
if(NOT DEFINED UE_ROOT_PATH OR UE_ROOT_PATH STREQUAL "")
set(UE_ROOT_PATH "$ENV{UE_ROOT}" CACHE PATH "Unreal Engine root")
endif()
set(UE_SDK_BASE
"${UE_ROOT_PATH}/Engine/Extras/ThirdPartyNotUE/SDKs/HostLinux/Linux_x64"
)
if(NOT EXISTS "${UE_SDK_BASE}")
message(FATAL_ERROR "Unreal Linux SDK path not found: ${UE_SDK_BASE}")
endif()
# Find available SDK versions (v21_*, v22_*, etc.)
file(GLOB UE_SDK_DIRS
LIST_DIRECTORIES true
"${UE_SDK_BASE}/*"
)
if(UE_SDK_DIRS STREQUAL "")
message(FATAL_ERROR "No Unreal Linux SDKs found in ${UE_SDK_BASE}")
endif()
# If multiple SDKs exist, pick the last one (usually highest version)
list(SORT UE_SDK_DIRS)
list(GET UE_SDK_DIRS -1 UE_SDK_SELECTED)
get_filename_component(UE_SDK_NAME "${UE_SDK_SELECTED}" NAME)
message(STATUS "Using Unreal Linux SDK: ${UE_SDK_NAME}")
# Final toolchain path
set(CMAKE_SYSROOT
"${UE_SDK_SELECTED}/x86_64-unknown-linux-gnu"
)
set(CMAKE_C_COMPILER "${CMAKE_SYSROOT}/bin/clang")
set(CMAKE_CXX_COMPILER "${CMAKE_SYSROOT}/bin/clang++")
set(UE_LEGACY_LIBCXX_ROOT "${UE_ROOT_PATH}/Engine/Source/ThirdParty/Unix/LibCxx")
if(EXISTS "${UE_LEGACY_LIBCXX_ROOT}/include/c++/v1")
set(UE_LIBCXX_LIB_DIR "${UE_LEGACY_LIBCXX_ROOT}/lib/Unix/x86_64-unknown-linux-gnu")
set(CMAKE_CXX_FLAGS "-I${UE_LEGACY_LIBCXX_ROOT}/include -I${UE_LEGACY_LIBCXX_ROOT}/include/c++/v1 -stdlib=libc++ -L${UE_LIBCXX_LIB_DIR}")
elseif(EXISTS "${CMAKE_SYSROOT}/include/c++/v1")
set(UE_LIBCXX_LIB_DIR "${CMAKE_SYSROOT}/lib64")
set(CMAKE_CXX_FLAGS "-I${CMAKE_SYSROOT}/include -I${CMAKE_SYSROOT}/include/c++/v1 -stdlib=libc++ -L${UE_LIBCXX_LIB_DIR}")
else()
message(FATAL_ERROR "Unreal libc++ headers not found under legacy LibCxx or ${CMAKE_SYSROOT}")
endif()
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)