Skip to content

Commit cbb0347

Browse files
Merge pull request #80994 from ian-twilightcoder/embedded-builtin_float
[6.2][embedded] Build the _Builtin_float overlay in embedded Swift mode
2 parents 1179906 + b523649 commit cbb0347

File tree

2 files changed

+54
-3
lines changed

2 files changed

+54
-3
lines changed

stdlib/public/ClangOverlays/CMakeLists.txt

+53-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,12 @@
11
if(NOT DEFINED SWIFT_BUILD_CLANG_OVERLAYS_SKIP_BUILTIN_FLOAT OR NOT SWIFT_BUILD_CLANG_OVERLAYS_SKIP_BUILTIN_FLOAT)
2+
set(BUILTIN_FLOAT_SOURCES
3+
linker-support/magic-symbols-for-install-name.c
4+
)
5+
6+
set(BUILTIN_FLOAT_GYB_SOURCES
7+
float.swift.gyb
8+
)
9+
210
if(CMAKE_SYSTEM_NAME STREQUAL "Darwin")
311
set(BUILTIN_FLOAT_SWIFT_FLAGS -Xfrontend -module-abi-name -Xfrontend Darwin)
412
else()
@@ -9,10 +17,10 @@ if(NOT DEFINED SWIFT_BUILD_CLANG_OVERLAYS_SKIP_BUILTIN_FLOAT OR NOT SWIFT_BUILD_
917
${SWIFT_STDLIB_LIBRARY_BUILD_TYPES}
1018
IS_SDK_OVERLAY
1119

12-
linker-support/magic-symbols-for-install-name.c
20+
${BUILTIN_FLOAT_SOURCES}
1321

1422
GYB_SOURCES
15-
float.swift.gyb
23+
${BUILTIN_FLOAT_GYB_SOURCES}
1624

1725
SWIFT_COMPILE_FLAGS
1826
${SWIFT_RUNTIME_SWIFT_COMPILE_FLAGS}
@@ -24,4 +32,47 @@ if(NOT DEFINED SWIFT_BUILD_CLANG_OVERLAYS_SKIP_BUILTIN_FLOAT OR NOT SWIFT_BUILD_
2432

2533
INSTALL_IN_COMPONENT stdlib
2634
MACCATALYST_BUILD_FLAVOR zippered)
35+
36+
# Embedded clang overlays - embedded libraries are built as .swiftmodule only,
37+
# i.e. there is no .o or .a file produced (no binary code is actually produced)
38+
# and only users of a library are going to actually compile any needed code.
39+
if(SWIFT_SHOULD_BUILD_EMBEDDED_STDLIB)
40+
add_custom_target(embedded-builtin_float)
41+
add_dependencies(embedded-libraries embedded-builtin_float)
42+
43+
foreach(entry ${EMBEDDED_STDLIB_TARGET_TRIPLES})
44+
string(REGEX REPLACE "[ \t]+" ";" list "${entry}")
45+
list(GET list 0 arch)
46+
list(GET list 1 mod)
47+
list(GET list 2 triple)
48+
49+
set(SWIFT_SDK_embedded_ARCH_${arch}_MODULE "${mod}")
50+
set(SWIFT_SDK_embedded_LIB_SUBDIR "embedded")
51+
set(SWIFT_SDK_embedded_ARCH_${arch}_TRIPLE "${triple}")
52+
set(SWIFT_SDK_embedded_PATH ${SWIFT_SDK_OSX_PATH})
53+
set(SWIFT_SDK_embedded_ARCH_${arch}_PATH ${SWIFT_SDK_OSX_PATH})
54+
set(SWIFT_SDK_embedded_USE_ISYSROOT TRUE)
55+
add_swift_target_library_single(
56+
embedded-builtin_float-${mod}
57+
swift_Builtin_float
58+
ONLY_SWIFTMODULE
59+
IS_FRAGILE
60+
61+
${BUILTIN_FLOAT_SOURCES}
62+
GYB_SOURCES
63+
${BUILTIN_FLOAT_GYB_SOURCES}
64+
65+
SWIFT_COMPILE_FLAGS
66+
${BUILTIN_FLOAT_SWIFT_FLAGS}
67+
-Xcc -ffreestanding -enable-experimental-feature Embedded
68+
69+
MODULE_DIR "${CMAKE_BINARY_DIR}/lib/swift/embedded"
70+
SDK "embedded"
71+
ARCHITECTURE "${arch}"
72+
DEPENDS embedded-stdlib-${mod}
73+
INSTALL_IN_COMPONENT stdlib
74+
)
75+
add_dependencies(embedded-builtin_float embedded-builtin_float-${mod})
76+
endforeach()
77+
endif()
2778
endif()

stdlib/public/ClangOverlays/float.swift.gyb

+1-1
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ public let FLT_RADIX = Double.radix
1818

1919
%for type, prefix in [('Float', 'FLT'), ('Double', 'DBL'), ('Float80', 'LDBL')]:
2020
% if type == "Float80":
21-
#if !os(Android) && !os(WASI) && !os(Windows) && (arch(i386) || arch(x86_64))
21+
#if !os(Android) && !os(WASI) && !os(Windows) && !$Embedded && (arch(i386) || arch(x86_64))
2222
% end
2323
// Where does the 1 come from? C counts the usually-implicit leading
2424
// significand bit, but Swift does not. Neither is really right or wrong.

0 commit comments

Comments
 (0)