@@ -19,6 +19,38 @@ cmake_minimum_required(VERSION 3.14)
19
19
SET (CMAKE_NINJA_FORCE_RESPONSE_FILE 1 CACHE INTERNAL "" )
20
20
21
21
include (SelectLibraryConfigurations)
22
+ # Passing of variables to vcpkg
23
+ #
24
+ # vcpkg runs cmake scripts in an isolated environment, see this for details:
25
+ # https://github.com/Microsoft/vcpkg/issues/3712
26
+ #
27
+ # Here's how this works and how we work around this issue:
28
+ #
29
+ # 1. This file (CMakeLists.txt) runs first and is authoritative. It is the one
30
+ # that reads the environment, sets variables and sets a default value.
31
+ # 2. It writes the contents of the variables to
32
+ # $CMAKE_CURRENT_BINARY_DIR/_env/$VARNAME
33
+ # 3. hifi_vcpkg.py takes the _env directory, and copies it to the vcpkg dir.
34
+ # This solves the issue of CMakeLists.txt not knowing where the vcpkg dir is.
35
+ # 4. cmake/ports/*/portfile.cmake does know where the vcpkg dir is, and can
36
+ # read the _env that was copied there to obtain the variable's name.
37
+ #
38
+ # To ensure no old data could be accidentally read, the _env directories are
39
+ # deleted on each execution and fully recreated.
40
+
41
+ # Ensure nothing is kept from any previous run
42
+ file (REMOVE_RECURSE "${CMAKE_CURRENT_BINARY_DIR} /_env" )
43
+ file (MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR} /_env" )
44
+
45
+ # Base URL for externally downloaded files
46
+ set (EXTERNAL_BUILD_ASSETS "https://build-deps.overte.org" )
47
+
48
+ if ( DEFINED ENV{EXTERNAL_BUILD_ASSETS} )
49
+ set (EXTERNAL_BUILD_ASSETS "$ENV{EXTERNAL_BUILD_ASSETS} " )
50
+ endif ()
51
+
52
+ file (WRITE "${CMAKE_CURRENT_BINARY_DIR} /_env/EXTERNAL_BUILD_ASSETS.txt" "${EXTERNAL_BUILD_ASSETS} " )
53
+ MESSAGE (STATUS "EXTERNAL_BUILD_ASSETS: ${EXTERNAL_BUILD_ASSETS} " )
22
54
23
55
# read USE_GLES enviroment variable and sets it as GLES option
24
56
# TODO still gets overwritten by "use GLES on linux aarch64"
@@ -35,15 +67,25 @@ if (CMAKE_SYSTEM_NAME STREQUAL "Linux" AND CMAKE_SYSTEM_PROCESSOR STREQUAL "aarc
35
67
set (GLES_OPTION ON )
36
68
endif ()
37
69
70
+ # Will affect VCPKG dependencies
71
+ file (WRITE "${CMAKE_CURRENT_BINARY_DIR} /_env/USE_GLES.txt" "${GLES_OPTION} " )
72
+ MESSAGE (STATUS "GLES_OPTION: ${GLES_OPTION} " )
73
+
74
+ include ("${CMAKE_CURRENT_SOURCE_DIR} /cmake/macros/TargetPython.cmake" )
75
+ target_python()
76
+
77
+ if (WIN32 AND NOT HIFI_ANDROID AND NOT (CMAKE_GENERATOR STREQUAL "Ninja" ))
78
+ # Force x64 toolset
79
+ set (CMAKE_GENERATOR_TOOLSET "host=x64" CACHE STRING "64-bit toolset" FORCE)
80
+ endif ()
81
+
38
82
# set our OS X deployment target
39
83
# (needs to be set before first project() call and before prebuild.py)
40
84
# Will affect VCPKG dependencies
41
85
if (APPLE )
42
86
set (ENV{MACOSX_DEPLOYMENT_TARGET} 10.11)
43
87
endif ()
44
88
45
- set (EXTERNAL_BUILD_ASSETS "https://build-deps.overte.org" )
46
-
47
89
set (RELEASE_TYPE "$ENV{RELEASE_TYPE} " )
48
90
if ((NOT "${RELEASE_TYPE} " STREQUAL "PRODUCTION" ) AND (NOT "${RELEASE_TYPE} " STREQUAL "PR" ))
49
91
set (RELEASE_TYPE "DEV" )
@@ -67,6 +109,8 @@ if( NOT WIN32 )
67
109
set (OVERTE_OPTIMIZE_FLAGS "" )
68
110
69
111
if (OVERTE_OPTIMIZE)
112
+
113
+ file (WRITE "${CMAKE_CURRENT_BINARY_DIR} /_env/OVERTE_OPTIMIZE.txt" "${OVERTE_OPTIMIZE} " )
70
114
if (CMAKE_CXX_COMPILER_ID MATCHES "Clang" )
71
115
message ("Clang compiler detected, adding -O3 -fPIC -g flags" )
72
116
set (OVERTE_OPTIMIZE_FLAGS "-O3 -fPIC -g" )
@@ -92,6 +136,7 @@ if( NOT WIN32 )
92
136
endif ()
93
137
94
138
if (DEFINED OVERTE_CPU_ARCHITECTURE)
139
+ file (WRITE "${CMAKE_CURRENT_BINARY_DIR} /_env/OVERTE_CPU_ARCHITECTURE.txt" "${OVERTE_CPU_ARCHITECTURE} " )
95
140
set (OVERTE_OPTIMIZE_FLAGS "${OVERTE_OPTIMIZE_FLAGS} ${OVERTE_CPU_ARCHITECTURE} " )
96
141
message ("Adding CPU architecture flags: ${OVERTE_CPU_ARCHITECTURE} " )
97
142
MESSAGE (STATUS "OVERTE_CPU_ARCHITECTURE: ${OVERTE_CPU_ARCHITECTURE} " )
@@ -156,9 +201,53 @@ if(OVERTE_WARNINGS_AS_ERRORS)
156
201
endif ()
157
202
158
203
204
+ if (HIFI_ANDROID)
205
+ execute_process (
206
+ COMMAND ${HIFI_PYTHON_EXEC} ${CMAKE_CURRENT_SOURCE_DIR} /prebuild.py --release-type ${RELEASE_TYPE} --android ${HIFI_ANDROID_APP} --build -root ${CMAKE_BINARY_DIR}
207
+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} RESULTS_VARIABLE PREBUILD_RET
208
+ )
209
+ else ()
210
+ set (VCPKG_BUILD_TYPE_PARAM "" )
211
+ if (VCPKG_BUILD_TYPE)
212
+ set (VCPKG_BUILD_TYPE_PARAM --vcpkg-build -type ${VCPKG_BUILD_TYPE} )
213
+ endif ()
214
+ execute_process (
215
+ COMMAND ${HIFI_PYTHON_EXEC} ${CMAKE_CURRENT_SOURCE_DIR} /prebuild.py --release-type ${RELEASE_TYPE} --build -root ${CMAKE_BINARY_DIR} ${VCPKG_BUILD_TYPE_PARAM}
216
+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} RESULTS_VARIABLE PREBUILD_RET
217
+ )
218
+ endif ()
219
+
220
+ if (PREBUILD_RET GREATER 0)
221
+ message (FATAL_ERROR "prebuild.py failed with error ${PREBUILD_RET} " )
222
+ endif ()
223
+ if (NOT EXISTS "${CMAKE_BINARY_DIR} /vcpkg.cmake" )
224
+ message (FATAL_ERROR "vcpkg configuration missing." )
225
+ endif ()
226
+ include ("${CMAKE_BINARY_DIR} /vcpkg.cmake" )
227
+
228
+ if (HIFI_ANDROID)
229
+ set (QT_CMAKE_PREFIX_PATH "$ENV{HIFI_ANDROID_PRECOMPILED} /qt/lib/cmake" )
230
+ else ()
231
+ if ("$ENV{OVERTE_USE_SYSTEM_QT} " STREQUAL "" )
232
+ if (NOT EXISTS "${CMAKE_BINARY_DIR} /qt.cmake" )
233
+ message (FATAL_ERROR "qt configuration missing." )
234
+ endif ()
235
+ include ("${CMAKE_BINARY_DIR} /qt.cmake" )
236
+ message (STATUS "${CMAKE_BINARY_DIR} /qt.cmake included!" )
237
+ else ()
238
+ message (STATUS "System Qt in use, not including qt.cmake!" )
239
+ endif ()
240
+ endif ()
241
+
242
+ option (VCPKG_APPLOCAL_DEPS OFF )
243
+
159
244
project (overte)
160
245
include ("cmake/init.cmake" )
161
246
include ("cmake/compiler.cmake" )
247
+ option (VCPKG_APPLOCAL_DEPS OFF )
248
+
249
+ add_paths_to_fixup_libs(${VCPKG_INSTALL_ROOT} /bin)
250
+ add_paths_to_fixup_libs(${VCPKG_INSTALL_ROOT} /debug/bin)
162
251
163
252
if (NOT DEFINED CLIENT_ONLY)
164
253
set (CLIENT_ONLY 0)
@@ -335,6 +424,12 @@ endif()
335
424
336
425
set_packaging_parameters()
337
426
427
+ # Locate the required Qt build on the filesystem
428
+ setup_qt()
429
+
430
+ if ("$ENV{OVERTE_USE_SYSTEM_QT} " STREQUAL "" )
431
+ list (APPEND CMAKE_PREFIX_PATH "${QT_CMAKE_PREFIX_PATH} " )
432
+ endif ()
338
433
339
434
find_package ( Threads )
340
435
0 commit comments