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 12) 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}") 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") set(MINETEST_GAME_SOURCE "${CMAKE_CURRENT_SOURCE_DIR}/games/minetest_game") if(EXISTS ${MINETEST_GAME_SOURCE} AND IS_DIRECTORY ${MINETEST_GAME_SOURCE}) install(FILES ${MINETEST_GAME_SOURCE}/game.conf DESTINATION "${SHAREDIR}/games/minetest_game/") install(FILES ${MINETEST_GAME_SOURCE}/README.txt DESTINATION "${SHAREDIR}/games/minetest_game/") install(DIRECTORY ${MINETEST_GAME_SOURCE}/mods DESTINATION "${SHAREDIR}/games/minetest_game") install(DIRECTORY ${MINETEST_GAME_SOURCE}/menu DESTINATION "${SHAREDIR}/games/minetest_game") endif() if(BUILD_CLIENT) #install(DIRECTORY "${C/* Minetest Copyright (C) 2013 celeron55, Perttu Ahola <celeron55@gmail.com> This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef GENERICOBJECT_HEADER #define GENERICOBJECT_HEADER #include <string> #include "irrlichttypes_bloated.h" #include <iostream> enum GenericCMD { GENERIC_CMD_SET_PROPERTIES, GENERIC_CMD_UPDATE_POSITION, GENERIC_CMD_SET_TEXTURE_MOD, GENERIC_CMD_SET_SPRITE, GENERIC_CMD_PUNCHED, GENERIC_CMD_UPDATE_ARMOR_GROUPS, GENERIC_CMD_SET_ANIMATION, GENERIC_CMD_SET_BONE_POSITION, GENERIC_CMD_ATTACH_TO, GENERIC_CMD_SET_PHYSICS_OVERRIDE, GENERIC_CMD_UPDATE_NAMETAG_ATTRIBUTES }; #include "object_properties.h" std::string gob_cmd_set_properties(const ObjectProperties &prop