Skip to content

Commit 3e9e60f

Browse files
committed
Detect PICO_COMPILER automatically when PICO_TOOLCHAIN_PATH is set
1 parent 4836053 commit 3e9e60f

4 files changed

Lines changed: 32 additions & 6 deletions

File tree

cmake/pico_pre_load_toolchain.cmake

Lines changed: 23 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,7 @@
11
# PICO_CMAKE_CONFIG: PICO_TOOLCHAIN_PATH, Path to search for compiler, type=string, default=none (i.e. search system paths), group=build, docref=cmake-toolchain-config
2+
if (NOT PICO_TOOLCHAIN_PATH AND DEFINED ENV{PICO_TOOLCHAIN_PATH})
3+
set(PICO_TOOLCHAIN_PATH $ENV{PICO_TOOLCHAIN_PATH})
4+
endif()
25
set(PICO_TOOLCHAIN_PATH "${PICO_TOOLCHAIN_PATH}" CACHE INTERNAL "")
36

47
# Set a default build type if none was specified
@@ -19,13 +22,30 @@ if (CMAKE_BUILD_TYPE STREQUAL "Default")
1922
endif()
2023

2124
if (NOT (DEFINED PICO_COMPILER OR DEFINED CMAKE_TOOLCHAIN_FILE))
22-
if (DEFINED PICO_DEFAULT_COMPILER)
23-
pico_message("Defaulting compiler (PICO_COMPILER) to '${PICO_DEFAULT_COMPILER}' since not specified.")
25+
if (PICO_TOOLCHAIN_PATH)
26+
if (PICO_DEFAULT_GCC_COMPILER)
27+
FILE(GLOB _COMPILER "${PICO_TOOLCHAIN_PATH}/bin/*gcc*")
28+
if (_COMPILER)
29+
set(PICO_COMPILER ${PICO_DEFAULT_GCC_COMPILER})
30+
message("Detected GCC so defaulting PICO_COMPILER to `${PICO_COMPILER}`")
31+
endif()
32+
endif()
33+
if (NOT PICO_COMPILER AND PICO_DEFAULT_CLANG_COMPILER)
34+
FILE(GLOB _COMPILER "${PICO_TOOLCHAIN_PATH}/bin/*llvm*")
35+
if (_COMPILER)
36+
set(PICO_COMPILER ${PICO_DEFAULT_CLANG_COMPILER})
37+
message("Detected Clang/LLVM so defaulting PICO_COMPILER to `${PICO_COMPILER}`")
38+
endif()
39+
endif()
40+
unset(_COMPILER)
41+
endif()
42+
if (NOT PICO_COMPILER AND DEFINED PICO_DEFAULT_COMPILER)
43+
pico_message("Defaulting compiler (PICO_COMPILER) to '${PICO_DEFAULT_COMPILER}' since not specified or detected.")
2444
set(PICO_COMPILER ${PICO_DEFAULT_COMPILER})
2545
endif()
2646
endif ()
2747

28-
# PICO_CMAKE_CONFIG: PICO_COMPILER, Specifies the compiler family to use, type=string, group=build, default=PICO_DEFAULT_COMPILER which is set based on PICO_PLATFORM, docref=cmake-toolchain-config
48+
# PICO_CMAKE_CONFIG: PICO_COMPILER, Specifies the compiler family to use, type=string, group=build, default=autodetected or PICO_DEFAULT_COMPILER which is set based on PICO_PLATFORM, docref=cmake-toolchain-config
2949
# If PICO_COMPILER is specified, set toolchain file to ${PICO_COMPILER}.cmake.
3050
if (DEFINED PICO_COMPILER)
3151
# maintain backwards compatibility with RP2040 SDK compilers
Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,4 @@
1-
set(PICO_DEFAULT_COMPILER "pico_arm_cortex_m0plus_gcc")
1+
set(PICO_DEFAULT_GCC_COMPILER "pico_arm_cortex_m0plus_gcc")
2+
set(PICO_DEFAULT_CLANG_COMPILER "pico_arm_cortex_m0plus_clang")
3+
set(PICO_DEFAULT_COMPILER ${PICO_DEFAULT_GCC_COMPILER})
24
set(PICO_CHIP rp2040)
Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1-
set(PICO_DEFAULT_COMPILER "pico_arm_cortex_m33_gcc")
1+
set(PICO_DEFAULT_GCC_COMPILER "pico_arm_cortex_m33_gcc")
2+
set(PICO_DEFAULT_CLANG_COMPILER "pico_arm_cortex_m33_clang")
3+
set(PICO_DEFAULT_COMPILER ${PICO_DEFAULT_GCC_COMPILER})
24
set(PICO_CHIP rp2350)
35

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1-
set(PICO_DEFAULT_COMPILER "pico_riscv_gcc")
1+
set(PICO_DEFAULT_GCC_COMPILER "pico_riscv_gcc")
2+
#set(PICO_DEFAULT_CLANG_COMPILER ...)
3+
set(PICO_DEFAULT_COMPILER ${PICO_DEFAULT_GCC_COMPILER})
24
set(PICO_CHIP rp2350)
35

0 commit comments

Comments
 (0)