diff options
| author | Anton <anton@picapica.im> | 2026-09-26 15:39:03 +0400 |
|---|---|---|
| committer | Anton <anton@picapica.im> | 2026-09-26 15:39:03 +0400 |
| commit | 77796a1d279429c0e83eace13b5c75582537eeb6 (patch) | |
| tree | 8dd3cd51aefd477e0c4022b024718cadcb46ae91 /windows | |
| parent | b6e2b0d4f93585a8db8427db55458e16ebfe4a1e (diff) | |
| download | pica-pica-77796a1d279429c0e83eace13b5c75582537eeb6.tar.gz pica-pica-77796a1d279429c0e83eace13b5c75582537eeb6.zip | |
windows: strip more dependencies from MXE packages
Diffstat (limited to 'windows')
| -rwxr-xr-x | windows/cross_build_mxe.sh | 4 | ||||
| -rw-r--r-- | windows/mxe_ffmpeg_strip_excess_deps.patch | 79 | ||||
| -rw-r--r-- | windows/mxe_qtbase_strip_excess_deps.patch | 30 |
3 files changed, 72 insertions, 41 deletions
diff --git a/windows/cross_build_mxe.sh b/windows/cross_build_mxe.sh index 138599f..a621074 100755 --- a/windows/cross_build_mxe.sh +++ b/windows/cross_build_mxe.sh @@ -243,11 +243,11 @@ cp $PREFIX/share/pica-client/picapica-snd-newmessage.wav share/ if test $arch = 'i686-w64-mingw32.shared' then - cp ../build_pica-pica/win/installer32.nsi ./ + cp ../build_pica-pica/windows/installer32.nsi ./ makensis installer32.nsi elif test $arch = 'x86_64-w64-mingw32.shared' then - cp ../build_pica-pica/win/installer64.nsi ./ + cp ../build_pica-pica/windows/installer64.nsi ./ makensis installer64.nsi else die "unsupported architecture $arch" diff --git a/windows/mxe_ffmpeg_strip_excess_deps.patch b/windows/mxe_ffmpeg_strip_excess_deps.patch index cb0c851..5bd901a 100644 --- a/windows/mxe_ffmpeg_strip_excess_deps.patch +++ b/windows/mxe_ffmpeg_strip_excess_deps.patch @@ -1,63 +1,82 @@ diff --git a/src/ffmpeg.mk b/src/ffmpeg.mk -index 8dd80d86..e2132c3c 100644 +index 8dd80d8..4c7daec 100644 --- a/src/ffmpeg.mk +++ b/src/ffmpeg.mk -@@ -8,9 +8,9 @@ $(PKG)_CHECKSUM := cf38e0e28c7e5605942c4a77755349b0145804a397af37eb1fb4c77cb237f +@@ -8,9 +8,7 @@ $(PKG)_CHECKSUM := cf38e0e28c7e5605942c4a77755349b0145804a397af37eb1fb4c77cb237f $(PKG)_SUBDIR := $(PKG)-$($(PKG)_VERSION) $(PKG)_FILE := $(PKG)-$($(PKG)_VERSION).tar.xz $(PKG)_URL := https://ffmpeg.org/releases/$($(PKG)_FILE) -$(PKG)_DEPS := cc bzip2 gnutls lame libass libbluray libbs2b libcaca \ - libvpx opencore-amr $(BUILD)~nasm opus sdl2 speex theora vidstab \ - vo-amrwbenc vorbis x264 x265 xvidcore zlib -+$(PKG)_DEPS := cc bzip2 \ -+ libvpx opencore-amr $(BUILD)~nasm opus sdl2 speex \ -+ vo-amrwbenc vorbis x264 x265 zlib ++$(PKG)_DEPS := cc bzip2 libvpx $(BUILD)~nasm opus x264 x265 zlib # DO NOT ADD fdk-aac OR openssl SUPPORT. # Although they are free softwares, their licenses are not compatible with -@@ -42,24 +42,35 @@ define $(PKG)_BUILD +@@ -25,6 +23,22 @@ define $(PKG)_UPDATE + head -1 + endef + ++# Pica Pica needs a small part of what MXE's stock ffmpeg provides: the codecs ++# named in doc/proto-doc-latest.txt for the media of an audio/video call (h264, ++# hevc, vp9 and mjpeg for video, opus, adpcm_g722 and pcm_alaw for audio, both ++# directions), dshow for capture, and the hardware paths ffmpeg has for the ++# video codecs. --disable-everything turns off every component and the ++# --enable-<component>= options below turn that set back on, which is what ++# keeps libavcodec from carrying the several hundred codecs nothing here can ++# reach. ++# ++# The nvenc/nvdec/cuvid/qsv/amf components are listed as well although no MXE ++# package provides their headers yet, so configure prints a warning for each of ++# them and leaves them out. That is deliberate: adding ffnvcodec (NVIDIA), ++# libvpl (Intel QSV) or the AMF headers as a dependency is then the only change ++# needed to get them. The MediaFoundation encoders (h264_mf, hevc_mf) and the ++# dxva2/d3d11va/d3d12va hardware decoders need nothing but mingw-w64 and are ++# available right away. + define $(PKG)_BUILD + cd '$(BUILD_DIR)' && '$(SOURCE_DIR)/configure' \ + --cross-prefix='$(TARGET)'- \ +@@ -41,25 +55,28 @@ define $(PKG)_BUILD + --disable-doc \ --enable-gpl \ --enable-version3 \ - --extra-libs="`'$(TARGET)-pkg-config' --libs libmpg123` -mconsole" \ +- --extra-libs="`'$(TARGET)-pkg-config' --libs libmpg123` -mconsole" \ - --enable-gnutls \ - --enable-libass \ - --enable-libbluray \ - --enable-libbs2b \ - --enable-libcaca \ - --enable-libmp3lame \ - --enable-libopencore-amrnb \ - --enable-libopencore-amrwb \ +- --enable-libopencore-amrnb \ +- --enable-libopencore-amrwb \ ++ --extra-libs="-mconsole" \ --enable-libopus \ - --enable-libspeex \ +- --enable-libspeex \ - --enable-libtheora \ - --enable-libvidstab \ - --enable-libvo-amrwbenc \ +- --enable-libvo-amrwbenc \ - --enable-libvorbis \ --enable-libvpx \ --enable-libx264 \ --enable-libx265 \ - --enable-libxvid \ + --disable-programs \ ++ --disable-lzma \ ++ --disable-everything \ + --enable-protocol=file \ -+ --enable-muxer=matroska \ -+ --enable-muxer=mjpeg \ -+ --enable-demuxer=mjpeg \ -+ --enable-decoder=h264 \ -+ --enable-decoder=hevc \ -+ --enable-decoder=libvpx-vp9 \ -+ --enable-decoder=mjpeg \ -+ --enable-decoder=opus \ -+ --enable-decoder=libopus \ -+ --enable-decoder=pcm_alaw \ -+ --enable-decoder=g722 \ -+ --enable-encoder=mjpeg \ -+ --enable-encoder=libvpx-vp9 \ -+ --enable-encoder=libx264 \ -+ --enable-encoder=libx265 \ -+ --enable-encoder=opus \ -+ --enable-encoder=libopus \ -+ --enable-encoder=pcm_alaw \ -+ --enable-encoder=g722 \ ++ --enable-indev=dshow \ ++ --enable-demuxer=matroska,mjpeg,h264,hevc,ivf,wav \ ++ --enable-muxer=matroska,mjpeg,h264,hevc,ivf,wav \ ++ --enable-parser=h264,hevc,vp9,mjpeg,opus \ ++ --enable-bsf=extract_extradata,h264_mp4toannexb,hevc_mp4toannexb,vp9_superframe,vp9_superframe_split \ ++ --enable-decoder=h264,hevc,vp9,libvpx_vp9,mjpeg,rawvideo,opus,libopus,adpcm_g722,pcm_alaw,pcm_mulaw,pcm_s16le \ ++ --enable-encoder=libx264,libx265,libvpx_vp9,mjpeg,libopus,opus,adpcm_g722,pcm_alaw,pcm_mulaw,pcm_s16le \ ++ --enable-hwaccel=h264_dxva2,h264_d3d11va,h264_d3d11va2,h264_d3d12va,hevc_dxva2,hevc_d3d11va,hevc_d3d11va2,hevc_d3d12va,vp9_dxva2,vp9_d3d11va,vp9_d3d11va2,vp9_d3d12va \ ++ --enable-encoder=h264_mf,hevc_mf \ ++ --enable-hwaccel=h264_nvdec,hevc_nvdec,vp9_nvdec,mjpeg_nvdec \ ++ --enable-decoder=h264_qsv,hevc_qsv,vp9_qsv,mjpeg_qsv,h264_cuvid,hevc_cuvid,vp9_cuvid,mjpeg_cuvid \ ++ --enable-encoder=h264_nvenc,hevc_nvenc,h264_qsv,hevc_qsv,h264_amf,hevc_amf \ ++ --enable-filter=scale,format,null,hwupload,hwdownload,hwmap,aresample,aformat,anull \ --extra-ldflags="-fstack-protector" \ $($(PKG)_CONFIGURE_OPTS) $(MAKE) -C '$(BUILD_DIR)' -j '$(JOBS)' diff --git a/windows/mxe_qtbase_strip_excess_deps.patch b/windows/mxe_qtbase_strip_excess_deps.patch index 07971e3..c62ba8f 100644 --- a/windows/mxe_qtbase_strip_excess_deps.patch +++ b/windows/mxe_qtbase_strip_excess_deps.patch @@ -1,19 +1,20 @@ diff --git a/src/qtbase.mk b/src/qtbase.mk -index 600ff60f..29578a77 100644 +index 600ff60..220c2bb 100644 --- a/src/qtbase.mk +++ b/src/qtbase.mk -@@ -9,8 +9,8 @@ $(PKG)_CHECKSUM := 51e91c73abacab81e64efd01bf95794e79c0e605ad80947a024769f0dd620 +@@ -9,9 +9,8 @@ $(PKG)_CHECKSUM := 51e91c73abacab81e64efd01bf95794e79c0e605ad80947a024769f0dd620 $(PKG)_SUBDIR := $(PKG)-everywhere-src-$($(PKG)_VERSION) $(PKG)_FILE := $(PKG)-everywhere-opensource-src-$($(PKG)_VERSION).tar.xz $(PKG)_URL := https://download.qt.io/archive/qt/5.15/$($(PKG)_VERSION)/submodules/$($(PKG)_FILE) -$(PKG)_DEPS := cc dbus fontconfig freetds freetype harfbuzz jpeg mariadb-connector-c \ - libpng mesa openssl pcre2 postgresql sqlite zlib zstd $(BUILD)~zstd \ -+$(PKG)_DEPS := cc dbus fontconfig freetype harfbuzz jpeg \ -+ libpng mesa openssl pcre2 sqlite zlib zstd $(BUILD)~zstd \ - $(if $(findstring shared,$(MXE_TARGETS)), icu4c) +- $(if $(findstring shared,$(MXE_TARGETS)), icu4c) ++$(PKG)_DEPS := cc dbus fontconfig freetype harfbuzz \ ++ libpng mesa openssl pcre2 sqlite zlib $(PKG)_DEPS_$(BUILD) := $(PKG)_TARGETS := $(BUILD) $(MXE_TARGETS) -@@ -27,8 +27,6 @@ define $(PKG)_BUILD + +@@ -27,8 +26,6 @@ define $(PKG)_BUILD # ICU is buggy on static builds. See #653. TODO: reenable it some time in the future. cd '$(1)' && \ OPENSSL_LIBS="`'$(TARGET)-pkg-config' --libs-only-l openssl`" \ @@ -22,7 +23,15 @@ index 600ff60f..29578a77 100644 PKG_CONFIG="${TARGET}-pkg-config" \ PKG_CONFIG_SYSROOT_DIR="/" \ PKG_CONFIG_LIBDIR="$(PREFIX)/$(TARGET)/lib/pkgconfig" \ -@@ -51,11 +49,7 @@ define $(PKG)_BUILD +@@ -45,27 +42,23 @@ define $(PKG)_BUILD + -release \ + $(if $(BUILD_STATIC), -static,)$(if $(BUILD_SHARED), -shared,) \ + -prefix '$(PREFIX)/$(TARGET)/qt5' \ +- $(if $(BUILD_STATIC), -no)-icu \ ++ -no-icu \ ++ -no-zstd \ + -opengl dynamic \ + -no-glib \ -accessibility \ -nomake examples \ -nomake tests \ @@ -33,8 +42,11 @@ index 600ff60f..29578a77 100644 - -plugin-sql-tds -D Q_USE_SYBASE \ -system-zlib \ -system-libpng \ - -system-libjpeg \ -@@ -65,7 +59,6 @@ define $(PKG)_BUILD +- -system-libjpeg \ ++ -no-libjpeg \ + -system-sqlite \ + -fontconfig \ + -system-freetype \ -system-harfbuzz \ -system-pcre \ -openssl-linked \ |
