Skip to content

Commit 480e4a7

Browse files
authored
Swift CMake changes & bugfix
See apple/swift-embedded-examples#59
1 parent 0a2ba56 commit 480e4a7

File tree

1 file changed

+19
-4
lines changed

1 file changed

+19
-4
lines changed

CMakeLists.txt

+19-4
Original file line numberDiff line numberDiff line change
@@ -13,24 +13,39 @@ endif()
1313

1414

1515
set(SWIFT_TARGET "armv6m-none-none-eabi") # default for rp2040
16+
list(APPEND CLANG_ARCH_ABI_FLAGS "-Xcc")
1617

1718
if(PICO_PLATFORM STREQUAL "rp2350-arm-s")
1819
message(STATUS "PICO_PLATFORM is set to rp2350-arm-s, using armv7em")
1920
set(SWIFT_TARGET "armv7em-none-none-eabi")
21+
list(APPEND CLANG_ARCH_ABI_FLAGS "-mfloat-abi=soft")
22+
elseif(PICO_PLATFORM STREQUAL "rp2040")
23+
message(STATUS "PICO_PLATFORM is set to RP2040, using armv6m")
24+
list(APPEND CLANG_ARCH_ABI_FLAGS "-mfloat-abi=soft")
2025
elseif(PICO_PLATFORM STREQUAL "rp2350-riscv")
21-
# Untested, gives PICO-SDK errors when building
22-
message(WARNING "PICO_PLATFORM is set to rp2350-riscv, using riscv32 (untested). It is recommended to use rp2350-arm-s.")
26+
message(STATUS "PICO_PLATFORM is set to rp2350-riscv, using riscv32.")
2327
set(SWIFT_TARGET "riscv32-none-none-eabi")
28+
list(APPEND CLANG_ARCH_ABI_FLAGS "-march=rv32imac_zicsr_zifencei_zba_zbb_zbs_zbkb" "-Xcc" "-mabi=ilp32")
2429
endif()
2530

31+
gather_vars(COMPILE_DEFINITIONS INTERFACE_COMPILE_DEFINITIONS _touched_cd swift-rp2350-lvgl-st7789)
32+
list(REMOVE_DUPLICATES COMPILE_DEFINITIONS)
33+
list(PREPEND COMPILE_DEFINITIONS "") # -Xcc -D
34+
string(REPLACE "$<TARGET_PROPERTY:PICO_TARGET_BINARY_TYPE>" "$<TARGET_PROPERTY:swift-rp2350-lvgl-st7789,PICO_TARGET_BINARY_TYPE>" COMPILE_DEFINITIONS "${COMPILE_DEFINITIONS}")
35+
string(REPLACE ";" " -Xcc -D" COMPILE_DEFINITIONS "${COMPILE_DEFINITIONS}")
36+
37+
file(GENERATE OUTPUT ${CMAKE_BINARY_DIR}/swiftc_flags.txt CONTENT "${COMPILE_DEFINITIONS}")
38+
2639
add_executable(swift-rp2350-lvgl-st7789 hstx_spi_lcd.c)
2740
add_custom_command(
2841
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/_swiftcode.o
2942
COMMAND
3043
${SWIFTC}
31-
-target ${SWIFT_TARGET} -Xcc -mfloat-abi=soft -Xcc -fshort-enums
44+
-target ${SWIFT_TARGET} -Xcc -fshort-enums
45+
@${CMAKE_BINARY_DIR}/swiftc_flags.txt
46+
${CLANG_ARCH_ABI_FLAGS}
3247
-Xfrontend -function-sections -enable-experimental-feature Embedded -wmo -parse-as-library
33-
$$\( echo '$<TARGET_PROPERTY:swift-rp2350-lvgl-st7789,INCLUDE_DIRECTORIES>' | tr '\;' '\\n' | sed -e 's/\\\(.*\\\)/-Xcc -I\\1/g' \)
48+
$$\( echo '$<TARGET_PROPERTY:swift-blinky,INCLUDE_DIRECTORIES>' | tr '\;' '\\n' | sed -e 's/\\\(.*\\\)/-Xcc -I\\1/g' \)
3449
$$\( echo '${CMAKE_C_IMPLICIT_INCLUDE_DIRECTORIES}' | tr ' ' '\\n' | sed -e 's/\\\(.*\\\)/-Xcc -I\\1/g' \)
3550
-import-bridging-header ${CMAKE_CURRENT_LIST_DIR}/BridgingHeader.h
3651
${CMAKE_CURRENT_LIST_DIR}/Main.swift

0 commit comments

Comments
 (0)