forked from axmolengine/axmol
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathplatforms.cmake
103 lines (96 loc) · 3.2 KB
/
platforms.cmake
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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
#Please use them everywhere
#WINDOWS = Windows Desktop
#ANDROID = Android
#IOS = iOS
#MACOSX = MacOS X
#LINUX = Linux
#############################
# cmake commands:
# win32: cmake -B build -A x64
# winrt: cmake -B build -A x64 -DCMAKE_SYSTEM_NAME=WindowsStore "-DCMAKE_SYSTEM_VERSION=10.0"
#
if(${CMAKE_SYSTEM_NAME} MATCHES "Windows")
set(WINDOWS TRUE)
string(TOLOWER "${CMAKE_GENERATOR_PLATFORM}" _gp_lcase)
if("${_gp_lcase}" MATCHES "win32")
set(WIN32 TRUE)
set(ARCH_ALIAS "x86")
elseif("${_gp_lcase}" STREQUAL "arm64")
set(WIN64 TRUE)
set(ARCH_ALIAS "arm64")
else()
set(WIN64 TRUE)
set(ARCH_ALIAS "x64")
endif()
set(PLATFORM_NAME win32)
if (${CMAKE_SYSTEM_NAME} MATCHES "WindowsStore")
set(WINRT TRUE CACHE BOOL "" FORCE)
set(PLATFORM_NAME winrt)
endif()
elseif(${CMAKE_SYSTEM_NAME} MATCHES "Android")
set(PLATFORM_NAME android)
set(ARCH_ALIAS ${ANDROID_ABI})
# refer
# - https://developer.android.com/about/versions/15/behavior-changes-all#16-kb
# - https://developer.android.google.cn/about/versions/15/behavior-changes-all?hl=zh-cn#16-kb
set(_16KPAGE_SIZE_LD_FLAGS "-Wl,-z,max-page-size=16384")
elseif(${CMAKE_SYSTEM_NAME} MATCHES "Linux")
set(LINUX TRUE)
set(PLATFORM_NAME linux)
elseif(${CMAKE_SYSTEM_NAME} MATCHES "Emscripten")
set(WASM TRUE)
set(EMSCRIPTEN TRUE)
if ("${CMAKE_LIBRARY_ARCHITECTURE}" MATCHES "64")
set(PLATFORM_NAME wasm64)
else()
set(PLATFORM_NAME wasm)
endif()
elseif(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
set(APPLE TRUE)
set(MACOSX TRUE)
set(PLATFORM_NAME mac)
elseif(${CMAKE_SYSTEM_NAME} MATCHES "iOS")
set(APPLE TRUE)
set(IOS TRUE)
set(PLATFORM_NAME ios)
elseif(${CMAKE_SYSTEM_NAME} MATCHES "tvOS")
set(APPLE TRUE)
set(IOS TRUE)
set(TVOS TRUE)
set(PLATFORM_NAME tvos)
elseif(${CMAKE_SYSTEM_NAME} MATCHES "OHOS")
set(OHOS TRUE)
set(PLATFORM_NAME ohos)
else()
message(AUTHOR_WARNING "Unhandled platform: ${CMAKE_SYSTEM_NAME}")
endif()
if (NOT DEFINED WIN32)
set(WIN32 FALSE)
endif()
# generators that are capable of organizing into a hierarchy of folders
set_property(GLOBAL PROPERTY USE_FOLDERS ON)
# simplify generator condition, please use them everywhere
if(CMAKE_GENERATOR STREQUAL Xcode)
set(XCODE TRUE)
elseif(CMAKE_GENERATOR MATCHES Visual)
set(VS TRUE)
endif()
# The global rpath settings
if(LINUX OR APPLE)
set(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE CACHE BOOL "" FORCE)
if(LINUX)
set(CMAKE_INSTALL_RPATH ".:\$ORIGIN:\$ORIGIN/../lib:${CMAKE_BINARY_DIR}/lib")
elseif(APPLE)
set(CMAKE_SKIP_BUILD_RPATH TRUE CACHE BOOL "" FORCE)
if(IOS)
set(CMAKE_INSTALL_RPATH "/usr/lib/swift" "@executable_path/Frameworks")
else()
set(CMAKE_INSTALL_RPATH "@executable_path/../Frameworks")
endif()
endif()
endif()
function(_1k_deprecated_32bit project_name release_ver)
if(("${ARCH_ALIAS}" STREQUAL "x86") OR ("${ARCH_ALIAS}" MATCHES "armeabi-v7a"))
message(WARNING "Building 32-bit[${ARCH_ALIAS}] ${project_name} is deprecated, and will be removed in next release ${release_ver}")
endif()
endfunction()