New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Clean up and tweak build system #2402
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,69 +1,62 @@ | ||
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(${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) | ||
project(Minetest) | ||
string(TOLOWER ${PROJECT_NAME} PROJECT_NAME_LOWER) | ||
|
||
set(VERSION_EXTRA "" CACHE STRING "Stuff to append to version string") | ||
|
||
# Also remember to set PROTOCOL_VERSION in clientserver.h when releasing | ||
# Also remember to set PROTOCOL_VERSION in network/networkprotocol.h when releasing | ||
set(VERSION_MAJOR 0) | ||
set(VERSION_MINOR 4) | ||
set(VERSION_PATCH 12) | ||
set(VERSION_PATCH_ORIG ${VERSION_PATCH}) | ||
set(VERSION_EXTRA "" CACHE STRING "Stuff to append to version string") | ||
|
||
set(VERSION_STRING "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}") | ||
if(VERSION_EXTRA) | ||
set(VERSION_PATCH ${VERSION_PATCH}-${VERSION_EXTRA}) | ||
set(VERSION_STRING ${VERSION_STRING}-${VERSION_EXTRA}) | ||
else() | ||
# Comment the following line during release | ||
set(VERSION_PATCH ${VERSION_PATCH}-dev) | ||
set(VERSION_STRING "${VERSION_STRING}-dev") | ||
endif() | ||
set(VERSION_STRING "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}") | ||
|
||
MESSAGE(STATUS "*** Will build version ${VERSION_STRING} ***") | ||
message(STATUS "*** Will build version ${VERSION_STRING} ***") | ||
|
||
# Configuration options | ||
|
||
# Configuration options | ||
set(DEFAULT_RUN_IN_PLACE FALSE) | ||
if(WIN32) | ||
set(RUN_IN_PLACE 1 CACHE BOOL "Run directly in source directory structure") | ||
else() | ||
set(RUN_IN_PLACE 0 CACHE BOOL "Run directly in source directory structure") | ||
set(DEFAULT_RUN_IN_PLACE TRUE) | ||
endif() | ||
set(RUN_IN_PLACE ${DEFAULT_RUN_IN_PLACE} CACHE BOOL | ||
"Run directly in source directory structure") | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Why? The amount of code both ways take it exactly equal, There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This way the rest of the command (such as the documentation string) isn't duplicated. |
||
|
||
# RUN_IN_PLACE is exported as a #define value, ensure it's 1/0 instead of ON/OFF | ||
if(RUN_IN_PLACE) | ||
set(RUN_IN_PLACE 1) | ||
else() | ||
set(RUN_IN_PLACE 0) | ||
endif() | ||
|
||
set(BUILD_CLIENT 1 CACHE BOOL "Build client") | ||
if(WIN32 OR APPLE) | ||
set(BUILD_SERVER 0 CACHE BOOL "Build server") | ||
else() | ||
set(BUILD_SERVER 1 CACHE BOOL "Build server") | ||
endif() | ||
set(BUILD_CLIENT TRUE CACHE BOOL "Build client") | ||
set(BUILD_SERVER FALSE CACHE BOOL "Build server") | ||
|
||
set(WARN_ALL 1 CACHE BOOL "Enable -Wall for Release build") | ||
|
||
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/") | ||
include(${CMAKE_SOURCE_DIR}/cmake/Modules/misc.cmake) | ||
|
||
|
||
# This is done here so that relative search paths are more reasnable | ||
find_package(Irrlicht) | ||
|
||
# | ||
|
||
# Installation | ||
# | ||
|
||
if(WIN32) | ||
set(SHAREDIR ".") | ||
|
@@ -72,11 +65,11 @@ if(WIN32) | |
set(EXAMPLE_CONF_DIR ".") | ||
set(LOCALEDIR "locale") | ||
elseif(APPLE) | ||
set(BUNDLE_NAME ${PROJECT_NAME}.app) | ||
set(BUNDLE_NAME ${PROJECT_NAME_LOWER}.app) | ||
set(BUNDLE_PATH "${BUNDLE_NAME}") | ||
set(BINDIR ${BUNDLE_NAME}/Contents/MacOS) | ||
set(SHAREDIR ${BUNDLE_NAME}/Contents/Resources) | ||
set(DOCDIR "${SHAREDIR}/${PROJECT_NAME}") | ||
set(DOCDIR "${SHAREDIR}/${PROJECT_NAME_LOWER}") | ||
set(EXAMPLE_CONF_DIR ${DOCDIR}) | ||
set(LOCALEDIR "${SHAREDIR}/locale") | ||
elseif(UNIX) # Linux, BSD etc | ||
|
@@ -91,15 +84,15 @@ elseif(UNIX) # Linux, BSD etc | |
set(ICONDIR "unix/icons") | ||
set(LOCALEDIR "locale") | ||
else() | ||
set(SHAREDIR "${CMAKE_INSTALL_PREFIX}/share/${PROJECT_NAME}") | ||
set(SHAREDIR "${CMAKE_INSTALL_PREFIX}/share/${PROJECT_NAME_LOWER}") | ||
set(BINDIR "${CMAKE_INSTALL_PREFIX}/bin") | ||
set(DOCDIR "${CMAKE_INSTALL_PREFIX}/share/doc/${PROJECT_NAME}") | ||
set(DOCDIR "${CMAKE_INSTALL_PREFIX}/share/doc/${PROJECT_NAME_LOWER}") | ||
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") | ||
set(LOCALEDIR "${CMAKE_INSTALL_PREFIX}/share/${PROJECT_NAME_LOWER}/locale") | ||
endif() | ||
endif() | ||
|
||
|
@@ -108,42 +101,50 @@ 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() | ||
|
||
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/minimal" DESTINATION "${SHAREDIR}/games") | ||
|
@@ -183,13 +184,13 @@ if(APPLE) | |
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") | ||
|
@@ -202,9 +203,9 @@ 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(CMAKE_SIZEOF_VOID_P EQUAL 8) | ||
else() | ||
set(CPACK_PACKAGE_FILE_NAME "${PROJECT_NAME}-${VERSION_STRING}-win32") | ||
endif(CMAKE_SIZEOF_VOID_P EQUAL 8) | ||
endif() | ||
|
||
set(CPACK_GENERATOR ZIP) | ||
elseif(APPLE) | ||
|
@@ -219,14 +220,16 @@ 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) | ||
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(DOXYGEN_FOUND) | ||
endif() | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Doing this actually decreases readability and we don't have CMake style guidelines either. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I find these confusing when they're in an There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This is not an |
||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It would be 100% simpler to just leave this lower-case and omit all the lowercase(project_name) code changes.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
No, I'd have to add a
capitalize
function instead.There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
You probably need to change fewer lines when adding a capitalize function.