mirror of
https://github.com/raspberrypi/pico-sdk.git
synced 2025-08-07 17:02:52 +03:00
* miscellaneous cleanup: * cleanup some #ifdefs which were slightly hacky when RP2350 was added; use HAS_ flags in preference to PICO_RP2040/RP2350 * make some dependencies more explicit - i.e. compile if the user doesn't want to include certain libraries * cleanup some directory A -> directory B relative path names in CMakeLists.txt to be SDK root -> directory B
114 lines
4.3 KiB
CMake
114 lines
4.3 KiB
CMake
if (NOT TARGET pico_float)
|
|
message("Skipping pico_float_test as pico_float is unavailable on this platform")
|
|
return()
|
|
endif()
|
|
|
|
PROJECT(pico_float_test)
|
|
|
|
|
|
if (PICO_RISCV)
|
|
|
|
# Separate, simpler test: currently we only have a few single-precision
|
|
# routines for RISC-V soft float (and the other tests are a bit
|
|
# AEABI-dependent)
|
|
add_executable(pico_float_test
|
|
pico_float_test_hazard3.c
|
|
)
|
|
target_link_libraries(pico_float_test PRIVATE pico_float pico_stdlib)
|
|
target_include_directories(pico_float_test PRIVATE ${CMAKE_CURRENT_LIST_DIR})
|
|
pico_add_extra_outputs(pico_float_test)
|
|
|
|
# pico_enable_stdio_usb(pico_float_test 1)
|
|
# pico_enable_stdio_uart(pico_float_test 0)
|
|
|
|
else ()
|
|
add_executable(pico_float_test
|
|
pico_float_test.c
|
|
llvm/call_apsr.S
|
|
)
|
|
|
|
add_executable(pico_double_test
|
|
pico_double_test.c
|
|
llvm/call_apsr.S
|
|
)
|
|
|
|
|
|
#todo split out variants with different flags
|
|
target_compile_definitions(pico_float_test PRIVATE
|
|
# PICO_FLOAT_PROPAGATE_NANS=1
|
|
# PICO_DIVIDER_DISABLE_INTERRUPTS=1
|
|
)
|
|
|
|
#todo split out variants with different flags
|
|
target_compile_definitions(pico_double_test PRIVATE
|
|
PICO_USE_CRT_PRINTF=1 # want full precision output
|
|
PICO_FLOAT_PROPAGATE_NANS=1
|
|
PICO_DOUBLE_PROPAGATE_NANS=1
|
|
#PICO_DIVIDER_DISABLE_INTERRUPTS=1
|
|
)
|
|
if (NOT PICO_CLIB STREQUAL "llvm_libc")
|
|
# raw compiler printf on llvm_libc doesn't currently have floating point
|
|
pico_set_printf_implementation(pico_double_test compiler) # want full precision output
|
|
endif()
|
|
|
|
# handy for testing we aren't pulling in extra stuff
|
|
#target_link_options(pico_float_test PRIVATE -nodefaultlibs)
|
|
|
|
target_include_directories(pico_float_test PRIVATE ${CMAKE_CURRENT_LIST_DIR}/llvm)
|
|
target_link_libraries(pico_float_test pico_float pico_stdlib)
|
|
pico_add_extra_outputs(pico_float_test)
|
|
#pico_set_float_implementation(pico_float_test compiler)
|
|
#pico_set_float_implementation(pico_float_test pico_vfp)
|
|
#pico_set_double_implementation(pico_float_test compiler)
|
|
|
|
target_include_directories(pico_double_test PRIVATE ${CMAKE_CURRENT_LIST_DIR}/llvm)
|
|
target_link_libraries(pico_double_test pico_double pico_stdlib)
|
|
pico_add_extra_outputs(pico_double_test)
|
|
#pico_set_float_implementation(pico_double_test compiler)
|
|
#pico_set_double_implementation(pico_double_test compiler)
|
|
|
|
if (PICO_RP2350 AND NOT PICO_RISCV)
|
|
add_executable(m33
|
|
m33.c
|
|
)
|
|
|
|
target_compile_definitions(m33 PRIVATE
|
|
PICO_USE_CRT_PRINTF=1 # want full precision output
|
|
PICO_FLOAT_PROPAGATE_NANS=1
|
|
PICO_DOUBLE_PROPAGATE_NANS=1
|
|
#PICO_DIVIDER_DISABLE_INTERRUPTS=1
|
|
)
|
|
pico_set_printf_implementation(m33 compiler) # want full precision output
|
|
pico_set_float_implementation(m33 pico)
|
|
pico_set_double_implementation(m33 pico)
|
|
target_link_libraries(m33 pico_double pico_stdlib)
|
|
pico_add_extra_outputs(m33)
|
|
endif()
|
|
|
|
endif()
|
|
|
|
set(FLOAT_TYPES compiler)
|
|
set(DOUBLE_TYPES compiler)
|
|
list(APPEND FLOAT_TYPES pico)
|
|
list(APPEND DOUBLE_TYPES pico)
|
|
if (PICO_RP2350)
|
|
if (NOT PICO_RISCV)
|
|
list(APPEND FLOAT_TYPES pico_vfp pico_dcp)
|
|
endif()
|
|
endif()
|
|
|
|
foreach (FLOAT_TYPE IN LISTS FLOAT_TYPES)
|
|
add_executable(custom_float_funcs_test_${FLOAT_TYPE} custom_float_funcs_test.c)
|
|
pico_set_float_implementation(custom_float_funcs_test_${FLOAT_TYPE} ${FLOAT_TYPE})
|
|
target_link_libraries(custom_float_funcs_test_${FLOAT_TYPE} PRIVATE pico_stdlib)
|
|
pico_add_extra_outputs(custom_float_funcs_test_${FLOAT_TYPE})
|
|
pico_set_printf_implementation(custom_float_funcs_test_${FLOAT_TYPE} compiler)
|
|
endforeach ()
|
|
|
|
foreach (DOUBLE_TYPE IN LISTS DOUBLE_TYPES)
|
|
add_executable(custom_double_funcs_test_${DOUBLE_TYPE} custom_double_funcs_test.c)
|
|
pico_set_double_implementation(custom_double_funcs_test_${DOUBLE_TYPE} ${DOUBLE_TYPE})
|
|
target_link_libraries(custom_double_funcs_test_${DOUBLE_TYPE} PRIVATE pico_stdlib)
|
|
pico_add_extra_outputs(custom_double_funcs_test_${DOUBLE_TYPE})
|
|
pico_set_printf_implementation(custom_double_funcs_test_${DOUBLE_TYPE} compiler)
|
|
endforeach () |