CMake: use target_link_options
Replace set_target_properties(... LINK_FLAGS ...) with
target_link_options. This allows us to keep our link flags variables.
Note that this requires CMake 3.13.
Bug: b/145758253
Change-Id: I8425f7a8e6db087d4000a721971a0dadfed6c3a5
Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/44110
Tested-by: Antonio Maiorano <amaiorano@google.com>
Kokoro-Result: kokoro <noreply+kokoro@google.com>
Reviewed-by: Nicolas Capens <nicolascapens@google.com>
Reviewed-by: Ben Clayton <bclayton@google.com>
diff --git a/CMakeLists.txt b/CMakeLists.txt
index fd1179d..f973cba 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -551,10 +551,6 @@
endif()
unset(USE_EXCEPTIONS)
-# Transform SWIFTSHADER_LINK_FLAGS from semicolon delimited to whitespace
-# delimited (what is expected by LINK_FLAGS)
-string(REPLACE ";" " " SWIFTSHADER_LINK_FLAGS "${SWIFTSHADER_LINK_FLAGS}")
-
###########################################################
# libbacktrace and boost
###########################################################
diff --git a/src/Common/CMakeLists.txt b/src/Common/CMakeLists.txt
index b41dad7..9b452e8 100644
--- a/src/Common/CMakeLists.txt
+++ b/src/Common/CMakeLists.txt
@@ -62,7 +62,6 @@
set_target_properties(gl_common PROPERTIES
POSITION_INDEPENDENT_CODE 1
FOLDER "SwiftShader GL"
- LINK_FLAGS "${SWIFTSHADER_LINK_FLAGS}"
)
target_include_directories(gl_common
@@ -80,6 +79,11 @@
${ROOT_PROJECT_COMPILE_OPTIONS}
)
+target_link_options(gl_common
+ PUBLIC
+ ${SWIFTSHADER_LINK_FLAGS}
+)
+
target_link_libraries(gl_common
PRIVATE
${ROOT_PROJECT_LINK_LIBRARIES}
diff --git a/src/Device/CMakeLists.txt b/src/Device/CMakeLists.txt
index 3752b1f..2904017 100644
--- a/src/Device/CMakeLists.txt
+++ b/src/Device/CMakeLists.txt
@@ -59,7 +59,6 @@
set_target_properties(vk_device PROPERTIES
POSITION_INDEPENDENT_CODE 1
FOLDER "SwiftShader VK"
- LINK_FLAGS "${SWIFTSHADER_LINK_FLAGS}"
)
target_include_directories(vk_device
@@ -73,6 +72,11 @@
${ROOT_PROJECT_COMPILE_OPTIONS}
)
+target_link_options(vk_device
+ PUBLIC
+ ${SWIFTSHADER_LINK_FLAGS}
+)
+
target_link_libraries(vk_device
PUBLIC
vk_pipeline
diff --git a/src/Main/CMakeLists.txt b/src/Main/CMakeLists.txt
index 5ab1def..214abc9 100644
--- a/src/Main/CMakeLists.txt
+++ b/src/Main/CMakeLists.txt
@@ -61,7 +61,6 @@
set_target_properties(gl_main PROPERTIES
POSITION_INDEPENDENT_CODE 1
FOLDER "SwiftShader GL"
- LINK_FLAGS "${SWIFTSHADER_LINK_FLAGS}"
)
target_include_directories(gl_main
@@ -81,6 +80,11 @@
${ROOT_PROJECT_COMPILE_OPTIONS}
)
+target_link_options(gl_main
+ PUBLIC
+ ${SWIFTSHADER_LINK_FLAGS}
+)
+
target_link_libraries(gl_main
PUBLIC
gl_common
diff --git a/src/OpenGL/common/CMakeLists.txt b/src/OpenGL/common/CMakeLists.txt
index 872ddac..8adf5fd 100644
--- a/src/OpenGL/common/CMakeLists.txt
+++ b/src/OpenGL/common/CMakeLists.txt
@@ -42,7 +42,6 @@
set_target_properties(libGLESCommon PROPERTIES
POSITION_INDEPENDENT_CODE 1
FOLDER "OpenGL"
- LINK_FLAGS "${SWIFTSHADER_LINK_FLAGS}"
PREFIX ""
)
@@ -62,6 +61,11 @@
${ROOT_PROJECT_COMPILE_OPTIONS}
)
+target_link_options(libGLESCommon
+ PUBLIC
+ ${SWIFTSHADER_LINK_FLAGS}
+)
+
target_link_libraries(libGLESCommon
PRIVATE
${ROOT_PROJECT_LINK_LIBRARIES}
diff --git a/src/OpenGL/compiler/CMakeLists.txt b/src/OpenGL/compiler/CMakeLists.txt
index 31dfe7a..d46308f 100644
--- a/src/OpenGL/compiler/CMakeLists.txt
+++ b/src/OpenGL/compiler/CMakeLists.txt
@@ -127,7 +127,6 @@
set_target_properties(GLCompiler PROPERTIES
POSITION_INDEPENDENT_CODE 1
FOLDER "OpenGL"
- LINK_FLAGS "${SWIFTSHADER_LINK_FLAGS}"
)
target_include_directories(GLCompiler
@@ -146,6 +145,11 @@
${ROOT_PROJECT_COMPILE_OPTIONS}
)
+target_link_options(GLCompiler
+ PUBLIC
+ ${SWIFTSHADER_LINK_FLAGS}
+)
+
target_link_libraries(GLCompiler
PRIVATE
${ROOT_PROJECT_LINK_LIBRARIES}
diff --git a/src/OpenGL/libEGL/CMakeLists.txt b/src/OpenGL/libEGL/CMakeLists.txt
index de19295..4a28027 100644
--- a/src/OpenGL/libEGL/CMakeLists.txt
+++ b/src/OpenGL/libEGL/CMakeLists.txt
@@ -59,7 +59,6 @@
POSITION_INDEPENDENT_CODE 1
FOLDER "OpenGL"
PREFIX ""
- LINK_FLAGS "${SWIFTSHADER_LINK_FLAGS}"
RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}"
LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}"
)
@@ -83,6 +82,11 @@
${ROOT_PROJECT_COMPILE_OPTIONS}
)
+target_link_options(libEGL
+ PUBLIC
+ ${SWIFTSHADER_LINK_FLAGS}
+)
+
target_link_libraries(libEGL
PRIVATE
libGLESCommon
diff --git a/src/OpenGL/libGLES_CM/CMakeLists.txt b/src/OpenGL/libGLES_CM/CMakeLists.txt
index 29c81f5..bf0d0ce 100644
--- a/src/OpenGL/libGLES_CM/CMakeLists.txt
+++ b/src/OpenGL/libGLES_CM/CMakeLists.txt
@@ -65,7 +65,6 @@
POSITION_INDEPENDENT_CODE 1
FOLDER "OpenGL"
PREFIX ""
- LINK_FLAGS "${SWIFTSHADER_LINK_FLAGS}"
RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}"
LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}"
)
@@ -90,6 +89,11 @@
${ROOT_PROJECT_COMPILE_OPTIONS}
)
+target_link_options(libGLES_CM
+ PUBLIC
+ ${SWIFTSHADER_LINK_FLAGS}
+)
+
target_link_libraries(libGLES_CM
PRIVATE
libGLESCommon
diff --git a/src/OpenGL/libGLESv2/CMakeLists.txt b/src/OpenGL/libGLESv2/CMakeLists.txt
index ec28912..3b70a00 100644
--- a/src/OpenGL/libGLESv2/CMakeLists.txt
+++ b/src/OpenGL/libGLESv2/CMakeLists.txt
@@ -81,7 +81,6 @@
POSITION_INDEPENDENT_CODE 1
FOLDER "OpenGL"
PREFIX ""
- LINK_FLAGS "${SWIFTSHADER_LINK_FLAGS}"
RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}"
LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}"
)
@@ -106,6 +105,11 @@
${ROOT_PROJECT_COMPILE_OPTIONS}
)
+target_link_options(libGLESv2
+ PUBLIC
+ ${SWIFTSHADER_LINK_FLAGS}
+)
+
target_link_libraries(libGLESv2
PRIVATE
libGLESCommon
diff --git a/src/Pipeline/CMakeLists.txt b/src/Pipeline/CMakeLists.txt
index 1afde4b..5c014ba 100644
--- a/src/Pipeline/CMakeLists.txt
+++ b/src/Pipeline/CMakeLists.txt
@@ -87,7 +87,6 @@
set_target_properties(vk_pipeline PROPERTIES
POSITION_INDEPENDENT_CODE 1
FOLDER "SwiftShader VK"
- LINK_FLAGS "${SWIFTSHADER_LINK_FLAGS}"
)
target_include_directories(vk_pipeline
@@ -103,6 +102,11 @@
${ROOT_PROJECT_COMPILE_OPTIONS}
)
+target_link_options(vk_pipeline
+ PUBLIC
+ ${SWIFTSHADER_LINK_FLAGS}
+)
+
target_link_libraries(vk_pipeline
PUBLIC
vk_base
diff --git a/src/Renderer/CMakeLists.txt b/src/Renderer/CMakeLists.txt
index ae82434..ce3b2bc 100644
--- a/src/Renderer/CMakeLists.txt
+++ b/src/Renderer/CMakeLists.txt
@@ -69,7 +69,6 @@
set_target_properties(gl_renderer PROPERTIES
POSITION_INDEPENDENT_CODE 1
FOLDER "SwiftShader GL"
- LINK_FLAGS "${SWIFTSHADER_LINK_FLAGS}"
)
target_include_directories(gl_renderer
@@ -87,6 +86,11 @@
${ROOT_PROJECT_COMPILE_OPTIONS}
)
+target_link_options(gl_renderer
+ PUBLIC
+ ${SWIFTSHADER_LINK_FLAGS}
+)
+
target_link_libraries(gl_renderer
PUBLIC
gl_shader
diff --git a/src/Shader/CMakeLists.txt b/src/Shader/CMakeLists.txt
index 7d75f55..9d62cd6 100644
--- a/src/Shader/CMakeLists.txt
+++ b/src/Shader/CMakeLists.txt
@@ -53,7 +53,6 @@
set_target_properties(gl_shader PROPERTIES
POSITION_INDEPENDENT_CODE 1
FOLDER "SwiftShader GL"
- LINK_FLAGS "${SWIFTSHADER_LINK_FLAGS}"
)
target_include_directories(gl_shader
@@ -71,6 +70,11 @@
${ROOT_PROJECT_COMPILE_OPTIONS}
)
+target_link_options(gl_shader
+ PUBLIC
+ ${SWIFTSHADER_LINK_FLAGS}
+)
+
target_link_libraries(gl_shader
PUBLIC
gl_main
diff --git a/src/System/CMakeLists.txt b/src/System/CMakeLists.txt
index 09c4f49..24aae13 100644
--- a/src/System/CMakeLists.txt
+++ b/src/System/CMakeLists.txt
@@ -56,7 +56,6 @@
set_target_properties(vk_system PROPERTIES
POSITION_INDEPENDENT_CODE 1
FOLDER "SwiftShader VK"
- LINK_FLAGS "${SWIFTSHADER_LINK_FLAGS}"
)
target_include_directories(vk_system
@@ -68,3 +67,8 @@
PRIVATE
${ROOT_PROJECT_COMPILE_OPTIONS}
)
+
+target_link_options(vk_system
+ PUBLIC
+ ${SWIFTSHADER_LINK_FLAGS}
+)
diff --git a/src/Vulkan/CMakeLists.txt b/src/Vulkan/CMakeLists.txt
index 3ff6ec5..fdd0117 100644
--- a/src/Vulkan/CMakeLists.txt
+++ b/src/Vulkan/CMakeLists.txt
@@ -137,8 +137,6 @@
# have system libraries available, so ensure it does not depend on libc++.so.
list(APPEND VULKAN_LINKER_FLAGS "-static-libstdc++")
endif()
-# Convert list to space-delimited string for LINK_FLAGS
-string(REPLACE ";" " " VULKAN_LINKER_FLAGS "${VULKAN_LINKER_FLAGS}")
add_library(vk_swiftshader SHARED
${VULKAN_SRC_FILES}
@@ -147,7 +145,6 @@
set_target_properties(vk_swiftshader PROPERTIES
POSITION_INDEPENDENT_CODE 1
FOLDER "SwiftShader VK"
- LINK_FLAGS "${SWIFTSHADER_LINK_FLAGS} ${VULKAN_LINKER_FLAGS}"
RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}"
LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}"
)
@@ -169,6 +166,12 @@
$<$<CONFIG:Debug>:"DEBUGGER_WAIT_DIALOG">
)
+target_link_options(vk_swiftshader
+ PRIVATE
+ ${SWIFTSHADER_LINK_FLAGS}
+ ${VULKAN_LINKER_FLAGS}
+)
+
target_link_libraries(vk_swiftshader
PRIVATE
vk_system
diff --git a/src/WSI/CMakeLists.txt b/src/WSI/CMakeLists.txt
index d2eb42c..857019a 100644
--- a/src/WSI/CMakeLists.txt
+++ b/src/WSI/CMakeLists.txt
@@ -60,7 +60,6 @@
set_target_properties(vk_wsi PROPERTIES
POSITION_INDEPENDENT_CODE 1
FOLDER "SwiftShader VK"
- LINK_FLAGS "${SWIFTSHADER_LINK_FLAGS}"
)
target_include_directories(vk_wsi
@@ -74,6 +73,11 @@
${ROOT_PROJECT_COMPILE_OPTIONS}
)
+target_link_options(vk_wsi
+ PUBLIC
+ ${SWIFTSHADER_LINK_FLAGS}
+)
+
target_link_libraries(vk_wsi
PUBLIC
vk_pipeline
diff --git a/tests/GLESUnitTests/CMakeLists.txt b/tests/GLESUnitTests/CMakeLists.txt
index 6ea50a7..688f2c7 100644
--- a/tests/GLESUnitTests/CMakeLists.txt
+++ b/tests/GLESUnitTests/CMakeLists.txt
@@ -33,7 +33,6 @@
set_target_properties(gles-unittests PROPERTIES
FOLDER "Tests"
- LINK_FLAGS "${SWIFTSHADER_LINK_FLAGS}"
RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}"
)
@@ -52,6 +51,11 @@
${ROOT_PROJECT_COMPILE_OPTIONS}
)
+target_link_options(gles-unittests
+ PRIVATE
+ ${SWIFTSHADER_LINK_FLAGS}
+)
+
target_link_libraries(gles-unittests
PRIVATE
libEGL
diff --git a/tests/MathUnitTests/CMakeLists.txt b/tests/MathUnitTests/CMakeLists.txt
index 6b6cfd5..772f8d2 100644
--- a/tests/MathUnitTests/CMakeLists.txt
+++ b/tests/MathUnitTests/CMakeLists.txt
@@ -33,7 +33,6 @@
set_target_properties(math-unittests PROPERTIES
FOLDER "Tests"
- LINK_FLAGS "${SWIFTSHADER_LINK_FLAGS}"
RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}"
)
@@ -42,6 +41,11 @@
${ROOT_PROJECT_COMPILE_OPTIONS}
)
+target_link_options(math-unittests
+ PRIVATE
+ ${SWIFTSHADER_LINK_FLAGS}
+)
+
target_link_libraries(math-unittests
PRIVATE
vk_system
diff --git a/tests/ReactorBenchmarks/CMakeLists.txt b/tests/ReactorBenchmarks/CMakeLists.txt
index 7e80250..c3c8d01 100644
--- a/tests/ReactorBenchmarks/CMakeLists.txt
+++ b/tests/ReactorBenchmarks/CMakeLists.txt
@@ -33,7 +33,6 @@
set_target_properties(ReactorBenchmarks PROPERTIES
FOLDER "Benchmarks"
- LINK_FLAGS "${SWIFTSHADER_LINK_FLAGS}"
RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}"
)
@@ -42,6 +41,11 @@
${ROOT_PROJECT_COMPILE_OPTIONS}
)
+target_link_options(ReactorBenchmarks
+ PRIVATE
+ ${SWIFTSHADER_LINK_FLAGS}
+)
+
target_link_libraries(ReactorBenchmarks
PRIVATE
benchmark::benchmark
diff --git a/tests/ReactorUnitTests/CMakeLists.txt b/tests/ReactorUnitTests/CMakeLists.txt
index f607add..39295f8 100644
--- a/tests/ReactorUnitTests/CMakeLists.txt
+++ b/tests/ReactorUnitTests/CMakeLists.txt
@@ -33,7 +33,6 @@
set_target_properties(ReactorUnitTests PROPERTIES
FOLDER "Tests"
- LINK_FLAGS "${SWIFTSHADER_LINK_FLAGS}"
RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}"
)
@@ -42,6 +41,11 @@
${ROOT_PROJECT_COMPILE_OPTIONS}
)
+target_link_options(ReactorUnitTests
+ PRIVATE
+ ${SWIFTSHADER_LINK_FLAGS}
+)
+
target_link_libraries(ReactorUnitTests
PRIVATE
${Reactor}
diff --git a/tests/SystemBenchmarks/CMakeLists.txt b/tests/SystemBenchmarks/CMakeLists.txt
index 6d37825..d411303 100644
--- a/tests/SystemBenchmarks/CMakeLists.txt
+++ b/tests/SystemBenchmarks/CMakeLists.txt
@@ -33,7 +33,6 @@
set_target_properties(system-benchmarks PROPERTIES
FOLDER "Benchmarks"
- LINK_FLAGS "${SWIFTSHADER_LINK_FLAGS}"
RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}"
)
@@ -42,6 +41,11 @@
${ROOT_PROJECT_COMPILE_OPTIONS}
)
+target_link_options(system-benchmarks
+ PRIVATE
+ ${SWIFTSHADER_LINK_FLAGS}
+)
+
target_link_libraries(system-benchmarks
PRIVATE
benchmark::benchmark
diff --git a/tests/SystemUnitTests/CMakeLists.txt b/tests/SystemUnitTests/CMakeLists.txt
index e080cc0..f6c1f1f 100644
--- a/tests/SystemUnitTests/CMakeLists.txt
+++ b/tests/SystemUnitTests/CMakeLists.txt
@@ -34,7 +34,6 @@
set_target_properties(system-unittests PROPERTIES
FOLDER "Tests"
- LINK_FLAGS "${SWIFTSHADER_LINK_FLAGS}"
RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}"
)
@@ -43,6 +42,11 @@
${ROOT_PROJECT_COMPILE_OPTIONS}
)
+target_link_options(system-unittests
+ PRIVATE
+ ${SWIFTSHADER_LINK_FLAGS}
+)
+
target_link_libraries(system-unittests
PRIVATE
vk_system
diff --git a/tests/VulkanUnitTests/CMakeLists.txt b/tests/VulkanUnitTests/CMakeLists.txt
index 81889ce..8640ccc 100644
--- a/tests/VulkanUnitTests/CMakeLists.txt
+++ b/tests/VulkanUnitTests/CMakeLists.txt
@@ -44,7 +44,6 @@
set_target_properties(vk-unittests PROPERTIES
FOLDER "Tests"
- LINK_FLAGS "${SWIFTSHADER_LINK_FLAGS}"
RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}"
)
@@ -63,6 +62,11 @@
${ROOT_PROJECT_COMPILE_OPTIONS}
)
+target_link_options(vk-unittests
+ PRIVATE
+ ${SWIFTSHADER_LINK_FLAGS}
+)
+
target_link_libraries(vk-unittests
PRIVATE
gtest