# FFmpeg 5.1.4 → WebAssembly (public/ffmpeg/ffmpeg-core.js + ffmpeg-core.wasm), ffmpeg.wasm 0.12.10
# altyapısıyla. Hazır @ffmpeg/core derlemesi GPL'di (x264, x265, lame...); burada SADECE
# uygulamanın kullandığı parçalar var ve GPL kısımları kapalı → sonuç LGPL-2.1+.
# Uygulamanın kullandığı: GIF okuma, kırp/ölçekle/döndür, GIF ve (animasyonlu) WebP yazma
# (src/lib/profileMedia.ts). Yeni bir ffmpeg komutu eklenirse aşağıdaki listeye ekle.
#
# Bu dosya, uygulamadaki derlemenin "tam karşılık gelen kaynağı"nın derleme betiğidir
# (nexmecra.com/kaynak); kaynaklar aşağıdaki sabit sürümlerden indirilir, değiştirilmez.
#
# Derleme (bu klasörde):  docker buildx build -o out .
# Çıktı: out/ffmpeg-core.js, out/ffmpeg-core.wasm → public/ffmpeg/
FROM emscripten/emsdk:3.1.40 AS base
ENV INSTALL_DIR=/opt
ENV CFLAGS="-I/opt/include -O3"
ENV CXXFLAGS="$CFLAGS"
ENV LDFLAGS="-L/opt/lib $CFLAGS"
ENV EM_PKG_CONFIG_PATH=/opt/lib/pkgconfig:/emsdk/upstream/emscripten/system/lib/pkgconfig
ENV EM_TOOLCHAIN_FILE=/emsdk/upstream/emscripten/cmake/Modules/Platform/Emscripten.cmake
ENV PKG_CONFIG_PATH=$EM_PKG_CONFIG_PATH
ENV FFMPEG_ST=yes
RUN apt-get update && apt-get install -y pkg-config autoconf automake libtool git
# ffmpeg.wasm 0.12.10: JS bağlayıcısı (src/bind) ve ffmpeg komut satırı aracı (src/fftools).
RUN git clone --depth 1 -b v0.12.10 https://github.com/ffmpegwasm/ffmpeg.wasm.git /ffwasm

FROM base AS zlib
RUN git clone --depth 1 -b v1.2.11 https://github.com/ffmpegwasm/zlib.git /src
WORKDIR /src
RUN bash -x /ffwasm/build/zlib.sh

FROM base AS libwebp
COPY --from=zlib /opt /opt
RUN git clone --depth 1 -b v1.3.2 https://github.com/ffmpegwasm/libwebp.git /src
WORKDIR /src
RUN bash -x /ffwasm/build/libwebp.sh

FROM base AS ffmpeg
RUN embuilder build sdl2
COPY --from=libwebp /opt /opt
RUN git clone --depth 1 -b n5.1.4 https://github.com/FFmpeg/FFmpeg.git /src
WORKDIR /src
# --enable-gpl / --enable-nonfree YOK: LGPL. --disable-everything sonrası sadece gerekenler.
RUN bash -x /ffwasm/build/ffmpeg.sh \
      --disable-everything \
      --disable-network \
      --disable-postproc \
      --enable-zlib \
      --enable-libwebp \
      --enable-protocol=file \
      --enable-demuxer=gif,image2 \
      --enable-decoder=gif \
      --enable-parser=gif \
      --enable-encoder=gif,libwebp,libwebp_anim \
      --enable-muxer=gif,webp,image2 \
      --enable-filter=buffer,buffersink,format,null,scale,crop,transpose,hflip,vflip,split,palettegen,paletteuse,setsar,fps
# libpostproc GPL olduğu için bağlantı listesinden çıkarılır, gerisi ffmpeg.wasm'in kendi betiği.
RUN sed -i 's/ *-Llibpostproc//; s/ *-lpostproc//' /ffwasm/build/ffmpeg-wasm.sh \
 && cp -r /ffwasm/src /src/src \
 && mkdir -p /out && bash -x /ffwasm/build/ffmpeg-wasm.sh -lz -lwebpmux -lwebp -lsharpyuv -sEXPORT_ES6 -o /out/ffmpeg-core.js

FROM scratch AS export
COPY --from=ffmpeg /out /
