cmake_minimum_required(VERSION 3.22) # Option setter function(SetOption var value) if(NOT DEFINED ${var}) set(${var} ${value} PARENT_SCOPE) endif() endfunction() # Quiet all non-error messages instead ourself function(message mode) if(${mode} STREQUAL "FATAL_ERROR") _message(FATAL_ERROR ${ARGN}) elseif(${mode} STREQUAL "SEND_ERROR") _message(SEND_ERROR ${ARGN}) elseif(FO_VERBOSE_BUILD) _message(${mode} ${ARGN}) endif() endfunction() function(StatusMessage) _message(STATUS ${ARGN}) endfunction() function(AbortMessage) _message(FATAL_ERROR ${ARGN}) endfunction() # Skip all install rules function(install) endfunction() function(export) endfunction() set(CMAKE_SKIP_INSTALL_RULES ON CACHE BOOL "Forced by FOnline" FORCE) # Disable warnings in third-party libs function(DisableLibWarnings) foreach(lib ${ARGV}) target_compile_options(${lib} PRIVATE $<$,$,$>:-w> $<$:/W0>) endforeach() endfunction() # Add C/CXX compile option macro(add_compile_options_C_CXX) foreach(option ${ARGV}) add_compile_options($<$:${option}>) endforeach() endmacro() # Temporary variables set(FO_ENGINE_ROOT "") set(FO_BUILD_HASH "") set(FO_GIT_ROOT "") set(FO_GIT_HASH_RESULT "") set(FO_GIT_HASH "") set(FO_CONFIGURATION_TYPES "Debug;Release;RelWithDebInfo;MinSizeRel") set(FO_MULTICONFIG OFF) set(FO_HEADLESS_ONLY ON) set(FO_CONTINOUS_INTEGRATION OFF) set(FO_WINDOWS 0) set(FO_UWP 0) set(FO_LINUX 0) set(FO_MAC 0) set(FO_ANDROID 0) set(FO_IOS 0) set(FO_WEB 0) set(FO_HAVE_OPENGL 0) set(FO_OPENGL_ES 0) set(FO_HAVE_DIRECT_3D 0) set(FO_HAVE_METAL 0) set(FO_HAVE_VULKAN 0) set(FO_BUILD_LIBRARY OFF) set(FO_GEN_DEPENDENCIES "") set(FO_CLIENT_OUTPUT "") set(FO_SERVER_OUTPUT "") set(FO_EDITOR_OUTPUT "") set(FO_MAPPER_OUTPUT "") set(FO_ASCOMPILER_OUTPUT "") set(FO_BAKER_OUTPUT "") set(FO_TESTS_OUTPUT "") set(FO_PROCESSOR_ARCHITECTURE "") set(FO_BUILD_PLATFORM "") set(FO_COMMON_SYSTEM_LIBS "") set(FO_COMMON_LIBS "") set(FO_SERVER_SYSTEM_LIBS "") set(FO_SERVER_LIBS "") set(FO_CLIENT_SYSTEM_LIBS "") set(FO_CLIENT_LIBS "") set(FO_RENDER_SYSTEM_LIBS "") set(FO_RENDER_LIBS "") set(FO_BAKER_SYSTEM_LIBS "") set(FO_BAKER_LIBS "") set(FO_TESTING_LIBS "") set(FO_DUMMY_TARGETS "") set(FO_USE_GLEW OFF) set(FO_RPMALLOC_DIR "") set(FO_SDL_DIR "") set(FO_TRACY_DIR "") set(FO_ZLIB_DIR "") set(FO_PNG_DIR "") set(FO_OGG_DIR "") set(FO_VORBIS_DIR "") set(FO_THEORA_DIR "") set(FO_ACM_DIR "") set(FO_SHA_DIR "") set(FO_GLEW_DIR "") set(FO_UFBX_DIR "") set(FO_JSON_DIR "") set(FO_FMT_DIR "") set(FO_ASIO_DIR "") set(FO_WEBSOCKETS_DIR "") set(FO_MONGODB_DIR "") set(FO_UNQLITE_DIR "") set(FO_VARIANT_DIR "") set(FO_LIBRESSL_DIR "") set(FO_DEAR_IMGUI_DIR "") set(FO_CATCH2_DIR "") set(FO_BACKWARDCPP_DIR "") set(FO_SPARK_DIR "") set(FO_GLSLANG_DIR "") set(FO_SPIRV_CROSS_DIR "") set(FO_ANGELSCRIPT_DIR "") set(FO_ANGELSCRIPT_EXT_DIR "") set(FO_ANGELSCRIPT_SDK_DIR "") set(FO_ANGELSCRIPT_PREPROCESSOR_DIR "") set(FO_ACM_SOURCE "") set(FO_SHA_SOURCE "") set(FO_ZLIB_CONTRIB_SOURCE "") set(FO_ZLIB_CONTRIB_SOURCE "") set(FO_CATCH2_SOURCE "") set(FO_DOTNET_DIR "") set(FO_MONO_OS "") set(FO_MONO_ARCH "") set(FO_MONO_CONFIGURATION "") set(FO_MONO_TRIPLET "") set(FO_MONO_SETUP_SCRIPT "") set(FO_RPMALLOC_SOURCE "") set(FO_OGG_SOURCE "") set(FO_VORBIS_SOURCE "") set(FO_THEORA_SOURCE "") set(FO_GLEW_SOURCE "") set(FO_UFBX_SOURCE "") set(FO_IMGUI_SOURCE "") set(FO_COMMON_SOURCE "") set(FO_SERVER_BASE_SOURCE "") set(FO_CLIENT_BASE_SOURCE "") set(FO_SERVER_SOURCE "") set(FO_CLIENT_SOURCE "") set(FO_EDITOR_SOURCE "") set(FO_MAPPER_SOURCE "") set(FO_ASCOMPILER_SOURCE "") set(FO_BAKER_SOURCE "") set(FO_SOURCE_META_FILES "") set(FO_TESTS_SOURCE "") set(FO_ADDED_COMMON_HEADERS "") set(FO_CORE_LIBS_GROUP "") set(FO_COMMANDS_GROUP "") set(FO_APPLICATIONS_GROUP "") set(FO_CACHE_VARIABLES "") set(FO_CONTRIBUTION_DIR "") set(FO_SPRITE_ATLAS "") set(FO_CODEGEN_COMMAND "") set(FO_CODEGEN_COMMAND_ARGS "") set(FO_CODEGEN_META_SOURCE "") set(FO_CODEGEN_OUTPUT "") set(FO_COMMON_NATIVE_SOURCE "") set(FO_SERVER_NATIVE_SOURCE "") set(FO_CLIENT_NATIVE_SOURCE "") set(FO_EDITOR_NATIVE_SOURCE "") set(FO_MAPPER_NATIVE_SOURCE "") set(FO_MONO_ASSEMBLIES "") set(FO_MONO_SOURCE "") set(FO_PACKAGES "") set(FO_RC_FILE "") set(FO_CONFIG_VAR_LIST "") # Configuration duplication execute_process(COMMAND ${CMAKE_COMMAND} --help-variable-list OUTPUT_FILE "${CMAKE_CURRENT_BINARY_DIR}/cmake-vars.txt") file(STRINGS "${CMAKE_CURRENT_BINARY_DIR}/cmake-vars.txt" varFullList) foreach(var ${varFullList}) if("${var}" MATCHES "") if("${var}" MATCHES "") foreach(lang C CXX CSharp CUDA OBJC OBJCXX Fortran HIP ISPC Swift ASM ASM_NASM ASM_MARMASM ASM_MASM ASM-ATT) string(REPLACE "" "${lang}" langVar "${var}") list(APPEND FO_CONFIG_VAR_LIST "${langVar}") endforeach() else() list(APPEND FO_CONFIG_VAR_LIST "${var}") endif() endif() endforeach() function(CopyConfigurationType configFrom configTo) string(TOUPPER "${configFrom}" configFrom) string(TOUPPER "${configTo}" configTo) foreach(configVar ${FO_CONFIG_VAR_LIST}) string(REPLACE "" "${configFrom}" configVarFrom "${configVar}") string(REPLACE "" "${configTo}" configVarTo "${configVar}") if(NOT "${${configVarFrom}}" STREQUAL "") set("${configVarTo}" "${${configVarFrom}}" PARENT_SCOPE) endif() endforeach() endfunction() # Evaluate engine root get_filename_component(FO_ENGINE_ROOT ${CMAKE_CURRENT_LIST_DIR}/.. ABSOLUTE) cmake_path(RELATIVE_PATH FO_ENGINE_ROOT BASE_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})