2018-03-23 04:34:52 -07:00
|
|
|
|
# CMakeList.txt: CMake-Projektdatei der obersten Ebene. Führen Sie eine globale Konfiguration durch,
|
|
|
|
|
# und schließen Sie hier Unterprojekte ein.
|
|
|
|
|
#
|
|
|
|
|
cmake_minimum_required (VERSION 3.8)
|
|
|
|
|
|
|
|
|
|
set (CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake" ${CMAKE_MODULE_PATH})
|
|
|
|
|
|
|
|
|
|
set_property(GLOBAL PROPERTY USE_FOLDERS ON)
|
2018-05-06 00:44:25 -07:00
|
|
|
|
|
2018-10-29 08:49:18 -07:00
|
|
|
|
if(DEFINED ENV{VCPKG_ROOT} AND NOT DEFINED CMAKE_TOOLCHAIN_FILE)
|
|
|
|
|
set(CMAKE_TOOLCHAIN_FILE "${VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake"
|
|
|
|
|
CACHE STRING "")
|
|
|
|
|
endif()
|
|
|
|
|
|
2019-02-16 22:51:33 -08:00
|
|
|
|
# This is important to vcpkg to select the right libraries
|
|
|
|
|
IF(NOT CMAKE_BUILD_TYPE )
|
|
|
|
|
SET(CMAKE_BUILD_TYPE "Release" CACHE STRING "")
|
|
|
|
|
ENDIF()
|
|
|
|
|
|
2018-03-23 04:34:52 -07:00
|
|
|
|
project (
|
2018-05-06 00:44:08 -07:00
|
|
|
|
"Minetestmapper"
|
2018-03-23 04:34:52 -07:00
|
|
|
|
DESCRIPTION "Map generator for Minetest"
|
2018-03-23 23:49:21 -07:00
|
|
|
|
LANGUAGES C CXX)
|
2018-03-23 04:34:52 -07:00
|
|
|
|
|
2018-05-06 00:44:08 -07:00
|
|
|
|
find_package(Git REQUIRED)
|
|
|
|
|
|
|
|
|
|
execute_process(
|
2018-05-26 22:17:10 -07:00
|
|
|
|
COMMAND "${GIT_EXECUTABLE}" describe --long --dirty --tags --match v[0-9]*
|
2018-05-06 00:44:08 -07:00
|
|
|
|
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
|
|
|
|
|
RESULT_VARIABLE git_result
|
|
|
|
|
OUTPUT_VARIABLE git_tag
|
|
|
|
|
ERROR_VARIABLE git_error
|
|
|
|
|
OUTPUT_STRIP_TRAILING_WHITESPACE
|
|
|
|
|
ERROR_STRIP_TRAILING_WHITESPACE
|
|
|
|
|
)
|
2018-05-26 22:17:10 -07:00
|
|
|
|
|
2018-05-06 00:44:08 -07:00
|
|
|
|
if( NOT git_result EQUAL 0 )
|
|
|
|
|
message( FATAL_ERROR "Failed to execute Git: ${git_error}" )
|
|
|
|
|
endif()
|
|
|
|
|
|
2018-05-26 22:17:10 -07:00
|
|
|
|
if( git_tag MATCHES "v([0-9]+).([0-9]+).([0-9]+)-([0-9]+)-g([0-9,a-f]+)(-dirty)?" )
|
2018-05-06 00:44:08 -07:00
|
|
|
|
set( git_version_major "${CMAKE_MATCH_1}" )
|
|
|
|
|
set( git_version_minor "${CMAKE_MATCH_2}" )
|
|
|
|
|
set( git_version_patch "${CMAKE_MATCH_3}" )
|
|
|
|
|
set( git_commits_since_last_tag "${CMAKE_MATCH_4}" )
|
|
|
|
|
set( git_hash "${CMAKE_MATCH_5}" )
|
2018-05-26 22:17:10 -07:00
|
|
|
|
set( git_wip "${CMAKE_MATCH_6}" )
|
2018-05-06 00:44:08 -07:00
|
|
|
|
else()
|
|
|
|
|
message( FATAL_ERROR "Git tag isn't valid semantic version: [${git_tag}]" )
|
|
|
|
|
endif()
|
|
|
|
|
|
2018-05-26 22:17:10 -07:00
|
|
|
|
execute_process(
|
|
|
|
|
COMMAND "${GIT_EXECUTABLE}" rev-parse --abbrev-ref HEAD
|
|
|
|
|
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
|
|
|
|
|
RESULT_VARIABLE git_result
|
|
|
|
|
OUTPUT_VARIABLE git_current_branch
|
|
|
|
|
ERROR_VARIABLE git_error
|
|
|
|
|
OUTPUT_STRIP_TRAILING_WHITESPACE
|
|
|
|
|
ERROR_STRIP_TRAILING_WHITESPACE
|
|
|
|
|
)
|
|
|
|
|
if( NOT git_result EQUAL 0 )
|
|
|
|
|
message( FATAL_ERROR "Failed to execute Git: ${git_error}" )
|
|
|
|
|
endif()
|
|
|
|
|
|
|
|
|
|
if(${git_commits_since_last_tag} EQUAL 0)
|
|
|
|
|
set (PRERELEASE 0)
|
|
|
|
|
else()
|
|
|
|
|
set (PRERELEASE 1)
|
|
|
|
|
endif()
|
|
|
|
|
|
|
|
|
|
set(BUILD_BRANCH ${git_current_branch})
|
|
|
|
|
if(BUILD_BRANCH STREQUAL "master")
|
|
|
|
|
set (SPECIALBUILD 0)
|
|
|
|
|
else()
|
|
|
|
|
set (SPECIALBUILD 1)
|
|
|
|
|
endif()
|
|
|
|
|
|
|
|
|
|
|
2018-05-06 00:44:08 -07:00
|
|
|
|
set (PROJECT_VERSION_MAJOR ${git_version_major})
|
|
|
|
|
set (PROJECT_VERSION_MINOR ${git_version_minor})
|
|
|
|
|
set (PROJECT_VERSION_PATCH ${git_version_patch})
|
|
|
|
|
set (PROJECT_VERSION_TWEAK ${git_commits_since_last_tag})
|
|
|
|
|
if(NOT PROJECT_VERSION_TWEAK)
|
|
|
|
|
set(PROJECT_VERSION_TWEAK 0)
|
|
|
|
|
endif()
|
|
|
|
|
|
2018-05-26 22:17:10 -07:00
|
|
|
|
if(git_wip)
|
|
|
|
|
set (DIRTY_BUILD 1)
|
|
|
|
|
else()
|
|
|
|
|
set (DIRTY_BUILD 0)
|
|
|
|
|
endif()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
set (PROJECT_VERSION "${git_version_major}.${git_version_minor}.${git_version_patch}.${git_commits_since_last_tag}-g${git_hash}${git_wip}")
|
2018-05-06 00:44:08 -07:00
|
|
|
|
message(STATUS "Version: ${PROJECT_VERSION}")
|
|
|
|
|
|
2018-03-23 04:34:52 -07:00
|
|
|
|
# Set output directories
|
|
|
|
|
#set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR})
|
|
|
|
|
#set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR})
|
|
|
|
|
#set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR})
|
2012-08-22 06:22:01 -07:00
|
|
|
|
|
2014-05-13 03:28:13 -07:00
|
|
|
|
OPTION(ENABLE_SQLITE3 "Enable sqlite3 backend" True)
|
2015-12-16 06:15:47 -08:00
|
|
|
|
OPTION(ENABLE_POSTGRESQL "Enable postgresql backend")
|
2014-03-05 12:41:27 -08:00
|
|
|
|
OPTION(ENABLE_LEVELDB "Enable LevelDB backend")
|
2014-05-13 03:28:13 -07:00
|
|
|
|
OPTION(ENABLE_REDIS "Enable redis backend")
|
|
|
|
|
|
2018-05-06 00:44:25 -07:00
|
|
|
|
macro(EnableDBBackend NAME_TECHNICAL DATABASE_NAME)
|
|
|
|
|
message (STATUS "${DATABASE_NAME} library: ${${NAME_TECHNICAL}_LIBRARY}")
|
|
|
|
|
message (STATUS "${DATABASE_NAME} headers: ${${NAME_TECHNICAL}_INCLUDE_DIR}")
|
|
|
|
|
if(${NAME_TECHNICAL}_LIBRARY AND ${NAME_TECHNICAL}_INCLUDE_DIR)
|
|
|
|
|
set(USE_${NAME_TECHNICAL} 1)
|
|
|
|
|
message(STATUS "${DATABASE_NAME} backend enabled")
|
|
|
|
|
include_directories(${${NAME_TECHNICAL}_INCLUDE_DIR})
|
|
|
|
|
else(${NAME_TECHNICAL}_LIBRARY AND ${NAME_TECHNICAL}_INCLUDE_DIR)
|
|
|
|
|
set(USE_${NAME_TECHNICAL} 0)
|
|
|
|
|
if(ENABLE_${NAME_TECHNICAL})
|
|
|
|
|
message(SEND_ERROR "${DATABASE_NAME} backend requested but ${DATABASE_NAME} libraries not found!")
|
|
|
|
|
else(ENABLE_${NAME_TECHNICAL})
|
|
|
|
|
message(STATUS "${DATABASE_NAME} not enabled (${DATABASE_NAME} libraries and/or headers not found)")
|
|
|
|
|
endif(ENABLE_${NAME_TECHNICAL})
|
|
|
|
|
endif(${NAME_TECHNICAL}_LIBRARY AND ${NAME_TECHNICAL}_INCLUDE_DIR)
|
|
|
|
|
endmacro()
|
|
|
|
|
|
2014-05-13 03:28:13 -07:00
|
|
|
|
# Find sqlite3
|
2018-03-23 04:34:52 -07:00
|
|
|
|
if(ENABLE_SQLITE3)
|
2014-05-13 03:28:13 -07:00
|
|
|
|
find_library(SQLITE3_LIBRARY sqlite3)
|
2014-05-26 00:48:57 -07:00
|
|
|
|
find_path(SQLITE3_INCLUDE_DIR sqlite3.h)
|
2018-05-06 00:44:25 -07:00
|
|
|
|
EnableDBBackend(SQLITE3 sqlite3)
|
2018-03-23 04:34:52 -07:00
|
|
|
|
endif(ENABLE_SQLITE3)
|
2014-03-05 12:41:27 -08:00
|
|
|
|
|
2015-12-16 06:15:47 -08:00
|
|
|
|
# Find postgresql
|
2018-03-23 04:34:52 -07:00
|
|
|
|
if(ENABLE_POSTGRESQL)
|
2018-04-24 08:47:05 -07:00
|
|
|
|
find_library(POSTGRESQL_LIBRARY NAMES pq libpq)
|
2015-12-16 06:15:47 -08:00
|
|
|
|
find_path(POSTGRESQL_INCLUDE_DIR libpq-fe.h PATH_SUFFIXES postgresql)
|
2018-05-06 00:44:25 -07:00
|
|
|
|
EnableDBBackend(POSTGRESQL postgresql)
|
2018-03-23 04:34:52 -07:00
|
|
|
|
endif(ENABLE_POSTGRESQL)
|
2015-12-16 06:15:47 -08:00
|
|
|
|
|
2014-05-13 03:28:13 -07:00
|
|
|
|
# Find leveldb
|
2018-03-23 04:34:52 -07:00
|
|
|
|
if(ENABLE_LEVELDB)
|
2018-03-26 00:25:19 -07:00
|
|
|
|
find_library(LEVELDB_LIBRARY NAMES leveldb libleveldb)
|
2014-03-05 12:41:27 -08:00
|
|
|
|
find_path(LEVELDB_INCLUDE_DIR db.h PATH_SUFFIXES leveldb)
|
2018-05-06 00:44:25 -07:00
|
|
|
|
EnableDBBackend(LEVELDB LevelDB)
|
2018-03-23 04:34:52 -07:00
|
|
|
|
endif(ENABLE_LEVELDB)
|
2014-03-05 12:41:27 -08:00
|
|
|
|
|
2014-05-12 03:17:49 -07:00
|
|
|
|
# Find redis
|
2014-05-26 00:48:57 -07:00
|
|
|
|
if(ENABLE_REDIS OR ENABLE_ANY_DATABASE OR ENABLE_ALL_DATABASES)
|
2014-05-12 03:17:49 -07:00
|
|
|
|
find_library(REDIS_LIBRARY hiredis)
|
|
|
|
|
find_path(REDIS_INCLUDE_DIR hiredis.h PATH_SUFFIXES hiredis)
|
2018-05-06 00:44:25 -07:00
|
|
|
|
EnableDBBackend(REDIS redis)
|
2014-05-26 00:48:57 -07:00
|
|
|
|
endif(ENABLE_REDIS OR ENABLE_ANY_DATABASE OR ENABLE_ALL_DATABASES)
|
2014-05-13 03:28:13 -07:00
|
|
|
|
|
2018-03-23 04:34:52 -07:00
|
|
|
|
# Schließen Sie Unterprojekte ein.
|
|
|
|
|
add_subdirectory ("Minetestmapper")
|
2015-11-26 07:17:54 -08:00
|
|
|
|
|
2018-03-23 04:34:52 -07:00
|
|
|
|
configure_file(
|
|
|
|
|
"${PROJECT_SOURCE_DIR}/version.h.in"
|
|
|
|
|
"${PROJECT_SOURCE_DIR}/Minetestmapper/version.h"
|
2015-11-25 00:08:13 -08:00
|
|
|
|
)
|
2014-05-26 12:26:27 -07:00
|
|
|
|
configure_file(
|
2016-05-16 23:54:43 -07:00
|
|
|
|
"${PROJECT_SOURCE_DIR}/build_config.h.in"
|
2018-03-23 04:34:52 -07:00
|
|
|
|
"${PROJECT_SOURCE_DIR}/Minetestmapper/build_config.h"
|
2014-05-26 12:26:27 -07:00
|
|
|
|
)
|
|
|
|
|
|
2018-03-23 04:34:52 -07:00
|
|
|
|
|