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") # This can be read from ${PROJECT_NAME} after project() is called project(minetest) set(VERSION_EXTRA "" CACHE STRING "Stuff to append to version string") # Also remember to set PROTOCOL_VERSION in clientserver.h when releasing set(VERSION_MAJOR 0) set(VERSION_MINOR 4) set(VERSION_PATCH 5) if(VERSION_EXTRA) set(VERSION_PATCH ${VERSION_PATCH}-${VERSION_EXTRA}) endif() set(VERSION_STRING "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}") MESSAGE(STATUS "*** Will build version ${VERSION_STRING} ***") # Configuration options 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") endif() set(BUILD_CLIENT 1 CACHE BOOL "Build client") if(WIN32) set(BUILD_SERVER 0 CACHE BOOL "Build server") else() set(BUILD_SERVER 1 CACHE BOOL "Build server") endif() set(WARN_ALL 1 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 ".") set(BINDIR "bin") set(DOCDIR "doc") set(EXAMPLE_CONF_DIR ".") set(LOCALEDIR "locale") elseif(APPLE) # Random placeholders; this isn't usually used and may not work # See https://github.com/toabi/minetest-mac/ set(SHAREDIR "${CMAKE_INSTALL_PREFIX}/share/${PROJECT_NAME}") set(BINDIR "bin") set(DOCDIR "share/doc/${PROJECT_NAME}") set(EXAMPLE_CONF_DIR ${DOCDIR}) set(LOCALEDIR "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(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(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}") 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 insta#!/bin/bash -e if [[ $PLATFORM == "Linux" ]]; then mkdir -p travisbuild cd travisbuild CMAKE_FLAGS='-DCMAKE_BUILD_TYPE=Debug \ -DRUN_IN_PLACE=TRUE \ -DENABLE_GETTEXT=TRUE' # Clang builds with FreeType fail on Travis if [[ $CC == "clang" ]]; then CMAKE_FLAGS+=' -DENABLE_FREETYPE=FALSE' fi cmake $CMAKE_FLAGS .. make -j2 echo "Running unit tests." ../bin/minetest --run-unittests && exit 0 elif [[ $PLATFORM == Win* ]]; then [[ $CC == "clang" ]] && exit 1 # Not supposed to happen # We need to have our build directory outside of the minetest directory because # CMake will otherwise get very very confused with symlinks and complain that # something is not a subdirectory of something even if it actually is. # e.g.: # /home/travis/minetest/minetest/travisbuild/minetest # \/ \/ \/ # /home/travis/minetest/minetest/travisbuild/minetest/travisbuild/minetest # \/ \/ \/ # /home/travis/minetest/minetest/travisbuild/minetest/travisbuild/minetest/travisbuild/minetest # You get the idea. OLDDIR=$(pwd) cd .. export EXISTING_MINETEST_DIR=$OLDDIR export NO_MINETEST_GAME=1 if [[ $PLATFORM == "Win32" ]]; then $OLDDIR/util/buildbot/buildwin32.sh travisbuild && exit 0 elif [[ $PLATFORM