From 15a6cf4c48a88892012f160c20c5d465118be061 Mon Sep 17 00:00:00 2001 From: Tom Lankhorst Date: Tue, 5 Feb 2019 20:16:38 +0100 Subject: [PATCH 1/4] Add platform cmake include --- cmake/platform.cmake | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 cmake/platform.cmake diff --git a/cmake/platform.cmake b/cmake/platform.cmake new file mode 100644 index 0000000000..b7274fa827 --- /dev/null +++ b/cmake/platform.cmake @@ -0,0 +1,11 @@ +# Helpers for linking platform specific libraries + +function(target_link_platform_libraries target) + +if (APPLE) + target_link_libraries(${target} "-framework Cocoa") +elseif(WIN32) + target_link_libraries(${target} gdi32) +endif () + +endfunction() From af25da940b47c117c85618221730347e1c57d51a Mon Sep 17 00:00:00 2001 From: Tom Lankhorst Date: Tue, 5 Feb 2019 20:16:51 +0100 Subject: [PATCH 2/4] include platform.cmake --- CMakeLists.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 5921bb3a18..d8238a2da8 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -6,6 +6,8 @@ endif() project(openrct2 CXX) +include(cmake/platform.cmake) + if (NOT MSVC) include(FindPkgConfig) endif () From 94758bccf64500d50b083713e8dc24923ad16191 Mon Sep 17 00:00:00 2001 From: Tom Lankhorst Date: Tue, 5 Feb 2019 20:17:14 +0100 Subject: [PATCH 3/4] Link with platform libraries --- src/openrct2-cli/CMakeLists.txt | 13 +++---------- src/openrct2-ui/CMakeLists.txt | 5 +---- test/tests/CMakeLists.txt | 12 ++++++++++++ 3 files changed, 16 insertions(+), 14 deletions(-) diff --git a/src/openrct2-cli/CMakeLists.txt b/src/openrct2-cli/CMakeLists.txt index 8f06fcf33a..1b301c2efa 100644 --- a/src/openrct2-cli/CMakeLists.txt +++ b/src/openrct2-cli/CMakeLists.txt @@ -1,5 +1,6 @@ # CMAKE project for openrct2-cli (CLI-only build of OpenRCT2) cmake_minimum_required(VERSION 3.9) + if (CMAKE_BINARY_DIR STREQUAL CMAKE_SOURCE_DIR) message(FATAL_ERROR "Building in-source is not supported! Create a build dir and remove ${CMAKE_SOURCE_DIR}/CMakeCache.txt") endif () @@ -15,21 +16,13 @@ set (PROJECT openrct2-cli) project(${PROJECT} CXX) add_executable(${PROJECT} ${OPENRCT2_CLI_SOURCES}) ipo_set_target_properties(${PROJECT}) - target_link_libraries(${PROJECT} "libopenrct2") +target_link_platform_libraries(${PROJECT}) # Needed for interactive console set(THREADS_PREFER_PTHREAD_FLAG ON) find_package(Threads REQUIRED) target_link_libraries(${PROJECT} Threads::Threads) - -if (APPLE) - target_link_libraries(${PROJECT} "-framework Cocoa") -endif () - -if (WIN32) - target_link_libraries(${PROJECT} gdi32) -endif () - +target_link_platform_libraries(${PROJECT}) # Includes target_include_directories(${PROJECT} PRIVATE "${CMAKE_CURRENT_LIST_DIR}/..") diff --git a/src/openrct2-ui/CMakeLists.txt b/src/openrct2-ui/CMakeLists.txt index a37b586bd4..8779ba6971 100644 --- a/src/openrct2-ui/CMakeLists.txt +++ b/src/openrct2-ui/CMakeLists.txt @@ -48,10 +48,7 @@ ipo_set_target_properties(${PROJECT}) target_link_libraries(${PROJECT} "libopenrct2" ${SDL2_LDFLAGS} ${SPEEX_LDFLAGS}) - -if (APPLE) - target_link_libraries(${PROJECT} "-framework Cocoa") -endif () +target_link_platform_libraries(${PROJECT}) if (NOT DISABLE_OPENGL) if (WIN32) diff --git a/test/tests/CMakeLists.txt b/test/tests/CMakeLists.txt index c8f2c923e0..3e46d7fd1a 100644 --- a/test/tests/CMakeLists.txt +++ b/test/tests/CMakeLists.txt @@ -112,6 +112,7 @@ set(SAWYERCODING_TEST_SOURCES ) add_executable(test_sawyercoding ${SAWYERCODING_TEST_SOURCES}) target_link_libraries(test_sawyercoding ${GTEST_LIBRARIES} test-common ${LDL} z) +target_link_platform_libraries(test_sawyercoding) add_test(NAME sawyercoding COMMAND test_sawyercoding) # LanguagePack test @@ -125,6 +126,7 @@ if (UNIX AND NOT ${CMAKE_SYSTEM_NAME} MATCHES "BSD") set(LDL dl) endif () target_link_libraries(test_languagepack ${GTEST_LIBRARIES} test-common ${LDL} z) +target_link_platform_libraries(test_languagepack) add_test(NAME languagepack COMMAND test_languagepack) # INI test @@ -139,6 +141,7 @@ set(INI_TEST_SOURCES add_executable(test_ini ${INI_TEST_SOURCES}) SET_CHECK_CXX_FLAGS(test_ini) target_link_libraries(test_ini ${GTEST_LIBRARIES} test-common ${LDL} z) +target_link_platform_libraries(test_ini) add_test(NAME ini COMMAND test_ini) # String test @@ -148,6 +151,7 @@ set(STRING_TEST_SOURCES add_executable(test_string ${STRING_TEST_SOURCES}) SET_CHECK_CXX_FLAGS(test_string) target_link_libraries(test_string ${GTEST_LIBRARIES} test-common ${LDL} z) +target_link_platform_libraries(test_string) add_test(NAME string COMMAND test_string) # Localisation test @@ -155,6 +159,7 @@ set(STRING_TEST_SOURCES "${CMAKE_CURRENT_LIST_DIR}/Localisation.cpp") add_executable(test_localisation ${STRING_TEST_SOURCES}) SET_CHECK_CXX_FLAGS(test_localisation) target_link_libraries(test_localisation ${GTEST_LIBRARIES} test-common ${LDL} z) +target_link_platform_libraries(test_localisation) add_test(NAME localisation COMMAND test_localisation) if (NOT DISABLE_NETWORK) @@ -163,6 +168,7 @@ if (NOT DISABLE_NETWORK) "${CMAKE_CURRENT_LIST_DIR}/TestData.cpp") SET_CHECK_CXX_FLAGS(test_crypt) target_link_libraries(test_crypt ${GTEST_LIBRARIES} libopenrct2) + target_link_platform_libraries(test_crypt) add_test(NAME Crypt COMMAND test_crypt) endif () @@ -171,6 +177,7 @@ add_executable(test_imageimporter "${CMAKE_CURRENT_LIST_DIR}/ImageImporterTests. "${CMAKE_CURRENT_LIST_DIR}/TestData.cpp") SET_CHECK_CXX_FLAGS(test_imageimporter) target_link_libraries(test_imageimporter ${GTEST_LIBRARIES} libopenrct2) +target_link_platform_libraries(test_imageimporter) add_test(NAME ImageImporter COMMAND test_imageimporter) # Ride ratings test @@ -179,6 +186,7 @@ set(RIDE_RATINGS_TEST_SOURCES "${CMAKE_CURRENT_LIST_DIR}/RideRatings.cpp" add_executable(test_ride_ratings ${RIDE_RATINGS_TEST_SOURCES}) SET_CHECK_CXX_FLAGS(test_ride_ratings) target_link_libraries(test_ride_ratings ${GTEST_LIBRARIES} libopenrct2 ${LDL} z) +target_link_platform_libraries(test_ride_ratings) add_test(NAME ride_ratings COMMAND test_ride_ratings) # Multi-launch test @@ -187,6 +195,7 @@ set(MULTILAUNCH_TEST_SOURCES "${CMAKE_CURRENT_LIST_DIR}/MultiLaunch.cpp" add_executable(test_multilaunch ${MULTILAUNCH_TEST_SOURCES}) SET_CHECK_CXX_FLAGS(test_multilaunch) target_link_libraries(test_multilaunch ${GTEST_LIBRARIES} libopenrct2 ${LDL} z) +target_link_platform_libraries(test_multilaunch) add_test(NAME multilaunch COMMAND test_multilaunch) # Tile element test @@ -195,6 +204,7 @@ set(TILE_ELEMENT_TEST_SOURCES "${CMAKE_CURRENT_LIST_DIR}/TileElements.cpp" add_executable(test_tile_elements ${TILE_ELEMENT_TEST_SOURCES}) SET_CHECK_CXX_FLAGS(test_tile_elements) target_link_libraries(test_tile_elements ${GTEST_LIBRARIES} libopenrct2 ${LDL} z) +target_link_platform_libraries(test_tile_elements) add_test(NAME tile_elements COMMAND test_tile_elements) if (NOT DISABLE_NETWORK) @@ -204,6 +214,7 @@ if (NOT DISABLE_NETWORK) add_executable(test_replays ${REPLAY_TEST_SOURCES}) SET_CHECK_CXX_FLAGS(test_replays) target_link_libraries(test_replays ${GTEST_LIBRARIES} libopenrct2 ${LDL} z) + target_link_platform_libraries(test_replays) add_test(NAME replay_tests COMMAND test_replays) endif () @@ -213,4 +224,5 @@ set(PATHFINDING_TEST_SOURCES "${CMAKE_CURRENT_LIST_DIR}/Pathfinding.cpp" add_executable(test_pathfinding ${PATHFINDING_TEST_SOURCES}) SET_CHECK_CXX_FLAGS(test_pathfinding) target_link_libraries(test_pathfinding ${GTEST_LIBRARIES} libopenrct2 ${LDL} z) +target_link_platform_libraries(test_pathfinding) add_test(NAME pathfinding COMMAND test_pathfinding) From 8f9c8f38ff13cc051a467d1b691458cbecadf9ea Mon Sep 17 00:00:00 2001 From: Tom Lankhorst Date: Thu, 7 Feb 2019 11:04:36 +0100 Subject: [PATCH 4/4] Clean-up CMakeLists openrct2-cli --- src/openrct2-cli/CMakeLists.txt | 26 +++++++++----------------- 1 file changed, 9 insertions(+), 17 deletions(-) diff --git a/src/openrct2-cli/CMakeLists.txt b/src/openrct2-cli/CMakeLists.txt index 1b301c2efa..7fb991eaac 100644 --- a/src/openrct2-cli/CMakeLists.txt +++ b/src/openrct2-cli/CMakeLists.txt @@ -1,28 +1,20 @@ -# CMAKE project for openrct2-cli (CLI-only build of OpenRCT2) cmake_minimum_required(VERSION 3.9) +project(openrct2-cli CXX) if (CMAKE_BINARY_DIR STREQUAL CMAKE_SOURCE_DIR) message(FATAL_ERROR "Building in-source is not supported! Create a build dir and remove ${CMAKE_SOURCE_DIR}/CMakeCache.txt") endif () -# Sources +set(THREADS_PREFER_PTHREAD_FLAG ON) +find_package(Threads REQUIRED) + file(GLOB_RECURSE OPENRCT2_CLI_SOURCES "${CMAKE_CURRENT_LIST_DIR}/*.cpp" "${CMAKE_CURRENT_LIST_DIR}/*.h" "${CMAKE_CURRENT_LIST_DIR}/*.hpp") -# Outputs -set (PROJECT openrct2-cli) -project(${PROJECT} CXX) -add_executable(${PROJECT} ${OPENRCT2_CLI_SOURCES}) -ipo_set_target_properties(${PROJECT}) -target_link_libraries(${PROJECT} "libopenrct2") -target_link_platform_libraries(${PROJECT}) - -# Needed for interactive console -set(THREADS_PREFER_PTHREAD_FLAG ON) -find_package(Threads REQUIRED) -target_link_libraries(${PROJECT} Threads::Threads) -target_link_platform_libraries(${PROJECT}) -# Includes -target_include_directories(${PROJECT} PRIVATE "${CMAKE_CURRENT_LIST_DIR}/..") +add_executable(${PROJECT_NAME} ${OPENRCT2_CLI_SOURCES}) +target_include_directories(${PROJECT_NAME} PRIVATE "${CMAKE_CURRENT_LIST_DIR}/..") +ipo_set_target_properties(${PROJECT_NAME}) +target_link_libraries(${PROJECT_NAME} libopenrct2 Threads::Threads) +target_link_platform_libraries(${PROJECT_NAME})