@@ -30,11 +30,83 @@ file(GENERATE
30
30
CONTENT "${header_content} "
31
31
)
32
32
33
+ # add a link option to wrap the given function name; i.e. -Wl:wrap=FUNCNAME for gcc
34
+ function (pico_wrap_function TARGET FUNCNAME )
35
+ target_link_options (${TARGET} INTERFACE "LINKER:--wrap=${FUNCNAME} " )
36
+ endfunction ()
37
+
38
+ # Following is copied from src/rp2_common/pico_float/CMakeLists.txt
39
+ function (wrap_float_functions TARGET )
40
+ pico_wrap_function (${TARGET} __aeabi_fadd )
41
+ pico_wrap_function (${TARGET} __aeabi_fdiv )
42
+ pico_wrap_function (${TARGET} __aeabi_fmul )
43
+ pico_wrap_function (${TARGET} __aeabi_frsub )
44
+ pico_wrap_function (${TARGET} __aeabi_fsub )
45
+ pico_wrap_function (${TARGET} __aeabi_cfcmpeq )
46
+ pico_wrap_function (${TARGET} __aeabi_cfrcmple )
47
+ pico_wrap_function (${TARGET} __aeabi_cfcmple )
48
+ pico_wrap_function (${TARGET} __aeabi_fcmpeq )
49
+ pico_wrap_function (${TARGET} __aeabi_fcmplt )
50
+ pico_wrap_function (${TARGET} __aeabi_fcmple )
51
+ pico_wrap_function (${TARGET} __aeabi_fcmpge )
52
+ pico_wrap_function (${TARGET} __aeabi_fcmpgt )
53
+ pico_wrap_function (${TARGET} __aeabi_fcmpun )
54
+ pico_wrap_function (${TARGET} __aeabi_i2f )
55
+ pico_wrap_function (${TARGET} __aeabi_l2f )
56
+ pico_wrap_function (${TARGET} __aeabi_ui2f )
57
+ pico_wrap_function (${TARGET} __aeabi_ul2f )
58
+ pico_wrap_function (${TARGET} __aeabi_f2iz )
59
+ pico_wrap_function (${TARGET} __aeabi_f2lz )
60
+ pico_wrap_function (${TARGET} __aeabi_f2uiz )
61
+ pico_wrap_function (${TARGET} __aeabi_f2ulz )
62
+ pico_wrap_function (${TARGET} __aeabi_f2d )
63
+ pico_wrap_function (${TARGET} sqrtf )
64
+ pico_wrap_function (${TARGET} cosf )
65
+ pico_wrap_function (${TARGET} sinf )
66
+ pico_wrap_function (${TARGET} tanf )
67
+ pico_wrap_function (${TARGET} atan2f )
68
+ pico_wrap_function (${TARGET} expf )
69
+ pico_wrap_function (${TARGET} logf )
70
+
71
+ pico_wrap_function (${TARGET} ldexpf )
72
+ pico_wrap_function (${TARGET} copysignf )
73
+ pico_wrap_function (${TARGET} truncf )
74
+ pico_wrap_function (${TARGET} floorf )
75
+ pico_wrap_function (${TARGET} ceilf )
76
+ pico_wrap_function (${TARGET} roundf )
77
+ pico_wrap_function (${TARGET} sincosf ) # gnu
78
+ pico_wrap_function (${TARGET} asinf )
79
+ pico_wrap_function (${TARGET} acosf )
80
+ pico_wrap_function (${TARGET} atanf )
81
+ pico_wrap_function (${TARGET} sinhf )
82
+ pico_wrap_function (${TARGET} coshf )
83
+ pico_wrap_function (${TARGET} tanhf )
84
+ pico_wrap_function (${TARGET} asinhf )
85
+ pico_wrap_function (${TARGET} acoshf )
86
+ pico_wrap_function (${TARGET} atanhf )
87
+ pico_wrap_function (${TARGET} exp2f )
88
+ pico_wrap_function (${TARGET} log2f )
89
+ pico_wrap_function (${TARGET} exp10f )
90
+ pico_wrap_function (${TARGET} log10f )
91
+ pico_wrap_function (${TARGET} powf )
92
+ pico_wrap_function (${TARGET} powintf ) #gnu
93
+ pico_wrap_function (${TARGET} hypotf )
94
+ pico_wrap_function (${TARGET} cbrtf )
95
+ pico_wrap_function (${TARGET} fmodf )
96
+ pico_wrap_function (${TARGET} dremf )
97
+ pico_wrap_function (${TARGET} remainderf )
98
+ pico_wrap_function (${TARGET} remquof )
99
+ pico_wrap_function (${TARGET} expm1f )
100
+ pico_wrap_function (${TARGET} log1pf )
101
+ pico_wrap_function (${TARGET} fmaf )
102
+ endfunction ()
103
+
33
104
# Now, add includes and headers from the Pico SDK
34
105
target_include_directories (mbed-raspberrypi
35
106
INTERFACE
36
107
.
37
108
pico-sdk/src/rp2_common/hardware_adc/include
109
+ pico-sdk/src/rp2_common/hardware_divider/include
38
110
pico-sdk/src/rp2_common/hardware_gpio/include
39
111
pico-sdk/src/rp2_common/hardware_resets/include
40
112
pico-sdk/src/rp2_common/hardware_pwm/include
@@ -54,6 +126,7 @@ target_include_directories(mbed-raspberrypi
54
126
pico-sdk/src/rp2_common/pico_platform/include
55
127
pico-sdk/src/rp2_common/pico_fix/rp2040_usb_device_enumeration/include/
56
128
pico-sdk/src/rp2_common/pico_bootrom/include
129
+ pico-sdk/src/rp2_common/pico_float/include
57
130
pico-sdk/src/rp2_common/hardware_claim/include
58
131
pico-sdk/src/common/pico_sync/include
59
132
pico-sdk/src/common/pico_time/include
@@ -89,6 +162,11 @@ target_sources(mbed-raspberrypi
89
162
pico-sdk/src/common/pico_time/time.c
90
163
pico-sdk/src/common/pico_sync/lock_core.c
91
164
pico-sdk/src/rp2_common/cmsis/stub/CMSIS/Device/RaspberryPi/RP2040/Source/system_RP2040.c
165
+ pico-sdk/src/rp2_common/pico_float/float_aeabi.S
166
+ pico-sdk/src/rp2_common/pico_float/float_init_rom.c
167
+ pico-sdk/src/rp2_common/pico_float/float_math.c
168
+ pico-sdk/src/rp2_common/pico_float/float_v1_rom_shim.S
169
+ pico-sdk/src/rp2_common/hardware_divider/divider.S
92
170
)
93
171
94
172
target_compile_definitions (mbed-raspberrypi
@@ -110,4 +188,7 @@ target_sources(mbed-rp2040
110
188
pico-sdk/src/rp2_common/pico_fix/rp2040_usb_device_enumeration/rp2040_usb_device_enumeration.c
111
189
)
112
190
191
+ # Enable usage of the RPi Pico optimized floating point routines
192
+ wrap_float_functions (mbed-rp2040 )
193
+
113
194
add_subdirectory (TARGET_RP2040 EXCLUDE_FROM_ALL )
0 commit comments