Compare commits

...

6 Commits

Author SHA1 Message Date
immibis bff56bdfb6 Modernize CMake (6): OpenAL (OPTIONAL_LIBS no longer used) 2020-07-04 19:58:29 +02:00
immibis 937451a73d Modernize CMakeLists (5): gtest, wingetopt 2020-07-04 19:49:00 +02:00
immibis d57ca161f5 Modernize CMake (4): localename 2020-07-04 19:37:19 +02:00
immibis 1f2f857221 Modernize CMake (3): hippomocks (make it into a real cmake library) 2020-07-04 19:37:15 +02:00
immibis cbd2108eec Modernize CMake (2): SDL2, SDL2_image, SDL2_ttf, GLEW, PhysFS, libsndfile
(Libraries that we include our own find-modules for)
2020-07-04 19:17:20 +02:00
immibis 33a380daba Modernize CMake (1): Boost and libpng (support included in cmake itself)
Version 3.13 was chosen because it introduces target_link_directories and target_link_options,
even though we aren't using them at the moment.
2020-07-04 19:16:57 +02:00
13 changed files with 76 additions and 64 deletions

View File

@ -3,7 +3,7 @@
# Contains global options and definitions
##
cmake_minimum_required(VERSION 2.8)
cmake_minimum_required(VERSION 3.13)
project(colobot C CXX)
@ -305,7 +305,6 @@ find_package(GLEW REQUIRED)
if (OPENAL_SOUND)
find_package(OpenAL REQUIRED)
include_directories(${OPENAL_INCLUDE_DIR})
find_package(LibSndFile REQUIRED)
endif()
@ -360,7 +359,6 @@ endif()
##
# Localename
##
set(LOCALENAME_INCLUDE_DIR ${colobot_SOURCE_DIR}/lib/localename)
add_subdirectory(lib/localename)
@ -368,7 +366,6 @@ add_subdirectory(lib/localename)
# Wingetopt
##
if(WINGETOPT)
set(WINGETOPT_INCLUDE_DIR ${colobot_SOURCE_DIR}/lib/wingetopt/src)
add_subdirectory(lib/wingetopt)
endif()
@ -455,8 +452,7 @@ if(TESTS)
add_subdirectory(${GTEST_SRC_DIR} lib/gtest)
# Hippomocks library
set(HIPPOMOCKS_INCLUDE_DIR ${colobot_SOURCE_DIR}/lib/hippomocks)
add_subdirectory(lib/hippomocks)
# Tests targets
enable_testing()

View File

@ -49,3 +49,7 @@ ELSE (GLEW_INCLUDE_PATH)
ENDIF (GLEW_INCLUDE_PATH)
MARK_AS_ADVANCED( GLEW_FOUND )
add_library(GLEW::GLEW INTERFACE IMPORTED)
target_include_directories(GLEW::GLEW SYSTEM INTERFACE ${GLEW_INCLUDE_DIR})
target_link_libraries(GLEW::GLEW INTERFACE ${GLEW_LIBRARY})

View File

@ -21,3 +21,7 @@ ELSE(LIBSNDFILE_FOUND)
MESSAGE(FATAL_ERROR "Could not find sndfile")
ENDIF(LibSndFile_FIND_REQUIRED)
ENDIF (LIBSNDFILE_FOUND)
add_library(libsndfile::libsndfile INTERFACE IMPORTED)
target_include_directories(libsndfile::libsndfile SYSTEM INTERFACE ${LIBSNDFILE_INCLUDE_DIR})
target_link_libraries(libsndfile::libsndfile INTERFACE ${LIBSNDFILE_LIBRARY})

View File

@ -34,3 +34,7 @@ ELSE (GLEW_INCLUDE_PATH)
ENDIF (PHYSFS_INCLUDE_PATH)
MARK_AS_ADVANCED( PHYSFS_FOUND )
add_library(PhysFS::PhysFS INTERFACE IMPORTED)
target_include_directories(PhysFS::PhysFS SYSTEM INTERFACE ${PHYSFS_INCLUDE_PATH})
target_link_libraries(PhysFS::PhysFS INTERFACE ${PHYSFS_LIBRARY})

View File

@ -161,3 +161,7 @@ ENDIF(SDL2_LIBRARY_TEMP)
INCLUDE(FindPackageHandleStandardArgs)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(SDL2 REQUIRED_VARS SDL2_LIBRARY SDL2_INCLUDE_DIR)
add_library(SDL2::SDL2 INTERFACE IMPORTED)
target_include_directories(SDL2::SDL2 SYSTEM INTERFACE ${SDL2_INCLUDE_DIR})
target_link_libraries(SDL2::SDL2 INTERFACE ${SDL2_LIBRARY})

View File

@ -156,3 +156,6 @@ INCLUDE(FindPackageHandleStandardArgs)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(SDL2_IMAGE REQUIRED_VARS SDL2_IMAGE_LIBRARY SDL2_IMAGE_INCLUDE_DIR)
add_library(SDL2_image::SDL2_image INTERFACE IMPORTED)
target_include_directories(SDL2_image::SDL2_image SYSTEM INTERFACE ${SDL2_IMAGE_INCLUDE_DIR})
target_link_libraries(SDL2_image::SDL2_image INTERFACE ${SDL2_IMAGE_LIBRARY})

View File

@ -155,3 +155,6 @@ INCLUDE(FindPackageHandleStandardArgs)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(SDL2_TTF REQUIRED_VARS SDL2_TTF_LIBRARY SDL2_TTF_INCLUDE_DIR)
add_library(SDL2_ttf::SDL2_ttf INTERFACE IMPORTED)
target_include_directories(SDL2_ttf::SDL2_ttf SYSTEM INTERFACE ${SDL2_TTF_INCLUDE_DIR})
target_link_libraries(SDL2_ttf::SDL2_ttf INTERFACE ${SDL2_TTF_LIBRARY})

View File

@ -1,8 +1,11 @@
cmake_minimum_required(VERSION 2.8)
include_directories(. include)
add_definitions(-DGTEST_HAS_TR1_TUPLE=0)
cmake_minimum_required(VERSION 3.13)
# gtest-all.cc includes all other sources
add_library(gtest STATIC src/gtest-all.cc)
target_include_directories(gtest
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}
PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
)
target_compile_definitions(gtest PUBLIC GTEST_HAS_TR1_TUPLE=0)

View File

@ -0,0 +1,4 @@
cmake_minimum_required(VERSION 3.13)
add_library(hippomocks INTERFACE)
target_include_directories(hippomocks SYSTEM INTERFACE $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>)

View File

@ -1,3 +1,4 @@
cmake_minimum_required(VERSION 2.8)
cmake_minimum_required(VERSION 3.13)
add_library(localename STATIC localename.c)
add_library(localename STATIC localename.c)
target_include_directories(localename PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>)

View File

@ -1,5 +1,7 @@
cmake_minimum_required(VERSION 2.8)
cmake_minimum_required(VERSION 3.13)
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/src)
add_library(wingetopt STATIC src/getopt.c src/getopt.h)
add_library(wingetopt STATIC src/getopt.c)
target_include_directories(wingetopt
PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src>
)

View File

@ -24,20 +24,6 @@ endif()
add_subdirectory(graphics/opengl/shaders)
# Optional libraries
set(OPTIONAL_LIBS "")
set(OPTIONAL_INCLUDES "")
if(OPENAL_SOUND)
set(OPTIONAL_LIBS ${OPENAL_LIBRARY})
set(OPTIONAL_INCLUDES ${OPENAL_INCLUDE_DIR})
endif()
if(WINGETOPT)
set(OPTIONAL_LIBS ${OPTIONAL_LIBS} wingetopt)
set(OPTIONAL_INCLUDES ${OPTIONAL_INCLUDES} ${WINGETOPT_INCLUDE_DIR})
endif()
# Additional libraries per platform
if(MXE) # MXE requires special treatment
set(PLATFORM_LIBS ${MXE_LIBS})
@ -590,26 +576,6 @@ set(MAIN_SOURCES
${RES_FILES}
)
# Libraries
set(LIBS
CBot
localename
${SDL2_LIBRARY}
${SDL2_IMAGE_LIBRARY}
${SDL2_TTF_LIBRARY}
${OPENGL_LIBRARY}
${PNG_LIBRARIES}
${GLEW_LIBRARY}
${Boost_LIBRARIES}
${LIBSNDFILE_LIBRARY}
${OPTIONAL_LIBS}
${PLATFORM_LIBS}
${PHYSFS_LIBRARY}
)
set(COLOBOT_LIBS ${LIBS} PARENT_SCOPE)
# Includes
set(LOCAL_INCLUDES
${CMAKE_CURRENT_SOURCE_DIR}
@ -618,17 +584,7 @@ set(LOCAL_INCLUDES
)
set(SYSTEM_INCLUDES
${SDL2_INCLUDE_DIR}
${SDL2_IMAGE_INCLUDE_DIR}
${SDL2_TTF_INCLUDE_DIR}
${PNG_INCLUDE_DIRS}
${GLEW_INCLUDE_PATH}
${Boost_INCLUDE_DIRS}
${LIBSNDFILE_INCLUDE_DIR}
${LOCALENAME_INCLUDE_DIR}
${PHYSFS_INCLUDE_PATH}
${LIBINTL_INCLUDE_PATH}
${OPTIONAL_INCLUDES}
)
set(COLOBOT_LOCAL_INCLUDES ${LOCAL_INCLUDES} PARENT_SCOPE)
@ -648,6 +604,37 @@ link_directories(
add_library(colobotbase STATIC ${BASE_SOURCES})
target_link_libraries(colobotbase PUBLIC
Boost::system Boost::regex Boost::filesystem
PNG::PNG
SDL2::SDL2 SDL2_image::SDL2_image SDL2_ttf::SDL2_ttf
GLEW::GLEW
PhysFS::PhysFS
libsndfile::libsndfile
localename
CBot
${PLATFORM_LIBS}
${OPENGL_LIBRARY}
)
if(OPENAL_SOUND)
# find_package(OpenAL) doesn't define a target for OpenAL, so we make our own one
add_library(OpenAL INTERFACE IMPORTED)
target_link_libraries(OpenAL INTERFACE ${OPENAL_LIBRARY})
target_include_directories(OpenAL INTERFACE ${OPENAL_INCLUDE_DIR})
target_link_libraries(colobotbase PUBLIC
OpenAL
libsndfile::libsndfile
)
endif()
if(WINGETOPT)
target_link_libraries(colobotbase PUBLIC wingetopt)
endif()
add_executable(colobot ${MAIN_SOURCES})
target_link_libraries(colobot colobotbase ${LIBS})

View File

@ -31,14 +31,11 @@ include_directories(
include_directories(
SYSTEM
${GTEST_INCLUDE_DIR}
${HIPPOMOCKS_INCLUDE_DIR}
${COLOBOT_SYSTEM_INCLUDES}
)
# Libraries
set(LIBS
gtest
colobotbase
${COLOBOT_LIBS}
)
@ -56,7 +53,7 @@ file(COPY ${TEST_FILES} DESTINATION ${CMAKE_RUNTIME_OUTPUT_DIRECTORY})
add_definitions(-DGTEST_HAS_TR1_TUPLE=0)
add_executable(colobot_ut ${UT_SOURCES})
target_link_libraries(colobot_ut ${LIBS})
target_link_libraries(colobot_ut ${LIBS} hippomocks gtest)
add_test(
NAME colobot_ut