mirror of
https://github.com/moparisthebest/minetest
synced 2024-12-23 08:08:47 -05:00
3132bcb373
Before, customisation of DOCDIR did not lead to changes of the EXAMPLE_CONF_DIR default value. This was inconsistent with expected behaviour if you didn't know of the existence of the EXAMPLE_CONF_DIR variable. The confusion is very strong, as (for not in place builds) both DOCDIR and EXAMPLE_CONF_DIR share the same default value, it is unexpected that setting CUSTOM_DOCDIR changes the location of all documentation files but one. The best meaning of EXAMPLE_CONF_DIR is to further allow customization of the mt.conf.example storage place, but otherwise keep defaulting to whatever DOCDIR is set to, at least for not in place builds. This patch implements that behaviour. Fixes #3863.
234 lines
7.4 KiB
CMake
234 lines
7.4 KiB
CMake
cmake_minimum_required(VERSION 2.6)
|
|
|
|
if(${CMAKE_VERSION} STREQUAL "2.8.2")
|
|
# Bug http://vtk.org/Bug/view.php?id=11020
|
|
message(WARNING "CMake/CPack version 2.8.2 will not create working .deb packages!")
|
|
endif()
|
|
|
|
# This can be read from ${PROJECT_NAME} after project() is called
|
|
project(minetest)
|
|
set(PROJECT_NAME_CAPITALIZED "Minetest")
|
|
|
|
|
|
# Also remember to set PROTOCOL_VERSION in network/networkprotocol.h when releasing
|
|
set(VERSION_MAJOR 0)
|
|
set(VERSION_MINOR 4)
|
|
set(VERSION_PATCH 13)
|
|
set(VERSION_EXTRA "" CACHE STRING "Stuff to append to version string")
|
|
|
|
# Change to false for releases
|
|
set(DEVELOPMENT_BUILD TRUE)
|
|
|
|
set(VERSION_STRING "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}")
|
|
if(VERSION_EXTRA)
|
|
set(VERSION_STRING ${VERSION_STRING}-${VERSION_EXTRA})
|
|
elseif(DEVELOPMENT_BUILD)
|
|
set(VERSION_STRING "${VERSION_STRING}-dev")
|
|
endif()
|
|
|
|
message(STATUS "*** Will build version ${VERSION_STRING} ***")
|
|
|
|
|
|
# Configuration options
|
|
set(DEFAULT_RUN_IN_PLACE FALSE)
|
|
if(WIN32)
|
|
set(DEFAULT_RUN_IN_PLACE TRUE)
|
|
endif()
|
|
set(RUN_IN_PLACE ${DEFAULT_RUN_IN_PLACE} CACHE BOOL
|
|
"Run directly in source directory structure")
|
|
|
|
|
|
set(BUILD_CLIENT TRUE CACHE BOOL "Build client")
|
|
set(BUILD_SERVER FALSE CACHE BOOL "Build server")
|
|
|
|
|
|
set(WARN_ALL TRUE CACHE BOOL "Enable -Wall for Release build")
|
|
|
|
if(NOT CMAKE_BUILD_TYPE)
|
|
# Default to release
|
|
set(CMAKE_BUILD_TYPE Release CACHE STRING "Build type: Debug or Release" FORCE)
|
|
endif()
|
|
|
|
|
|
# Included stuff
|
|
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/Modules/")
|
|
|
|
|
|
# This is done here so that relative search paths are more reasonable
|
|
find_package(Irrlicht)
|
|
|
|
|
|
# Installation
|
|
|
|
if(WIN32)
|
|
set(SHAREDIR ".")
|
|
set(BINDIR "bin")
|
|
set(DOCDIR "doc")
|
|
set(EXAMPLE_CONF_DIR ".")
|
|
set(LOCALEDIR "locale")
|
|
elseif(APPLE)
|
|
set(BUNDLE_NAME ${PROJECT_NAME}.app)
|
|
set(BUNDLE_PATH "${BUNDLE_NAME}")
|
|
set(BINDIR ${BUNDLE_NAME}/Contents/MacOS)
|
|
set(SHAREDIR ${BUNDLE_NAME}/Contents/Resources)
|
|
set(DOCDIR "${SHAREDIR}/${PROJECT_NAME}")
|
|
set(EXAMPLE_CONF_DIR ${DOCDIR})
|
|
set(LOCALEDIR "${SHAREDIR}/locale")
|
|
elseif(UNIX) # Linux, BSD etc
|
|
if(RUN_IN_PLACE)
|
|
set(SHAREDIR ".")
|
|
set(BINDIR "bin")
|
|
set(DOCDIR "doc")
|
|
set(EXAMPLE_CONF_DIR ".")
|
|
set(MANDIR "unix/man")
|
|
set(XDG_APPS_DIR "unix/applications")
|
|
set(APPDATADIR "unix/appdata")
|
|
set(ICONDIR "unix/icons")
|
|
set(LOCALEDIR "locale")
|
|
else()
|
|
set(SHAREDIR "${CMAKE_INSTALL_PREFIX}/share/${PROJECT_NAME}")
|
|
set(BINDIR "${CMAKE_INSTALL_PREFIX}/bin")
|
|
set(DOCDIR "${CMAKE_INSTALL_PREFIX}/share/doc/${PROJECT_NAME}")
|
|
set(MANDIR "${CMAKE_INSTALL_PREFIX}/share/man")
|
|
set(EXAMPLE_CONF_DIR ${DOCDIR})
|
|
set(XDG_APPS_DIR "${CMAKE_INSTALL_PREFIX}/share/applications")
|
|
set(APPDATADIR "${CMAKE_INSTALL_PREFIX}/share/appdata")
|
|
set(ICONDIR "${CMAKE_INSTALL_PREFIX}/share/icons")
|
|
set(LOCALEDIR "${CMAKE_INSTALL_PREFIX}/share/${PROJECT_NAME}/locale")
|
|
endif()
|
|
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}")
|
|
if(NOT RUN_IN_PLACE)
|
|
set(EXAMPLE_CONF_DIR ${DOCDIR})
|
|
endif()
|
|
message(STATUS "Using DOCDIR=${DOCDIR}")
|
|
endif()
|
|
|
|
set(CUSTOM_MANDIR "" CACHE STRING "Directory to install manpages into")
|
|
if(NOT CUSTOM_MANDIR STREQUAL "")
|
|
set(MANDIR "${CUSTOM_MANDIR}")
|
|
message(STATUS "Using MANDIR=${MANDIR}")
|
|
endif()
|
|
|
|
set(CUSTOM_EXAMPLE_CONF_DIR "" CACHE STRING "Directory to install example config file into")
|
|
if(NOT CUSTOM_EXAMPLE_CONF_DIR STREQUAL "")
|
|
set(EXAMPLE_CONF_DIR "${CUSTOM_EXAMPLE_CONF_DIR}")
|
|
message(STATUS "Using EXAMPLE_CONF_DIR=${EXAMPLE_CONF_DIR}")
|
|
endif()
|
|
|
|
set(CUSTOM_XDG_APPS_DIR "" CACHE STRING "Directory to install .desktop files into")
|
|
if(NOT CUSTOM_XDG_APPS_DIR STREQUAL "")
|
|
set(XDG_APPS_DIR "${CUSTOM_XDG_APPS_DIR}")
|
|
message(STATUS "Using XDG_APPS_DIR=${XDG_APPS_DIR}")
|
|
endif()
|
|
|
|
set(CUSTOM_ICONDIR "" CACHE STRING "Directory to install icons into")
|
|
if(NOT CUSTOM_ICONDIR STREQUAL "")
|
|
set(ICONDIR "${CUSTOM_ICONDIR}")
|
|
message(STATUS "Using ICONDIR=${ICONDIR}")
|
|
endif()
|
|
|
|
set(CUSTOM_LOCALEDIR "" CACHE STRING "Directory to install l10n files into")
|
|
if(NOT CUSTOM_LOCALEDIR STREQUAL "")
|
|
set(LOCALEDIR "${CUSTOM_LOCALEDIR}")
|
|
message(STATUS "Using LOCALEDIR=${LOCALEDIR}")
|
|
endif()
|
|
|
|
|
|
install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/builtin" DESTINATION "${SHAREDIR}")
|
|
install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/client" DESTINATION "${SHAREDIR}")
|
|
install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/games" DESTINATION "${SHAREDIR}" PATTERN ".git*" EXCLUDE)
|
|
|
|
if(BUILD_CLIENT)
|
|
install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/textures/base/pack" DESTINATION "${SHAREDIR}/textures/base")
|
|
endif()
|
|
if(RUN_IN_PLACE)
|
|
install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/mods/mods_here.txt" DESTINATION "${SHAREDIR}/mods")
|
|
install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/textures/texture_packs_here.txt" DESTINATION "${SHAREDIR}/textures")
|
|
endif()
|
|
|
|
install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/fonts" DESTINATION "${SHAREDIR}")
|
|
|
|
install(FILES "README.txt" DESTINATION "${DOCDIR}")
|
|
install(FILES "doc/lua_api.txt" DESTINATION "${DOCDIR}")
|
|
install(FILES "doc/menu_lua_api.txt" DESTINATION "${DOCDIR}")
|
|
install(FILES "doc/world_format.txt" DESTINATION "${DOCDIR}")
|
|
install(FILES "minetest.conf.example" DESTINATION "${EXAMPLE_CONF_DIR}")
|
|
|
|
if(UNIX AND NOT APPLE)
|
|
install(FILES "doc/minetest.6" "doc/minetestserver.6" DESTINATION "${MANDIR}/man6")
|
|
install(FILES "misc/minetest.desktop" DESTINATION "${XDG_APPS_DIR}")
|
|
install(FILES "misc/minetest.appdata.xml" DESTINATION "${APPDATADIR}")
|
|
install(FILES "misc/minetest.svg" DESTINATION "${ICONDIR}/hicolor/scalable/apps")
|
|
endif()
|
|
|
|
if(APPLE)
|
|
install(FILES "misc/minetest-icon.icns" DESTINATION "${SHAREDIR}")
|
|
install(FILES "misc/Info.plist" DESTINATION "${BUNDLE_PATH}/Contents")
|
|
endif()
|
|
|
|
|
|
# Subdirectories
|
|
# Be sure to add all relevant definitions above this
|
|
|
|
add_subdirectory(src)
|
|
|
|
|
|
# CPack
|
|
|
|
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "An InfiniMiner/Minecraft inspired game")
|
|
set(CPACK_PACKAGE_VERSION_MAJOR ${VERSION_MAJOR})
|
|
set(CPACK_PACKAGE_VERSION_MINOR ${VERSION_MINOR})
|
|
set(CPACK_PACKAGE_VERSION_PATCH ${VERSION_PATCH})
|
|
set(CPACK_PACKAGE_VENDOR "celeron55")
|
|
set(CPACK_PACKAGE_CONTACT "Perttu Ahola <celeron55@gmail.com>")
|
|
|
|
if(WIN32)
|
|
if(CMAKE_SIZEOF_VOID_P EQUAL 8)
|
|
set(CPACK_PACKAGE_FILE_NAME "${PROJECT_NAME}-${VERSION_STRING}-win64")
|
|
else()
|
|
set(CPACK_PACKAGE_FILE_NAME "${PROJECT_NAME}-${VERSION_STRING}-win32")
|
|
endif()
|
|
|
|
set(CPACK_GENERATOR ZIP)
|
|
elseif(APPLE)
|
|
set(CPACK_INCLUDE_TOPLEVEL_DIRECTORY 0)
|
|
set(CPACK_PACKAGE_FILE_NAME "${PROJECT_NAME}-${VERSION_STRING}-osx")
|
|
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)
|
|
|
|
|
|
# Add a target to generate API documentation with Doxygen
|
|
find_package(Doxygen)
|
|
if(DOXYGEN_FOUND)
|
|
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/doc/Doxyfile.in
|
|
${CMAKE_CURRENT_BINARY_DIR}/doc/Doxyfile @ONLY)
|
|
add_custom_target(doc
|
|
${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/doc/Doxyfile
|
|
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/doc
|
|
COMMENT "Generating API documentation with Doxygen" VERBATIM
|
|
)
|
|
endif()
|
|
|