# Created by Tomas Chvatal (Scarabeus IV) ############################################################################### # tuxanci/CMakeLists.txt ############################################################################### # ALL CONDITIONAL OPTIONS ############################################################################### # -DCMAKE_C_FLAGS=-Wall # modification for CFLAGS # -DCMAKE_INSTALL_PREFIX=/bla/ # install prefix # -DCMAKE_DATA_PATH=/other/bla/ # install path for data # -DCMAKE_CONF_PATH=/etc # install path for conf # -DLIB_INSTALL_DIR=/other/bla # install path for lib # -DCMAKE_DOC_PATH=/other/bla/doc/tuxanci-version/ # install path for doc # -DCMAKE_LOCALE_PATH=/other/bla # install path for locale ############################################################################### # DEFAULT OPTIONS ############################################################################### OPTION (BUILD_SERVER "Build the server instead of client" OFF) OPTION (ENABLE_IPV6 "Build with the ipv6 support" ON) OPTION (WITH_AUDIO "Build with audio enabled" ON) OPTION (ENABLE_DEBUG "Build debug features" OFF) OPTION (ENABLE_COMPRESSION "Compress documentation files" OFF) OPTION (DEVELOPER "Modify stuff to please tuxanci devs" OFF) OPTION (WITH_NLS "Build the translations" ON) OPTION (Apple "Build some apple quirks. USE ONLY ON MAC!" OFF) OPTION (WITH_OPENGL "Use opengl as renderer instead of SW" ON) OPTION (CROSSCOMPILE "Crosscompile tuxanci defined by ENV{TARGET}" OFF) ############################################################################### # IMPORTANT DEFINITIONS [PREFIX,...] ############################################################################### SET ( TUXANCI_VERSION "0.21.99" CACHE STRING "Version" ) # update with releases SET ( WORKDIR ${CMAKE_SOURCE_DIR}/src ) # data because some distributions want different data placement SET ( CMAKE_CONF_PATH "/etc" CACHE PATH "Config path prefix" ) SET ( CMAKE_INSTALL_PREFIX "/usr/local/" CACHE PATH "Install path prefix" ) SET ( CMAKE_LOCALE_PATH "${CMAKE_INSTALL_PREFIX}/share/locale" CACHE PATH "Locale path prefix" ) SET ( CMAKE_DATA_PATH "${CMAKE_INSTALL_PREFIX}/share/" CACHE PATH "Data path prefix" ) SET ( CMAKE_LIB_PATH "${CMAKE_INSTALL_PREFIX}/lib/" CACHE PATH "Library path prefix" ) SET ( LIB_INSTALL_DIR "${CMAKE_LIB_PATH}" ) ############################################################################### # BASIC PROJECT VALUES ############################################################################### PROJECT ( tuxanci C ) IF ( BUILD_SERVER ) SET ( APPNAME "tuxanci-server") ELSE ( BUILD_SERVER ) SET ( APPNAME "tuxanci" ) ENDIF ( BUILD_SERVER ) MESSAGE ( "<******************************>" ) MESSAGE ( "Configure for ${APPNAME} Started" ) MESSAGE ( "<******************************>" ) CMAKE_MINIMUM_REQUIRED ( VERSION 2.6.0 ) CMAKE_MINIMUM_REQUIRED ( VERSION 2.6.0 FATAL_ERROR ) IF ( COMMAND cmake_policy ) cmake_policy( SET CMP0003 NEW ) ENDIF ( COMMAND cmake_policy ) SET ( CMAKE_COLOR_MAKEFILE ON ) SET ( CMAKE_BUILD_TYPE_SHARED_LIBS ON ) SET ( CMAKE_C_FLAGS $ENV{CFLAGS} ) SET ( CMAKE_CXX_FLAGS $ENV{CXXFLAGS} ) SET ( CMAKE_LINK_FLAGS $ENV{LDFLAGS} ) IF ( CROSSCOMPILE ) SET ( CMAKE_C_COMPILER "$ENV{TARGET}-gcc" ) SET ( CMAKE_CXX_COMPILER "$ENV{TARGET}-g++" ) MESSAGE ( "CROSSCOMPILE with gcc to target: $ENV{TARGET}" ) ENDIF ( CROSSCOMPILE ) # this specify location of additional cmake sources SET ( CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake" ) #various variables SET ( CMAKE_INSTALL_ETCDIR ${CMAKE_CONF_PATH} ) SET ( CMAKE_DOC_PATH "${CMAKE_INSTALL_PREFIX}/share/doc/${APPNAME}" CACHE PATH "Doc path prefix" ) SET ( CMAKE_INSTALL_BINDIR "${CMAKE_INSTALL_PREFIX}/bin" CACHE PATH "Binary path prefix" ) SET ( CMAKE_INSTALL_ICONDIR "${CMAKE_INSTALL_PREFIX}/pixmaps" CACHE PATH "Icon path prefix" ) SET ( CMAKE_INSTALL_DESKTOPDIR "${CMAKE_INSTALL_PREFIX}/applications" CACHE PATH "Desktop file path prefix") SET ( CMAKE_INSTALL_LOCALEDIR ${CMAKE_LOCALE_PATH} ) SET ( CMAKE_INSTALL_DATADIR ${CMAKE_DATA_PATH} ) SET ( CMAKE_INSTALL_LIBDIR ${LIB_INSTALL_DIR} ) SET ( CMAKE_INSTALL_DOCDIR ${CMAKE_DOC_PATH} ) # uninstall CONFIGURE_FILE ( "${CMAKE_CURRENT_SOURCE_DIR}/cmake/cmake_uninstall.cmake.in" "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake" IMMEDIATE @ONLY ) ADD_CUSTOM_TARGET ( uninstall "${CMAKE_COMMAND}" -P "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake" ) ############################################################################### # CPACK ############################################################################### INCLUDE ( InstallRequiredSystemLibraries ) SET ( CPACK_PACKAGE_DESCRIPTION_SUMMARY "Tuxanci is first tux shooter inspired by game Bulanci." ) SET ( CPACK_PACKAGE_VENDOR "Tomas Chvatal " ) SET ( CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/LICENCE" ) SET ( CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_CURRENT_SOURCE_DIR}/README" ) SET ( CPACK_GENERATOR "TGZ" ) SET ( CPACK_SOURCE_GENERATOR "TGZ" ) SET ( CPACK_PACKAGE_VERSION_MAJOR "0" ) SET ( CPACK_PACKAGE_VERSION_MINOR "22" ) SET ( CPACK_PACKAGE_VERSION_PATCH "0" ) SET ( CPACK_STRIP_FILES "src/tuxanci" ) SET ( CPACK_SOURCE_PACKAGE_FILE_NAME "tuxanci-${TUXANCI_VERSION}" ) SET ( CPACK_SOURCE_IGNORE_FILES "~$" ".git" "build/" "packaging/" "scripts/" "tuxanci.1" ) SET ( CPACK_SOURCE_STRIP_FILES "" ) INCLUDE ( CPack ) ############################################################################### # DEBUG/DEVELOPER STUFF ############################################################################### IF ( ENABLE_DEBUG ) SET ( CMAKE_C_FLAGS "-g -O0 -Wall -pipe") ADD_DEFINITIONS ( -DDEBUG ) # SET ( CMAKE_VERBOSE_MAKEFILE on ) ENDIF ( ENABLE_DEBUG ) IF ( DEVELOPER ) ADD_DEFINITIONS ( -DDEBUG ) # if somebody asks yes i am insane SET ( CMAKE_C_FLAGS "-g -O0 -pipe -Wall -Werror -Wshadow -Wall -Wextra -Wno-missing-field-initializers -Wno-unused-parameter -Wold-style-definition -Wdeclaration-after-statement -Wmissing-declarations -Wmissing-prototypes -Wredundant-decls -Wmissing-noreturn -Wshadow -Wpointer-arith -Wcast-align -Wwrite-strings -Winline -Wformat-nonliteral -Wformat-security -Wswitch-enum -Wswitch-default -Winit-self -Wmissing-include-dirs -Wundef -Waggregate-return -Wmissing-format-attribute -Wnested-externs -Wunsafe-loop-optimizations" ) ENDIF ( DEVELOPER ) ############################################################################### # BASIC DIRECTORIES FOR INCLUSION ############################################################################### INCLUDE_DIRECTORIES ( ${WORKDIR}/base ) INCLUDE_DIRECTORIES ( ${WORKDIR}/net ) ############################################################################### # CLIENT STUFF ############################################################################### IF ( NOT BUILD_SERVER ) INCLUDE_DIRECTORIES ( ${WORKDIR}/client ) INCLUDE_DIRECTORIES ( ${WORKDIR}/screen ) INCLUDE_DIRECTORIES ( ${WORKDIR}/widget ) ENDIF ( NOT BUILD_SERVER ) ############################################################################### # SERVER STUFF (Basicly overriding default client values) ############################################################################### IF ( BUILD_SERVER ) ADD_DEFINITIONS ( -DPUBLIC_SERVER ) ADD_DEFINITIONS ( -DNO_SOUND ) INCLUDE_DIRECTORIES ( ${WORKDIR}/server ) ENDIF ( BUILD_SERVER ) ############################################################################### # APPLE QUIRKS ############################################################################### IF ( Apple ) SET ( CMAKE_OSX_ARCHITECTURES "ppc;i386" ) SET ( CACHE_INTERNAL "OSX Architectures" FORCE ) ADD_DEFINITIONS ( -DAPPLE ) ENDIF ( Apple ) ############################################################################### # LIBS SEARCH ############################################################################### MESSAGE ( STATUS "" ) FIND_PACKAGE ( ZIP REQUIRED ) IF ( NOT BUILD_SERVER ) MESSAGE ( STATUS "" ) FIND_PACKAGE ( Fontconfig REQUIRED ) IF ( WITH_OPENGL ) MESSAGE ( STATUS "" ) FIND_PACKAGE ( OpenGL REQUIRED ) INCLUDE_DIRECTORIES ( ${OPENGL_INCLUDE_DIR} ) ENDIF ( WITH_OPENGL ) MESSAGE ( STATUS "" ) FIND_PACKAGE ( SDL REQUIRED ) FIND_PACKAGE ( SDL_image REQUIRED ) FIND_PACKAGE ( SDL_ttf REQUIRED ) IF ( WITH_AUDIO ) FIND_PACKAGE ( SDL_mixer REQUIRED ) INCLUDE_DIRECTORIES ( ${SDLMIXER_INCLUDE_DIR} ) ENDIF ( WITH_AUDIO ) INCLUDE_DIRECTORIES ( ${FONTCONFIG_INCLUDE_DIR} ${SDL_INCLUDE_DIR} ${SDLTTF_INCLUDE_DIR} ${SDLIMAGE_INCLUDE_DIR} ) ENDIF ( NOT BUILD_SERVER ) ############################################################################### # GETTEXT SUPPORT ############################################################################### IF ( WITH_NLS ) MESSAGE ( STATUS "" ) ADD_DEFINITIONS ( -DNLS ) ADD_SUBDIRECTORY ( po ) ENDIF ( WITH_NLS ) ############################################################################### # COMPILATION ITSELF ############################################################################### CONFIGURE_FILE ( ${WORKDIR}/base/path.h.in ${CMAKE_BINARY_DIR}/src/base/path.h ) ADD_SUBDIRECTORY ( src ) ############################################################################### # DATA INSTALLATION ############################################################################### ADD_SUBDIRECTORY ( data ) # install the doc data compressed FIND_PACKAGE ( GZIP REQUIRED ) SET ( tuxanci_docs ${CMAKE_CURRENT_SOURCE_DIR}/LICENCE ${CMAKE_CURRENT_SOURCE_DIR}/AUTHORS ${CMAKE_CURRENT_SOURCE_DIR}/README ) IF ( ENABLE_COMPRESSION ) FOREACH ( doc ${tuxanci_docs} ) GET_FILENAME_COMPONENT( _doc ${doc} NAME_WE ) ADD_CUSTOM_COMMAND ( OUTPUT ${_doc}.gz COMMAND ${GZIP_TOOL} -c ${doc} > ${_doc}.gz WORKING_DIRECTORY "${CMAKE_BINARY_DIR}" DEPENDS ${doc} ) INSTALL ( FILES ${CMAKE_BINARY_DIR}/${_doc}.gz DESTINATION ${CMAKE_INSTALL_DOCDIR}/ ) LIST ( APPEND _docFiles ${_doc}.gz ) ENDFOREACH ( doc ) ADD_CUSTOM_TARGET ( docs ALL DEPENDS ${_docFiles} ) ELSE ( ENABLE_COMPRESSION ) INSTALL ( FILES ${tuxanci_docs} DESTINATION ${CMAKE_INSTALL_DOCDIR}/ ) ENDIF ( ENABLE_COMPRESSION ) ############################################################################### # GOODBYE INFORMATIONS (VARIABLES SETTINGS) ############################################################################### MESSAGE ( STATUS "" ) MESSAGE ( STATUS "<******************************>" ) MESSAGE ( STATUS "CFlags: ${CMAKE_C_FLAGS}" ) MESSAGE ( STATUS "LDFLAGS: ${CMAKE_LINK_FLAGS}" ) MESSAGE ( STATUS "PREFIX: ${CMAKE_INSTALL_PREFIX}" ) MESSAGE ( STATUS "ETC directory: ${CMAKE_CONF_PATH}" ) MESSAGE ( STATUS "DOC directory: ${CMAKE_DOC_PATH}" ) MESSAGE ( STATUS "LOCALE directory: ${CMAKE_INSTALL_LOCALEDIR}" ) MESSAGE ( STATUS "DATA directory: ${CMAKE_INSTALL_DATADIR}" ) ###############################################################################