@@ -34,27 +34,23 @@ macro(pack_archive avm_name)
34
34
set (pack_archive_${avm_name}_beams ${pack_archive_${avm_name}_beams} ${CMAKE_CURRENT_BINARY_DIR} /beams/${module_name}.beam )
35
35
endforeach ()
36
36
37
- add_custom_target (
38
- ${avm_name} _beams ALL
39
- DEPENDS ${pack_archive_${avm_name}_beams}
40
- )
41
-
42
37
if (AVM_RELEASE )
43
38
set (INCLUDE_LINES "" )
44
39
else ()
45
40
set (INCLUDE_LINES "-i" )
46
41
endif ()
47
42
48
- add_custom_target (
49
- ${avm_name} ALL
50
- DEPENDS ${avm_name} _beams PackBEAM
51
- #DEPENDS ${pack_archive_${avm_name}_beams}
43
+ add_custom_command (
44
+ OUTPUT ${avm_name} .avm
45
+ DEPENDS ${pack_archive_${avm_name}_beams} PackBEAM
52
46
COMMAND ${CMAKE_BINARY_DIR} /tools/packbeam/PackBEAM -a ${INCLUDE_LINES} ${avm_name} .avm ${pack_archive_${avm_name}_beams}
53
47
COMMENT "Packing archive ${avm_name} .avm"
54
48
VERBATIM
55
49
)
56
- add_dependencies (${avm_name} ${avm_name} _beams PackBEAM )
57
-
50
+ add_custom_target (
51
+ ${avm_name} ALL
52
+ DEPENDS ${avm_name} .avm
53
+ )
58
54
endmacro ()
59
55
60
56
@@ -77,32 +73,36 @@ macro(pack_lib avm_name)
77
73
set (INCLUDE_LINES "-i" )
78
74
endif ()
79
75
80
- add_custom_target (
81
- ${avm_name} ALL
76
+ add_custom_command (
77
+ OUTPUT ${avm_name} .avm
78
+ DEPENDS ${pack_lib_${avm_name}_archive_targets} PackBEAM
82
79
COMMAND ${CMAKE_BINARY_DIR} /tools/packbeam/PackBEAM -a ${INCLUDE_LINES} ${avm_name} .avm ${pack_lib_${avm_name}_archives}
83
80
COMMENT "Packing runnable ${avm_name} .avm"
84
81
VERBATIM
85
82
)
86
- add_dependencies (${avm_name} ${pack_lib_${avm_name}_archive_targets} PackBEAM )
87
- if (TARGET ${avm_name} _main )
88
- add_dependencies (${avm_name} ${avm_name} _main )
89
- endif ()
90
-
91
- add_custom_target (
92
- ${avm_name} -pico.uf2 ALL
83
+ add_custom_command (
84
+ OUTPUT ${avm_name} -pico.uf2
85
+ DEPENDS ${avm_name} .avm UF2Tool
93
86
COMMAND ${CMAKE_BINARY_DIR} /tools/uf2tool/uf2tool create -o ${avm_name} -pico.uf2 -s 0x10100000 ${avm_name} .avm
94
87
COMMENT "Creating UF2 file ${avm_name} .uf2"
95
88
VERBATIM
96
89
)
97
- add_dependencies (${avm_name} -pico.uf2 ${avm_name} uf2tool )
98
90
99
- add_custom_target (
100
- ${avm_name} -pico2.uf2 ALL
91
+ add_custom_command (
92
+ OUTPUT ${avm_name} -pico2.uf2
93
+ DEPENDS ${avm_name} .avm UF2Tool
101
94
COMMAND ${CMAKE_BINARY_DIR} /tools/uf2tool/uf2tool create -o ${avm_name} -pico2.uf2 -f data -s 0x10100000 ${avm_name} .avm
102
95
COMMENT "Creating UF2 file ${avm_name} .uf2"
103
96
VERBATIM
104
97
)
105
- add_dependencies (${avm_name} -pico2.uf2 ${avm_name} uf2tool )
98
+
99
+ add_custom_target (
100
+ ${avm_name} ALL
101
+ DEPENDS ${avm_name} .avm ${avm_name} -pico.uf2 ${avm_name} -pico2.uf2
102
+ )
103
+ if (TARGET ${avm_name} _main )
104
+ add_dependencies (${avm_name} ${avm_name} _main )
105
+ endif ()
106
106
107
107
endmacro ()
108
108
@@ -150,13 +150,18 @@ macro(pack_runnable avm_name main)
150
150
set (INCLUDE_LINES "-i" )
151
151
endif ()
152
152
153
- add_custom_target (
154
- ${avm_name} ALL
153
+ add_custom_command (
154
+ OUTPUT ${avm_name} .avm
155
+ DEPENDS ${avm_name} _main ${pack_runnable_${avm_name}_archive_targets} PackBEAM
155
156
COMMAND ${CMAKE_BINARY_DIR} /tools/packbeam/PackBEAM ${INCLUDE_LINES} ${avm_name} .avm ${main} .beam ${pack_runnable_${avm_name}_archives}
156
157
COMMENT "Packing runnable ${avm_name} .avm"
157
158
VERBATIM
158
159
)
159
- add_dependencies (${avm_name} ${avm_name} _main ${pack_runnable_${avm_name}_archive_targets} PackBEAM )
160
+
161
+ add_custom_target (
162
+ ${avm_name} ALL
163
+ DEPENDS ${avm_name} .avm
164
+ )
160
165
endmacro ()
161
166
162
167
@@ -175,16 +180,25 @@ macro(pack_test test_avm_name)
175
180
set (INCLUDE_LINES "-i" )
176
181
endif ()
177
182
178
- add_custom_target (
179
- ${test_avm_name} ALL
183
+ add_custom_command (
184
+ OUTPUT tests.beam
185
+ DEPENDS ${CMAKE_CURRENT_SOURCE_DIR} /tests.erl
180
186
COMMAND erlc +debug_info -I ${CMAKE_SOURCE_DIR} /libs/include ${CMAKE_CURRENT_SOURCE_DIR} /tests.erl
187
+ VERBATIM
188
+ )
189
+
190
+ add_custom_command (
191
+ OUTPUT ${CMAKE_CURRENT_BINARY_DIR} /${test_avm_name}.avm
192
+ DEPENDS ${pack_test_${test_avm_name}_archive_targets} PackBEAM tests.beam
181
193
COMMAND ${CMAKE_BINARY_DIR} /tools/packbeam/PackBEAM ${INCLUDE_LINES} ${CMAKE_CURRENT_BINARY_DIR} /${test_avm_name}.avm ${CMAKE_CURRENT_BINARY_DIR} /tests.beam ${pack_test_${test_avm_name}_archives}
182
- DEPENDS ${CMAKE_CURRENT_SOURCE_DIR} /tests.erl
183
194
COMMENT "Packing runnable ${test_avm_name} .avm"
184
195
VERBATIM
185
196
)
186
- add_dependencies (${test_avm_name} ${pack_test_${test_avm_name}_archive_targets} PackBEAM )
187
197
198
+ add_custom_target (
199
+ ${test_avm_name} ALL
200
+ DEPENDS ${test_avm_name} .avm
201
+ )
188
202
endmacro ()
189
203
190
204
macro (pack_eunit test_avm_name )
@@ -202,15 +216,18 @@ macro(pack_eunit test_avm_name)
202
216
set (INCLUDE_LINES "-i" )
203
217
endif ()
204
218
205
- add_custom_target (
206
- ${test_avm_name} ALL
219
+ add_custom_command (
220
+ OUTPUT ${test_avm_name} .avm
221
+ DEPENDS ${pack_eunit_${test_avm_name}_archive_targets} PackBEAM ${CMAKE_BINARY_DIR} /libs/etest/src/beams/eunit.beam
207
222
COMMAND ${CMAKE_BINARY_DIR} /tools/packbeam/PackBEAM ${INCLUDE_LINES} ${CMAKE_CURRENT_BINARY_DIR} /${test_avm_name}.avm ${CMAKE_BINARY_DIR} /libs/etest/src/beams/eunit.beam ${pack_eunit_${test_avm_name}_archives}
208
- DEPENDS ${CMAKE_BINARY_DIR} /libs/etest/src/beams/eunit.beam
209
223
COMMENT "Packing runnable ${test_avm_name} .avm"
210
224
VERBATIM
211
225
)
212
- add_dependencies (${test_avm_name} ${pack_eunit_${test_avm_name}_archive_targets} PackBEAM )
213
226
227
+ add_custom_target (
228
+ ${test_avm_name} ALL
229
+ DEPENDS ${test_avm_name} .avm etest
230
+ )
214
231
endmacro ()
215
232
216
233
macro (pack_uf2 avm_name main )
@@ -237,20 +254,24 @@ macro(pack_uf2 avm_name main)
237
254
set (pack_uf2_${avm_name}_archive_targets ${pack_uf2_${avm_name}_archive_targets} ${archive_name} )
238
255
endforeach ()
239
256
240
- add_custom_target (
241
- ${avm_name} .avm ALL
257
+ add_custom_command (
258
+ OUTPUT ${avm_name} .avm
259
+ DEPENDS ${avm_name} _main ${pack_uf2_${avm_name}_archive_targets} PackBEAM
242
260
COMMAND ${CMAKE_BINARY_DIR} /tools/packbeam/PackBEAM ${avm_name} .avm ${main} .beam ${pack_uf2_${avm_name}_archives}
243
261
COMMENT "Packing runnable ${avm_name} .avm"
244
262
VERBATIM
245
263
)
246
- add_dependencies (${avm_name} .avm ${avm_name} _main ${pack_uf2_${avm_name}_archive_targets} PackBEAM )
247
264
248
- add_custom_target (
249
- ${avm_name} .uf2 ALL
265
+ add_custom_command (
266
+ OUTPUT ${avm_name} .uf2
267
+ DEPENDS ${avm_name} .avm UF2Tool
250
268
COMMAND ${CMAKE_BINARY_DIR} /tools/uf2tool/uf2tool create -o ${avm_name} .uf2 -f universal -s 0x10180000 ${avm_name} .avm
251
269
COMMENT "Creating UF2 file ${avm_name} .uf2"
252
270
VERBATIM
253
271
)
254
- add_dependencies (${avm_name} .uf2 ${avm_name} .avm uf2tool )
255
272
273
+ add_custom_target (
274
+ ${avm_name} ALL
275
+ DEPENDS ${avm_name} .uf2
276
+ )
256
277
endmacro ()
0 commit comments