@@ -218,38 +218,88 @@ set(DEPS_VERSION 11)
218218
219219option (USE_EXTERNAL_DEPS "Download or reuse dependencies from EXTERNAL_DEPS_DIR (mandatory for building and running NaCl .nexe binaries)." ON )
220220
221+ macro (set_deps_dir)
222+ set (DEPS_DIR ${EXTERNAL_DEPS_DIR} /${DEPS_SYSTEM} -${DEPS_ARCH} -${DEPS_COMPILER} _${DEPS_VERSION} )
223+ endmacro ()
224+
225+ set (DEFAULT_USE_EXTERNAL_DEPS_LIBS ON )
226+
221227if (USE_EXTERNAL_DEPS AND NOT NACL)
222228 set (EXTERNAL_DEPS_DIR "${CMAKE_CURRENT_SOURCE_DIR} /external_deps" CACHE STRING "Directory in which to store the downloaded dependencies." )
223229
224230 set (DEPS_EXT ".tar.xz" )
225231
232+ set (DEPS_ARCH "${ARCH} " )
233+
234+ if (MSVC )
235+ set (DEPS_COMPILER msvc )
236+ elseif (WIN32 )
237+ set (DEPS_COMPILER mingw)
238+ else ()
239+ set (DEPS_COMPILER default)
240+ endif ()
241+
226242 if (WIN32 )
227243 set (DEPS_SYSTEM windows)
228244 set (SUPPORTED_${DEPS_SYSTEM} _ARCH amd64 i686)
229245 elseif (APPLE )
230246 set (DEPS_SYSTEM macos)
231247 set (SUPPORTED_${DEPS_SYSTEM} _ARCH amd64)
232- elseif (LINUX OR FREEBSD)
248+
249+ if (ARCH STREQUAL arm64)
250+ set (DEPS_ARCH amd64)
251+
252+ set_deps_dir()
253+
254+ if (NOT EXISTS ${DEPS_DIR} )
255+ set (DEFAULT_USE_EXTERNAL_DEPS_LIBS OFF )
256+ endif ()
257+ endif ()
258+ elseif (LINUX)
233259 set (DEPS_SYSTEM linux)
234260 set (SUPPORTED_${DEPS_SYSTEM} _ARCH amd64 i686 arm64 armhf)
235- endif ()
261+ elseif (FREEBSD)
262+ set (DEPS_SYSTEM freebsd)
263+ set (SUPPORTED_${DEPS_SYSTEM} _ARCH amd64 i686)
236264
237- if ( MSVC )
238- set (DEPS_COMPILER msvc )
239- elseif ( WIN32 )
240- set (DEPS_COMPILER mingw )
241- else ( )
242- set (DEPS_COMPILER default )
265+ set_deps_dir( )
266+
267+ if ( NOT EXISTS ${DEPS_DIR} )
268+ set (DEFAULT_USE_EXTERNAL_DEPS_LIBS OFF )
269+ set (DEPS_SYSTEM linux )
270+ endif ( )
243271 endif ()
244272
245- if (DEPS_SYSTEM AND ARCH IN_LIST SUPPORTED_${DEPS_SYSTEM} _ARCH)
246- set (DEPS_DIR ${EXTERNAL_DEPS_DIR} /${DEPS_SYSTEM} -${ARCH} -${DEPS_COMPILER} _${DEPS_VERSION} )
273+ set_deps_dir()
274+
275+ if (DEPS_SYSTEM AND DEPS_ARCH IN_LIST SUPPORTED_${DEPS_SYSTEM} _ARCH)
276+ set (HAS_NACL ON )
247277
248278 if (DAEMON_PARENT_SCOPE_DIR)
249279 set (DEPS_DIR ${DEPS_DIR} PARENT_SCOPE)
250280 endif ()
251281 else ()
252- message (WARNING "No dependencies are provided for this system, Native Client is likely unsupported." )
282+ message (WARNING "No prebuilt dependencies are available for this platform, Native Client is likely unsupported." )
283+
284+ if (NOT EXISTS ${DEPS_DIR} )
285+ unset (DEPS_DIR)
286+ endif ()
287+ endif ()
288+ endif ()
289+
290+ option (USE_EXTERNAL_DEPS_LIBS "Build and link against libraries from the EXTERNAL_DEPS_DIR" ${DEFAULT_USE_EXTERNAL_DEPS_LIBS} )
291+
292+ if (USE_EXTERNAL_DEPS AND NOT NACL)
293+ if (DEPS_DIR)
294+ message (STATUS "Using external deps dir: ${DEPS_DIR} " )
295+
296+ if (USE_EXTERNAL_DEPS_LIBS)
297+ message (STATUS "Building against libraries from external deps dir" )
298+ else ()
299+ message (STATUS "Not building against libraries from external deps dir" )
300+ endif ()
301+ else ()
302+ message (STATUS "Not using any external deps dir" )
253303 endif ()
254304endif ()
255305
@@ -499,17 +549,19 @@ if (DEPS_DIR)
499549 endif ()
500550 endif ()
501551
502- # Add to paths
503- set (CMAKE_FIND_ROOT_PATH ${DEPS_DIR} ${CMAKE_FIND_ROOT_PATH} )
504- set (CMAKE_INCLUDE_PATH ${DEPS_DIR} ${DEPS_DIR} /include ${CMAKE_INCLUDE_PATH} )
505- set (CMAKE_FRAMEWORK_PATH ${DEPS_DIR} /lib ${CMAKE_FRAMEWORK_PATH} )
506- set (CMAKE_PREFIX_PATH ${DEPS_DIR} ${CMAKE_PREFIX_PATH} )
507- if (DAEMON_PARENT_SCOPE_DIR)
508- # Also set parent scope so the top level CMakeLists can find precompiled deps
509- set (CMAKE_FIND_ROOT_PATH ${DEPS_DIR} ${CMAKE_FIND_ROOT_PATH} PARENT_SCOPE)
510- set (CMAKE_INCLUDE_PATH ${DEPS_DIR} ${DEPS_DIR} /include ${CMAKE_INCLUDE_PATH} PARENT_SCOPE)
511- set (CMAKE_FRAMEWORK_PATH ${DEPS_DIR} ${CMAKE_FRAMEWORK_PATH} PARENT_SCOPE)
512- set (CMAKE_PREFIX_PATH ${DEPS_DIR} ${CMAKE_PREFIX_PATH} PARENT_SCOPE)
552+ if (USE_EXTERNAL_DEPS_LIBS)
553+ # Add to paths
554+ set (CMAKE_FIND_ROOT_PATH ${DEPS_DIR} ${CMAKE_FIND_ROOT_PATH} )
555+ set (CMAKE_INCLUDE_PATH ${DEPS_DIR} ${DEPS_DIR} /include ${CMAKE_INCLUDE_PATH} )
556+ set (CMAKE_FRAMEWORK_PATH ${DEPS_DIR} /lib ${CMAKE_FRAMEWORK_PATH} )
557+ set (CMAKE_PREFIX_PATH ${DEPS_DIR} ${CMAKE_PREFIX_PATH} )
558+ if (DAEMON_PARENT_SCOPE_DIR)
559+ # Also set parent scope so the top level CMakeLists can find precompiled deps
560+ set (CMAKE_FIND_ROOT_PATH ${DEPS_DIR} ${CMAKE_FIND_ROOT_PATH} PARENT_SCOPE)
561+ set (CMAKE_INCLUDE_PATH ${DEPS_DIR} ${DEPS_DIR} /include ${CMAKE_INCLUDE_PATH} PARENT_SCOPE)
562+ set (CMAKE_FRAMEWORK_PATH ${DEPS_DIR} ${CMAKE_FRAMEWORK_PATH} PARENT_SCOPE)
563+ set (CMAKE_PREFIX_PATH ${DEPS_DIR} ${CMAKE_PREFIX_PATH} PARENT_SCOPE)
564+ endif ()
513565 endif ()
514566endif ()
515567
@@ -784,6 +836,7 @@ if (USE_BREAKPAD)
784836 elseif (LINUX)
785837 add_library (srclibs-breakpad EXCLUDE_FROM_ALL ${BREAKPAD_LIST} )
786838 set_target_properties (srclibs-breakpad PROPERTIES POSITION_INDEPENDENT_CODE 1 FOLDER "libs" )
839+ target_compile_definitions (srclibs-breakpad PUBLIC HAVE_GETCONTEXT=1)
787840 set (LIBS_ENGINE ${LIBS_ENGINE} srclibs-breakpad)
788841
789842 add_executable (crash_server src/engine/crash_server/crash_server_linux.cpp)
@@ -871,7 +924,7 @@ macro(AddApplicationInternal Target Executable)
871924 add_executable (${Target} ${Sources} )
872925 target_link_libraries (${Target} ${A_Target} -objects ${CPP23SupportLibrary} )
873926
874- if (DEPS_DIR)
927+ if (DEPS_DIR AND HAS_NACL )
875928 add_dependencies (${Target} runtime_deps)
876929 endif ()
877930
@@ -903,7 +956,7 @@ function(AddApplication)
903956 set_property (TARGET ${A_Target} -objects APPEND PROPERTY COMPILE_OPTIONS ${A_Flags} )
904957 set_property (TARGET ${A_Target} -objects APPEND PROPERTY INCLUDE_DIRECTORIES ${ENGINE_DIR} ${MOUNT_DIR} ${LIB_DIR} )
905958 set_property (TARGET ${A_Target} -objects APPEND PROPERTY COMPILE_DEFINITIONS ${A_Definitions} )
906-
959+
907960 set_target_properties (${A_Target} -objects PROPERTIES FOLDER "engine/objects" )
908961
909962 set (Sources WIN32 ${A_ApplicationMain} )
@@ -973,25 +1026,31 @@ if (BUILD_CLIENT)
9731026 set (SHADERS_CPP_TEXT "// This file is auto-generated by CMakeLists.txt.\n " )
9741027 string (APPEND SHADERS_CPP_TEXT "#include \" common/Common.h\"\n\n " )
9751028 set (SHADERMAP_TEXT "" )
1029+
9761030 foreach (res ${GLSLSOURCELIST} )
9771031 get_filename_component (filename_no_ext ${res} NAME_WE )
9781032 set (outpath ${EMBED_INCLUDE_DIR} /${filename_no_ext} .glsl.h)
1033+
9791034 add_custom_command (
9801035 OUTPUT ${outpath}
9811036 COMMAND ${CMAKE_COMMAND} "-DINPUT_FILE=${res} " "-DOUTPUT_FILE=${outpath} "
9821037 "-DVARIABLE_NAME=${filename_no_ext} _glsl" -P ${CMAKE_CURRENT_SOURCE_DIR} /cmake/EmbedText.cmake
9831038 MAIN_DEPENDENCY ${res}
9841039 )
1040+
9851041 set_property (TARGET client-objects APPEND PROPERTY SOURCES ${outpath} )
986- string (APPEND SHADERS_CPP_TEXT "#include \" ../embed_data/${filename_no_ext} .glsl.h\"\n " )
987- string (APPEND SHADERMAP_TEXT "\t { \" ${filename_no_ext} .glsl\" , " )
988- string (APPEND SHADERMAP_TEXT "std::string(reinterpret_cast<const char *>( ${filename_no_ext} _glsl ), " )
989- string (APPEND SHADERMAP_TEXT "sizeof( ${filename_no_ext} _glsl )) },\n " )
1042+
1043+ string (APPEND SHADERS_CPP_TEXT "#include \" ../embed_data/${filename_no_ext} .glsl.h\"\n " )
1044+ string (APPEND SHADERMAP_TEXT "\t { \" ${filename_no_ext} .glsl\" , " )
1045+ string (APPEND SHADERMAP_TEXT "std::string(reinterpret_cast<const char *>( ${filename_no_ext} _glsl ), " )
1046+ string (APPEND SHADERMAP_TEXT "sizeof( ${filename_no_ext} _glsl )) },\n " )
9901047 endforeach ()
1048+
9911049 string (APPEND SHADERS_CPP_TEXT "\n extern const std::unordered_map<std::string, std::string> shadermap\n {\n " )
9921050 string (APPEND SHADERS_CPP_TEXT "${SHADERMAP_TEXT} " )
9931051 string (APPEND SHADERS_CPP_TEXT "};\n " )
994- file (WRITE "${CMAKE_CURRENT_BINARY_DIR} /GeneratedSource/shaders.cpp" "${SHADERS_CPP_TEXT} " )
1052+
1053+ daemon_write_generated("shaders.cpp" "${SHADERS_CPP_TEXT} " )
9951054endif ()
9961055
9971056if (BUILD_SERVER)
@@ -1024,7 +1083,7 @@ endif()
10241083# Runtime dependencies
10251084################################################################################
10261085
1027- if (DEPS_DIR AND (BUILD_CLIENT OR BUILD_TTY_CLIENT OR BUILD_SERVER OR BUILD_DUMMY_APP))
1086+ if (DEPS_DIR AND HAS_NACL AND (BUILD_CLIENT OR BUILD_TTY_CLIENT OR BUILD_SERVER OR BUILD_DUMMY_APP))
10281087 add_custom_target (runtime_deps)
10291088 set_target_properties (runtime_deps PROPERTIES FOLDER "CMakePlumbing" )
10301089
0 commit comments