dockerfiles: Add support for wasm64 to the wasm Dockerfile

This commit fixes Dockerfile of the wasm build to support both of wasm32 and
wasm64 build. Dockerfile takes the following build argument and use it for
building dependencies.

- TARGET_CPU: target wasm arch (wasm32 or wasm64)

Signed-off-by: Kohei Tokunaga <ktokunaga.mail@gmail.com>
Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Message-ID: <3f21342f50e0412a32143fe21ecc0d8db95b3f37.1768308374.git.ktokunaga.mail@gmail.com>
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
This commit is contained in:
Kohei Tokunaga
2025-08-04 21:57:16 +09:00
committed by Philippe Mathieu-Daudé
parent c6f975df5b
commit 3ef255fbd6
2 changed files with 20 additions and 8 deletions

View File

@@ -683,7 +683,7 @@ F: include/system/os-wasm.h
F: os-wasm.c
F: util/coroutine-wasm.c
F: configs/meson/emscripten.txt
F: tests/docker/dockerfiles/emsdk-wasm32-cross.docker
F: tests/docker/dockerfiles/emsdk-wasm-cross.docker
Alpha Machines
--------------

View File

@@ -1,14 +1,15 @@
# syntax = docker/dockerfile:1.5
ARG EMSDK_VERSION_QEMU=3.1.50
ARG EMSDK_VERSION_QEMU=4.0.10
ARG ZLIB_VERSION=1.3.1
ARG GLIB_MINOR_VERSION=2.84
ARG GLIB_VERSION=${GLIB_MINOR_VERSION}.0
ARG PIXMAN_VERSION=0.44.2
ARG FFI_VERSION=v3.4.7
ARG FFI_VERSION=v3.5.2
ARG MESON_VERSION=1.5.0
ARG TARGET_CPU=wasm32
FROM docker.io/emscripten/emsdk:$EMSDK_VERSION_QEMU AS build-base
FROM docker.io/emscripten/emsdk:$EMSDK_VERSION_QEMU AS build-base-common
ARG MESON_VERSION
ENV TARGET=/builddeps/target
ENV CPATH="$TARGET/include"
@@ -29,12 +30,22 @@ RUN pip3 install meson==${MESON_VERSION} tomli
RUN mkdir /build
WORKDIR /build
RUN mkdir -p $TARGET
FROM build-base-common AS build-base-wasm32
FROM build-base-common AS build-base-wasm64
ENV CFLAGS="$CFLAGS -sMEMORY64=1"
ENV CXXFLAGS="$CXXFLAGS -sMEMORY64=1"
ENV LDFLAGS="$LDFLAGS -sMEMORY64=1"
FROM build-base-${TARGET_CPU} AS build-base
ARG TARGET_CPU
RUN <<EOF
cat <<EOT > /cross.meson
[host_machine]
system = 'emscripten'
cpu_family = 'wasm32'
cpu = 'wasm32'
cpu_family = '${TARGET_CPU}'
cpu = '${TARGET_CPU}'
endian = 'little'
[binaries]
@@ -56,13 +67,14 @@ RUN emconfigure ./configure --prefix=$TARGET --static
RUN emmake make install -j$(nproc)
FROM build-base AS libffi-dev
ARG TARGET_CPU
ARG FFI_VERSION
RUN mkdir -p /libffi
RUN git clone https://github.com/libffi/libffi /libffi
WORKDIR /libffi
RUN git checkout $FFI_VERSION
RUN autoreconf -fiv
RUN emconfigure ./configure --host=wasm32-unknown-linux \
RUN emconfigure ./configure --host=${TARGET_CPU}-unknown-linux \
--prefix=$TARGET --enable-static \
--disable-shared --disable-dependency-tracking \
--disable-builddir --disable-multi-os-directory \
@@ -140,6 +152,6 @@ RUN sed -i -E "/#define HAVE_POSIX_SPAWN 1/d" ./_build/config.h
RUN sed -i -E "/#define HAVE_PTHREAD_GETNAME_NP 1/d" ./_build/config.h
RUN meson install -C _build
FROM build-base
FROM build-base-common
COPY --from=glib-dev /builddeps/ /builddeps/
COPY --from=pixman-dev /builddeps/ /builddeps/