X-Git-Url: https://git.verplant.org/?a=blobdiff_plain;f=CMakeLists.txt;h=52faff5fb2265c165f46f3799e8014ffa68f6933;hb=53209e9747f4c830eeeb926d3a44918ed86621ba;hp=b8b3c41e54e2023ea4787d0958091166bd60c47f;hpb=6103be8899c14076d5f8318857923a087e900db6;p=supertux.git diff --git a/CMakeLists.txt b/CMakeLists.txt index b8b3c41e5..52faff5fb 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -39,8 +39,12 @@ PROJECT(SUPERTUX) ### CMake configuration -# allow building with old CMake. Use some bundled modules as a fallback -CMAKE_MINIMUM_REQUIRED(VERSION 2.4) +# allow building with CMake 2.6. Set compatibility options. Use some bundled modules as a fallback +CMAKE_MINIMUM_REQUIRED(VERSION 2.6) +IF(COMMAND cmake_policy) + CMAKE_POLICY(SET CMP0003 NEW) +ENDIF(COMMAND cmake_policy) + SET(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${SUPERTUX_SOURCE_DIR}/mk/cmake) # move some config clutter to the advanced section @@ -128,37 +132,48 @@ ENDIF(CURL_FOUND) #LINK_LIBRARIES(${ICONV_LIBRARY}) ## Find revision of WC -FIND_PACKAGE(Subversion) -IF(Subversion_FOUND) - Subversion_WC_INFO(${SUPERTUX_SOURCE_DIR} SUPERTUX) +MARK_AS_ADVANCED(SVNVERSION_EXECUTABLE) +FIND_PROGRAM(SVNVERSION_EXECUTABLE svnversion) +IF(SVNVERSION_EXECUTABLE) + EXECUTE_PROCESS(COMMAND svnversion -n ${SUPERTUX_SOURCE_DIR} + OUTPUT_VARIABLE SUPERTUX_WC_REVISION) SET(REVISION " r${SUPERTUX_WC_REVISION}") -ENDIF(Subversion_FOUND) +ENDIF(SVNVERSION_EXECUTABLE) ## Check platform-dependent build options INCLUDE(ConfigureChecks) -## Create config.h +## Create config.h and version.h configure_file(config.h.cmake ${CMAKE_BINARY_DIR}/config.h ) +configure_file(version.h.cmake ${CMAKE_BINARY_DIR}/version.h ) include_directories (${CMAKE_BINARY_DIR}/) ## Also execute instructions in src/squirrel/CMakeLists.txt -ADD_SUBDIRECTORY(src/squirrel) +ADD_SUBDIRECTORY(external/squirrel) ## Add squirrel lib dir to search path -LINK_DIRECTORIES(src/squirrel) +LINK_DIRECTORIES(external/squirrel) ## Some additional include paths include_directories (${SUPERTUX_SOURCE_DIR}/src/) -include_directories (${SUPERTUX_SOURCE_DIR}/src/squirrel/include/) +include_directories (${SUPERTUX_SOURCE_DIR}/external/squirrel/include/) +include_directories (${SUPERTUX_SOURCE_DIR}/external/) +include_directories (${SUPERTUX_SOURCE_DIR}/external/findlocale/) +include_directories (${SUPERTUX_SOURCE_DIR}/external/obstack/) ## Build list of sources for supertux binary -FILE(GLOB SUPERTUX_SOURCES RELATIVE ${SUPERTUX_SOURCE_DIR} src/*.cpp src/*/*.cpp src/obstack/*.c) +FILE(GLOB SUPERTUX_SOURCES RELATIVE ${SUPERTUX_SOURCE_DIR} src/*.cpp src/*/*.cpp src/supertux/menu/*.cpp src/video/sdl/*.cpp external/obstack/*.c external/tinygettext/*.cpp external/findlocale/findlocale.c) + +IF(HAVE_OPENGL) + FILE(GLOB SUPERTUX_OPENGL_SOURCES RELATIVE ${SUPERTUX_SOURCE_DIR} src/video/gl/*.cpp) + SET(SUPERTUX_SOURCES ${SUPERTUX_SOURCES} ${SUPERTUX_OPENGL_SOURCES}) +ENDIF(HAVE_OPENGL) ## Precompile "a few" headers in GCC OPTION(PRECOMPILE_HEADERS "Precompile headers (experimental)" OFF) @@ -194,34 +209,33 @@ ENDIF(PRECOMPILE_HEADERS) ## Debug options -OPTION(DEBUG "Build with debugging options" OFF) -OPTION(PROFILE "Build with profiling information" OFF) -OPTION(WERROR "Stops on first compiler warning in debug mode" ON) +OPTION(DEBUG "Build with debugging options" ON) +OPTION(WERROR "Stop on first compiler warning" ON) IF(CMAKE_COMPILER_IS_GNUCC) - ADD_DEFINITIONS(-Wall -W) + ADD_DEFINITIONS(-Wall -Wextra -W) IF (DEBUG) REMOVE_DEFINITIONS(-O2) ADD_DEFINITIONS(-O0 -g) - IF(WERROR) - ADD_DEFINITIONS(-Werror) - ENDIF(WERROR) ELSE (DEBUG) ADD_DEFINITIONS(-O2) REMOVE_DEFINITIONS(-O0 -g) ENDIF (DEBUG) - IF (PROFILE) - ADD_DEFINITIONS(-pg) - ELSE (PROFILE) - REMOVE_DEFINITIONS(-pg) - ENDIF (PROFILE) + SET(CMAKE_CXX_FLAGS_PROFILE "-pg") + SET(CMAKE_C_FLAGS_PROFILE "-pg") + SET(CMAKE_LD_FLAGS_PROFILE "-pg") + IF(WERROR) + ADD_DEFINITIONS(-Werror) + ELSE(WERROR) + REMOVE_DEFINITIONS(-Werror) + ENDIF(WERROR) ENDIF(CMAKE_COMPILER_IS_GNUCC) ## Add in squirrel debug stuff OPTION(ENABLE_SQDBG "Build squirrel script interpreter with debugging options" OFF) IF(ENABLE_SQDBG) - include_directories (${SUPERTUX_SOURCE_DIR}/src/squirrel/) - FILE(GLOB SQDBG_SOURCES RELATIVE ${SUPERTUX_SOURCE_DIR} src/squirrel/sqdbg/*.cpp) + include_directories (${SUPERTUX_SOURCE_DIR}/external/squirrel/) + FILE(GLOB SQDBG_SOURCES RELATIVE ${SUPERTUX_SOURCE_DIR} external/squirrel/sqdbg/*.cpp) SET(SUPERTUX_SOURCES ${SQDBG_SOURCES} ${SUPERTUX_SOURCES}) ENDIF(ENABLE_SQDBG) @@ -230,15 +244,14 @@ ENDIF(ENABLE_SQDBG) OPTION(GENERATE_WRAPPER "Build miniswig and generate the wrapper" ${DEBUG}) IF(GENERATE_WRAPPER) ADD_SUBDIRECTORY(tools/miniswig) - FILE(GLOB GENERATE_WRAPPER_SOURCES RELATIVE ${SUPERTUX_SOURCE_DIR} src/scripting/*.?pp) - LIST(REMOVE_ITEM GENERATE_WRAPPER_SOURCES "src/scripting/wrapper.cpp" "src/scripting/wrapper.hpp") ADD_CUSTOM_COMMAND( OUTPUT ${SUPERTUX_SOURCE_DIR}/src/scripting/wrapper.cpp ${SUPERTUX_SOURCE_DIR}/src/scripting/wrapper.hpp COMMAND cd ${SUPERTUX_SOURCE_DIR} && ${CMAKE_CXX_COMPILER} - ARGS -x "c++" -E -CC -DSCRIPTING_API src/scripting/wrapper.interface.hpp -o ${SUPERTUX_BINARY_DIR}/miniswig.tmp + ARGS -x "c++" -E -CC -DSCRIPTING_API src/scripting/wrapper.interface.hpp -o ${SUPERTUX_BINARY_DIR}/miniswig.tmp -I${SUPERTUX_SOURCE_DIR}/src COMMAND tools/miniswig/miniswig ARGS --input miniswig.tmp --output-cpp ${SUPERTUX_SOURCE_DIR}/src/scripting/wrapper.cpp --output-hpp ${SUPERTUX_SOURCE_DIR}/src/scripting/wrapper.hpp --module supertux --select-namespace Scripting - DEPENDS ${GENERATE_WRAPPER_SOURCES} tools/miniswig/miniswig + DEPENDS tools/miniswig/miniswig + IMPLICIT_DEPENDS CXX ${SUPERTUX_SOURCE_DIR}/src/scripting/wrapper.interface.hpp ) ENDIF(GENERATE_WRAPPER) @@ -281,7 +294,7 @@ IF(GENERATE_MESSAGESPOT) ADD_CUSTOM_COMMAND( OUTPUT ${MESSAGES_POT_FILE} COMMAND ${XGETTEXT_EXECUTABLE} - ARGS --keyword="_:1" --language=Lisp --sort-by-file --output=${MESSAGES_POT_FILE} ${SUPERTUX_LEVELS} + ARGS --keyword="_:1" --language=Lisp --force-po --sort-by-file "--output=${MESSAGES_POT_FILE}" ${SUPERTUX_LEVELS} DEPENDS ${SUPERTUX_LEVELS} WORKING_DIRECTORY ${SUPERTUX_SOURCE_DIR} COMMENT "Generating POT file ${MESSAGES_POT_FILE}" @@ -325,7 +338,7 @@ ENDIF(WIN32) ## Add binreloc.c if enabled IF(ENABLE_BINRELOC) - SET(SUPERTUX_SOURCES ${SUPERTUX_SOURCES} ${SUPERTUX_SOURCE_DIR}/src/binreloc/binreloc.c) + SET(SUPERTUX_SOURCES ${SUPERTUX_SOURCES} ${SUPERTUX_SOURCE_DIR}/external/binreloc/binreloc.c) ENDIF(ENABLE_BINRELOC) @@ -352,6 +365,15 @@ IF(HAVE_LIBCURL) TARGET_LINK_LIBRARIES(supertux2 ${CURL_LIBRARY}) ENDIF(HAVE_LIBCURL) +# Warnings to add +OPTION(WARNINGS "Enable long list of warnings for compiler to check" ON) +IF(WARNINGS) + SET_PROPERTY(TARGET supertux2 APPEND PROPERTY COMPILE_FLAGS +# -ansi fails in MinGW +# still left: -Weffc++ -Wold-style-cast -Wpadded -Wconversion -Wundef -Wsign-conversion -Wshadow -Winline -Wunsafe-loop-optimizations -Wfloat-equal -Wswitch-default -Wswitch-enum -Wcast-qual -Wsign-promo -Woverloaded-virtual -Wmissing-format-attribute -Wstrict-overflow=5 -Wformat=2 + "-fdiagnostics-show-option -O3 -pedantic -Wno-long-long -Wabi -Wctor-dtor-privacy -Wstrict-null-sentinel -Wcast-align -Wdisabled-optimization -Winit-self -Winvalid-pch -Wlogical-op -Wmissing-include-dirs -Wmissing-noreturn -Wpacked -Wredundant-decls -Wstack-protector") +ENDIF(WARNINGS) + ## Install stuff IF(WIN32 AND NOT UNIX) @@ -360,14 +382,14 @@ IF(WIN32 AND NOT UNIX) SET(INSTALL_SUBDIR_SHARE "data/") SET(INSTALL_SUBDIR_DOC ".") - INSTALL(FILES ${SUPERTUX_SOURCE_DIR}/SDL.dll DESTINATION ${INSTALL_SUBDIR_BIN}) - INSTALL(FILES ${SUPERTUX_SOURCE_DIR}/SDL_image.dll DESTINATION ${INSTALL_SUBDIR_BIN}) - INSTALL(FILES ${SUPERTUX_SOURCE_DIR}/iconv.dll DESTINATION ${INSTALL_SUBDIR_BIN}) - INSTALL(FILES ${SUPERTUX_SOURCE_DIR}/libogg-0.dll DESTINATION ${INSTALL_SUBDIR_BIN}) - INSTALL(FILES ${SUPERTUX_SOURCE_DIR}/libphysfs-1-0-0.dll DESTINATION ${INSTALL_SUBDIR_BIN}) - INSTALL(FILES ${SUPERTUX_SOURCE_DIR}/OpenAl32.dll DESTINATION ${INSTALL_SUBDIR_BIN}) - INSTALL(FILES ${SUPERTUX_SOURCE_DIR}/wrap_oal.dll DESTINATION ${INSTALL_SUBDIR_BIN}) - INSTALL(FILES ${SUPERTUX_SOURCE_DIR}/libcurl-4.dll DESTINATION ${INSTALL_SUBDIR_BIN}) + INSTALL(FILES ${SUPERTUX_SOURCE_DIR}/SDL.dll + ${SUPERTUX_SOURCE_DIR}/SDL_image.dll + ${SUPERTUX_SOURCE_DIR}/iconv.dll + ${SUPERTUX_SOURCE_DIR}/libogg-0.dll + ${SUPERTUX_SOURCE_DIR}/libphysfs-1-0-0.dll + ${SUPERTUX_SOURCE_DIR}/OpenAl32.dll + ${SUPERTUX_SOURCE_DIR}/wrap_oal.dll + ${SUPERTUX_SOURCE_DIR}/libcurl-4.dll DESTINATION ${INSTALL_SUBDIR_BIN}) INSTALL(FILES ${SUPERTUX_SOURCE_DIR}/data/images/engine/icons/supertux.png ${SUPERTUX_SOURCE_DIR}/data/images/engine/icons/supertux.ico DESTINATION ".") @@ -400,13 +422,16 @@ INSTALL(TARGETS supertux2 DESTINATION ${INSTALL_SUBDIR_BIN}) INSTALL(FILES ${SUPERTUX_SOURCE_DIR}/INSTALL ${SUPERTUX_SOURCE_DIR}/README ${SUPERTUX_SOURCE_DIR}/COPYING ${SUPERTUX_SOURCE_DIR}/WHATSNEW.txt DESTINATION ${INSTALL_SUBDIR_DOC}) INSTALL(FILES ${SUPERTUX_SOURCE_DIR}/data/credits.txt DESTINATION ${INSTALL_SUBDIR_SHARE}) -INSTALL(DIRECTORY data/images DESTINATION ${INSTALL_SUBDIR_SHARE} PATTERN ".svn" EXCLUDE) -INSTALL(DIRECTORY data/levels DESTINATION ${INSTALL_SUBDIR_SHARE} PATTERN ".svn" EXCLUDE) -INSTALL(DIRECTORY data/music DESTINATION ${INSTALL_SUBDIR_SHARE} PATTERN ".svn" EXCLUDE) -INSTALL(DIRECTORY data/scripts DESTINATION ${INSTALL_SUBDIR_SHARE} PATTERN ".svn" EXCLUDE) -INSTALL(DIRECTORY data/speech DESTINATION ${INSTALL_SUBDIR_SHARE} PATTERN ".svn" EXCLUDE) -INSTALL(DIRECTORY data/sounds DESTINATION ${INSTALL_SUBDIR_SHARE} PATTERN ".svn" EXCLUDE) -INSTALL(DIRECTORY data/locale DESTINATION ${INSTALL_SUBDIR_SHARE} PATTERN ".svn" EXCLUDE) + +INSTALL(DIRECTORY data/images + data/fonts + data/levels + data/music + data/scripts + data/speech + data/sounds + data/locale + DESTINATION ${INSTALL_SUBDIR_SHARE} PATTERN ".svn" EXCLUDE) ## CPack/Installation-specific stuff