-
Notifications
You must be signed in to change notification settings - Fork 12
/
Copy pathCMakeLists.txt
131 lines (101 loc) · 3.73 KB
/
CMakeLists.txt
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
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
cmake_minimum_required(VERSION 3.11)
if(CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_LIST_DIR)
message(STATUS "CMAKE_BUILD_TYPE: ${CMAKE_BUILD_TYPE}")
message(STATUS "CMAKE_GENERATOR: ${CMAKE_GENERATOR}")
endif()
# platform build flag
option(LD_ANDROID_BUILD "Build for Android" OFF)
option(LD_IOS_BUILD "Build for iOS" OFF)
# main app configuration
option(LD_CORE_BUILD_EXAMPLE "Build Example" OFF)
option(LD_CORE_BUILD_TESTS "Build Tests" OFF)
# library flags
option(LD_CORE_ENABLE_BOX2D "Enable Box2D" OFF)
option(LD_CORE_ENABLE_LIBLZR "Enable liblzr" OFF)
option(LD_CORE_ENABLE_LUAGAME "Enable lua game module" OFF)
option(LD_CORE_ENABLE_RAZER "Enable ldRazer game module" OFF)
option(LD_CORE_ENABLE_QUAZIP "Support of resources extraction (android)" OFF)
# Android resources extraction
option(LD_CORE_RESOURCES_EXTRACTOR "Support of resources extraction (android)" OFF)
message(STATUS "LD_CORE_BUILD_EXAMPLE ${LD_CORE_BUILD_EXAMPLE}")
include(CMakeDependentOption)
CMAKE_DEPENDENT_OPTION(LD_CORE_RESOURCES_EXTRACTOR "" OFF
"NOT LD_ANDROID_BUILD" ON)
CMAKE_DEPENDENT_OPTION(LD_CORE_ENABLE_QUAZIP "" OFF
"NOT LD_CORE_RESOURCES_EXTRACTOR" ON)
CMAKE_DEPENDENT_OPTION(LD_CORE_ENABLE_BOX2D "" OFF
"NOT LD_CORE_BUILD_EXAMPLE" ON)
CMAKE_DEPENDENT_OPTION(LD_CORE_ENABLE_LUAGAME "" OFF
"NOT LD_CORE_BUILD_EXAMPLE" ON)
CMAKE_DEPENDENT_OPTION(LD_CORE_ENABLE_RAZER "" OFF
"NOT LD_CORE_BUILD_EXAMPLE" ON)
message(STATUS "LD_CORE_ENABLE_BOX2D ${LD_CORE_ENABLE_BOX2D}")
if(LD_IOS_BUILD)
option(LASERDOCKLIB_USB_SUPPORT "" OFF)
set(LD_CORE_ENABLE_OPENMP OFF) # OpenMP is not supported on iOS
else()
mark_as_advanced(LASERDOCKLIB_USB_SUPPORT)
set(LD_CORE_ENABLE_OPENMP ON)
endif()
message(STATUS "LASERDOCKLIB_USB_SUPPORT ${LASERDOCKLIB_USB_SUPPORT}")
if(APPLE)
if(NOT LD_IOS_BUILD)
set(CMAKE_OSX_DEPLOYMENT_TARGET "10.13")
# ALLOW LASEROS TO BUILD ON AN APPLE MAC M1 FOR X86_64 PLATFOIRM
SET(CMAKE_OSX_ARCHITECTURES "x86_64" CACHE STRING "Build architectures for OSX")
endif()
endif()
if ((CMAKE_BUILD_TYPE STREQUAL "Release") OR (CMAKE_BUILD_TYPE STREQUAL "RelWithDebInfo") OR (CMAKE_BUILD_TYPE STREQUAL "MinSizeRel"))
set(LD_BUILD_RELEASE_VERSION ON)
endif()
# setup C++
set(CMAKE_VERBOSE_MAKEFILE ON)
# setup C++
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)
# setup Qt
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTORCC ON)
set (CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
# load local
include(local.cmake OPTIONAL)
include(DetectLinux)
include(DetectQt)
set(CMAKE_PREFIX_PATH ${QTDIR})
include(SetupAndroidToolchain)
if(LD_IOS_BUILD)
SET(CMAKE_XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY "iPhone Developer")
set(ENABLE_BITCODE OFF)
set(PLATFORM OS64COMBINED)
set(DEPLOYMENT_TARGET "14.0")
# set(ARCHS x86_64)
set(CMAKE_TOOLCHAIN_FILE ${CMAKE_CURRENT_LIST_DIR}/cmake/ios.toolchain.cmake)
message(STATUS "CMAKE_TOOLCHAIN_FILE: ${CMAKE_TOOLCHAIN_FILE}")
endif()
project(ldCore)
# we need find Qt here because of weird bugs
find_package(Qt5 COMPONENTS Core Gui Network Multimedia OpenGL Quick Widgets REQUIRED)
if(ANDROID)
find_package(Qt5 COMPONENTS AndroidExtras REQUIRED)
endif()
add_subdirectory(3rdparty)
add_subdirectory(ldCore)
add_subdirectory(modules)
# add example for library
if(LD_CORE_BUILD_EXAMPLE)
add_subdirectory(example)
endif()
if(LD_CORE_BUILD_TESTS)
add_subdirectory(tests)
endif()
if(CMAKE_GENERATOR STREQUAL Xcode)
SET(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LANGUAGE_STANDARD "c++17")
SET(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LIBRARY "libc++")
endif()
# just ignore Qt creator annoying default variable
if(DEFINED QT_QMAKE_EXECUTABLE)
mark_as_advanced(QT_QMAKE_EXECUTABLE)
set(LD_IGNORED ${QT_QMAKE_EXECUTABLE})
endif()