Skip to content

Commit 2816ad7

Browse files
committed
Extract from eavmlib platform-specific modules
Create new avm_emscripten, avm_esp32, avm_network, avm_rp2 and avm_stm32 libraries and build atomvmlib-<platform>-<jit aarch>.avm files for each platform and jit combination. This will pave the way for platform-specific abstraction, typically gpio, i2c or spi. Signed-off-by: Paul Guyot <pguyot@kallisys.net>
1 parent 2e63bff commit 2816ad7

File tree

36 files changed

+805
-218
lines changed

36 files changed

+805
-218
lines changed

.github/workflows/build-libraries.yaml

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -113,9 +113,11 @@ jobs:
113113
- name: "Rename and write sha256sum"
114114
working-directory: build
115115
run: |
116-
ATOMVMLIB_FILE=atomvmlib-${{ github.ref_name }}.avm
117-
mv libs/atomvmlib.avm "libs/${ATOMVMLIB_FILE}" &&
118-
sha256sum "libs/${ATOMVMLIB_FILE}" > "libs/${ATOMVMLIB_FILE}.sha256"
116+
for variant in atomvmlib atomvmlib-esp32 atomvmlib-rp2 atomvmlib-stm32 atomvmlib-emscripten; do
117+
VARIANT_FILE="${variant}-${{ github.ref_name }}.avm"
118+
mv "libs/${variant}.avm" "libs/${VARIANT_FILE}" &&
119+
sha256sum "libs/${VARIANT_FILE}" > "libs/${VARIANT_FILE}.sha256"
120+
done
119121
HELLO_WORLD_FILE=hello_world-${{ github.ref_name }}.avm
120122
mv examples/erlang/hello_world.avm "examples/erlang/${HELLO_WORLD_FILE}"
121123
sha256sum "examples/erlang/${HELLO_WORLD_FILE}" > "examples/erlang/${HELLO_WORLD_FILE}.sha256"
@@ -129,5 +131,13 @@ jobs:
129131
files: |
130132
build/libs/atomvmlib-${{ github.ref_name }}.avm
131133
build/libs/atomvmlib-${{ github.ref_name }}.avm.sha256
134+
build/libs/atomvmlib-esp32-${{ github.ref_name }}.avm
135+
build/libs/atomvmlib-esp32-${{ github.ref_name }}.avm.sha256
136+
build/libs/atomvmlib-rp2-${{ github.ref_name }}.avm
137+
build/libs/atomvmlib-rp2-${{ github.ref_name }}.avm.sha256
138+
build/libs/atomvmlib-stm32-${{ github.ref_name }}.avm
139+
build/libs/atomvmlib-stm32-${{ github.ref_name }}.avm.sha256
140+
build/libs/atomvmlib-emscripten-${{ github.ref_name }}.avm
141+
build/libs/atomvmlib-emscripten-${{ github.ref_name }}.avm.sha256
132142
build/examples/erlang/hello_world-${{ github.ref_name }}.avm
133143
build/examples/erlang/hello_world-${{ github.ref_name }}.avm.sha256

.github/workflows/pico-build.yaml

Lines changed: 7 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -138,15 +138,15 @@ jobs:
138138
npm install
139139
npx tsx run-tests.ts ../build.nosmp/tests/rp2_tests.uf2 ../build.nosmp/tests/test_erl_sources/rp2_test_modules.uf2
140140
141-
- name: Build atomvmlib.uf2
141+
- name: Build atomvmlib-rp2.uf2
142142
if: startsWith(github.ref, 'refs/tags/') && matrix.board != 'pico_w' && matrix.platform == '' && matrix.jit == ''
143143
shell: bash
144144
run: |
145145
set -euo pipefail
146146
mkdir build
147147
cd build
148148
cmake ..
149-
make atomvmlib-${{ matrix.board }}.uf2
149+
make atomvmlib-rp2-${{ matrix.board }}.uf2
150150
151151
- name: Rename AtomVM and write sha256sum
152152
if: startsWith(github.ref, 'refs/tags/') && matrix.platform == '' && matrix.jit == ''
@@ -157,19 +157,14 @@ jobs:
157157
mv src/AtomVM.uf2 "src/${ATOMVM_UF2}"
158158
sha256sum "src/${ATOMVM_UF2}" > "src/${ATOMVM_UF2}.sha256"
159159
popd
160-
pushd build/libs
161-
ATOMVMLIB_FILE=atomvmlib-${{ matrix.board }}-${{ github.ref_name }}.uf2
162-
mv atomvmlib.uf2 "${ATOMVMLIB_FILE}"
163-
sha256sum "${ATOMVMLIB_FILE}" > "${ATOMVMLIB_FILE}.sha256"
164-
popd
165160
166-
- name: Rename atomvmlib and write sha256sum
161+
- name: Rename atomvmlib-rp2 and write sha256sum
167162
if: startsWith(github.ref, 'refs/tags/') && matrix.board != 'pico_w' && matrix.platform == '' && matrix.jit == ''
168163
shell: bash
169164
run: |
170165
pushd build/libs
171-
ATOMVMLIB_FILE=atomvmlib-${{ matrix.board }}-${{ github.ref_name }}.uf2
172-
mv atomvmlib-${{ matrix.board }}.uf2 "${ATOMVMLIB_FILE}"
166+
ATOMVMLIB_FILE=atomvmlib-rp2-${{ matrix.board }}-${{ github.ref_name }}.uf2
167+
mv atomvmlib-rp2-${{ matrix.board }}.uf2 "${ATOMVMLIB_FILE}"
173168
sha256sum "${ATOMVMLIB_FILE}" > "${ATOMVMLIB_FILE}.sha256"
174169
popd
175170
@@ -182,8 +177,8 @@ jobs:
182177
files: |
183178
src/platforms/rp2/build/src/AtomVM-${{ matrix.board }}-${{ github.ref_name }}.uf2
184179
src/platforms/rp2/build/src/AtomVM-${{ matrix.board }}-${{ github.ref_name }}.uf2.sha256
185-
build/libs/atomvmlib-${{ matrix.board }}-${{ github.ref_name }}.uf2
186-
build/libs/atomvmlib-${{ matrix.board }}-${{ github.ref_name }}.uf2.sha256
180+
build/libs/atomvmlib-rp2-${{ matrix.board }}-${{ github.ref_name }}.uf2
181+
build/libs/atomvmlib-rp2-${{ matrix.board }}-${{ github.ref_name }}.uf2.sha256
187182
188183
- name: Release (PicoW)
189184
uses: softprops/action-gh-release@v1

.github/workflows/wasm-build.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ jobs:
7171
cd build
7272
cmake .. -G Ninja -DAVM_WARNINGS_ARE_ERRORS=ON
7373
# test_eavmlib does not work with wasm due to http + ssl test
74-
ninja AtomVM atomvmlib erlang_test_modules test_etest test_alisp test_estdlib hello_world run_script call_cast html5_events wasm_webserver
74+
ninja AtomVM atomvmlib atomvmlib-emscripten erlang_test_modules test_etest test_alisp test_estdlib hello_world run_script call_cast html5_events wasm_webserver
7575
7676
- name: "Perform CodeQL Analysis"
7777
uses: github/codeql-action/analyze@v4

CMakeModules/BuildErlang.cmake

Lines changed: 53 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -127,12 +127,17 @@ macro(pack_precompiled_archive avm_name)
127127
endmacro()
128128

129129
macro(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()

libs/CMakeLists.txt

Lines changed: 34 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,11 @@ add_subdirectory(estdlib/src)
2525
add_subdirectory(eavmlib/src)
2626
add_subdirectory(alisp/src)
2727
add_subdirectory(etest/src)
28+
add_subdirectory(avm_network/src)
29+
add_subdirectory(avm_esp32/src)
30+
add_subdirectory(avm_rp2/src)
31+
add_subdirectory(avm_stm32/src)
32+
add_subdirectory(avm_emscripten/src)
2833
add_subdirectory(esp32boot)
2934
add_subdirectory(esp32devmode/src)
3035
# JIT compiler doesn't compile with OTP < 23
@@ -33,26 +38,33 @@ if(Erlang_VERSION VERSION_GREATER_EQUAL "23")
3338
endif()
3439

3540

36-
set(ATOMVM_LIBS eavmlib estdlib alisp)
41+
set(ATOMVM_COMMON_LIBS eavmlib estdlib alisp)
3742

3843
find_package(Elixir)
3944
find_package(Gleam)
4045

4146
if (Elixir_FOUND)
4247
add_subdirectory(exavmlib/lib)
43-
list(APPEND ATOMVM_LIBS exavmlib)
48+
list(APPEND ATOMVM_COMMON_LIBS exavmlib)
4449
else()
4550
message(WARNING "Unable to find elixirc -- skipping Elixir libs")
4651
endif()
4752

4853
if (Gleam_FOUND)
4954
add_subdirectory(gleam_avm)
50-
list(APPEND ATOMVM_LIBS gleam_avm)
55+
list(APPEND ATOMVM_COMMON_LIBS gleam_avm)
5156
else()
5257
message(WARNING "Unable to find gleam -- skipping Gleam libs")
5358
endif()
5459

55-
pack_lib(atomvmlib ${ATOMVM_LIBS})
60+
# Base (generic_unix): common + network
61+
pack_lib(atomvmlib ${ATOMVM_COMMON_LIBS} avm_network)
62+
63+
# Platform-specific variants
64+
pack_lib(atomvmlib-esp32 ${ATOMVM_COMMON_LIBS} avm_network avm_esp32)
65+
pack_lib(atomvmlib-rp2 UF2 ${ATOMVM_COMMON_LIBS} avm_network avm_rp2)
66+
pack_lib(atomvmlib-stm32 ${ATOMVM_COMMON_LIBS} avm_stm32)
67+
pack_lib(atomvmlib-emscripten ${ATOMVM_COMMON_LIBS} avm_emscripten)
5668

5769
if (Dialyzer_FOUND)
5870
add_custom_command(
@@ -73,16 +85,26 @@ if (Dialyzer_FOUND)
7385
COMMAND
7486
${CMAKE_BINARY_DIR}/tools/packbeam/PackBEAM -l ${CMAKE_CURRENT_BINARY_DIR}/alisp/src/alisp.avm | sed -e 's|^|${CMAKE_CURRENT_BINARY_DIR}/alisp/src/beams/|g' > ${CMAKE_CURRENT_BINARY_DIR}/alisp_beams.txt
7587
)
88+
add_custom_command(
89+
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/avm_network_beams.txt
90+
DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/avm_network/src/avm_network.avm PackBEAM
91+
COMMAND
92+
${CMAKE_BINARY_DIR}/tools/packbeam/PackBEAM -l ${CMAKE_CURRENT_BINARY_DIR}/avm_network/src/avm_network.avm | sed -e 's|^|${CMAKE_CURRENT_BINARY_DIR}/avm_network/src/beams/|g' > ${CMAKE_CURRENT_BINARY_DIR}/avm_network_beams.txt
93+
)
7694
add_custom_command(
7795
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/jit_beams.txt
7896
DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/jit/src/jit.avm PackBEAM
7997
COMMAND
8098
${CMAKE_BINARY_DIR}/tools/packbeam/PackBEAM -l ${CMAKE_CURRENT_BINARY_DIR}/jit/src/jit.avm | sed -e 's|^|${CMAKE_CURRENT_BINARY_DIR}/jit/src/beams/|g' | grep -v jit_precompile > ${CMAKE_CURRENT_BINARY_DIR}/jit_beams.txt
8199
)
100+
# Platform-specific libraries (avm_esp32, avm_rp2, avm_stm32, avm_emscripten) are
101+
# excluded from the PLT because they contain modules with the same name (gpio, i2c)
102+
# and dialyzer does not allow duplicate modules.
82103
set(dialyzer_lists
83104
${CMAKE_CURRENT_BINARY_DIR}/estdlib_beams.txt
84105
${CMAKE_CURRENT_BINARY_DIR}/eavmlib_beams.txt
85106
${CMAKE_CURRENT_BINARY_DIR}/alisp_beams.txt
107+
${CMAKE_CURRENT_BINARY_DIR}/avm_network_beams.txt
86108
)
87109
if(Erlang_VERSION VERSION_GREATER_EQUAL "23")
88110
set(dialyzer_lists ${dialyzer_lists} ${CMAKE_CURRENT_BINARY_DIR}/jit_beams.txt)
@@ -104,6 +126,14 @@ install(
104126
FILES ${CMAKE_CURRENT_BINARY_DIR}/atomvmlib.avm
105127
DESTINATION lib/atomvm
106128
)
129+
install(
130+
FILES
131+
${CMAKE_CURRENT_BINARY_DIR}/atomvmlib-esp32.avm
132+
${CMAKE_CURRENT_BINARY_DIR}/atomvmlib-rp2.avm
133+
${CMAKE_CURRENT_BINARY_DIR}/atomvmlib-stm32.avm
134+
${CMAKE_CURRENT_BINARY_DIR}/atomvmlib-emscripten.avm
135+
DESTINATION lib/atomvm
136+
)
107137
if(NOT AVM_DISABLE_JIT)
108138
install(
109139
FILES ${CMAKE_CURRENT_BINARY_DIR}/atomvmlib-${AVM_JIT_TARGET_ARCH}.avm
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
#
2+
# This file is part of AtomVM.
3+
#
4+
# Copyright 2026 Paul Guyot <pguyot@kallisys.net>
5+
#
6+
# Licensed under the Apache License, Version 2.0 (the "License");
7+
# you may not use this file except in compliance with the License.
8+
# You may obtain a copy of the License at
9+
#
10+
# http://www.apache.org/licenses/LICENSE-2.0
11+
#
12+
# Unless required by applicable law or agreed to in writing, software
13+
# distributed under the License is distributed on an "AS IS" BASIS,
14+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15+
# See the License for the specific language governing permissions and
16+
# limitations under the License.
17+
#
18+
# SPDX-License-Identifier: Apache-2.0 OR LGPL-2.1-or-later
19+
#
20+
21+
project(avm_emscripten)
22+
23+
include(BuildErlang)
24+
25+
set(ERLANG_MODULES
26+
emscripten
27+
websocket
28+
)
29+
30+
pack_archive(avm_emscripten ${ERLANG_MODULES})
31+
32+
include(../../../version.cmake)
33+
34+
set(AVM_EMSCRIPTEN_VERSION ${ATOMVM_BASE_VERSION})
35+
36+
install(
37+
DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/beams/
38+
DESTINATION lib/atomvm/lib/avm_emscripten-${AVM_EMSCRIPTEN_VERSION}/ebin
39+
FILES_MATCHING PATTERN "*.beam"
40+
)
41+
42+
install(
43+
FILES ${CMAKE_CURRENT_BINARY_DIR}/avm_emscripten.avm
44+
DESTINATION lib/atomvm/lib/avm_emscripten-${AVM_EMSCRIPTEN_VERSION}/ebin/
45+
)
46+
47+
install(
48+
DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/
49+
DESTINATION lib/atomvm/lib/avm_emscripten-${AVM_EMSCRIPTEN_VERSION}/src
50+
FILES_MATCHING PATTERN "*.erl"
51+
)

0 commit comments

Comments
 (0)