pcbjam/docker/Dockerfile
Viktor Vaczi 5b919ef66f Add ccache and incremental build system for faster development
- Add ccache to Docker image for compiled object caching
- Change build defaults: incremental by default, skip deps by default
- Add new flags: --full, --clean-kicad, --build-deps
- Skip wxWidgets configure if already configured (check Makefile timestamps)
- Remove unused source hash stamp functions (make handles dependencies)
- Update build.md with new build system documentation

Performance improvements:
- Single file change: 7:35 → 1:34 (4.8x faster)
- No-change rebuild: 7:35 → 1:31 (5x faster)
- Asyncify post-processing (~1 min) is now the bottleneck

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-26 20:51:58 +01:00

38 lines
916 B
Docker

# Use ARM64-native image for Apple Silicon (M1/M2/M3/M4)
FROM emscripten/emsdk:4.0.2-arm64
# Install build tools required for KiCad WASM build
RUN apt-get update && apt-get install -y \
cmake \
autoconf \
automake \
libtool \
meson \
ninja-build \
pkg-config \
curl \
git \
python3 \
python3-dev \
protobuf-compiler \
swig \
unixodbc-dev \
ccache \
&& rm -rf /var/lib/apt/lists/*
# Configure ccache for Emscripten
# CCACHE_DIR in named volume persists across containers
ENV CCACHE_DIR=/workspace/build-wasm/.ccache
ENV CCACHE_MAXSIZE=10G
ENV CCACHE_COMPILERCHECK=content
ENV CCACHE_SLOPPINESS=include_file_mtime,time_macros,pch_defines
ENV CCACHE_BASEDIR=/workspace
WORKDIR /workspace
# Entry point that sources Emscripten environment
COPY docker/entrypoint.sh /entrypoint.sh
RUN chmod +x /entrypoint.sh
ENTRYPOINT ["/entrypoint.sh"]
CMD ["bash"]