2014-04-07 04:25:32 +02:00
|
|
|
project(minetestmapper CXX)
|
2012-08-22 15:22:01 +02:00
|
|
|
cmake_minimum_required(VERSION 2.6)
|
|
|
|
cmake_policy(SET CMP0003 NEW)
|
|
|
|
|
2014-03-29 08:32:56 +01:00
|
|
|
set(VERSION_MAJOR 1)
|
|
|
|
set(VERSION_MINOR 0)
|
|
|
|
set(VERSION_STRING "${VERSION_MAJOR}.${VERSION_MINOR}")
|
|
|
|
|
2016-08-09 17:31:56 +02:00
|
|
|
# Stuff & Paths
|
2014-08-02 16:30:52 +02:00
|
|
|
|
|
|
|
if(NOT CMAKE_BUILD_TYPE)
|
2016-10-11 03:34:33 +02:00
|
|
|
set(CMAKE_BUILD_TYPE "Release" CACHE STRING "Choose the type of build." FORCE)
|
2014-08-02 16:30:52 +02:00
|
|
|
endif()
|
|
|
|
|
2020-03-26 23:07:27 +01:00
|
|
|
set(CMAKE_CXX_STANDARD 11)
|
2018-03-24 14:05:34 +01:00
|
|
|
set(CMAKE_CXX_FLAGS_RELEASE "-O3 -Wall -DNDEBUG")
|
2014-12-20 12:31:39 +01:00
|
|
|
set(CMAKE_CXX_FLAGS_DEBUG "-O0 -g2 -Wall")
|
|
|
|
|
2016-08-09 17:31:56 +02:00
|
|
|
if(WIN32)
|
|
|
|
set(SHAREDIR ".")
|
|
|
|
set(BINDIR ".")
|
|
|
|
set(DOCDIR ".")
|
|
|
|
else()
|
2017-01-17 17:49:15 +01:00
|
|
|
set(SHAREDIR "${CMAKE_INSTALL_PREFIX}/share/minetest") # reuse Minetest share dir
|
2016-08-09 17:31:56 +02:00
|
|
|
set(BINDIR "${CMAKE_INSTALL_PREFIX}/bin")
|
|
|
|
set(DOCDIR "${CMAKE_INSTALL_PREFIX}/share/doc/${PROJECT_NAME}")
|
2017-01-17 17:49:15 +01:00
|
|
|
set(MANDIR "${CMAKE_INSTALL_PREFIX}/share/man")
|
2016-08-09 17:31:56 +02:00
|
|
|
endif()
|
|
|
|
|
|
|
|
set(CUSTOM_SHAREDIR "" CACHE STRING "Directory to install data files into")
|
|
|
|
if(NOT CUSTOM_SHAREDIR STREQUAL "")
|
|
|
|
set(SHAREDIR "${CUSTOM_SHAREDIR}")
|
|
|
|
message(STATUS "Using SHAREDIR=${SHAREDIR}")
|
|
|
|
endif()
|
|
|
|
|
|
|
|
set(CUSTOM_BINDIR "" CACHE STRING "Directory to install binaries into")
|
|
|
|
if(NOT CUSTOM_BINDIR STREQUAL "")
|
|
|
|
set(BINDIR "${CUSTOM_BINDIR}")
|
|
|
|
message(STATUS "Using BINDIR=${BINDIR}")
|
|
|
|
endif()
|
|
|
|
|
|
|
|
set(CUSTOM_DOCDIR "" CACHE STRING "Directory to install documentation into")
|
|
|
|
if(NOT CUSTOM_DOCDIR STREQUAL "")
|
|
|
|
set(DOCDIR "${CUSTOM_DOCDIR}")
|
|
|
|
message(STATUS "Using DOCDIR=${DOCDIR}")
|
|
|
|
endif()
|
|
|
|
|
2020-03-27 11:12:24 +01:00
|
|
|
#set(CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake)
|
|
|
|
find_package(PkgConfig)
|
|
|
|
include(FindPackageHandleStandardArgs)
|
2016-08-09 17:31:56 +02:00
|
|
|
|
|
|
|
# Libraries: gd
|
|
|
|
|
2014-03-09 12:18:48 +01:00
|
|
|
find_library(LIBGD_LIBRARY gd)
|
|
|
|
find_path(LIBGD_INCLUDE_DIR gd.h)
|
|
|
|
message (STATUS "libgd library: ${LIBGD_LIBRARY}")
|
|
|
|
message (STATUS "libgd headers: ${LIBGD_INCLUDE_DIR}")
|
|
|
|
if(NOT LIBGD_LIBRARY OR NOT LIBGD_INCLUDE_DIR)
|
|
|
|
message(FATAL_ERROR "libgd not found!")
|
|
|
|
endif(NOT LIBGD_LIBRARY OR NOT LIBGD_INCLUDE_DIR)
|
2012-08-23 12:55:31 +02:00
|
|
|
|
2016-08-09 17:31:56 +02:00
|
|
|
# Libraries: zlib
|
|
|
|
|
2014-03-09 12:27:19 +01:00
|
|
|
find_library(ZLIB_LIBRARY z)
|
|
|
|
find_path(ZLIB_INCLUDE_DIR zlib.h)
|
|
|
|
message (STATUS "zlib library: ${ZLIB_LIBRARY}")
|
|
|
|
message (STATUS "zlib headers: ${ZLIB_INCLUDE_DIR}")
|
|
|
|
if(NOT ZLIB_LIBRARY OR NOT ZLIB_INCLUDE_DIR)
|
|
|
|
message(FATAL_ERROR "zlib not found!")
|
|
|
|
endif(NOT ZLIB_LIBRARY OR NOT ZLIB_INCLUDE_DIR)
|
|
|
|
|
2016-08-09 17:31:56 +02:00
|
|
|
# Libraries: sqlite3
|
|
|
|
|
2014-03-09 12:32:13 +01:00
|
|
|
find_library(SQLITE3_LIBRARY sqlite3)
|
|
|
|
find_path(SQLITE3_INCLUDE_DIR zlib.h)
|
|
|
|
message (STATUS "sqlite3 library: ${SQLITE3_LIBRARY}")
|
|
|
|
message (STATUS "sqlite3 headers: ${SQLITE3_INCLUDE_DIR}")
|
|
|
|
if(NOT SQLITE3_LIBRARY OR NOT SQLITE3_INCLUDE_DIR)
|
|
|
|
message(FATAL_ERROR "sqlite3 not found!")
|
|
|
|
endif(NOT SQLITE3_LIBRARY OR NOT SQLITE3_INCLUDE_DIR)
|
2012-09-01 15:51:02 +02:00
|
|
|
|
2017-01-08 23:24:09 +01:00
|
|
|
# Libraries: postgresql
|
|
|
|
|
|
|
|
option(ENABLE_POSTGRESQL "Enable PostgreSQL backend" TRUE)
|
2020-03-27 11:12:24 +01:00
|
|
|
set(USE_POSTGRESQL FALSE)
|
2017-01-08 23:24:09 +01:00
|
|
|
|
|
|
|
if(ENABLE_POSTGRESQL)
|
|
|
|
find_package("PostgreSQL")
|
|
|
|
|
2020-03-27 11:12:24 +01:00
|
|
|
if(PostgreSQL_FOUND)
|
|
|
|
set(USE_POSTGRESQL TRUE)
|
2017-01-08 23:24:09 +01:00
|
|
|
message(STATUS "PostgreSQL backend enabled")
|
|
|
|
# This variable is case sensitive, don't try to change it to POSTGRESQL_INCLUDE_DIR
|
2020-03-27 11:12:24 +01:00
|
|
|
message(STATUS "PostgreSQL includes: ${PostgreSQL_INCLUDE_DIRS}")
|
|
|
|
include_directories(${PostgreSQL_INCLUDE_DIRS})
|
2017-01-08 23:24:09 +01:00
|
|
|
else()
|
2020-03-27 11:12:24 +01:00
|
|
|
message(STATUS "PostgreSQL not found!")
|
2020-03-27 16:27:55 +01:00
|
|
|
set(PostgreSQL_LIBRARIES "")
|
2017-01-08 23:24:09 +01:00
|
|
|
endif()
|
|
|
|
endif(ENABLE_POSTGRESQL)
|
|
|
|
|
2016-08-09 17:31:56 +02:00
|
|
|
# Libraries: leveldb
|
|
|
|
|
2020-03-27 11:12:24 +01:00
|
|
|
OPTION(ENABLE_LEVELDB "Enable LevelDB backend" TRUE)
|
|
|
|
set(USE_LEVELDB FALSE)
|
2014-03-05 21:41:27 +01:00
|
|
|
|
|
|
|
if(ENABLE_LEVELDB)
|
|
|
|
find_library(LEVELDB_LIBRARY leveldb)
|
2020-03-27 11:12:24 +01:00
|
|
|
find_path(LEVELDB_INCLUDE_DIR leveldb/db.h)
|
2014-03-05 21:41:27 +01:00
|
|
|
message (STATUS "LevelDB library: ${LEVELDB_LIBRARY}")
|
|
|
|
message (STATUS "LevelDB headers: ${LEVELDB_INCLUDE_DIR}")
|
|
|
|
if(LEVELDB_LIBRARY AND LEVELDB_INCLUDE_DIR)
|
2020-03-27 11:12:24 +01:00
|
|
|
set(USE_LEVELDB TRUE)
|
2014-03-05 21:41:27 +01:00
|
|
|
message(STATUS "LevelDB backend enabled")
|
|
|
|
include_directories(${LEVELDB_INCLUDE_DIR})
|
2020-03-27 16:27:55 +01:00
|
|
|
else()
|
2014-03-05 21:41:27 +01:00
|
|
|
message(STATUS "LevelDB not found!")
|
2020-03-27 16:27:55 +01:00
|
|
|
set(LEVELDB_LIBRARY "")
|
|
|
|
endif()
|
2014-03-05 21:41:27 +01:00
|
|
|
endif(ENABLE_LEVELDB)
|
|
|
|
|
2016-08-09 17:31:56 +02:00
|
|
|
# Libraries: redis
|
|
|
|
|
2020-03-27 11:12:24 +01:00
|
|
|
OPTION(ENABLE_REDIS "Enable redis backend" TRUE)
|
|
|
|
set(USE_REDIS FALSE)
|
2014-04-26 15:01:35 +02:00
|
|
|
|
|
|
|
if(ENABLE_REDIS)
|
|
|
|
find_library(REDIS_LIBRARY hiredis)
|
2020-03-27 11:12:24 +01:00
|
|
|
find_path(REDIS_INCLUDE_DIR hiredis/hiredis.h)
|
2014-04-26 15:01:35 +02:00
|
|
|
message (STATUS "redis library: ${REDIS_LIBRARY}")
|
|
|
|
message (STATUS "redis headers: ${REDIS_INCLUDE_DIR}")
|
|
|
|
if(REDIS_LIBRARY AND REDIS_INCLUDE_DIR)
|
2020-03-27 11:12:24 +01:00
|
|
|
set(USE_REDIS TRUE)
|
2014-04-26 15:01:35 +02:00
|
|
|
message(STATUS "redis backend enabled")
|
|
|
|
include_directories(${REDIS_INCLUDE_DIR})
|
2020-03-27 16:27:55 +01:00
|
|
|
else()
|
2014-04-26 15:01:35 +02:00
|
|
|
message(STATUS "redis not found!")
|
2020-03-27 16:27:55 +01:00
|
|
|
set(REDIS_LIBRARY "")
|
|
|
|
endif()
|
2014-04-26 15:01:35 +02:00
|
|
|
endif(ENABLE_REDIS)
|
|
|
|
|
2016-08-09 17:31:56 +02:00
|
|
|
# Compiling & Linking
|
|
|
|
|
2012-08-22 15:22:01 +02:00
|
|
|
include_directories(
|
|
|
|
"${PROJECT_BINARY_DIR}"
|
2018-03-25 14:12:39 +02:00
|
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/include"
|
2012-08-22 15:22:01 +02:00
|
|
|
"${CMAKE_CURRENT_BINARY_DIR}"
|
2014-03-09 12:32:13 +01:00
|
|
|
${SQLITE3_INCLUDE_DIR}
|
2014-03-09 12:18:48 +01:00
|
|
|
${LIBGD_INCLUDE_DIR}
|
2014-03-09 12:27:19 +01:00
|
|
|
${ZLIB_INCLUDE_DIR}
|
2012-08-22 15:22:01 +02:00
|
|
|
)
|
|
|
|
|
2014-03-05 21:41:27 +01:00
|
|
|
configure_file(
|
2018-03-25 14:12:39 +02:00
|
|
|
"${PROJECT_SOURCE_DIR}/include/cmake_config.h.in"
|
2014-03-05 21:41:27 +01:00
|
|
|
"${PROJECT_BINARY_DIR}/cmake_config.h"
|
2012-08-22 15:22:01 +02:00
|
|
|
)
|
2014-03-05 21:41:27 +01:00
|
|
|
add_definitions ( -DUSE_CMAKE_CONFIG_H )
|
2012-08-22 15:22:01 +02:00
|
|
|
|
|
|
|
set(mapper_SRCS
|
2018-03-25 15:19:48 +02:00
|
|
|
BlockDecoder.cpp
|
2012-08-25 13:19:58 +02:00
|
|
|
PixelAttributes.cpp
|
2012-09-01 16:40:18 +02:00
|
|
|
PlayerAttributes.cpp
|
2012-08-23 12:46:22 +02:00
|
|
|
TileGenerator.cpp
|
2012-09-18 10:43:34 +02:00
|
|
|
ZlibDecompressor.cpp
|
2016-11-18 23:34:31 +01:00
|
|
|
Image.cpp
|
2012-09-01 16:40:18 +02:00
|
|
|
mapper.cpp
|
2014-07-08 14:54:27 +02:00
|
|
|
util.cpp
|
2014-03-05 21:41:27 +01:00
|
|
|
db-sqlite3.cpp
|
2012-08-22 15:22:01 +02:00
|
|
|
)
|
|
|
|
|
2017-01-08 23:24:09 +01:00
|
|
|
if(USE_POSTGRESQL)
|
|
|
|
set(mapper_SRCS ${mapper_SRCS} db-postgresql.cpp)
|
|
|
|
endif(USE_POSTGRESQL)
|
|
|
|
|
2014-03-05 21:41:27 +01:00
|
|
|
if(USE_LEVELDB)
|
|
|
|
set(mapper_SRCS ${mapper_SRCS} db-leveldb.cpp)
|
|
|
|
endif(USE_LEVELDB)
|
|
|
|
|
2014-04-26 15:01:35 +02:00
|
|
|
if(USE_REDIS)
|
|
|
|
set(mapper_SRCS ${mapper_SRCS} db-redis.cpp)
|
|
|
|
endif(USE_REDIS)
|
|
|
|
|
2013-07-29 18:16:08 +02:00
|
|
|
add_executable(minetestmapper
|
2012-08-22 15:22:01 +02:00
|
|
|
${mapper_SRCS}
|
|
|
|
)
|
2012-08-22 15:31:26 +02:00
|
|
|
|
|
|
|
target_link_libraries(
|
2013-07-29 18:16:08 +02:00
|
|
|
minetestmapper
|
2014-03-09 12:32:13 +01:00
|
|
|
${SQLITE3_LIBRARY}
|
2020-03-27 11:12:24 +01:00
|
|
|
${PostgreSQL_LIBRARIES}
|
2014-03-05 21:41:27 +01:00
|
|
|
${LEVELDB_LIBRARY}
|
2014-04-26 15:01:35 +02:00
|
|
|
${REDIS_LIBRARY}
|
2014-03-09 12:18:48 +01:00
|
|
|
${LIBGD_LIBRARY}
|
2014-03-09 12:27:19 +01:00
|
|
|
${ZLIB_LIBRARY}
|
2012-08-22 15:31:26 +02:00
|
|
|
)
|
2014-03-29 08:32:56 +01:00
|
|
|
|
2016-08-09 17:31:56 +02:00
|
|
|
# Installing & Packaging
|
2014-03-29 08:32:56 +01:00
|
|
|
|
2016-08-09 17:31:56 +02:00
|
|
|
install(TARGETS "${PROJECT_NAME}" DESTINATION "${BINDIR}")
|
|
|
|
install(FILES "AUTHORS" DESTINATION "${DOCDIR}")
|
|
|
|
install(FILES "COPYING" DESTINATION "${DOCDIR}")
|
|
|
|
install(FILES "README.rst" DESTINATION "${DOCDIR}")
|
|
|
|
install(FILES "colors.txt" DESTINATION "${SHAREDIR}")
|
2017-01-17 17:49:15 +01:00
|
|
|
if(UNIX)
|
|
|
|
install(FILES "minetestmapper.6" DESTINATION "${MANDIR}/man6")
|
|
|
|
endif()
|
2014-03-29 08:32:56 +01:00
|
|
|
|
|
|
|
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Overview mapper for Minetest")
|
|
|
|
set(CPACK_PACKAGE_VERSION_MAJOR ${VERSION_MAJOR})
|
|
|
|
set(CPACK_PACKAGE_VERSION_MINOR ${VERSION_MINOR})
|
|
|
|
set(CPACK_PACKAGE_VENDOR "celeron55")
|
|
|
|
set(CPACK_PACKAGE_CONTACT "Perttu Ahola <celeron55@gmail.com>")
|
|
|
|
|
|
|
|
if(WIN32)
|
|
|
|
set(CPACK_PACKAGE_FILE_NAME "${PROJECT_NAME}-${VERSION_STRING}-win32")
|
|
|
|
set(CPACK_GENERATOR ZIP)
|
|
|
|
else()
|
|
|
|
set(CPACK_PACKAGE_FILE_NAME "${PROJECT_NAME}-${VERSION_STRING}-linux")
|
|
|
|
set(CPACK_GENERATOR TGZ)
|
|
|
|
set(CPACK_SOURCE_GENERATOR TGZ)
|
|
|
|
endif()
|
|
|
|
|
|
|
|
include(CPack)
|