@@ -127,12 +127,17 @@ macro(pack_precompiled_archive avm_name)
127127endmacro ()
128128
129129macro (pack_lib avm_name)
130+ set (options UF2)
131+ cmake_parse_arguments (PACK_LIB "${options} " "" "" ${ARGN} )
132+
130133 set (pack_lib_${avm_name} _archive_targets "" )
134+ set (pack_lib_${avm_name} _archives "" )
135+ set (pack_lib_${avm_name} _emu_archives "" )
131136 if (NOT AVM_DISABLE_JIT)
132137 set (pack_lib_${avm_name} _archive_targets jit)
133138 endif ()
134139
135- foreach (archive_name ${ARGN } )
140+ foreach (archive_name ${PACK_LIB_UNPARSED_ARGUMENTS } )
136141 if (${archive_name} STREQUAL "exavmlib" )
137142 set (pack_lib_${avm_name} _archives ${pack_lib_${avm_name} _archives} ${CMAKE_BINARY_DIR} /libs/${archive_name} /lib/${archive_name} .avm)
138143 elseif (${archive_name} STREQUAL "estdlib" )
@@ -164,7 +169,7 @@ macro(pack_lib avm_name)
164169 foreach (jit_target_arch_variant ${AVM_PRECOMPILED_TARGETS} )
165170 # Build JIT archives list for this specific target architecture
166171 set (pack_lib_${avm_name} _jit_archives_${jit_target_arch_variant} ${CMAKE_BINARY_DIR} /libs/jit/src/jit-${jit_target_arch_variant} .avm)
167- foreach (archive_name ${ARGN } )
172+ foreach (archive_name ${PACK_LIB_UNPARSED_ARGUMENTS } )
168173 if (${archive_name} STREQUAL "estdlib" )
169174 set (pack_lib_${avm_name} _jit_archives_${jit_target_arch_variant} ${pack_lib_${avm_name} _jit_archives_${jit_target_arch_variant} } ${CMAKE_BINARY_DIR} /libs/${archive_name} /src/${archive_name} -${jit_target_arch_variant} .avm)
170175 endif ()
@@ -180,56 +185,59 @@ macro(pack_lib avm_name)
180185 set (target_deps ${target_deps} ${avm_name} -${jit_target_arch_variant} .avm)
181186 endforeach ()
182187 endif ()
183- add_custom_command (
184- OUTPUT ${avm_name} -pico.uf2
185- DEPENDS ${avm_name} .avm UF2Tool
186- COMMAND ${CMAKE_BINARY_DIR} /tools/uf2tool/uf2tool create -o ${avm_name} -pico.uf2 -s 0x10100000 ${avm_name} .avm
187- COMMENT "Creating UF2 file ${avm_name} .uf2"
188- VERBATIM
189- )
190- add_custom_command (
191- OUTPUT ${avm_name} -pico2.uf2
192- DEPENDS ${avm_name} .avm UF2Tool
193- COMMAND ${CMAKE_BINARY_DIR} /tools/uf2tool/uf2tool create -o ${avm_name} -pico2.uf2 -f data -s 0x10100000 ${avm_name} .avm
194- COMMENT "Creating UF2 file ${avm_name} .uf2"
195- VERBATIM
196- )
197- set (target_deps ${target_deps} ${avm_name} -pico.uf2 ${avm_name} -pico2.uf2)
198188
199- if (( NOT AVM_DISABLE_JIT OR AVM_ENABLE_PRECOMPILED) AND ( "armv6m" IN_LIST AVM_PRECOMPILED_TARGETS) )
189+ if (PACK_LIB_UF2 )
200190 add_custom_command (
201- OUTPUT ${avm_name} -armv6m- pico.uf2
202- DEPENDS ${avm_name} -armv6m .avm UF2Tool
203- COMMAND ${CMAKE_BINARY_DIR} /tools/uf2tool/uf2tool create -o ${avm_name} -armv6m- pico.uf2 -s 0x10100000 ${avm_name} -armv6m .avm
204- COMMENT "Creating UF2 file ${avm_name} -armv6m .uf2"
191+ OUTPUT ${avm_name} -pico.uf2
192+ DEPENDS ${avm_name} .avm UF2Tool
193+ COMMAND ${CMAKE_BINARY_DIR} /tools/uf2tool/uf2tool create -o ${avm_name} -pico.uf2 -s 0x10100000 ${avm_name} .avm
194+ COMMENT "Creating UF2 file ${avm_name} -pico .uf2"
205195 VERBATIM
206196 )
207197 add_custom_command (
208- OUTPUT ${avm_name} -armv6m- pico2.uf2
209- DEPENDS ${avm_name} -armv6m .avm UF2Tool
210- COMMAND ${CMAKE_BINARY_DIR} /tools/uf2tool/uf2tool create -o ${avm_name} -armv6m- pico2.uf2 -f data -s 0x10100000 ${avm_name} -armv6m .avm
211- COMMENT "Creating UF2 file ${avm_name} -armv6m .uf2"
198+ OUTPUT ${avm_name} -pico2.uf2
199+ DEPENDS ${avm_name} .avm UF2Tool
200+ COMMAND ${CMAKE_BINARY_DIR} /tools/uf2tool/uf2tool create -o ${avm_name} -pico2.uf2 -f data -s 0x10100000 ${avm_name} .avm
201+ COMMENT "Creating UF2 file ${avm_name} -pico2 .uf2"
212202 VERBATIM
213203 )
214- set (target_deps ${target_deps} ${avm_name} -armv6m-pico.uf2 ${avm_name} -armv6m-pico2.uf2)
215- endif ()
204+ set (target_deps ${target_deps} ${avm_name} -pico.uf2 ${avm_name} -pico2.uf2)
216205
217- if ((NOT AVM_DISABLE_JIT OR AVM_ENABLE_PRECOMPILED) AND ("armv6m+float32" IN_LIST AVM_PRECOMPILED_TARGETS))
218- add_custom_command (
219- OUTPUT ${avm_name} -armv6m+float32-pico.uf2
220- DEPENDS ${avm_name} -armv6m+float32.avm UF2Tool
221- COMMAND ${CMAKE_BINARY_DIR} /tools/uf2tool/uf2tool create -o ${avm_name} -armv6m+float32-pico.uf2 -s 0x10100000 ${avm_name} -armv6m+float32.avm
222- COMMENT "Creating UF2 file ${avm_name} -armv6m+float32.uf2"
223- VERBATIM
224- )
225- add_custom_command (
226- OUTPUT ${avm_name} -armv6m+float32-pico2.uf2
227- DEPENDS ${avm_name} -armv6m+float32.avm UF2Tool
228- COMMAND ${CMAKE_BINARY_DIR} /tools/uf2tool/uf2tool create -o ${avm_name} -armv6m+float32-pico2.uf2 -f data -s 0x10100000 ${avm_name} -armv6m+float32.avm
229- COMMENT "Creating UF2 file ${avm_name} -armv6m+float32.uf2"
230- VERBATIM
231- )
232- set (target_deps ${target_deps} ${avm_name} -armv6m+float32-pico.uf2 ${avm_name} -armv6m+float32-pico2.uf2)
206+ if ((NOT AVM_DISABLE_JIT OR AVM_ENABLE_PRECOMPILED) AND ("armv6m" IN_LIST AVM_PRECOMPILED_TARGETS))
207+ add_custom_command (
208+ OUTPUT ${avm_name} -armv6m-pico.uf2
209+ DEPENDS ${avm_name} -armv6m.avm UF2Tool
210+ COMMAND ${CMAKE_BINARY_DIR} /tools/uf2tool/uf2tool create -o ${avm_name} -armv6m-pico.uf2 -s 0x10100000 ${avm_name} -armv6m.avm
211+ COMMENT "Creating UF2 file ${avm_name} -armv6m-pico.uf2"
212+ VERBATIM
213+ )
214+ add_custom_command (
215+ OUTPUT ${avm_name} -armv6m-pico2.uf2
216+ DEPENDS ${avm_name} -armv6m.avm UF2Tool
217+ COMMAND ${CMAKE_BINARY_DIR} /tools/uf2tool/uf2tool create -o ${avm_name} -armv6m-pico2.uf2 -f data -s 0x10100000 ${avm_name} -armv6m.avm
218+ COMMENT "Creating UF2 file ${avm_name} -armv6m-pico2.uf2"
219+ VERBATIM
220+ )
221+ set (target_deps ${target_deps} ${avm_name} -armv6m-pico.uf2 ${avm_name} -armv6m-pico2.uf2)
222+ endif ()
223+
224+ if ((NOT AVM_DISABLE_JIT OR AVM_ENABLE_PRECOMPILED) AND ("armv6m+float32" IN_LIST AVM_PRECOMPILED_TARGETS))
225+ add_custom_command (
226+ OUTPUT ${avm_name} -armv6m+float32-pico.uf2
227+ DEPENDS ${avm_name} -armv6m+float32.avm UF2Tool
228+ COMMAND ${CMAKE_BINARY_DIR} /tools/uf2tool/uf2tool create -o ${avm_name} -armv6m+float32-pico.uf2 -s 0x10100000 ${avm_name} -armv6m+float32.avm
229+ COMMENT "Creating UF2 file ${avm_name} -armv6m+float32-pico.uf2"
230+ VERBATIM
231+ )
232+ add_custom_command (
233+ OUTPUT ${avm_name} -armv6m+float32-pico2.uf2
234+ DEPENDS ${avm_name} -armv6m+float32.avm UF2Tool
235+ COMMAND ${CMAKE_BINARY_DIR} /tools/uf2tool/uf2tool create -o ${avm_name} -armv6m+float32-pico2.uf2 -f data -s 0x10100000 ${avm_name} -armv6m+float32.avm
236+ COMMENT "Creating UF2 file ${avm_name} -armv6m+float32-pico2.uf2"
237+ VERBATIM
238+ )
239+ set (target_deps ${target_deps} ${avm_name} -armv6m+float32-pico.uf2 ${avm_name} -armv6m+float32-pico2.uf2)
240+ endif ()
233241 endif ()
234242
235243 add_custom_target (
@@ -261,7 +269,7 @@ macro(pack_runnable avm_name main)
261269 foreach (archive_name ${ARGN} )
262270 if (NOT ${archive_name} STREQUAL "exavmlib" )
263271 set (pack_runnable_${avm_name} _archives ${pack_runnable_${avm_name} _archives} ${CMAKE_BINARY_DIR} /libs/${archive_name} /src/${archive_name} .avm)
264- if (NOT ${archive_name} MATCHES "^eavmlib|estdlib|alisp$" )
272+ if (NOT ${archive_name} MATCHES "^eavmlib|estdlib|alisp|avm_network|avm_esp32|avm_rp2|avm_stm32|avm_emscripten $" )
265273 set (${avm_name} _dialyzer_beams_opt ${${avm_name} _dialyzer_beams_opt} "-r" ${CMAKE_BINARY_DIR} /libs/${archive_name} /src/beams/)
266274 endif ()
267275 else ()
0 commit comments