11# syntax = docker/dockerfile:1.5
22
3- ARG EMSDK_VERSION_QEMU=3.1.50
3+ ARG EMSDK_VERSION_QEMU=4.0.10
44ARG ZLIB_VERSION=1.3.1
55ARG GLIB_MINOR_VERSION=2.84
66ARG GLIB_VERSION=${GLIB_MINOR_VERSION}.0
77ARG PIXMAN_VERSION=0.44.2
8- ARG FFI_VERSION=v3.4.7
8+ ARG FFI_VERSION=memory64-2
99ARG MESON_VERSION=1.5.0
10+ ARG TARGET_CPU=wasm32
11+ ARG WASM64_MEMORY64=0
1012
11- FROM emscripten/emsdk:$EMSDK_VERSION_QEMU AS build-base
13+ FROM emscripten/emsdk:$EMSDK_VERSION_QEMU AS build-base-common
14+ ARG TARGET_CPU
1215ARG MESON_VERSION
1316ENV TARGET=/builddeps/target
1417ENV CPATH="$TARGET/include"
@@ -33,8 +36,8 @@ RUN <<EOF
3336cat <<EOT > /cross.meson
3437[host_machine]
3538system = 'emscripten'
36- cpu_family = 'wasm32 '
37- cpu = 'wasm32 '
39+ cpu_family = '${TARGET_CPU} '
40+ cpu = '${TARGET_CPU} '
3841endian = 'little'
3942
4043[binaries]
@@ -46,6 +49,16 @@ pkgconfig = ['pkg-config', '--static']
4649EOT
4750EOF
4851
52+ FROM build-base-common AS build-base-wasm32
53+
54+ FROM build-base-common AS build-base-wasm64
55+ ARG WASM64_MEMORY64
56+ ENV CFLAGS="$CFLAGS -sMEMORY64=${WASM64_MEMORY64}"
57+ ENV CXXFLAGS="$CFLAGS"
58+ ENV LDFLAGS="$LDFLAGS -sMEMORY64=${WASM64_MEMORY64}"
59+
60+ FROM build-base-${TARGET_CPU} AS build-base
61+
4962FROM build-base AS zlib-dev
5063ARG ZLIB_VERSION
5164RUN mkdir -p /zlib
@@ -56,17 +69,19 @@ RUN emconfigure ./configure --prefix=$TARGET --static
5669RUN emmake make install -j$(nproc)
5770
5871FROM build-base AS libffi-dev
72+ ARG TARGET_CPU
73+ ARG WASM64_MEMORY64
5974ARG FFI_VERSION
6075RUN mkdir -p /libffi
61- RUN git clone https://github.com/libffi /libffi /libffi
76+ RUN git clone https://github.com/ktock /libffi /libffi
6277WORKDIR /libffi
6378RUN git checkout $FFI_VERSION
6479RUN autoreconf -fiv
65- RUN emconfigure ./configure --host=wasm32 -unknown-linux \
80+ RUN emconfigure ./configure --host=${TARGET_CPU} -unknown-linux \
6681 --prefix=$TARGET --enable-static \
6782 --disable-shared --disable-dependency-tracking \
6883 --disable-builddir --disable-multi-os-directory \
69- --disable-raw-api --disable-docs
84+ --disable-raw-api --disable-docs WASM64_MEMORY64=${WASM64_MEMORY64}
7085RUN emmake make install SUBDIRS='include' -j$(nproc)
7186
7287FROM build-base AS pixman-dev
0 commit comments