Files
swift-mirror/stdlib/public/stubs/Unicode/CMakeLists.txt
Carl Peto 3689427834 [AVR] standard library support for AVR
- when compiling embedded cross compile target standard libraries, include AVR
- add 16-bit pointer as a conditional compilation condition and get the void pointer size right for gyb sources
- attempt to fix clang importer not importing __swift_intptr_t correctly on 16 bit platforms
- changed the unit test target to avr-none-none-elf to match the cmake build

[AVR] got the standard library compiling in a somewhat restricted form:

General
- updated the Embedded Runtime
- tweaked CTypes.swift to fix clang import on 16 bit platforms

Strings
- as discussed in https://forums.swift.org/t/stringguts-stringobject-internals-how-to-layout-on-16-bit-platforms/73130, I went for just using the same basic layout in 16 bit as 32 bit but with 16 bit pointers/ints... the conversation is ongoing, I think something more efficient is possible but at least this compiles and will probably work (inefficiently)

Unicode
- the huge arrays of unicode stuff in UnicodeStubs would not compile, so I skipped it for AVR for now.

Synchronization
- disabled building the Synchronization library on AVR for now. It's arguable if it adds value on this platform anyway.
2024-07-16 12:28:27 +01:00

66 lines
1.9 KiB
CMake

# Embedded Swift Unicode library
if(SWIFT_SHOULD_BUILD_EMBEDDED_STDLIB)
add_custom_target(embedded-unicode)
add_dependencies(embedded-libraries embedded-unicode)
foreach(entry ${EMBEDDED_STDLIB_TARGET_TRIPLES})
string(REGEX REPLACE "[ \t]+" ";" list "${entry}")
list(GET list 0 arch)
list(GET list 1 mod)
list(GET list 2 triple)
if("${mod}" MATCHES "-windows-msvc$")
continue()
endif()
if("${arch}" MATCHES "avr")
continue()
endif()
if (SWIFT_HOST_VARIANT STREQUAL "linux")
set(extra_c_compile_flags -ffreestanding)
elseif (SWIFT_HOST_VARIANT STREQUAL "macosx")
set(extra_c_compile_flags -D__MACH__ -D__APPLE__ -ffreestanding)
endif()
set(SWIFT_SDK_embedded_ARCH_${mod}_MODULE "${mod}")
set(SWIFT_SDK_embedded_LIB_SUBDIR "embedded")
set(SWIFT_SDK_embedded_ARCH_${mod}_TRIPLE "${triple}")
add_swift_target_library_single(
embedded-unicode-${mod}
swiftUnicodeDataTables
STATIC
IS_FRAGILE
UnicodeData.cpp
UnicodeGrapheme.cpp
UnicodeNormalization.cpp
UnicodeScalarProps.cpp
UnicodeWord.cpp
C_COMPILE_FLAGS ${extra_c_compile_flags}
MODULE_DIR "${CMAKE_BINARY_DIR}/lib/swift/embedded"
SDK "embedded"
ARCHITECTURE "${mod}"
DEPENDS embedded-stdlib-${mod}
INSTALL_IN_COMPONENT stdlib
)
swift_install_in_component(
TARGETS embedded-unicode-${mod}
DESTINATION "lib/swift/embedded/${mod}"
COMPONENT "stdlib"
)
swift_install_in_component(
FILES "${SWIFTLIB_DIR}/embedded/${mod}/libswiftUnicodeDataTables.a"
DESTINATION "lib/swift/embedded/${mod}/"
COMPONENT "stdlib"
PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
)
set_property(TARGET embedded-unicode-${mod} PROPERTY OSX_ARCHITECTURES "${arch}")
add_dependencies(embedded-unicode embedded-unicode-${mod})
endforeach()
endif()