From 99032651d22f943b19aef7753043b5442ed4e2a7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Janiszewski?= Date: Wed, 11 Jan 2017 12:10:40 +0100 Subject: [PATCH 1/2] Add BUILD_BYPRODUCTS entries to CMakeLists for googletest This allows building tests with ninja build system --- test/tests/CMakeLists.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/test/tests/CMakeLists.txt b/test/tests/CMakeLists.txt index 6876864a6a..e6f48fcd30 100644 --- a/test/tests/CMakeLists.txt +++ b/test/tests/CMakeLists.txt @@ -23,6 +23,8 @@ ExternalProject_Add( DOWNLOAD_COMMAND "" SOURCE_DIR "${GOOGLETEST_DISTRIB_SOURCE_DIR}/googletest" CMAKE_ARGS "-DCMAKE_CXX_FLAGS=${TARGET_M}" + BUILD_BYPRODUCTS "googletest-prefix/src/googletest-build/${CMAKE_STATIC_LIBRARY_PREFIX}gtest${CMAKE_STATIC_LIBRARY_SUFFIX}" + BUILD_BYPRODUCTS "googletest-prefix/src/googletest-build/${CMAKE_STATIC_LIBRARY_PREFIX}gtest_main${CMAKE_STATIC_LIBRARY_SUFFIX}" # Disable install step INSTALL_COMMAND "" # Wrap download, configure and build steps in a script to log output From 2d55c3e940d39b5851ca30acddd0545eb59476bf Mon Sep 17 00:00:00 2001 From: Marijn van der Werf Date: Thu, 12 Jan 2017 13:24:09 +0100 Subject: [PATCH 2/2] Only link segments with targets that require them --- CMakeLists.txt | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 8ea4b959b6..3dfde6b98d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -208,7 +208,7 @@ if ((NOT DISABLE_RCT2) AND UNIX) add_custom_target(segfiles DEPENDS openrct2_text openrct2_data) if (NOT USE_MMAP) if (APPLE) - set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -sectcreate rct2_text __text ${CMAKE_CURRENT_SOURCE_DIR}/build/openrct2_text -sectcreate rct2_data __data ${CMAKE_CURRENT_SOURCE_DIR}/build/openrct2_data -segaddr rct2_data 0x8a4000 -segprot rct2_data rwx rwx -segaddr rct2_text 0x401000 -segprot rct2_text rwx rwx -segaddr __TEXT 0x2000000 -read_only_relocs suppress") + set(RCT2_SEGMENT_LINKER_FLAGS "-sectcreate rct2_text __text ${CMAKE_BINARY_DIR}/openrct2_text -sectcreate rct2_data __data ${CMAKE_BINARY_DIR}/openrct2_data -segaddr rct2_data 0x8a4000 -segprot rct2_data rwx rwx -segaddr rct2_text 0x401000 -segprot rct2_text rwx rwx -segaddr __TEXT 0x2000000 -read_only_relocs suppress") else (APPLE) # For Linux we have to use objcopy to wrap regular binaries into a linkable # format. We use specific section names which are then referenced in a @@ -234,7 +234,7 @@ if ((NOT DISABLE_RCT2) AND UNIX) ) # can't use GLOB here, as the files don't exist yet at cmake-time set(RCT2_SECTIONS "${CMAKE_BINARY_DIR}/openrct2_data_section.o" "${CMAKE_BINARY_DIR}/openrct2_text_section.o") - set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,-T,\"${CMAKE_CURRENT_SOURCE_DIR}/distribution/linux/${LINKER_SCRIPT}\"") + set(RCT2_SEGMENT_LINKER_FLAGS "-Wl,-T,\"${CMAKE_CURRENT_SOURCE_DIR}/distribution/linux/${LINKER_SCRIPT}\"") endif (APPLE) endif (NOT USE_MMAP) elseif (USE_MMAP) @@ -366,6 +366,7 @@ else (WIN32) if (NOT APPLE AND NOT USE_MMAP) add_dependencies(${PROJECT} linkable_sections) endif () + set_target_properties(${PROJECT} PROPERTIES LINK_FLAGS ${RCT2_SEGMENT_LINKER_FLAGS}) endif (NOT DISABLE_RCT2) add_custom_command( OUTPUT g2.dat @@ -437,6 +438,7 @@ if (UNIX AND (NOT USE_MMAP) AND (NOT DISABLE_RCT2) AND (FORCE32)) add_executable(testpaint EXCLUDE_FROM_ALL ${ORCT2_RIDE_SOURCES} ${ORCT2_RIDE_DEP_SOURCES} ${ORCT2_TESTPAINT_SOURCES} ${RCT2_SECTIONS}) target_include_directories(testpaint PRIVATE "src/") set_target_properties(testpaint PROPERTIES COMPILE_FLAGS "-DNO_VEHICLES -D__TESTPAINT__ -Wno-unused") + set_target_properties(testpaint PROPERTIES LINK_FLAGS ${RCT2_SEGMENT_LINKER_FLAGS}) add_dependencies(testpaint segfiles) endif ()