mirror of
https://github.com/qemu/qemu.git
synced 2026-02-04 05:35:39 +00:00
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:
committed by
Philippe Mathieu-Daudé
parent
c6f975df5b
commit
3ef255fbd6
@@ -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
|
||||
--------------
|
||||
|
||||
@@ -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/
|
||||
Reference in New Issue
Block a user