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.
45 lines
1.6 KiB
CMake
45 lines
1.6 KiB
CMake
function(set_if_arch_bitness var_name)
|
|
cmake_parse_arguments(
|
|
SIA # prefix
|
|
"" # options
|
|
"ARCH;CASE_16_BIT;CASE_32_BIT;CASE_64_BIT" # single-value args
|
|
"" # multi-value args
|
|
${ARGN})
|
|
|
|
if("${SIA_ARCH}" STREQUAL "avr")
|
|
set("${var_name}" "${SIA_CASE_16_BIT}" PARENT_SCOPE)
|
|
elseif("${SIA_ARCH}" STREQUAL "i386" OR
|
|
"${SIA_ARCH}" STREQUAL "i686" OR
|
|
"${SIA_ARCH}" STREQUAL "x86" OR
|
|
"${SIA_ARCH}" STREQUAL "armv4t" OR
|
|
"${SIA_ARCH}" STREQUAL "armv5" OR
|
|
"${SIA_ARCH}" STREQUAL "armv6" OR
|
|
"${SIA_ARCH}" STREQUAL "armv6m" OR
|
|
"${SIA_ARCH}" STREQUAL "armv7" OR
|
|
"${SIA_ARCH}" STREQUAL "armv7k" OR
|
|
"${SIA_ARCH}" STREQUAL "arm64_32" OR
|
|
"${SIA_ARCH}" STREQUAL "armv7m" OR
|
|
"${SIA_ARCH}" STREQUAL "armv7em" OR
|
|
"${SIA_ARCH}" STREQUAL "armv7s" OR
|
|
"${SIA_ARCH}" STREQUAL "m68k" OR
|
|
"${SIA_ARCH}" STREQUAL "riscv32" OR
|
|
"${SIA_ARCH}" STREQUAL "wasm32" OR
|
|
"${SIA_ARCH}" STREQUAL "powerpc")
|
|
set("${var_name}" "${SIA_CASE_32_BIT}" PARENT_SCOPE)
|
|
elseif("${SIA_ARCH}" STREQUAL "x86_64" OR
|
|
"${SIA_ARCH}" STREQUAL "amd64" OR
|
|
"${SIA_ARCH}" STREQUAL "arm64" OR
|
|
"${SIA_ARCH}" STREQUAL "arm64e" OR
|
|
"${SIA_ARCH}" STREQUAL "aarch64" OR
|
|
"${SIA_ARCH}" STREQUAL "powerpc64" OR
|
|
"${SIA_ARCH}" STREQUAL "powerpc64le" OR
|
|
"${SIA_ARCH}" STREQUAL "s390x" OR
|
|
"${SIA_ARCH}" STREQUAL "riscv64" OR
|
|
"${SIA_ARCH}" STREQUAL "wasm64")
|
|
set("${var_name}" "${SIA_CASE_64_BIT}" PARENT_SCOPE)
|
|
else()
|
|
message(FATAL_ERROR "Unknown architecture: ${SIA_ARCH}")
|
|
endif()
|
|
endfunction()
|
|
|