X-Git-Url: https://git.octo.it/?p=supertux.git;a=blobdiff_plain;f=CMakeLists.txt;h=83505a8ef2284ee12a30adb7230eeb98b1a93ae6;hp=41d4a3fd078a2ae055307049c0d6b7be5246fea0;hb=HEAD;hpb=17305beb7f6eecbb46c1247af8bd0f6bc6680919 diff --git a/CMakeLists.txt b/CMakeLists.txt index 41d4a3fd0..83505a8ef 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -37,7 +37,7 @@ PROJECT(SUPERTUX) ## Version, for display in title bar. -## Will add r to the end if svnversion is available. +## Will add 'commit ' to the end if git is available and this is a git repository. SET(SUPERTUX_VERSION "0.3.4-GIT") ### CMake configuration @@ -51,7 +51,6 @@ ENDIF(COMMAND cmake_policy) SET(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/mk/cmake) ## For autopackage -OPTION(ENABLE_BINRELOC "Enable autopackage's BINRELOC features" OFF) SET(APPDATADIR "${CMAKE_INSTALL_PREFIX}/share/games/supertux2") ## Check endianess @@ -67,11 +66,13 @@ INCLUDE_DIRECTORIES(SYSTEM ${Boost_INCLUDE_DIR}) LINK_DIRECTORIES(${Boost_LIBRARY_DIRS}) INCLUDE(FindPkgConfig) -PKG_SEARCH_MODULE(SDL2 REQUIRED sdl2) +PKG_SEARCH_MODULE(SDL2 REQUIRED sdl2>=2.0.1) PKG_SEARCH_MODULE(SDL2IMAGE REQUIRED SDL2_image>=2.0.0) SET(HAVE_SDL TRUE) OPTION(ENABLE_OPENGL "Enable OpenGL support" ON) +OPTION(GLBINDING_ENABLED "Use glbinding instead of GLEW" OFF) +OPTION(GLBINDING_DEBUG_OUTPUT "Enable glbinding debug output for each called OpenGL function" OFF) IF(ENABLE_OPENGL) FIND_PACKAGE(OpenGL) IF(OPENGL_FOUND) @@ -79,10 +80,21 @@ IF(ENABLE_OPENGL) SET(HAVE_OPENGL TRUE) ENDIF(OPENGL_FOUND) - FIND_PACKAGE(GLEW) - IF(GLEW_FOUND) - INCLUDE_DIRECTORIES(${GLEW_INCLUDE_DIR}) - ENDIF(GLEW_FOUND) + IF(GLBINDING_ENABLED) + FIND_PACKAGE(GLBINDING REQUIRED) + IF(GLBINDING_FOUND) + INCLUDE_DIRECTORIES(${GLBINDING_INCLUDES}) + ADD_DEFINITIONS(-DUSE_GLBINDING) + IF (GLBINDING_DEBUG_OUTPUT) + ADD_DEFINITIONS(-DUSE_GLBINDING_DEBUG_OUTPUT) + ENDIF() + ENDIF() + ELSE() + FIND_PACKAGE(GLEW REQUIRED) + IF(GLEW_FOUND) + INCLUDE_DIRECTORIES(${GLEW_INCLUDE_DIR}) + ENDIF(GLEW_FOUND) + ENDIF() ENDIF(ENABLE_OPENGL) FIND_PACKAGE(OpenAL REQUIRED) @@ -94,7 +106,7 @@ INCLUDE_DIRECTORIES(${VORBIS_INCLUDE_DIR}) FIND_PACKAGE(PhysFS REQUIRED) INCLUDE_DIRECTORIES(${PHYSFS_INCLUDE_DIR}) -FIND_PACKAGE(CURL) +FIND_PACKAGE(CURL REQUIRED) IF(CURL_FOUND) INCLUDE_DIRECTORIES(${CURL_INCLUDE_DIR}) SET(HAVE_LIBCURL TRUE) @@ -108,7 +120,10 @@ ENDIF(CURL_FOUND) MARK_AS_ADVANCED(GIT_EXECUTABLE) FIND_PROGRAM(GIT_EXECUTABLE git) -IF(GIT_EXECUTABLE) +# The .git directory inside the base directory +SET(GIT_CFG_DIR "${CMAKE_BINARY_DIR}/.git/") + +IF(GIT_EXECUTABLE AND EXISTS ${GIT_CFG_DIR}) ADD_CUSTOM_TARGET(gitversion ALL ${CMAKE_COMMAND} -E echo "#ifndef VERSION_H" > "${CMAKE_BINARY_DIR}/version.h.tmp" COMMAND ${CMAKE_COMMAND} -E echo "#define VERSION_H" >> "${CMAKE_BINARY_DIR}/version.h.tmp" @@ -121,7 +136,7 @@ IF(GIT_EXECUTABLE) WORKING_DIRECTORY "${CMAKE_BINARY_DIR}" COMMENT "Updating ${CMAKE_BINARY_DIR}/version.h..." VERBATIM) -ELSE(GIT_EXECUTABLE) +ELSE(GIT_EXECUTABLE AND EXISTS ${GIT_CFG_DIR}) ADD_CUSTOM_TARGET(gitversion ALL ${CMAKE_COMMAND} -E echo "#ifndef VERSION_H" > "${CMAKE_BINARY_DIR}/version.h.tmp" COMMAND ${CMAKE_COMMAND} -E echo "#define VERSION_H" >> "${CMAKE_BINARY_DIR}/version.h.tmp" @@ -132,7 +147,7 @@ ELSE(GIT_EXECUTABLE) WORKING_DIRECTORY ${CMAKE_BINARY_DIR} COMMENT "Updating ${CMAKE_BINARY_DIR}/version.h..." VERBATIM) -ENDIF(GIT_EXECUTABLE) +ENDIF(GIT_EXECUTABLE AND EXISTS ${GIT_CFG_DIR}) SET_SOURCE_FILES_PROPERTIES(${CMAKE_BINARY_DIR}/version.h PROPERTIES GENERATED true) @@ -162,15 +177,17 @@ include_directories (${CMAKE_CURRENT_SOURCE_DIR}/external/squirrel/include/) include_directories (${CMAKE_CURRENT_SOURCE_DIR}/external/tinygettext/include/) include_directories (${CMAKE_CURRENT_SOURCE_DIR}/external/findlocale/) include_directories (${CMAKE_CURRENT_SOURCE_DIR}/external/obstack/) -include_directories (${CMAKE_CURRENT_SOURCE_DIR}/external/binreloc/) ## MSVC Compatibility headers and definitions IF(MSVC) -include_directories (${CMAKE_CURRENT_SOURCE_DIR}/mk/msvc) -ADD_DEFINITIONS(-D_USE_MATH_DEFINES -DNOMINMAX) + include_directories (${CMAKE_CURRENT_SOURCE_DIR}/mk/msvc) ENDIF(MSVC) +IF(WIN32) + ADD_DEFINITIONS(-D_USE_MATH_DEFINES -DNOMINMAX) +ENDIF(WIN32) + ## Build list of sources for supertux binary FILE(GLOB SUPERTUX_SOURCES_C RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} external/obstack/*.c external/findlocale/findlocale.c) @@ -256,12 +273,14 @@ IF(CMAKE_COMPILER_IS_GNUCC) ENDIF(WERROR) IF(WARNINGS) # temporarily disabled: - # -Wsign-conversion -Wfloat-equal -Wconversion -Wundef -Wshadow -Wswitch-default + # -Wsign-conversion -Wfloat-equal -Wconversion -Wundef -Wswitch-default # -Wswitch-enum -Wsign-promo -Wcast-qual -Woverloaded-virtual -Wmissing-format-attribute - # -Wold-style-cast -Wpadded -Wabi + # -Wold-style-cast -Wpadded -Wabi -Winline -Wunsafe-loop-optimizations -Wstrict-overflow=5 # fails on MinGW: # -ansi - SET(SUPERTUX2_EXTRA_WARNING_FLAGS "-fdiagnostics-show-option -pedantic -Wno-long-long -Wcast-align -Wdisabled-optimization -Winit-self -Winvalid-pch -Wlogical-op -Wmissing-include-dirs -Wmissing-noreturn -Wpacked -Wredundant-decls -Wstack-protector -Winline -Wunsafe-loop-optimizations -Wstrict-overflow=5 -Wformat=2 -Weffc++ -Wctor-dtor-privacy -Wstrict-null-sentinel -Wno-unused-parameter") + # fails on clang: + # -Wlogical-op -Wstrict-null-sentinel + SET(SUPERTUX2_EXTRA_WARNING_FLAGS "-fdiagnostics-show-option -pedantic -Wno-long-long -Wcast-align -Wdisabled-optimization -Winit-self -Winvalid-pch -Wmissing-include-dirs -Wmissing-noreturn -Wpacked -Wredundant-decls -Wstack-protector -Wformat=2 -Weffc++ -Wctor-dtor-privacy -Wno-unused-parameter -Wshadow -Wnon-virtual-dtor -Wcast-qual") ENDIF(WARNINGS) ENDIF(CMAKE_COMPILER_IS_GNUCC) @@ -290,7 +309,6 @@ IF(GENERATE_MESSAGESPOT) LIST(APPEND MESSAGES_POT_FILES ${MESSAGES_POT_FILE}) FILE(GLOB SUPERTUX_LEVEL_DIRS RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} data/levels/*) - LIST(REMOVE_ITEM SUPERTUX_LEVEL_DIRS "data/levels/.svn") FOREACH(SUPERTUX_LEVEL_DIR ${SUPERTUX_LEVEL_DIRS}) FILE(GLOB SUPERTUX_LEVELS RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${SUPERTUX_LEVEL_DIR}/*.stl ${SUPERTUX_LEVEL_DIR}/*.stwm ${SUPERTUX_LEVEL_DIR}/*.txt) @@ -335,19 +353,13 @@ IF(WIN32) IF(MINGW) ADD_CUSTOM_COMMAND( OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/supertux_rc.o - COMMAND windres.exe -I${CMAKE_CURRENT_SOURCE_DIR}/data/images/engine/icons -i${CMAKE_CURRENT_SOURCE_DIR}/data/images/engine/icons/supertux.rc -o ${CMAKE_CURRENT_BINARY_DIR}/supertux_rc.o) + COMMAND ${CMAKE_RC_COMPILER} -I${CMAKE_CURRENT_SOURCE_DIR}/data/images/engine/icons -i${CMAKE_CURRENT_SOURCE_DIR}/data/images/engine/icons/supertux.rc -o ${CMAKE_CURRENT_BINARY_DIR}/supertux_rc.o) SET(SUPERTUX_SOURCES_C ${SUPERTUX_SOURCES_C} ${CMAKE_CURRENT_BINARY_DIR}/supertux_rc.o) ELSE(MINGW) SET(SUPERTUX_EXE_SRCS ${SUPERTUX_EXE_SRCS} supertux.rc) ENDIF(MINGW) ENDIF(WIN32) -## Add binreloc.c if enabled -IF(ENABLE_BINRELOC) - SET(SUPERTUX_SOURCES_C ${SUPERTUX_SOURCES_C} ${CMAKE_CURRENT_SOURCE_DIR}/external/binreloc/binreloc.c) -ENDIF(ENABLE_BINRELOC) - - ## Generate supertux executable in the right place SET(EXECUTABLE_OUTPUT_PATH ${CMAKE_CURRENT_SOURCE_DIR}) @@ -372,7 +384,11 @@ TARGET_LINK_LIBRARIES(supertux2 ${OGGVORBIS_LIBRARIES}) TARGET_LINK_LIBRARIES(supertux2 ${PHYSFS_LIBRARY}) IF(HAVE_OPENGL) TARGET_LINK_LIBRARIES(supertux2 ${OPENGL_LIBRARY}) - TARGET_LINK_LIBRARIES(supertux2 ${GLEW_LIBRARY}) + IF(GLBINDING_FOUND) + TARGET_LINK_LIBRARIES(supertux2 ${GLBINDING_LIBRARIES}) + ELSE() + TARGET_LINK_LIBRARIES(supertux2 ${GLEW_LIBRARY}) + ENDIF() ENDIF(HAVE_OPENGL) IF(HAVE_LIBCURL) TARGET_LINK_LIBRARIES(supertux2 ${CURL_LIBRARY}) @@ -422,6 +438,8 @@ INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/INSTALL.md ${CMAKE_CURRENT_SOURCE_DIR} INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/data/credits.txt DESTINATION ${INSTALL_SUBDIR_SHARE}) +INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/supertux2.appdata.xml DESTINATION "share/appdata" ) + INSTALL(DIRECTORY data/images data/fonts data/levels @@ -430,7 +448,7 @@ INSTALL(DIRECTORY data/images data/speech data/sounds data/locale - DESTINATION ${INSTALL_SUBDIR_SHARE} PATTERN ".svn" EXCLUDE) + DESTINATION ${INSTALL_SUBDIR_SHARE}) ## Create config.h now that INSTALL_SUBDIR_* have been set. @@ -487,7 +505,6 @@ MARK_AS_ADVANCED( ) MARK_AS_ADVANCED( - ENABLE_BINRELOC APPDATADIR )