Skip to content

Commit efa526e

Browse files
authored
Merge pull request #29451 from compnerd/someone-else-can-do-it
build: use modern target property handling
2 parents e8b00a1 + d8b3b62 commit efa526e

File tree

4 files changed

+46
-63
lines changed

4 files changed

+46
-63
lines changed

cmake/modules/AddSwift.cmake

Lines changed: 37 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -702,14 +702,6 @@ function(_add_swift_lipo_target)
702702
endif()
703703
endfunction()
704704

705-
function(swift_target_link_search_directories target directories)
706-
set(STLD_FLAGS "")
707-
foreach(directory ${directories})
708-
set(STLD_FLAGS "${STLD_FLAGS} \"${CMAKE_LIBRARY_PATH_FLAG}${directory}\"")
709-
endforeach()
710-
set_property(TARGET ${target} APPEND_STRING PROPERTY LINK_FLAGS ${STLD_FLAGS})
711-
endfunction()
712-
713705
# Add a single variant of a new Swift library.
714706
#
715707
# Usage:
@@ -886,22 +878,10 @@ function(_add_swift_library_single target name)
886878
if(SWIFT_EMBED_BITCODE_SECTION AND NOT SWIFTLIB_SINGLE_DONT_EMBED_BITCODE)
887879
if("${SWIFTLIB_SINGLE_SDK}" STREQUAL "IOS" OR "${SWIFTLIB_SINGLE_SDK}" STREQUAL "TVOS" OR "${SWIFTLIB_SINGLE_SDK}" STREQUAL "WATCHOS")
888880
list(APPEND SWIFTLIB_SINGLE_C_COMPILE_FLAGS "-fembed-bitcode")
889-
list(APPEND SWIFTLIB_SINGLE_LINK_FLAGS "-Xlinker" "-bitcode_bundle" "-Xlinker" "-lto_library" "-Xlinker" "${LLVM_LIBRARY_DIR}/libLTO.dylib")
890-
# If we are asked to hide symbols, pass the obfuscation flag to libLTO.
891-
if (SWIFT_EMBED_BITCODE_SECTION_HIDE_SYMBOLS)
892-
list(APPEND SWIFTLIB_SINGLE_LINK_FLAGS "-Xlinker" "-bitcode_hide_symbols")
893-
endif()
894881
set(embed_bitcode_arg EMBED_BITCODE)
895882
endif()
896883
endif()
897884

898-
if(${SWIFTLIB_SINGLE_SDK} IN_LIST SWIFT_APPLE_PLATFORMS)
899-
list(APPEND SWIFTLIB_SINGLE_LINK_FLAGS "-Xlinker" "-compatibility_version" "-Xlinker" "1")
900-
if (SWIFT_COMPILER_VERSION)
901-
list(APPEND SWIFTLIB_SINGLE_LINK_FLAGS "-Xlinker" "-current_version" "-Xlinker" "${SWIFT_COMPILER_VERSION}" )
902-
endif()
903-
endif()
904-
905885
if(XCODE)
906886
string(REGEX MATCHALL "/[^/]+" split_path ${CMAKE_CURRENT_SOURCE_DIR})
907887
list(GET split_path -1 dir)
@@ -1433,17 +1413,32 @@ function(_add_swift_library_single target name)
14331413
set(PLIST_INFO_BUILD_VERSION)
14341414
endif()
14351415

1436-
# Convert variables to space-separated strings.
1437-
_list_escape_for_shell("${c_compile_flags}" c_compile_flags)
1438-
_list_escape_for_shell("${link_flags}" link_flags)
1439-
14401416
# Set compilation and link flags.
1441-
set_property(TARGET "${target}" APPEND_STRING PROPERTY
1442-
COMPILE_FLAGS " ${c_compile_flags}")
1443-
set_property(TARGET "${target}" APPEND_STRING PROPERTY
1444-
LINK_FLAGS " ${link_flags}")
1445-
set_property(TARGET "${target}" APPEND PROPERTY LINK_LIBRARIES ${link_libraries})
1446-
swift_target_link_search_directories("${target}" "${library_search_directories}")
1417+
target_compile_options(${target} PRIVATE
1418+
${c_compile_flags})
1419+
target_link_options(${target} PRIVATE
1420+
${link_flags})
1421+
if(${SWIFTLIB_SINGLE_SDK} IN_LIST SWIFT_APPLE_PLATFORMS)
1422+
target_link_options(${target} PRIVATE
1423+
"LINKER:-compatibility_version,1")
1424+
if(SWIFT_COMPILER_VERSION)
1425+
target_link_options(${target} PRIVATE
1426+
"LINKER:-current_version,${SWIFT_COMPILER_VERSION}")
1427+
endif()
1428+
# Include LLVM Bitcode slices for iOS, Watch OS, and Apple TV OS device libraries.
1429+
if(SWIFT_EMBED_BITCODE_SECTION AND NOT SWIFTLIB_SINGLE_DONT_EMBED_BITCODE)
1430+
if(${SWIFTLIB_SINGLE_SDK} MATCHES "(I|TV|WATCH)OS")
1431+
target_link_options(${target} PRIVATE
1432+
"LINKER:-bitcode_bundle"
1433+
$<$<BOOL:SWIFT_EMBED_BITCODE_SECTION_HIDE_SYMBOLS>:"LINKER:-bitcode_hide_symbols">
1434+
"LINKER:-lto_library,${LLVM_LIBRARY_DIR}/libLTO.dylib")
1435+
endif()
1436+
endif()
1437+
endif()
1438+
target_link_libraries(${target} PRIVATE
1439+
${link_libraries})
1440+
target_link_directories(${target} PRIVATE
1441+
${library_search_directories})
14471442

14481443
# Adjust the linked libraries for windows targets. On Windows, the link is
14491444
# performed against the import library, and the runtime uses the dll. Not
@@ -1493,8 +1488,8 @@ function(_add_swift_library_single target name)
14931488
endif()
14941489

14951490
if(target_static)
1496-
set_property(TARGET "${target_static}" APPEND_STRING PROPERTY
1497-
COMPILE_FLAGS " ${c_compile_flags}")
1491+
target_link_options(${target_static} PRIVATE
1492+
${c_compile_flags})
14981493
# FIXME: The fallback paths here are going to be dynamic libraries.
14991494

15001495
if(SWIFTLIB_INSTALL_WITH_SHARED)
@@ -1506,7 +1501,8 @@ function(_add_swift_library_single target name)
15061501
"${search_base_dir}/${SWIFTLIB_SINGLE_SUBDIR}"
15071502
"${SWIFT_NATIVE_SWIFT_TOOLS_PATH}/../lib/swift/${SWIFTLIB_SINGLE_SUBDIR}"
15081503
"${SWIFT_NATIVE_SWIFT_TOOLS_PATH}/../lib/swift/${SWIFT_SDK_${SWIFTLIB_SINGLE_SDK}_LIB_SUBDIR}")
1509-
swift_target_link_search_directories("${target_static}" "${library_search_directories}")
1504+
target_link_directories(${target_static} PRIVATE
1505+
${library_search_directories})
15101506
target_link_libraries("${target_static}" PRIVATE
15111507
${SWIFTLIB_SINGLE_PRIVATE_LINK_LIBRARIES})
15121508
endif()
@@ -2600,16 +2596,14 @@ function(_add_swift_executable_single name)
26002596
${SWIFTEXE_SINGLE_DEPENDS})
26012597
llvm_update_compile_flags("${name}")
26022598

2603-
# Convert variables to space-separated strings.
2604-
_list_escape_for_shell("${c_compile_flags}" c_compile_flags)
2605-
_list_escape_for_shell("${link_flags}" link_flags)
2606-
2607-
set_property(TARGET ${name} APPEND_STRING PROPERTY
2608-
COMPILE_FLAGS " ${c_compile_flags}")
2609-
swift_target_link_search_directories("${name}" "${library_search_directories}")
2610-
set_property(TARGET ${name} APPEND_STRING PROPERTY
2611-
LINK_FLAGS " ${link_flags}")
2612-
set_property(TARGET ${name} APPEND PROPERTY LINK_LIBRARIES ${link_libraries})
2599+
target_compile_options(${name} PRIVATE
2600+
${c_compile_flags})
2601+
target_link_directories(${name} PRIVATE
2602+
${library_search_directories})
2603+
target_link_options(${name} PRIVATE
2604+
${link_flags})
2605+
target_link_libraries(${name} PRIVATE
2606+
${link_libraries})
26132607
if (SWIFT_PARALLEL_LINK_JOBS)
26142608
set_property(TARGET ${name} PROPERTY JOB_POOL_LINK swift_link_job_pool)
26152609
endif()

cmake/modules/SwiftList.cmake

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -38,15 +38,6 @@ function(_list_add_string_suffix input_list suffix result_var_name)
3838
set("${result_var_name}" "${result}" PARENT_SCOPE)
3939
endfunction()
4040

41-
function(_list_escape_for_shell input_list result_var_name)
42-
set(result "")
43-
foreach(element ${input_list})
44-
string(REPLACE " " "\\ " element "${element}")
45-
set(result "${result}${element} ")
46-
endforeach()
47-
set("${result_var_name}" "${result}" PARENT_SCOPE)
48-
endfunction()
49-
5041
function(list_replace input_list old new)
5142
set(replaced_list)
5243
foreach(item ${${input_list}})

lib/SymbolGraphGen/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ add_swift_host_library(swiftSymbolGraphGen STATIC
77
SymbolGraphGen.cpp
88
SymbolGraphASTWalker.cpp)
99

10-
target_link_libraries(swiftSymbolGraphGen
10+
target_link_libraries(swiftSymbolGraphGen PRIVATE
1111
swiftAST
1212
swiftFrontend
1313
swiftMarkup)

tools/SourceKit/cmake/modules/AddSwiftSourceKit.cmake

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -70,17 +70,15 @@ function(add_sourcekit_default_compiler_flags target)
7070
LINK_LIBRARIES_VAR_NAME link_libraries
7171
LIBRARY_SEARCH_DIRECTORIES_VAR_NAME library_search_directories)
7272

73-
# Convert variables to space-separated strings.
74-
_list_escape_for_shell("${c_compile_flags}" c_compile_flags)
75-
_list_escape_for_shell("${link_flags}" link_flags)
76-
7773
# Set compilation and link flags.
78-
set_property(TARGET "${target}" APPEND_STRING PROPERTY
79-
COMPILE_FLAGS " ${c_compile_flags} -fblocks")
80-
set_property(TARGET "${target}" APPEND_STRING PROPERTY
81-
LINK_FLAGS " ${link_flags}")
82-
set_property(TARGET "${target}" APPEND PROPERTY LINK_LIBRARIES ${link_libraries})
83-
swift_target_link_search_directories("${target}" "${library_search_directories}")
74+
target_compile_options(${target} PRIVATE
75+
-fblocks)
76+
target_link_options(${target} PRIVATE
77+
${link_flags})
78+
target_link_directories(${target} PRIVATE
79+
${library_search_directories})
80+
target_link_libraries(${target} PRIVATE
81+
${link_libraries})
8482
endfunction()
8583

8684
# Add a new SourceKit library.

0 commit comments

Comments
 (0)