Skip to content

Commit d771054

Browse files
committed
build: use the new object format property
Simplify the ELF checks based on review comments from Dimitri Gribenko.
1 parent b1978d5 commit d771054

File tree

2 files changed

+36
-50
lines changed

2 files changed

+36
-50
lines changed

cmake/modules/AddSwift.cmake

Lines changed: 4 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -85,16 +85,6 @@ function(is_windows_based_sdk sdk_name out_var)
8585
endif()
8686
endfunction()
8787

88-
function(is_elfish_sdk sdk_name out_var)
89-
is_darwin_based_sdk("${sdk_name}" IS_DARWIN)
90-
is_windows_based_sdk("${sdk_name}" IS_WINDOWS)
91-
if(IS_DARWIN OR IS_WINDOWS)
92-
set(${out_var} FALSE PARENT_SCOPE)
93-
else()
94-
set(${out_var} TRUE PARENT_SCOPE)
95-
endif()
96-
endfunction()
97-
9888
# Usage:
9989
# _add_variant_c_compile_link_flags(
10090
# SDK sdk
@@ -890,8 +880,8 @@ function(_add_swift_library_single target name)
890880
RESULT_VAR_NAME link_flags
891881
)
892882

893-
is_elfish_sdk("${SWIFTLIB_SINGLE_SDK}" IS_ELFISH)
894-
if(SWIFT_ENABLE_GOLD_LINKER AND IS_ELFISH)
883+
if(SWIFT_ENABLE_GOLD_LINKER AND
884+
"${SWIFT_SDK_${SWIFTLIB_SINGLE_SDK}_OBJECT_FORMAT}" STREQUAL "ELF")
895885
list(APPEND link_flags "-fuse-ld=gold")
896886
endif()
897887

@@ -1532,8 +1522,8 @@ function(_add_swift_executable_single name)
15321522
"-Xlinker" "@executable_path/../lib/swift/${SWIFT_SDK_${SWIFTEXE_SINGLE_SDK}_LIB_SUBDIR}")
15331523
endif()
15341524

1535-
is_elfish_sdk("${SWIFTLIB_SINGLE_SDK}" IS_ELFISH)
1536-
if(SWIFT_ENABLE_GOLD_LINKER AND IS_ELFISH)
1525+
if(SWIFT_ENABLE_GOLD_LINKER AND
1526+
"${SWIFT_SDK_${SWIFTEXE_SINGLE_SDK}_OBJECT_FORMAT}" STREQUAL "ELF")
15371527
list(APPEND link_flags "-fuse-ld=gold")
15381528
endif()
15391529

stdlib/public/runtime/CMakeLists.txt

Lines changed: 32 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -84,9 +84,8 @@ add_swift_library(swiftRuntime OBJECT_LIBRARY TARGET_LIBRARY
8484

8585
set(ELFISH_SDKS)
8686
foreach(sdk ${SWIFT_CONFIGURED_SDKS})
87-
is_elfish_sdk("${sdk}" IS_EFLISH)
88-
if(IS_ELFISH)
89-
list(APPEND EFLISH_SDKS "${sdk}")
87+
if("${SWIFT_SDK_${sdk}_OBJECT_FORMAT}" STREQUAL "ELF")
88+
list(APPEND ELFISH_SDKS "${sdk}")
9089
endif()
9190
endforeach()
9291

@@ -102,39 +101,36 @@ add_swift_library(section_magic_end OBJECT_LIBRARY IS_STDLIB IS_STDLIB_CORE
102101
INSTALL_IN_COMPONENT never_install)
103102

104103
set(object_target_list)
105-
foreach(sdk ${SWIFT_CONFIGURED_SDKS})
106-
is_elfish_sdk("${sdk}" IS_ELFISH)
107-
if(IS_ELFISH)
108-
foreach(arch ${SWIFT_SDK_${sdk}_ARCHITECTURES})
109-
set(arch_subdir "${SWIFT_SDK_${sdk}_LIB_SUBDIR}/${arch}")
110-
set(arch_suffix "${SWIFT_SDK_${sdk}_LIB_SUBDIR}-${arch}")
111-
112-
set(section_magic_begin_name "section_magic_begin-${arch_suffix}")
113-
set(section_magic_end_name "section_magic_end-${arch_suffix}")
114-
115-
add_custom_command_target(section_magic_${arch_suffix}_objects
116-
COMMAND
117-
"${CMAKE_COMMAND}" -E copy
118-
"${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/${section_magic_begin_name}.dir/swift_sections.S${CMAKE_C_OUTPUT_EXTENSION}"
119-
"${SWIFTLIB_DIR}/${arch_subdir}/swift_begin.o"
120-
COMMAND
121-
"${CMAKE_COMMAND}" -E copy
122-
"${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/${section_magic_end_name}.dir/swift_sections.S${CMAKE_C_OUTPUT_EXTENSION}"
123-
"${SWIFTLIB_DIR}/${arch_subdir}/swift_end.o"
124-
OUTPUT
125-
"${SWIFTLIB_DIR}/${arch_subdir}/swift_begin.o"
126-
"${SWIFTLIB_DIR}/${arch_subdir}/swift_end.o"
127-
DEPENDS
128-
${section_magic_begin_name}
129-
${section_magic_end_name})
130-
131-
list(APPEND object_target_list "${section_magic_${arch_suffix}_objects}")
132-
133-
swift_install_in_component(stdlib
134-
FILES "${SWIFTLIB_DIR}/${arch_subdir}/swift_begin.o" "${SWIFTLIB_DIR}/${arch_subdir}/swift_end.o"
135-
DESTINATION "lib/swift/${arch_subdir}")
136-
endforeach()
137-
endif()
104+
foreach(sdk ${ELFISH_SDKS})
105+
foreach(arch ${SWIFT_SDK_${sdk}_ARCHITECTURES})
106+
set(arch_subdir "${SWIFT_SDK_${sdk}_LIB_SUBDIR}/${arch}")
107+
set(arch_suffix "${SWIFT_SDK_${sdk}_LIB_SUBDIR}-${arch}")
108+
109+
set(section_magic_begin_name "section_magic_begin-${arch_suffix}")
110+
set(section_magic_end_name "section_magic_end-${arch_suffix}")
111+
112+
add_custom_command_target(section_magic_${arch_suffix}_objects
113+
COMMAND
114+
"${CMAKE_COMMAND}" -E copy
115+
"${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/${section_magic_begin_name}.dir/swift_sections.S${CMAKE_C_OUTPUT_EXTENSION}"
116+
"${SWIFTLIB_DIR}/${arch_subdir}/swift_begin.o"
117+
COMMAND
118+
"${CMAKE_COMMAND}" -E copy
119+
"${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/${section_magic_end_name}.dir/swift_sections.S${CMAKE_C_OUTPUT_EXTENSION}"
120+
"${SWIFTLIB_DIR}/${arch_subdir}/swift_end.o"
121+
OUTPUT
122+
"${SWIFTLIB_DIR}/${arch_subdir}/swift_begin.o"
123+
"${SWIFTLIB_DIR}/${arch_subdir}/swift_end.o"
124+
DEPENDS
125+
${section_magic_begin_name}
126+
${section_magic_end_name})
127+
128+
list(APPEND object_target_list "${section_magic_${arch_suffix}_objects}")
129+
130+
swift_install_in_component(stdlib
131+
FILES "${SWIFTLIB_DIR}/${arch_subdir}/swift_begin.o" "${SWIFTLIB_DIR}/${arch_subdir}/swift_end.o"
132+
DESTINATION "lib/swift/${arch_subdir}")
133+
endforeach()
138134
endforeach()
139135

140136
add_custom_target(section_magic ALL DEPENDS ${object_target_list})

0 commit comments

Comments
 (0)