@@ -94,3 +94,64 @@ macro(pack_runnable avm_name main)
94
94
add_dependencies (${avm_name} ${avm_name} _main ${ARCHIVE_TARGETS} PackBEAM)
95
95
96
96
endmacro ()
97
+
98
+
99
+ macro (pack_test avm_name main)
100
+ find_package (Elixir REQUIRED)
101
+
102
+ # Compile the main module
103
+ add_custom_command (
104
+ OUTPUT Elixir.${main} .beam
105
+ COMMAND elixirc ${CMAKE_CURRENT_SOURCE_DIR} /${main} .ex
106
+ DEPENDS ${CMAKE_CURRENT_SOURCE_DIR} /${main} .ex
107
+ COMMENT "Compiling ${main} .ex"
108
+ VERBATIM
109
+ )
110
+
111
+ add_custom_target (
112
+ ${avm_name} _main
113
+ DEPENDS Elixir.${main} .beam
114
+ )
115
+
116
+ # Compile test modules
117
+ foreach (module_name ${ARGN} )
118
+ add_custom_command (
119
+ OUTPUT Elixir.${module_name} .beam
120
+ COMMAND elixirc ${CMAKE_CURRENT_SOURCE_DIR} /${module_name} .ex
121
+ DEPENDS ${CMAKE_CURRENT_SOURCE_DIR} /${module_name} .ex
122
+ COMMENT "Compiling ${module_name} .ex"
123
+ VERBATIM
124
+ )
125
+ set (TEST_BEAMS ${TEST_BEAMS} Elixir.${module_name} .beam)
126
+ endforeach ()
127
+
128
+ add_custom_target (
129
+ ${avm_name} _tests
130
+ DEPENDS ${TEST_BEAMS}
131
+ )
132
+
133
+ if (AVM_RELEASE)
134
+ set (INCLUDE_LINES "" )
135
+ else ()
136
+ set (INCLUDE_LINES "-i" )
137
+ endif ()
138
+
139
+ # Set up standard libraries
140
+ set (ARCHIVE_TARGETS estdlib eavmlib exavmlib etest)
141
+ foreach (archive_name ${ARCHIVE_TARGETS} )
142
+ if (${archive_name} STREQUAL "exavmlib" )
143
+ set (ARCHIVES ${ARCHIVES} ${CMAKE_BINARY_DIR} /libs/${archive_name} /lib/${archive_name} .avm)
144
+ else ()
145
+ set (ARCHIVES ${ARCHIVES} ${CMAKE_BINARY_DIR} /libs/${archive_name} /src/${archive_name} .avm)
146
+ endif ()
147
+ endforeach ()
148
+
149
+ add_custom_target (
150
+ ${avm_name} ALL
151
+ COMMAND ${CMAKE_BINARY_DIR} /tools/packbeam/PackBEAM ${INCLUDE_LINES} ${avm_name} .avm Elixir.${main} .beam ${TEST_BEAMS} ${ARCHIVES}
152
+ COMMENT "Packing test ${avm_name} .avm"
153
+ VERBATIM
154
+ )
155
+ add_dependencies (${avm_name} ${avm_name} _main ${avm_name} _tests ${ARCHIVE_TARGETS} PackBEAM)
156
+
157
+ endmacro ()
0 commit comments