mirror of
https://github.com/apple/swift.git
synced 2025-12-21 12:14:44 +01:00
- 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.
66 lines
1.9 KiB
CMake
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()
|