11cmake_minimum_required (VERSION 3.5)
22
3- project (minetestmapper CXX)
4-
5- set (VERSION_MAJOR 1)
6- set (VERSION_MINOR 0)
7- set (VERSION_STRING "${VERSION_MAJOR} .${VERSION_MINOR} " )
3+ project (minetestmapper
4+ VERSION 1.0
5+ LANGUAGES CXX
6+ )
87
98# Stuff & Paths
109
@@ -13,18 +12,17 @@ if(NOT CMAKE_BUILD_TYPE)
1312endif ()
1413
1514set (CMAKE_CXX_STANDARD 11)
16- set (CMAKE_CXX_FLAGS_RELEASE "-O3 -Wall -DNDEBUG" )
17- set (CMAKE_CXX_FLAGS_DEBUG "-O0 -g2 -Wall" )
15+ set (CMAKE_CXX_STANDARD_REQUIRED ON )
1816
1917if (WIN32 )
2018 set (SHAREDIR "." )
2119 set (BINDIR "." )
2220 set (DOCDIR "." )
2321else ()
24- set (SHAREDIR "${CMAKE_INSTALL_PREFIX} / share/minetest" ) # reuse Minetest share dir
25- set (BINDIR "${CMAKE_INSTALL_PREFIX} / bin" )
26- set (DOCDIR "${CMAKE_INSTALL_PREFIX} / share/doc/${PROJECT_NAME} " )
27- set (MANDIR "${CMAKE_INSTALL_PREFIX} / share/man" )
22+ set (SHAREDIR "share/minetest" ) # reuse Minetest share dir
23+ set (BINDIR "bin" )
24+ set (DOCDIR "share/doc/${PROJECT_NAME} " )
25+ set (MANDIR "share/man" )
2826endif ()
2927
3028set (CUSTOM_SHAREDIR "" CACHE STRING "Directory to install data files into" )
@@ -77,7 +75,17 @@ option(ENABLE_POSTGRESQL "Enable PostgreSQL backend" TRUE)
7775set (USE_POSTGRESQL FALSE )
7876
7977if (ENABLE_POSTGRESQL)
80- find_package ("PostgreSQL" )
78+ if (CMAKE_VERSION VERSION_LESS "3.20" )
79+ find_package (PostgreSQL QUIET )
80+ # Before CMake 3.20 FindPostgreSQL.cmake always looked for server includes
81+ # but we don't need them, so continue anyway if only those are missing.
82+ if (PostgreSQL_INCLUDE_DIR AND PostgreSQL_LIBRARY)
83+ set (PostgreSQL_FOUND TRUE )
84+ set (PostgreSQL_INCLUDE_DIRS ${PostgreSQL_INCLUDE_DIR} )
85+ endif ()
86+ else ()
87+ find_package (PostgreSQL)
88+ endif ()
8189
8290 if (PostgreSQL_FOUND)
8391 set (USE_POSTGRESQL TRUE )
@@ -146,9 +154,18 @@ configure_file(
146154 "${PROJECT_SOURCE_DIR} /include/cmake_config.h.in"
147155 "${PROJECT_BINARY_DIR} /cmake_config.h"
148156)
149- add_definitions ( -DUSE_CMAKE_CONFIG_H )
157+ add_definitions (-DUSE_CMAKE_CONFIG_H)
158+
159+ if (CMAKE_CXX_COMPILER_ID MATCHES "^(GNU|Clang|AppleClang)$" )
160+ set (CMAKE_CXX_FLAGS_RELEASE "-O2" )
161+ set (CMAKE_CXX_FLAGS_DEBUG "-Og -g2" )
162+ add_compile_options (-Wall -pipe)
163+ endif ()
164+ if (CMAKE_BUILD_TYPE STREQUAL "Release" )
165+ add_definitions (-DNDEBUG)
166+ endif ()
150167
151- set (mapper_SRCS
168+ add_executable (minetestmapper
152169 BlockDecoder.cpp
153170 PixelAttributes.cpp
154171 PlayerAttributes.cpp
@@ -158,22 +175,9 @@ set(mapper_SRCS
158175 mapper.cpp
159176 util.cpp
160177 db-sqlite3.cpp
161- )
162-
163- if (USE_POSTGRESQL)
164- set (mapper_SRCS ${mapper_SRCS} db-postgresql.cpp)
165- endif (USE_POSTGRESQL)
166-
167- if (USE_LEVELDB)
168- set (mapper_SRCS ${mapper_SRCS} db-leveldb.cpp)
169- endif (USE_LEVELDB)
170-
171- if (USE_REDIS)
172- set (mapper_SRCS ${mapper_SRCS} db-redis.cpp)
173- endif (USE_REDIS)
174-
175- add_executable (minetestmapper
176- ${mapper_SRCS}
178+ $<$<BOOL :${USE_POSTGRESQL} >:db-postgresql.cpp>
179+ $<$<BOOL :${USE_LEVELDB} >:db-leveldb.cpp>
180+ $<$<BOOL :${USE_REDIS} >:db-redis.cpp>
177181)
178182
179183target_link_libraries (
@@ -198,16 +202,14 @@ if(UNIX)
198202endif ()
199203
200204set (CPACK_PACKAGE_DESCRIPTION_SUMMARY "Overview mapper for Minetest" )
201- set (CPACK_PACKAGE_VERSION_MAJOR ${VERSION_MAJOR} )
202- set (CPACK_PACKAGE_VERSION_MINOR ${VERSION_MINOR} )
203205set (CPACK_PACKAGE_VENDOR "celeron55" )
204206set (CPACK_PACKAGE_CONTACT "Perttu Ahola <celeron55@gmail.com>" )
205207
206208if (WIN32 )
207- set (CPACK_PACKAGE_FILE_NAME "${PROJECT_NAME} -${VERSION_STRING } -win32" )
209+ set (CPACK_PACKAGE_FILE_NAME "${PROJECT_NAME} -${PROJECT_VERSION } -win32" )
208210 set (CPACK_GENERATOR ZIP)
209211else ()
210- set (CPACK_PACKAGE_FILE_NAME "${PROJECT_NAME} -${VERSION_STRING } -linux" )
212+ set (CPACK_PACKAGE_FILE_NAME "${PROJECT_NAME} -${PROJECT_VERSION } -linux" )
211213 set (CPACK_GENERATOR TGZ)
212214 set (CPACK_SOURCE_GENERATOR TGZ)
213215endif ()
0 commit comments