Skip to content

Commit 8b563f4

Browse files
committed
Modernize CMake build script
also includes this fix: luanti-org/luanti@a24899b
1 parent f26070e commit 8b563f4

File tree

3 files changed

+52
-45
lines changed

3 files changed

+52
-45
lines changed

.gitignore

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,14 @@
1-
colors.txt
1+
*~
2+
23
minetestmapper
34
minetestmapper.exe
5+
colors.txt
6+
47
CMakeCache.txt
58
CMakeFiles/
6-
CPack*
9+
CPack*.cmake
10+
_CPack_Packages/
11+
install_manifest.txt
712
Makefile
813
cmake_install.cmake
914
cmake_config.h
10-
*~

CMakeLists.txt

Lines changed: 36 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,9 @@
11
cmake_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)
1312
endif()
1413

1514
set(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

1917
if(WIN32)
2018
set(SHAREDIR ".")
2119
set(BINDIR ".")
2220
set(DOCDIR ".")
2321
else()
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")
2826
endif()
2927

3028
set(CUSTOM_SHAREDIR "" CACHE STRING "Directory to install data files into")
@@ -77,7 +75,17 @@ option(ENABLE_POSTGRESQL "Enable PostgreSQL backend" TRUE)
7775
set(USE_POSTGRESQL FALSE)
7876

7977
if(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

179183
target_link_libraries(
@@ -198,16 +202,14 @@ if(UNIX)
198202
endif()
199203

200204
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Overview mapper for Minetest")
201-
set(CPACK_PACKAGE_VERSION_MAJOR ${VERSION_MAJOR})
202-
set(CPACK_PACKAGE_VERSION_MINOR ${VERSION_MINOR})
203205
set(CPACK_PACKAGE_VENDOR "celeron55")
204206
set(CPACK_PACKAGE_CONTACT "Perttu Ahola <celeron55@gmail.com>")
205207

206208
if(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)
209211
else()
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)
213215
endif()

README.rst

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -18,21 +18,22 @@ Requirements
1818
* hiredis (optional)
1919
* Postgres libraries (optional)
2020

21-
on Debian:
22-
^^^^^^^^^^
21+
on Debian/Ubuntu:
22+
^^^^^^^^^^^^^^^^^
2323

24-
sudo apt install libgd-dev libsqlite3-dev libleveldb-dev libhiredis-dev libpq-dev
24+
``sudo apt install libgd-dev libsqlite3-dev libleveldb-dev libhiredis-dev libpq-dev``
2525

2626
on openSUSE:
2727
^^^^^^^^^^^^
2828

29-
sudo zypper install gd-devel sqlite3-devel leveldb-devel hiredis-devel postgresql-devel postgresql-server-devel
29+
``sudo zypper install gd-devel sqlite3-devel leveldb-devel hiredis-devel postgresql-devel``
3030

31-
Windows
32-
^^^^^^^
33-
Minetestmapper for Windows can be downloaded here: https://github.com/minetest/minetestmapper/releases
31+
for Windows:
32+
^^^^^^^^^^^^
33+
Minetestmapper for Windows can be downloaded `from the Releases section
34+
<https://github.com/minetest/minetestmapper/releases>`_.
3435

35-
After extracting the archive, minetestmapper can be invoked from cmd.exe:
36+
After extracting the archive, it can be invoked from cmd.exe:
3637
::
3738

3839
cd C:\Users\yourname\Desktop\example\path

0 commit comments

Comments
 (0)