Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 18 additions & 4 deletions src/rp2_common/pico_clib_interface/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -35,9 +35,23 @@ if (NOT TARGET pico_clib_interface)
pico_mirrored_target_link_libraries(pico_llvm_libc_interface INTERFACE pico_stdio)

if (NOT PICO_CLIB)
# PICO_CMAKE_CONFIG: PICO_CLIB, The C library to use e.g. newlib/picolibc/llvm_libc, type=string, default=based on PICO_COMPILER, group=build, docref=cmake-toolchain-config
set(PICO_CLIB newlib)
endif()

# if no PICO_CLIB specified check for gcc existance of either newlib or picolibc
if(PICO_COMPILER_CC MATCHES "gcc$")
execute_process(
COMMAND ${PICO_COMPILER_CC} -print-file-name=nano.specs
OUTPUT_VARIABLE PICOLIBC_SPECS_PATH
OUTPUT_STRIP_TRAILING_WHITESPACE
)

# nano.specs exists if gcc/clang returns a complete path -> newlib exists
if(EXISTS "${PICOLIBC_SPECS_PATH}")
set(PICO_CLIB "newlib")
else()
# otherwise give picolibc a try
set(PICO_CLIB "picolibc")
endif()
endif()
endif()

target_link_libraries(pico_clib_interface INTERFACE pico_${PICO_CLIB}_interface)
endif()