Skip to content

Commit 5ec82c7

Browse files
authored
Merge pull request #6354 from compnerd/link-search-path
build: introduce and use `swift_target_link_search_directories`
2 parents cd91b7b + 6ab6d3f commit 5ec82c7

File tree

1 file changed

+30
-10
lines changed

1 file changed

+30
-10
lines changed

cmake/modules/AddSwift.cmake

Lines changed: 30 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -293,7 +293,7 @@ endfunction()
293293
function(_add_variant_link_flags)
294294
set(oneValueArgs SDK ARCH BUILD_TYPE ENABLE_ASSERTIONS ANALYZE_CODE_COVERAGE
295295
DEPLOYMENT_VERSION_OSX DEPLOYMENT_VERSION_IOS DEPLOYMENT_VERSION_TVOS DEPLOYMENT_VERSION_WATCHOS
296-
RESULT_VAR_NAME ENABLE_LTO LTO_OBJECT_NAME)
296+
RESULT_VAR_NAME ENABLE_LTO LTO_OBJECT_NAME LIBRARY_SEARCH_DIRECTORIES)
297297
cmake_parse_arguments(LFLAGS
298298
""
299299
"${oneValueArgs}"
@@ -309,6 +309,7 @@ function(_add_variant_link_flags)
309309
endif()
310310

311311
set(result ${${LFLAGS_RESULT_VAR_NAME}})
312+
set(library_search_directories ${${LFLAGS_LIBRARY_SEARCH_DIRECTORIES}})
312313

313314
_add_variant_c_compile_link_flags(
314315
SDK "${LFLAGS_SDK}"
@@ -336,8 +337,9 @@ function(_add_variant_link_flags)
336337
elseif("${LFLAGS_SDK}" STREQUAL "ANDROID")
337338
list(APPEND result
338339
"-ldl"
339-
"-L${SWIFT_ANDROID_PREBUILT_PATH}/lib/gcc/arm-linux-androideabi/${SWIFT_ANDROID_NDK_GCC_VERSION}.x"
340340
"${SWIFT_ANDROID_NDK_PATH}/sources/cxx-stl/llvm-libc++/libs/armeabi-v7a/libc++_shared.so")
341+
list(APPEND library_search_directories
342+
"${SWIFT_ANDROID_PREBUILT_PATH}/lib/gcc/arm-linux-androideabi/${SWIFT_ANDROID_NDK_GCC_VERSION}.x")
341343
else()
342344
list(APPEND result "-lobjc")
343345

@@ -356,13 +358,14 @@ function(_add_variant_link_flags)
356358
endif()
357359

358360
if(NOT "${SWIFT_${LFLAGS_SDK}_ICU_UC}" STREQUAL "")
359-
list(APPEND result "-L${SWIFT_${sdk}_ICU_UC}")
361+
list(APPEND library_search_directories "${SWIFT_${sdk}_ICU_UC}")
360362
endif()
361363
if(NOT "${SWIFT_${LFLAGS_SDK}_ICU_I18N}" STREQUAL "")
362-
list(APPEND result "-L${SWIFT_${sdk}_ICU_I18N}")
364+
list(APPEND library_search_directories "${SWIFT_${sdk}_ICU_I18N}")
363365
endif()
364366

365367
set("${LFLAGS_RESULT_VAR_NAME}" "${result}" PARENT_SCOPE)
368+
set("${LFLAGS_LIBRARY_SEARCH_DIRECTORIES}" "${library_search_directories}" PARENT_SCOPE)
366369
endfunction()
367370

368371
# Look up extra flags for a module that matches a regexp.
@@ -459,6 +462,14 @@ function(_add_swift_lipo_target)
459462
endif()
460463
endfunction()
461464

465+
function(swift_target_link_search_directories target directories)
466+
set(STLD_FLAGS "")
467+
foreach(directory ${directories})
468+
set(STLD_FLAGS " ${CMAKE_LIBRARY_PATH_FLAG}${directory}")
469+
endforeach()
470+
set_property(TARGET ${target} APPEND_STRING PROPERTY LINK_FLAGS ${STLD_FLAGS})
471+
endfunction()
472+
462473
# Add a single variant of a new Swift library.
463474
#
464475
# Usage:
@@ -999,6 +1010,10 @@ function(_add_swift_library_single target name)
9991010
# Don't set PROPERTY COMPILE_FLAGS or LINK_FLAGS directly.
10001011
set(c_compile_flags ${SWIFTLIB_SINGLE_C_COMPILE_FLAGS})
10011012
set(link_flags ${SWIFTLIB_SINGLE_LINK_FLAGS})
1013+
set(library_search_directories
1014+
"${SWIFTLIB_DIR}/${SWIFTLIB_SINGLE_SUBDIR}"
1015+
"${SWIFT_NATIVE_SWIFT_TOOLS_PATH}/../lib/swift/${SWIFTLIB_SINGLE_SUBDIR}"
1016+
"${SWIFT_NATIVE_SWIFT_TOOLS_PATH}/../lib/swift/${SWIFT_SDK_${SWIFTLIB_SINGLE_SDK}_LIB_SUBDIR}")
10021017

10031018
# Add variant-specific flags.
10041019
if(SWIFTLIB_SINGLE_TARGET_LIBRARY)
@@ -1040,6 +1055,7 @@ function(_add_swift_library_single target name)
10401055
DEPLOYMENT_VERSION_TVOS "${SWIFTLIB_DEPLOYMENT_VERSION_TVOS}"
10411056
DEPLOYMENT_VERSION_WATCHOS "${SWIFTLIB_DEPLOYMENT_VERSION_WATCHOS}"
10421057
RESULT_VAR_NAME link_flags
1058+
LIBRARY_SEARCH_DIRECTORIES library_search_directories
10431059
)
10441060

10451061
if(SWIFT_ENABLE_GOLD_LINKER AND
@@ -1092,7 +1108,8 @@ function(_add_swift_library_single target name)
10921108
set_property(TARGET "${target}" APPEND_STRING PROPERTY
10931109
COMPILE_FLAGS " ${c_compile_flags}")
10941110
set_property(TARGET "${target}" APPEND_STRING PROPERTY
1095-
LINK_FLAGS " ${link_flags} -L${SWIFTLIB_DIR}/${SWIFTLIB_SINGLE_SUBDIR} -L${SWIFT_NATIVE_SWIFT_TOOLS_PATH}/../lib/swift/${SWIFTLIB_SINGLE_SUBDIR} -L${SWIFT_NATIVE_SWIFT_TOOLS_PATH}/../lib/swift/${SWIFT_SDK_${SWIFTLIB_SINGLE_SDK}_LIB_SUBDIR}")
1111+
LINK_FLAGS " ${link_flags}")
1112+
swift_target_link_search_directories(${target} ${library_search_directories})
10961113

10971114
# Adjust the linked libraries for windows targets. On Windows, the link is
10981115
# performed against the import library, and the runtime uses the dll. Not
@@ -1144,8 +1161,12 @@ function(_add_swift_library_single target name)
11441161
if(target_static)
11451162
set_property(TARGET "${target_static}" APPEND_STRING PROPERTY
11461163
COMPILE_FLAGS " ${c_compile_flags}")
1147-
set_property(TARGET "${target_static}" APPEND_STRING PROPERTY
1148-
LINK_FLAGS " ${link_flags} -L${SWIFTSTATICLIB_DIR}/${SWIFTLIB_SINGLE_SUBDIR} -L${SWIFT_NATIVE_SWIFT_TOOLS_PATH}/../lib/swift/${SWIFTLIB_SINGLE_SUBDIR} -L${SWIFT_NATIVE_SWIFT_TOOLS_PATH}/../lib/swift/${SWIFT_SDK_${SWIFTLIB_SINGLE_SDK}_LIB_SUBDIR}")
1164+
set(library_search_directories
1165+
"${SWIFTSTATICLIB_DIR}/${SWIFTLIB_SINGLE_SUBDIR}"
1166+
"${SWIFT_NATIVE_SWIFT_TOOLS_PATH}/../lib/swift/${SWIFTLIB_SINGLE_SUBDIR}"
1167+
"${SWIFT_NATIVE_SWIFT_TOOLS_PATH}/../lib/swift/${SWIFT_SDK_${SWIFTLIB_SINGLE_SDK}_LIB_SUBDIR}")
1168+
swift_target_link_search_directories(${target_static}
1169+
${library_search_directories})
11491170
target_link_libraries("${target_static}" PRIVATE
11501171
${SWIFTLIB_SINGLE_PRIVATE_LINK_LIBRARIES})
11511172
endif()
@@ -1784,9 +1805,6 @@ function(_add_swift_executable_single name)
17841805
ANALYZE_CODE_COVERAGE "${SWIFT_ANALYZE_CODE_COVERAGE}"
17851806
RESULT_VAR_NAME link_flags)
17861807

1787-
list(APPEND link_flags
1788-
"-L${SWIFTLIB_DIR}/${SWIFT_SDK_${SWIFTEXE_SINGLE_SDK}_LIB_SUBDIR}")
1789-
17901808
if(SWIFTEXE_SINGLE_DISABLE_ASLR)
17911809
list(APPEND link_flags "-Wl,-no_pie")
17921810
endif()
@@ -1852,6 +1870,8 @@ function(_add_swift_executable_single name)
18521870

18531871
set_property(TARGET ${name} APPEND_STRING PROPERTY
18541872
COMPILE_FLAGS " ${c_compile_flags}")
1873+
swift_target_link_search_directories(${name}
1874+
"${SWIFTLIB_DIR}/${SWIFT_SDK_${SWIFTEXE_SINGLE_SDK}_LIB_SUBDIR}")
18551875
set_property(TARGET ${name} APPEND_STRING PROPERTY
18561876
LINK_FLAGS " ${link_flags}")
18571877
if (SWIFT_PARALLEL_LINK_JOBS)

0 commit comments

Comments
 (0)