40 lines
1.1 KiB
Docker
40 lines
1.1 KiB
Docker
# Dockerfile to build QEMU for ESP32 with Emscripten
|
|
FROM emscripten/emsdk:latest AS builder
|
|
|
|
WORKDIR /src
|
|
|
|
# Clone QEMU fork (lcgamboa)
|
|
RUN git clone --depth 1 https://github.com/lcgamboa/qemu.git -b picsimlab-esp32 qemu
|
|
WORKDIR /src/qemu
|
|
|
|
# Apply patches if needed (none for now)
|
|
|
|
# Configure for Emscripten
|
|
# Use emconfigure wrapper to set up environment
|
|
RUN emconfigure ./configure \
|
|
--target-list=xtensa-softmmu \
|
|
--disable-system \
|
|
--disable-user \
|
|
--disable-tools \
|
|
--disable-docs \
|
|
--disable-guest-agent \
|
|
--disable-slirp \
|
|
--disable-werror \
|
|
--enable-emscripten \
|
|
--extra-cflags="-O2 -s WASM=1 -s ALLOW_MEMORY_GROWTH=1" \
|
|
--cross-prefix=em \
|
|
--cpu=wasm32
|
|
|
|
# Build with emmake
|
|
RUN emmake make -j$(nproc)
|
|
|
|
# The resulting binary will be qemu-system-xtensa.wasm? Actually QEMU builds to .js and .wasm
|
|
# We need to copy the generated files to output directory
|
|
RUN mkdir -p /output
|
|
RUN cp -r build/* /output/
|
|
|
|
# Also build the shared library version for easier integration
|
|
# (optional)
|
|
|
|
FROM scratch AS export
|
|
COPY --from=builder /output/ / |