@@ -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