123 lines
3.5 KiB
Docker
123 lines
3.5 KiB
Docker
# Nintendo 3DS Development Container
|
|
# Based on official devkitPro devkitARM image
|
|
# Contains ALL available 3DS portlibs for complete development environment
|
|
|
|
FROM devkitpro/devkitarm:20251231
|
|
|
|
LABEL maintainer="nextcloud-share contributors"
|
|
LABEL description="Complete Nintendo 3DS development environment with all available portlibs"
|
|
LABEL org.opencontainers.image.base.name="devkitpro/devkitarm:20251231"
|
|
LABEL org.opencontainers.image.title="Nintendo 3DS Development Container"
|
|
LABEL platform="3ds"
|
|
LABEL toolchain="devkitARM"
|
|
|
|
# Update package database
|
|
RUN dkp-pacman -Sy --noconfirm
|
|
|
|
# Install 3DS development group (includes devkitARM, libctru, citro3d, citro2d, tools)
|
|
RUN dkp-pacman -S --needed --noconfirm 3ds-dev
|
|
|
|
# Install ALL available 3DS portlibs (alphabetical for clarity)
|
|
# List verified from devkitpro/devkitarm:20251231 on 2026-01-27
|
|
RUN dkp-pacman -S --needed --noconfirm \
|
|
3ds-box2d \
|
|
3ds-bulletphysics \
|
|
3ds-bzip2 \
|
|
3ds-curl \
|
|
3ds-flac \
|
|
3ds-flite \
|
|
3ds-freetype \
|
|
3ds-giflib \
|
|
3ds-jansson \
|
|
3ds-libarchive \
|
|
3ds-libconfig \
|
|
3ds-libfribidi \
|
|
3ds-libiconv \
|
|
3ds-libid3tag \
|
|
3ds-libjpeg-turbo \
|
|
3ds-libjson-c \
|
|
3ds-liblua51 \
|
|
3ds-liblzma \
|
|
3ds-libmad \
|
|
3ds-libmodplug \
|
|
3ds-libogg \
|
|
3ds-libopus \
|
|
3ds-libpng \
|
|
3ds-libsidplay \
|
|
3ds-libtheora \
|
|
3ds-libvorbisidec \
|
|
3ds-libxmp \
|
|
3ds-libzstd \
|
|
3ds-lz4 \
|
|
3ds-mbedtls \
|
|
3ds-mikmod \
|
|
3ds-mpg123 \
|
|
3ds-opusfile \
|
|
3ds-physfs \
|
|
3ds-sdl \
|
|
3ds-sdl_gfx \
|
|
3ds-sdl_image \
|
|
3ds-sdl_mixer \
|
|
3ds-sdl_ttf \
|
|
3ds-tinyxml2 \
|
|
3ds-wildmidi \
|
|
3ds-wslay \
|
|
3ds-yaml_cpp \
|
|
3ds-zlib && \
|
|
dkp-pacman -Scc --noconfirm
|
|
|
|
# Install system build tools for development
|
|
# Note: devkitarm-cmake is already installed as part of 3ds-dev group
|
|
RUN apt-get update && apt-get install -y --no-install-recommends \
|
|
ccache \
|
|
ninja-build \
|
|
python3 \
|
|
python3-pip \
|
|
curl \
|
|
wget \
|
|
jq \
|
|
git \
|
|
zip \
|
|
unzip && \
|
|
rm -rf /var/lib/apt/lists/*
|
|
|
|
# Configure ccache for faster rebuilds
|
|
ENV CCACHE_DIR=/project/.ccache
|
|
ENV CCACHE_MAXSIZE=2G
|
|
|
|
# Add devkitARM compiler to PATH
|
|
ENV PATH="${DEVKITARM}/bin:/usr/lib/ccache:${PATH}"
|
|
|
|
# Build and install bannertool for CIA file creation
|
|
RUN git clone --recursive https://github.com/diasurgical/bannertool.git /tmp/bannertool && \
|
|
cd /tmp/bannertool && \
|
|
make && \
|
|
cp output/linux-x86_64/bannertool /opt/devkitpro/tools/bin/ && \
|
|
chmod +x /opt/devkitpro/tools/bin/bannertool && \
|
|
cd / && \
|
|
rm -rf /tmp/bannertool
|
|
|
|
# Build and install makerom and ctrtool for CIA file creation
|
|
RUN git clone https://github.com/3DSGuy/Project_CTR.git /tmp/Project_CTR && \
|
|
cd /tmp/Project_CTR/makerom && \
|
|
make deps && make && \
|
|
cp bin/makerom /opt/devkitpro/tools/bin/ && \
|
|
chmod +x /opt/devkitpro/tools/bin/makerom && \
|
|
cd /tmp/Project_CTR/ctrtool && \
|
|
make deps && make && \
|
|
cp bin/ctrtool /opt/devkitpro/tools/bin/ && \
|
|
chmod +x /opt/devkitpro/tools/bin/ctrtool && \
|
|
cd / && \
|
|
rm -rf /tmp/Project_CTR
|
|
|
|
# Set working directory
|
|
WORKDIR /project
|
|
|
|
# Verify installation
|
|
RUN arm-none-eabi-gcc --version && \
|
|
make --version && \
|
|
cmake --version
|
|
|
|
# Show installed 3DS packages on container startup
|
|
CMD ["bash", "-c", "echo 'Nintendo 3DS Development Container Ready' && echo 'devkitARM:' && arm-none-eabi-gcc --version | head -n1 && echo '' && echo '3DS packages installed:' && dkp-pacman -Qq | grep '^3ds-' | wc -l && echo 'packages' && bash"]
|