1if (NOT TARGET pico_clib_interface)
2    pico_add_library(pico_clib_interface)
3
4    # ---- newlib ----
5    pico_add_library(pico_newlib_interface)
6
7    target_sources(pico_newlib_interface INTERFACE
8            ${CMAKE_CURRENT_LIST_DIR}/newlib_interface.c
9    )
10
11    # ---- picolibc ----
12
13    pico_add_library(pico_picolibc_interface)
14
15    target_sources(pico_picolibc_interface INTERFACE
16            ${CMAKE_CURRENT_LIST_DIR}/picolibc_interface.c
17    )
18
19    # replacing the functions is fine it seems
20    #target_compile_definitions(pico_picolibc_interface INTERFACE
21    #            PICO_STDIO_SHORT_CIRCUIT_CLIB_FUNCS=0
22    #)
23
24    #  ---- llvm_libc ----
25    pico_add_library(pico_llvm_libc_interface)
26
27    target_sources(pico_llvm_libc_interface INTERFACE
28            ${CMAKE_CURRENT_LIST_DIR}/llvm_libc_interface.c
29    )
30
31    target_include_directories(pico_llvm_libc_interface SYSTEM INTERFACE
32            ${CMAKE_CURRENT_LIST_DIR}/include/llvm_libc
33    )
34    target_link_libraries(pico_llvm_libc_interface INTERFACE pico_atomic)
35    pico_mirrored_target_link_libraries(pico_llvm_libc_interface INTERFACE pico_stdio)
36
37    if (NOT PICO_CLIB)
38        set(PICO_CLIB newlib)
39    endif()
40
41    target_link_libraries(pico_clib_interface INTERFACE pico_${PICO_CLIB}_interface)
42endif()
43