File tree Expand file tree Collapse file tree 5 files changed +97
-3
lines changed Expand file tree Collapse file tree 5 files changed +97
-3
lines changed Original file line number Diff line number Diff line change @@ -99,9 +99,11 @@ endif()
9999add_subdirectory (clang)
100100if (ANDROID)
101101 add_subdirectory (Android)
102- endif ()
103- if (WIN32 )
102+ elseif (WIN32 )
104103 add_subdirectory (Windows)
104+ elseif (LINUX)
105+ defaulted_set(SwiftOverlay_LINUX_LIBC STRING "Select Linux libc flavor. Options are: glibc" )
106+ add_subdirectory ("Linux/${SwiftOverlay_LINUX_LIBC} " )
105107endif ()
106108
107109if (SwiftOverlay_ENABLE_CXX_INTEROP)
Original file line number Diff line number Diff line change 1+ add_subdirectory (clang)
2+
3+ gyb_expand(Glibc.swift.gyb Glibc.swift)
4+ gyb_expand(tgmath.swift.gyb tgmath.swift)
5+
6+ add_library (swiftGlibc
7+ Glibc.swift
8+ POSIXError.swift
9+ Platform.swift
10+ TiocConstants.swift
11+ tgmath.swift)
12+
13+ target_link_libraries (swiftGlibc
14+ PRIVATE
15+ swiftCore
16+ SwiftGlibcClangOverlay)
17+
18+ set_target_properties (swiftGlibc PROPERTIES
19+ Swift_MODULE_NAME Glibc)
20+
21+ target_compile_options (swiftGlibc PRIVATE
22+ "SHELL:-Xcc -fno-omit-frame-pointer"
23+ "SHELL:-Xfrontend -empty-abi-descriptor"
24+ "SHELL:-Xfrontend -prespecialize-generic-metadata"
25+ "SHELL:-Xfrontend -require-explicit-availability=ignore"
26+ "SHELL:-library-level api" )
27+
28+ install (TARGETS swiftGlibc
29+ EXPORT SwiftOverlayTargets
30+ ARCHIVE DESTINATION "${SwiftOverlay_INSTALL_LIBDIR} "
31+ LIBRARY DESTINATION "${SwiftOverlay_INSTALL_LIBDIR} "
32+ RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR} " )
33+ emit_swift_interface(swiftGlibc)
34+ install_swift_interface(swiftGlibc)
35+ embed_manifest(swiftGlibc)
Original file line number Diff line number Diff line change 1+ gyb_expand(glibc.modulemap.gyb glibc.modulemap
2+ FLAGS -DCMAKE_SDK="LINUX" )
3+ gyb_expand(SwiftGlibc.h.gyb SwiftGlibc.h)
4+
5+ file (CONFIGURE
6+ OUTPUT glibc-overlay.yml
7+ CONTENT [==[
8+ ---
9+ version: 0
10+ case-sensitive: false
11+ use-external-names: false
12+ roots:
13+ - name: "/usr/include"
14+ type: directory
15+ contents:
16+ - name: module.modulemap
17+ type: file
18+ external-contents: "@CMAKE_CURRENT_BINARY_DIR@/glibc.modulemap"
19+ - name: SwiftGlibc.h
20+ type: file
21+ external-contents: "@CMAKE_CURRENT_BINARY_DIR@/SwiftGlibc.h"
22+ ]==]
23+ ESCAPE_QUOTES @ONLY NEWLINE_STYLE LF)
24+
25+ add_library (SwiftGlibcClangOverlay INTERFACE
26+ SwiftGlibc.h
27+ glibc.modulemap)
28+ target_compile_options (SwiftGlibcClangOverlay INTERFACE
29+ "$<BUILD_INTERFACE:$<$<COMPILE_LANGUAGE:Swift>:SHELL:-vfsoverlay ${CMAKE_CURRENT_BINARY_DIR} /glibc-overlay.yml>>" )
30+
31+ install (
32+ FILES
33+ "${CMAKE_CURRENT_BINARY_DIR} /glibc.modulemap"
34+ "${CMAKE_CURRENT_BINARY_DIR} /SwiftGlibc.h"
35+ DESTINATION
36+ "${CMAKE_INSTALL_LIBDIR} /swift/${SwiftOverlay_PLATFORM_SUBDIR} /${SwiftOverlay_ARCH_SUBDIR} " )
Original file line number Diff line number Diff line change @@ -30,9 +30,14 @@ if(APPLE)
3030elseif (CMAKE_SYSTEM_NAME STREQUAL "WASM" )
3131 set (SwiftOverlay_ENABLE_REFLECTION_default OFF )
3232 set (SwiftOverlay_ENABLE_CXX_INTEROP_default OFF )
33- elseif (LINUX OR ANDROID OR BSD)
33+ elseif (ANDROID OR BSD)
3434 set (SwiftOverlay_ENABLE_REFLECTION_default OFF )
3535 set (SwiftOverlay_ENABLE_CXX_INTEROP_default OFF )
36+ elseif (LINUX)
37+ # TODO: Enable once we have them building
38+ set (SwiftOverlay_ENABLE_REFLECTION_default OFF )
39+ set (SwiftOverlay_ENABLE_CXX_INTEROP_default OFF )
40+ set (SwiftOverlay_LINUX_LIBC_default "glibc" )
3641elseif (WIN32 )
3742 set (SwiftOverlay_ENABLE_REFLECTION_default ON )
3843 set (SwiftOverlay_ENABLE_CXX_INTEROP_default OFF )
Original file line number Diff line number Diff line change @@ -150,6 +150,22 @@ copy_files(public/Platform Overlay/Android/Math
150150 FILES
151151 Math .swift)
152152
153+ # Linux Glibc Overlay
154+ message (STATUS "Glibc modulemaps[${StdlibSources} /Platform] -> ${CMAKE_CURRENT_LIST_DIR} /Overlay/Linux/glibc/clang" )
155+ copy_files(public /Platform Overlay/Linux/glibc/clang
156+ FILES
157+ glibc.modulemap.gyb
158+ SwiftGlibc.h.gyb)
159+
160+ message (STATUS "Glibc [${StdlibSources} /Platform] -> ${CMAKE_CURRENT_LIST_DIR} /Overlay/Linux/glibc" )
161+ copy_files(public /Platform Overlay/Linux/glibc
162+ FILES
163+ Glibc.swift.gyb
164+ POSIXError.swift
165+ Platform.swift
166+ TiocConstants.swift
167+ tgmath.swift.gyb)
168+
153169# Windows Overlay
154170message (STATUS "WinSDK[${StdlibSources} /public/Windows] -> ${CMAKE_CURRENT_LIST_DIR} /Overlay/Windows/WinSDK" )
155171copy_files(public /Windows Overlay/Windows/WinSDK FILES WinSDK.swift)
You can’t perform that action at this time.
0 commit comments