|
| 1 | +# This file sets up a CMakeCache for the Pico SDK toolchain build. |
| 2 | + |
| 3 | +set(CMAKE_BUILD_TYPE Release CACHE STRING "") |
| 4 | + |
| 5 | +set(LLVM_TARGETS_TO_BUILD ARM;RISCV CACHE STRING "") |
| 6 | +set(LLVM_ENABLE_PROJECTS clang;lld;llvm CACHE STRING "") |
| 7 | +set(LLVM_ENABLE_RUNTIMES compiler-rt;libcxx;libc CACHE STRING "") |
| 8 | + |
| 9 | +set(CLANG_DEFAULT_CXX_STDLIB libc++ CACHE STRING "") |
| 10 | +set(CLANG_DEFAULT_LINKER lld CACHE STRING "") |
| 11 | +set(CLANG_DEFAULT_RTLIB compiler-rt CACHE STRING "") |
| 12 | + |
| 13 | +set(LLVM_INSTALL_TOOLCHAIN_ONLY ON CACHE BOOL "") |
| 14 | +set(LLVM_TOOLCHAIN_TOOLS |
| 15 | + llvm-ar |
| 16 | + llvm-cov |
| 17 | + llvm-objcopy |
| 18 | + llvm-objdump |
| 19 | + llvm-profdata |
| 20 | + llvm-ranlib |
| 21 | + llvm-readelf |
| 22 | + llvm-readobj |
| 23 | + llvm-size |
| 24 | + llvm-strings |
| 25 | + llvm-strip |
| 26 | + llvm-symbolizer |
| 27 | + CACHE STRING "") |
| 28 | +set(LLVM_DISTRIBUTION_COMPONENTS |
| 29 | + builtins |
| 30 | + clang |
| 31 | + clang-resource-headers |
| 32 | + lld |
| 33 | + runtimes |
| 34 | + ${LLVM_TOOLCHAIN_TOOLS} |
| 35 | + CACHE STRING "") |
| 36 | + |
| 37 | +# TODO: Switch to newhdrgen for LLVM libc |
| 38 | +set(LLVM_LIBC_FULL_BUILD ON CACHE BOOL "") |
| 39 | +set(LIBC_HDRGEN_ONLY ON CACHE BOOL "") |
| 40 | + |
| 41 | +set(LLVM_BUILTIN_TARGETS armv8m.main-none-eabi;riscv32-unknown-elf CACHE STRING "") |
| 42 | +foreach(target ${LLVM_BUILTIN_TARGETS}) |
| 43 | + set(BUILTINS_${target}_CMAKE_SYSTEM_NAME Generic CACHE STRING "") |
| 44 | + set(BUILTINS_${target}_CMAKE_BUILD_TYPE MinSizeRel CACHE STRING "") |
| 45 | + set(BUILTINS_${target}_COMPILER_RT_BAREMETAL_BUILD ON CACHE BOOL "") |
| 46 | +endforeach() |
| 47 | + |
| 48 | +set(BUILTINS_armv8m.main-none-eabi_CMAKE_SYSTEM_PROCESSOR arm CACHE STRING "") |
| 49 | +set(BUILTINS_riscv32-unknown-elf_CMAKE_SYSTEM_PROCESSOR RISCV CACHE STRING "") |
| 50 | +foreach(lang C;CXX;ASM) |
| 51 | + set(BUILTINS_armv8m.main-none-eabi_CMAKE_${lang}_FLAGS "-march=armv8m.main+fp+dsp -mcpu=cortex-m33 -mfloat-abi=softfp" CACHE STRING "") |
| 52 | + set(BUILTINS_riscv32-unknown-elf_CMAKE_${lang}_FLAGS "-march=rv32imac_zicsr_zifencei_zba_zbb_zbs_zbkb -mabi=ilp32" CACHE STRING "") |
| 53 | +endforeach() |
| 54 | + |
| 55 | +set(LLVM_RUNTIME_TARGETS armv8m.main-none-eabi;riscv32-unknown-elf CACHE STRING "") |
| 56 | +foreach(target ${LLVM_RUNTIME_TARGETS}) |
| 57 | + set(RUNTIMES_${target}_CMAKE_SYSTEM_NAME Generic CACHE STRING "") |
| 58 | + set(RUNTIMES_${target}_CMAKE_BUILD_TYPE MinSizeRel CACHE STRING "") |
| 59 | + set(RUNTIMES_${target}_CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY CACHE STRING "") |
| 60 | + set(RUNTIMES_${target}_LLVM_ENABLE_RUNTIMES libc;libcxx CACHE STRING "") |
| 61 | + set(RUNTIMES_${target}_LLVM_ENABLE_ASSERTIONS OFF CACHE BOOL "") |
| 62 | + set(RUNTIMES_${target}_LLVM_INCLUDE_TESTS OFF CACHE BOOL "") |
| 63 | + set(RUNTIMES_${target}_LLVM_LIBC_FULL_BUILD ON CACHE BOOL "") |
| 64 | + set(RUNTIMES_${target}_LIBC_ENABLE_USE_BY_CLANG ON CACHE BOOL "") |
| 65 | + # TODO: Switch to newhdrgen for LLVM libc |
| 66 | + set(RUNTIMES_${target}_LIBC_USE_NEW_HEADER_GEN OFF CACHE BOOL "") |
| 67 | + set(RUNTIMES_${target}_LIBCXX_CXX_ABI none CACHE STRING "") |
| 68 | + set(RUNTIMES_${target}_LIBCXX_LIBC llvm-libc CACHE STRING "") |
| 69 | + set(RUNTIMES_${target}_LIBCXX_ENABLE_SHARED OFF CACHE BOOL "") |
| 70 | + set(RUNTIMES_${target}_LIBCXX_ENABLE_FILESYSTEM OFF CACHE BOOL "") |
| 71 | + set(RUNTIMES_${target}_LIBCXX_ENABLE_RANDOM_DEVICE OFF CACHE BOOL "") |
| 72 | + set(RUNTIMES_${target}_LIBCXX_ENABLE_LOCALIZATION OFF CACHE BOOL "") |
| 73 | + set(RUNTIMES_${target}_LIBCXX_ENABLE_UNICODE OFF CACHE BOOL "") |
| 74 | + set(RUNTIMES_${target}_LIBCXX_ENABLE_WIDE_CHARACTERS OFF CACHE BOOL "") |
| 75 | + set(RUNTIMES_${target}_LIBCXX_ENABLE_EXCEPTIONS OFF CACHE BOOL "") |
| 76 | + set(RUNTIMES_${target}_LIBCXX_ENABLE_RTTI OFF CACHE BOOL "") |
| 77 | + set(RUNTIMES_${target}_LIBCXX_ENABLE_THREADS OFF CACHE BOOL "") |
| 78 | + set(RUNTIMES_${target}_LIBCXX_ENABLE_MONOTONIC_CLOCK OFF CACHE BOOL "") |
| 79 | + set(RUNTIMES_${target}_LIBCXX_USE_COMPILER_RT ON CACHE BOOL "") |
| 80 | +endforeach() |
| 81 | + |
| 82 | +set(RUNTIMES_armv8m.main-none-eabi_CMAKE_SYSTEM_PROCESSOR arm CACHE STRING "") |
| 83 | +set(RUNTIMES_riscv32-unknown-elf_CMAKE_SYSTEM_PROCESSOR RISCV CACHE STRING "") |
| 84 | +foreach(lang C;CXX;ASM) |
| 85 | + # TODO: Use timespec_get instead of gettimeofday in libc++ |
| 86 | + # TODO: Use internal logging API instead of fprintf in libc++ |
| 87 | + set(RUNTIMES_armv8m.main-none-eabi_CMAKE_${lang}_FLAGS "-march=armv8m.main+fp+dsp -mcpu=cortex-m33 -mfloat-abi=softfp -Wno-atomic-alignment \"-Dvfprintf(stream, format, vlist)=vprintf(format, vlist)\" \"-Dfprintf(stream, format, ...)=printf(format)\" \"-Dtimeval=struct timeval{int tv_sec; int tv_usec;}\" \"-Dgettimeofday(tv, tz)\" -D_LIBCPP_PRINT=1" CACHE STRING "") |
| 88 | + set(RUNTIMES_riscv32-unknown-elf_CMAKE_${lang}_FLAGS "-march=rv32imac_zicsr_zifencei_zba_zbb_zbs_zbkb -mabi=ilp32 -Wno-atomic-alignment \"-Dvfprintf(stream, format, vlist)=vprintf(format, vlist)\" \"-Dfprintf(stream, format, ...)=printf(format)\" \"-Dtimeval=struct timeval{int tv_sec; int tv_usec;}\" \"-Dgettimeofday(tv, tz)\" -D_LIBCPP_PRINT=1" CACHE STRING "") |
| 89 | +endforeach() |
0 commit comments