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] 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 ()