X-Git-Url: https://git.lizzy.rs/?a=blobdiff_plain;f=CMakeLists.txt;h=8959f6129887c2deceffa3554f03744714f356ad;hb=847ed04e0ad903b064f4f4a444d25f7cdc1130cb;hp=5dfc857d364fad852049354fe5e5ed32f79805f4;hpb=7993909fabce4f796ca67b5a8139936667de25df;p=minetest.git diff --git a/CMakeLists.txt b/CMakeLists.txt index 5dfc857d3..8959f6129 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -16,9 +16,9 @@ set(CMAKE_CXX_STANDARD_REQUIRED TRUE) set(GCC_MINIMUM_VERSION "5.1") set(CLANG_MINIMUM_VERSION "3.5") -# Also remember to set PROTOCOL_VERSION in network/networkprotocol.h when releasing +# You should not need to edit these manually, use util/bump_version.sh set(VERSION_MAJOR 5) -set(VERSION_MINOR 6) +set(VERSION_MINOR 7) set(VERSION_PATCH 0) set(VERSION_EXTRA "" CACHE STRING "Stuff to append to version string") @@ -52,6 +52,7 @@ set(RUN_IN_PLACE ${DEFAULT_RUN_IN_PLACE} CACHE BOOL set(BUILD_CLIENT TRUE CACHE BOOL "Build client") set(BUILD_SERVER FALSE CACHE BOOL "Build server") set(BUILD_UNITTESTS TRUE CACHE BOOL "Build unittests") +set(BUILD_BENCHMARKS FALSE CACHE BOOL "Build benchmarks") set(WARN_ALL TRUE CACHE BOOL "Enable -Wall for Release build") @@ -60,6 +61,9 @@ if(NOT CMAKE_BUILD_TYPE) set(CMAKE_BUILD_TYPE Release CACHE STRING "Build type: Debug or Release" FORCE) endif() +set(ENABLE_UPDATE_CHECKER (NOT ${DEVELOPMENT_BUILD}) CACHE BOOL + "Whether to enable update checks by default") + # Included stuff set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/Modules/") @@ -77,7 +81,6 @@ if(NOT "${IRRLICHTMT_BUILD_DIR}" STREQUAL "") # IrrlichtMtConfig.cmake message(FATAL_ERROR "Could not find IrrlichtMtConfig.cmake in ${IRRLICHTMT_BUILD_DIR}/cmake.") endif() -# This is done here so that relative search paths are more reasonable elseif(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/lib/irrlichtmt") message(STATUS "Using user-provided IrrlichtMt at subdirectory 'lib/irrlichtmt'") if(BUILD_CLIENT) @@ -107,9 +110,9 @@ else() include(MinetestFindIrrlichtHeaders) if(NOT IRRLICHT_INCLUDE_DIR) - message(FATAL_ERROR "Irrlicht or IrrlichtMt headers are required to build the server, but none found.\n${explanation_msg}") + message(FATAL_ERROR "IrrlichtMt headers are required to build the server, but none found.\n${explanation_msg}") endif() - message(STATUS "Found Irrlicht headers: ${IRRLICHT_INCLUDE_DIR}") + message(STATUS "Found IrrlichtMt headers: ${IRRLICHT_INCLUDE_DIR}") add_library(IrrlichtMt::IrrlichtMt INTERFACE IMPORTED) # Note that we can't use target_include_directories() since that doesn't work for IMPORTED targets before CMake 3.11 set_target_properties(IrrlichtMt::IrrlichtMt PROPERTIES @@ -117,10 +120,33 @@ else() endif() endif() -if(TARGET IrrlichtMt::IrrlichtMt) +if(BUILD_CLIENT AND TARGET IrrlichtMt::IrrlichtMt) + # retrieve version somehow + if(NOT IrrlichtMt_VERSION) + get_target_property(IrrlichtMt_VERSION IrrlichtMt VERSION) + endif() message(STATUS "Found IrrlichtMt ${IrrlichtMt_VERSION}") + + set(TARGET_VER_S 1.9.0mt9) + string(REPLACE "mt" "." TARGET_VER ${TARGET_VER_S}) + if(IrrlichtMt_VERSION VERSION_LESS ${TARGET_VER}) + message(FATAL_ERROR "At least IrrlichtMt ${TARGET_VER_S} is required to build") + elseif(NOT DEVELOPMENT_BUILD AND IrrlichtMt_VERSION VERSION_GREATER ${TARGET_VER}) + message(FATAL_ERROR "IrrlichtMt ${TARGET_VER_S} is required to build") + endif() endif() +if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU") + if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS "${GCC_MINIMUM_VERSION}") + message(FATAL_ERROR "Insufficient gcc version, found ${CMAKE_CXX_COMPILER_VERSION}. " + "Version ${GCC_MINIMUM_VERSION} or higher is required.") + endif() +elseif(CMAKE_CXX_COMPILER_ID MATCHES "(Apple)?Clang") + if (CMAKE_CXX_COMPILER_VERSION VERSION_LESS "${CLANG_MINIMUM_VERSION}") + message(FATAL_ERROR "Insufficient clang version, found ${CMAKE_CXX_COMPILER_VERSION}. " + "Version ${CLANG_MINIMUM_VERSION} or higher is required.") + endif() +endif() # Installation @@ -223,8 +249,13 @@ endif() install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/games/minetest_game" DESTINATION "${SHAREDIR}/games/" COMPONENT "SUBGAME_MINETEST_GAME" OPTIONAL PATTERN ".git*" EXCLUDE ) -install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/games/devtest" DESTINATION "${SHAREDIR}/games/" - COMPONENT "SUBGAME_MINIMAL" OPTIONAL PATTERN ".git*" EXCLUDE ) + +set(INSTALL_DEVTEST FALSE CACHE BOOL "Install Development Test") + +if(INSTALL_DEVTEST) + install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/games/devtest" DESTINATION "${SHAREDIR}/games/" + PATTERN ".git*" EXCLUDE ) +endif() if(BUILD_CLIENT) install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/client/shaders" DESTINATION "${SHAREDIR}/client") @@ -263,28 +294,17 @@ find_package(GMP REQUIRED) find_package(Json REQUIRED) find_package(Lua REQUIRED) if(NOT USE_LUAJIT) - set(LUA_BIT_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/lib/bitop) - set(LUA_BIT_LIBRARY bitop) add_subdirectory(lib/bitop) endif() -if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU") - if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS "${GCC_MINIMUM_VERSION}") - message(FATAL_ERROR "Insufficient gcc version, found ${CMAKE_CXX_COMPILER_VERSION}. " - "Version ${GCC_MINIMUM_VERSION} or higher is required.") - endif() -elseif(CMAKE_CXX_COMPILER_ID MATCHES "(Apple)?Clang") - if (CMAKE_CXX_COMPILER_VERSION VERSION_LESS "${CLANG_MINIMUM_VERSION}") - message(FATAL_ERROR "Insufficient clang version, found ${CMAKE_CXX_COMPILER_VERSION}. " - "Version ${CLANG_MINIMUM_VERSION} or higher is required.") - endif() +if(BUILD_BENCHMARKS) + add_subdirectory(lib/catch2) endif() # Subdirectories # Be sure to add all relevant definitions above this add_subdirectory(src) - # CPack set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "A free open-source voxel game engine with easy modding and game creation.") @@ -307,19 +327,12 @@ cpack_add_component(SUBGAME_MINETEST_GAME GROUP "Games" ) -cpack_add_component(SUBGAME_MINIMAL - DISPLAY_NAME "Development Test" - DESCRIPTION "A basic testing environment used for engine development and sometimes for testing mods." - DISABLED #DISABLED does not mean it is disabled, and is just not selected by default. - GROUP "Games" -) - cpack_add_component_group(Subgames DESCRIPTION "Games for the Minetest engine." ) if(WIN32) - # Include all dynamically linked runtime libaries such as MSVCRxxx.dll + # Include all dynamically linked runtime libraries such as MSVCRxxx.dll include(InstallRequiredSystemLibraries) if(RUN_IN_PLACE)