1if (NOT TARGET pico_cxx_options)
2    pico_add_library(pico_cxx_options)
3
4    target_sources(pico_cxx_options INTERFACE
5        ${CMAKE_CURRENT_LIST_DIR}/new_delete.cpp
6    )
7
8    # PICO_CMAKE_CONFIG: PICO_CXX_ENABLE_EXCEPTIONS, Enable CXX exception handling, type=bool, default=0, group=pico_cxx_options
9    # PICO_BUILD_DEFINE: PICO_CXX_ENABLE_EXCEPTIONS, value of CMake var PICO_CXX_ENABLE_EXCEPTIONS, type=string, default=0, group=pico_cxx_options
10    if (NOT PICO_CXX_ENABLE_EXCEPTIONS)
11        target_compile_definitions( pico_cxx_options INTERFACE PICO_CXX_ENABLE_EXCEPTIONS=0)
12        target_compile_options( pico_cxx_options INTERFACE $<$<COMPILE_LANGUAGE:CXX>:-fno-exceptions>)
13        target_compile_options( pico_cxx_options INTERFACE $<$<COMPILE_LANGUAGE:CXX>:-fno-unwind-tables>)
14    else()
15        target_compile_definitions( pico_cxx_options INTERFACE PICO_CXX_ENABLE_EXCEPTIONS=1)
16    endif()
17
18    # PICO_CMAKE_CONFIG: PICO_CXX_ENABLE_RTTI, Enable CXX rtti, type=bool, default=0, group=pico_cxx_options
19    if (NOT PICO_CXX_ENABLE_RTTI)
20        target_compile_options( pico_cxx_options INTERFACE $<$<COMPILE_LANGUAGE:CXX>:-fno-rtti>)
21    endif()
22
23    # PICO_CMAKE_CONFIG: PICO_CXX_ENABLE_CXA_ATEXIT, Enable cxa-atexit, type=bool, default=0, group=pico_cxx_options
24    if (NOT PICO_CXX_ENABLE_CXA_ATEXIT)
25        target_compile_options( pico_cxx_options INTERFACE $<$<COMPILE_LANGUAGE:CXX>:-fno-use-cxa-atexit>)
26    endif()
27endif()
28