summaryrefslogtreecommitdiffstats
path: root/windows
diff options
context:
space:
mode:
authorAnton <anton@picapica.im>2026-09-26 15:39:03 +0400
committerAnton <anton@picapica.im>2026-09-26 15:39:03 +0400
commit77796a1d279429c0e83eace13b5c75582537eeb6 (patch)
tree8dd3cd51aefd477e0c4022b024718cadcb46ae91 /windows
parentb6e2b0d4f93585a8db8427db55458e16ebfe4a1e (diff)
downloadpica-pica-77796a1d279429c0e83eace13b5c75582537eeb6.tar.gz
pica-pica-77796a1d279429c0e83eace13b5c75582537eeb6.zip
windows: strip more dependencies from MXE packages
Diffstat (limited to 'windows')
-rwxr-xr-xwindows/cross_build_mxe.sh4
-rw-r--r--windows/mxe_ffmpeg_strip_excess_deps.patch79
-rw-r--r--windows/mxe_qtbase_strip_excess_deps.patch30
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 \