summaryrefslogtreecommitdiff
path: root/mingw/README.md
diff options
context:
space:
mode:
authorclaude-bot <[email protected]>2026-07-13 12:40:01 +0000
committerclaude-bot <[email protected]>2026-07-13 12:40:01 +0000
commit02fe7437413eaaf7cee46e5a1862c1fc7ac0dbba (patch)
tree50a2f61b89ee66f9ff58b7b9167a8e5232e19e3c /mingw/README.md
downloadopusfile-master.tar.gz
opusfile-master.zip
Import xiph/opusfile @ 4174c26e0aaab19d01afdea0a46f7f95fdc6b3e6HEADmaster
Snapshot for re3/reVC vendoring, per @lzcnt. Source: https://github.com/xiph/opusfile (4174c26e0aaab19d01afdea0a46f7f95fdc6b3e6).
Diffstat (limited to 'mingw/README.md')
-rw-r--r--mingw/README.md69
1 files changed, 69 insertions, 0 deletions
diff --git a/mingw/README.md b/mingw/README.md
new file mode 100644
index 0000000..9134149
--- /dev/null
+++ b/mingw/README.md
@@ -0,0 +1,69 @@
+# Cross-compiling under mingw
+
+Just running `make libopusfile-0.dll` in this directory should download
+and build opusfile and its dependencies. Some mingw
+libraries need to be compiled into the final package.
+
+## Generic instructions
+
+To build opusfile under mingw, you need to first build:
+
+- libogg
+- libopus
+- openssl
+
+For 'make check' to work, you may need wine installed.
+
+To build openssl, try:
+
+ CROSS_COMPILE="i686-w64-mingw32-" ./Configure mingw no-asm no-shared --prefix=$PWD/mingw && make depend && make -j8 && make install
+
+To build opusfile, try:
+
+ CC=i686-w64-mingw32-gcc PKG_CONFIG_PATH=$PWD/lib/pkgconfig RANLIB=i686-w64-mingw32-ranlib make -f ../unix/Makefile
+
+## Building the release package
+
+Running `make package` should produce a binary package.
+
+The steps are something like
+
+- Compile dynamic opusfile with:
+ - ./configure --host=i686-w64-mingw32 --prefix=/path/to/builddir/mingw \
+ PKG_CONFIG_PATH=/path/to/builddir/mingw/lib/pkgconfig
+ - make && make check && make -C doc/latex
+ - If Doxygen fails because of unescaped '#' characters in URLs
+ Update to at least Doxygen 1.8.15. Doxygen 1.8.3 also works.
+- mkdir opusfile-${version}-win32
+- Copy AUTHORS COPYING README.md include/opusfile.h to the release dir.
+ - Don't put opusfile.h in an opusfile-${version}-win32/include directory,
+ just put it straight in the release dir.
+- Merge changes between README.md and the version in the last
+ binary release. E.g. it's good to include versions of the dependencies,
+ release notes, etc.
+- Convert README.md to DOS line endings.
+- Copy .libs/libopusfile-0.dll to the release dir.
+- Copy .libs/libopusfile.a to the release dir.
+- Copy .libs/libopusurl-0.dll to the release dir.
+- Copy .libs/libopusurl.a to the release dir.
+- Copy mingw/bin/*.dll to the release dir for dependencies.
+- Copy any other dependent dlls, e.g. on Fedora 32 I needed to copy
+ /usr/i686-w64-mingw32/sys-root/mingw/bin/libgcc_s_dw2-1.dll
+ /usr/i686-w64-mingw32/sys-root/mingw/bin/libwinpthread-1.dll
+ On Fedora 23 I needed to copy
+ /usr/i686-w64-mingw32/sys-root/mingw/bin/libgcc_s_sjlj-1.dll
+ /usr/i686-w64-mingw32/sys-root/mingw/bin/libwinpthread-1.dll
+ On Gentoo I needed to copy
+ /usr/lib64/gcc/i686-w64-mingw32/7.3.0/libgcc_s_sjlj-1.dll
+ TODO: It may be possible to avoid this with CFLAGS="-static-libgcc"
+- Copy doc/latex/refman.pdf to opusfile-${version}-win32/opusfile-${version}.pdf
+- Copy examples/.libs/*.exe to the release dir.
+- Run "i686-w64-ming32-strip *.dll *.a *.exe" in the release dir.
+- In the release dir, run:
+ sha256sum * > SHA256SUMS.txt
+ gpg --detach-sign --armor SHA256SUMS.txt
+- In the parent directory, create the archive:
+ zip -r opusfile-${version}-win32.zip opusfile-${version}-win32/*
+- Copy the archive to a clean system and verify the examples work
+ to make sure you've included all the necessary libraries.
+