FROM ubuntu:24.04

# Install tools
RUN apt-get update && apt-get upgrade -y && apt-get install -y \
	build-essential cmake git \
	mingw-w64-x86-64-dev gcc-mingw-w64-x86-64-posix g++-mingw-w64-x86-64-posix \
	libxext-dev libgl-dev \
	wget zip zstd \
	libpng-dev libboost-all-dev \
	libxi-dev libxrender-dev

# Set user
RUN useradd -u 1000 -U -o -d /home -M worker
RUN chown -R worker:worker /home /usr/local
USER worker

# Install sdl2
RUN mkdir /home/sdl2
WORKDIR /home/sdl2
RUN wget https://www.libsdl.org/release/SDL2-devel-2.0.22-mingw.tar.gz
RUN tar xvf SDL2-devel-2.0.22-mingw.tar.gz
RUN mv SDL2-2.0.22/x86_64-w64-mingw32 ./install
RUN rm -r SDL2-devel-2.0.22-mingw.tar.gz SDL2-2.0.22

# Install sdl2-mixer
WORKDIR /home/sdl2
RUN wget https://github.com/libsdl-org/SDL_mixer/releases/download/release-2.6.1/SDL2_mixer-devel-2.6.1-mingw.tar.gz
RUN tar xvf SDL2_mixer-devel-2.6.1-mingw.tar.gz
RUN cp -a SDL2_mixer-2.6.1/x86_64-w64-mingw32/* install/
RUN rm -r SDL2_mixer-2.6.1 SDL2_mixer-devel-2.6.1-mingw.tar.gz

# Install zlib
RUN mkdir /home/zlib
WORKDIR /home/zlib
RUN wget https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-zlib-1.2.12-1-any.pkg.tar.zst
RUN tar xvf mingw-w64-x86_64-zlib-1.2.12-1-any.pkg.tar.zst
RUN mv mingw64 install
RUN rm mingw-w64-x86_64-zlib-1.2.12-1-any.pkg.tar.zst

# Install libpng
RUN mkdir /home/libpng
WORKDIR /home/libpng
RUN wget https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-libpng-1.6.37-6-any.pkg.tar.zst
RUN tar xvf mingw-w64-x86_64-libpng-1.6.37-6-any.pkg.tar.zst
RUN mv mingw64 install
RUN rm mingw-w64-x86_64-libpng-1.6.37-6-any.pkg.tar.zst

# Install boost
RUN mkdir /home/boost
WORKDIR /home/boost
RUN wget https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-boost-1.79.0-4-any.pkg.tar.zst
RUN tar xvf mingw-w64-x86_64-boost-1.79.0-4-any.pkg.tar.zst
RUN mv mingw64 install
RUN rm mingw-w64-x86_64-boost-1.79.0-4-any.pkg.tar.zst

# Install libmpg
RUN mkdir /home/libmpg
WORKDIR /home/libmpg
RUN wget https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-mpg123-1.30.1-1-any.pkg.tar.zst
RUN tar xvf mingw-w64-x86_64-mpg123-1.30.1-1-any.pkg.tar.zst
RUN mv mingw64 install
RUN rm mingw-w64-x86_64-mpg123-1.30.1-1-any.pkg.tar.zst

# Install blender
WORKDIR /home
RUN wget https://download.blender.org/release/Blender3.2/blender-3.2.0-linux-x64.tar.xz
RUN tar xvf blender-3.2.0-linux-x64.tar.xz
RUN mv blender-3.2.0-linux-x64 blender
RUN rm blender-3.2.0-linux-x64.tar.xz
RUN ln -sv /home/blender/blender /usr/local/bin/blender

# Install wgpu-native for host
RUN wget https://github.com/gfx-rs/wgpu-native/releases/download/v0.19.4.1/wgpu-linux-x86_64-release.zip
RUN mkdir -p wgpu-native
RUN unzip wgpu-*.zip -d wgpu-native
RUN rm wgpu-*.zip
RUN mkdir -p wgpu-native/install/host
RUN mv wgpu-native/libwgpu_native.a wgpu-native/install/host

# Install wgpu-native for target
RUN wget https://github.com/gfx-rs/wgpu-native/releases/download/v0.19.4.1/wgpu-windows-x86_64-release.zip
RUN mkdir -p wgpu-native
RUN unzip -o wgpu-*.zip -d wgpu-native
RUN rm wgpu-*.zip
RUN chmod +x wgpu-native/wgpu_native.dll
RUN mkdir -p wgpu-native/install/target
RUN mv wgpu-native/wgpu_native.dll.lib wgpu-native/wgpu_native.dll wgpu-native/install/target

# Install toolchain files & main packaging script
COPY toolchain-host.cmake .
COPY toolchain-target.cmake .
COPY package.sh .
