From: Kohei Tokunaga Date: Mon, 4 Aug 2025 12:57:16 +0000 (+0900) Subject: dockerfiles: Add support for wasm64 to the wasm Dockerfile X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=3ef255fbd656b92a0510a273260725b53de589a5;p=thirdparty%2Fqemu.git 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 Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson Message-ID: <3f21342f50e0412a32143fe21ecc0d8db95b3f37.1768308374.git.ktokunaga.mail@gmail.com> Signed-off-by: Philippe Mathieu-Daudé --- diff --git a/MAINTAINERS b/MAINTAINERS index 4ddbfba9f0..de8246c3ff 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -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 -------------- diff --git a/tests/docker/dockerfiles/emsdk-wasm32-cross.docker b/tests/docker/dockerfiles/emsdk-wasm-cross.docker similarity index 89% rename from tests/docker/dockerfiles/emsdk-wasm32-cross.docker rename to tests/docker/dockerfiles/emsdk-wasm-cross.docker index 1f08eb0b85..ecd5a02903 100644 --- a/tests/docker/dockerfiles/emsdk-wasm32-cross.docker +++ b/tests/docker/dockerfiles/emsdk-wasm-cross.docker @@ -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 < /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/