mirror of https://github.com/qTox/qTox.git
Browse Source
Maxim Biro (1): chore(build): add Windows cross-compilation instructionsreviewable/pr4555/r1
8 changed files with 1025 additions and 271 deletions
@ -1,113 +0,0 @@ |
|||||||
#!/bin/sh |
|
||||||
QTOX_DIR=`pwd`/.. |
|
||||||
|
|
||||||
if [ -d $QTOX_DIR/libs ]; then |
|
||||||
echo "Remove ./libs and redownload/recompile dependencies?" |
|
||||||
read -p "m/a/N (missing/all/no): " yn |
|
||||||
yn=$(echo $yn | tr "[:upper:]" "[:lower:]") |
|
||||||
if [ "$yn" == "a" ]; then |
|
||||||
rm -rf $QTOX_DIR/libs |
|
||||||
elif [ "$yn" == "n" ]; then |
|
||||||
exit 1 |
|
||||||
elif [ "$yn" != "m" ]; then |
|
||||||
exit 1 |
|
||||||
fi |
|
||||||
fi |
|
||||||
|
|
||||||
mkdir -p $QTOX_DIR/libs |
|
||||||
cd $QTOX_DIR/libs |
|
||||||
|
|
||||||
|
|
||||||
## toxcore |
|
||||||
if [ ! -f "libtoxcore_build_windows_x86_shared_release.zip" ]; then |
|
||||||
wget --no-check-certificate https://build.tox.chat/view/libtoxcore/job/libtoxcore_build_windows_x86_shared_release/lastSuccessfulBuild/artifact/libtoxcore_build_windows_x86_shared_release.zip |
|
||||||
rm -rf include/tox |
|
||||||
fi |
|
||||||
|
|
||||||
if [ ! -d "include/tox" ]; then |
|
||||||
unzip -o libtoxcore_build_windows_x86_shared_release.zip -d ./ |
|
||||||
fi |
|
||||||
|
|
||||||
|
|
||||||
## qrencode |
|
||||||
if [ ! -f "qrencode-3.4.4.tar.gz" ]; then |
|
||||||
wget https://fukuchi.org/works/qrencode/qrencode-3.4.4.tar.gz |
|
||||||
fi |
|
||||||
|
|
||||||
if [ ! -f "qrencode-3.4.4.tar.gz" ]; then |
|
||||||
echo "Warning: Failed to download libqrencode." |
|
||||||
echo "Warning: This is usually due to https certificate issues." |
|
||||||
echo |
|
||||||
echo "Would you like to continue without verifying the certificate?" |
|
||||||
read -p "(yes/No) y/N: " input |
|
||||||
input=$(echo $input | tr "[:upper:]" "[:lower:]") |
|
||||||
if [ "${input%es}" == y ]; then |
|
||||||
wget --no-check-certificate https://fukuchi.org/works/qrencode/qrencode-3.4.4.tar.gz |
|
||||||
else |
|
||||||
echo "Error: Could not download libqrencode." |
|
||||||
exit 1 |
|
||||||
fi |
|
||||||
fi |
|
||||||
|
|
||||||
if [ ! -d "$QTOX_DIR/libs/qrencode-3.4.4" ]; then |
|
||||||
tar -xvf qrencode-3.4.4.tar.gz |
|
||||||
rm -rf lib/qrcodelib.dll |
|
||||||
fi |
|
||||||
|
|
||||||
if [ ! -f "lib/libqrencode.a" ]; then |
|
||||||
pushd $QTOX_DIR/libs/qrencode-3.4.4 |
|
||||||
./autogen.sh |
|
||||||
./configure --prefix=$QTOX_DIR/libs --without-tests --without-libiconv-prefix --without-tools |
|
||||||
make |
|
||||||
make install |
|
||||||
popd |
|
||||||
fi |
|
||||||
|
|
||||||
|
|
||||||
## OpenAL |
|
||||||
if [ ! -f "openal-soft-1.16.0.tar.bz2" ]; then |
|
||||||
wget http://kcat.strangesoft.net/openal-releases/openal-soft-1.16.0.tar.bz2 |
|
||||||
rm -rf openal-soft-1.16.0 |
|
||||||
fi |
|
||||||
|
|
||||||
if [ ! -d "openal-soft-1.16.0" ]; then |
|
||||||
tar -xvf openal-soft-1.16.0.tar.bz2 |
|
||||||
rm bin/OpenAL32.dll |
|
||||||
fi |
|
||||||
|
|
||||||
if [ ! -f "bin/OpenAL32.dll" ]; then |
|
||||||
pushd openal-soft-1.16.0/build |
|
||||||
CFLAGS="-D_TIMESPEC_DEFINED" cmake -G "MSYS Makefiles" -DQT_QMAKE_EXECUTABLE=NOTFOUND -DCMAKE_BUILD_TYPE=Release -DALSOFT_REQUIRE_DSOUND=NO -DCMAKE_INSTALL_PREFIX=$QTOX_DIR/libs .. |
|
||||||
make |
|
||||||
make install |
|
||||||
popd |
|
||||||
fi |
|
||||||
|
|
||||||
|
|
||||||
## ffmpeg |
|
||||||
if [ ! -f "ffmpeg-2.7.tar.bz2" ]; then |
|
||||||
wget http://ffmpeg.org/releases/ffmpeg-2.7.tar.bz2 -O ffmpeg-2.7.tar.bz2 |
|
||||||
rm -rf ffmpeg-2.7 |
|
||||||
fi |
|
||||||
|
|
||||||
if [ ! -d "ffmpeg-2.7" ]; then |
|
||||||
tar -xvf ffmpeg-2.7.tar.bz2 |
|
||||||
rm bin/avcodec-56.dll |
|
||||||
pushd ffmpeg-2.7 |
|
||||||
patch -p1 < $QTOX_DIR/windows/ffmpeg-2.7-mingw.diff |
|
||||||
popd |
|
||||||
fi |
|
||||||
|
|
||||||
if [ ! -f "bin/avcodec-56.dll" ]; then |
|
||||||
pushd ffmpeg-2.7 |
|
||||||
./configure --target-os=mingw32 --prefix=$QTOX_DIR/libs \ |
|
||||||
--enable-memalign-hack --disable-swscale-alpha --disable-programs --disable-doc --disable-postproc \ |
|
||||||
--disable-avfilter --disable-avresample --disable-swresample --disable-protocols --disable-filters \ |
|
||||||
--disable-network --disable-muxers --disable-sdl --disable-iconv --disable-bzlib --disable-lzma \ |
|
||||||
--disable-zlib --disable-xlib --disable-encoders --enable-shared --disable-static --disable-yasm |
|
||||||
make |
|
||||||
make install |
|
||||||
popd |
|
||||||
fi |
|
||||||
|
|
||||||
echo **Done** |
|
@ -1,18 +0,0 @@ |
|||||||
#!/bin/bash |
|
||||||
# Builds qTox for Windows and prepares a redistribuable .zip archive |
|
||||||
export PATH=/root/mxe/usr/bin:$PATH |
|
||||||
tar xvf libs.tar.gz |
|
||||||
tar xvf libtoxcore-win32.tar.gz -C libs |
|
||||||
/root/mxe/usr/i686-pc-mingw32.shared/qt5/bin/qmake |
|
||||||
make clean |
|
||||||
make -j4 || { echo 'make failed, aborting' ; exit 1; } |
|
||||||
|
|
||||||
rm -rf qTox-win32 |
|
||||||
rm -rf qTox-win32.zip |
|
||||||
mkdir qTox-win32 |
|
||||||
tar xvf qtox-dlls.tar.gz -C qTox-win32 |
|
||||||
cp libs/bin/* qTox-win32 |
|
||||||
cp release/qtox.exe qTox-win32 |
|
||||||
rm -rf qTox-win32.zip |
|
||||||
zip -r qTox-win32.zip qTox-win32 |
|
||||||
chmod 777 qTox-win32.zip |
|
@ -0,0 +1,125 @@ |
|||||||
|
# Cross-compile from Linux |
||||||
|
|
||||||
|
## Intro |
||||||
|
|
||||||
|
Following these instructions you will be able to cross-compile qTox to Windows. |
||||||
|
|
||||||
|
This script can be used by qTox power users to cross-compile qTox themselves,as |
||||||
|
well as by qTox developers to make sure their local changes don't break |
||||||
|
cross-compilation to Windows. |
||||||
|
|
||||||
|
Note that the compilation script doesn't build the updater and doesn't produce |
||||||
|
an installer. |
||||||
|
|
||||||
|
## Usage |
||||||
|
|
||||||
|
[Install Docker](https://docs.docker.com/engine/installation/linux/). |
||||||
|
|
||||||
|
You should have 3 directories available (names don't have to match the given |
||||||
|
ones): |
||||||
|
|
||||||
|
1. `workspace` -- a directory that will contain a cache of qTox dependencies |
||||||
|
and the final qTox cross-compilation build. You should create this directory. |
||||||
|
2. `script` -- a directory that contains the `build.sh` script. You can use |
||||||
|
this directory for this, there is no need to create a new one. |
||||||
|
3. `qtox` -- a root directory of a qTox repository. This directory contains |
||||||
|
qTox source code that will be cross-compiled. You can use the root of this qTox |
||||||
|
repository, there is no need to create a new one. |
||||||
|
|
||||||
|
These directories will be mounted inside a Docker container at `/workspace`, |
||||||
|
`/script` and `/qtox`. |
||||||
|
|
||||||
|
The contents of `qtox` and `script` directories wouldn't be modified. The |
||||||
|
`build.sh` script actually makes a copy of `qtox` directory and works on that |
||||||
|
copy. |
||||||
|
|
||||||
|
Once you sort out the directories, you are ready to run the `build.sh` script |
||||||
|
in a Docker container. |
||||||
|
|
||||||
|
Note that the `build.sh` script takes 2 arguments: architecture and build type. |
||||||
|
Valid values for the architecture are `i686` for 32-bit and `x86_64` for |
||||||
|
64-bit. Valid values for the build type are `release` and `debug`. All case |
||||||
|
sensitive. |
||||||
|
|
||||||
|
Now, to start the cross-compilation, for example, for a 32-bit release qTox, run |
||||||
|
|
||||||
|
```sh |
||||||
|
sudo docker run --rm \ |
||||||
|
-v /absolute/path/to/your/workspace:/workspace \ |
||||||
|
-v /absolute/path/to/your/script:/script \ |
||||||
|
-v /absolute/path/to/your/qtox:/qtox \ |
||||||
|
ubuntu:16.04 \ |
||||||
|
/bin/bash /script/build.sh i686 release |
||||||
|
``` |
||||||
|
|
||||||
|
If you are a qTox developer, you might want to instead run |
||||||
|
|
||||||
|
```sh |
||||||
|
# Get shell inside Ubuntu 16.04 container so that you can poke around if needed |
||||||
|
sudo docker run -it \ |
||||||
|
--rm \ |
||||||
|
-v /absolute/path/to/your/workspace:/workspace \ |
||||||
|
-v /absolute/path/to/your/script:/script \ |
||||||
|
-v /absolute/path/to/your/qtox:/qtox \ |
||||||
|
ubuntu:16.04 \ |
||||||
|
/bin/bash |
||||||
|
# Run the script |
||||||
|
bash /script/build.sh i686 release |
||||||
|
``` |
||||||
|
|
||||||
|
This will cross-compile all of the qTox dependencies and qTox itself, storing |
||||||
|
them in the `workspace` directory. The first time you run it for each |
||||||
|
architecture, it will take a long time for the cross-compilation to finish, as |
||||||
|
qTox has a lot of dependencies that need to be cross-compiled. It takes my |
||||||
|
Intel Core i7 processor about 125 minutes for the cross-compilation to get done |
||||||
|
on a single core, and about 30 minutes using all 8 hyperthreads. But once you |
||||||
|
do it once for each architecture, the dependencies will get cached inside the |
||||||
|
`workspace` directory, and the next time you build qTox, the `build.sh` script |
||||||
|
will skip recompiling them, going straight to compiling qTox, which is a lot |
||||||
|
faster -- about 8 minutes on a single core and 2 minutes using 8 hyperthreads. |
||||||
|
|
||||||
|
The structure of `workspace` directory that the `build.sh` script will create |
||||||
|
is as follows: |
||||||
|
|
||||||
|
``` |
||||||
|
workspace |
||||||
|
├── i686 |
||||||
|
│ ├── dep-cache |
||||||
|
│ │ ├── libffmpeg |
||||||
|
│ │ ├── libfilteraudio |
||||||
|
│ │ ├── libopenal |
||||||
|
│ │ ├── libopenssl |
||||||
|
│ │ ├── libopus |
||||||
|
│ │ ├── libqrencode |
||||||
|
│ │ ├── libqt5 |
||||||
|
│ │ ├── libsodium |
||||||
|
│ │ ├── libsqlcipher |
||||||
|
│ │ ├── libtoxcore |
||||||
|
│ │ └── libvpx |
||||||
|
│ └── qtox |
||||||
|
│ ├── debug |
||||||
|
│ └── release |
||||||
|
└── x86_64 |
||||||
|
├── dep-cache |
||||||
|
│ ├── libffmpeg |
||||||
|
│ ├── libfilteraudio |
||||||
|
│ ├── libopenal |
||||||
|
│ ├── libopenssl |
||||||
|
│ ├── libopus |
||||||
|
│ ├── libqrencode |
||||||
|
│ ├── libqt5 |
||||||
|
│ ├── libsodium |
||||||
|
│ ├── libsqlcipher |
||||||
|
│ ├── libtoxcore |
||||||
|
│ └── libvpx |
||||||
|
└── qtox |
||||||
|
├── debug |
||||||
|
└── release |
||||||
|
``` |
||||||
|
|
||||||
|
The `dep-cache` directory is where all cross-compiled qTox dependencies will be |
||||||
|
cached for the future runs. You can remove any directory inside `deps`, which |
||||||
|
will result in the `build.sh` re-compiling the missing dependency. |
||||||
|
|
||||||
|
The `qtox` directory, split into `debug` and `release`, is where the |
||||||
|
cross-compiled qTox will be stored. |
@ -0,0 +1,885 @@ |
|||||||
|
#!/usr/bin/env bash |
||||||
|
|
||||||
|
# MIT License |
||||||
|
# |
||||||
|
# Copyright (c) 2017 Maxim Biro <nurupo.contributions@gmail.com> |
||||||
|
# |
||||||
|
# Permission is hereby granted, free of charge, to any person obtaining a copy |
||||||
|
# of this software and associated documentation files (the "Software"), to deal |
||||||
|
# in the Software without restriction, including without limitation the rights |
||||||
|
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell |
||||||
|
# copies of the Software, and to permit persons to whom the Software is |
||||||
|
# furnished to do so, subject to the following conditions: |
||||||
|
# |
||||||
|
# The above copyright notice and this permission notice shall be included in |
||||||
|
# all copies or substantial portions of the Software. |
||||||
|
# |
||||||
|
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR |
||||||
|
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |
||||||
|
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE |
||||||
|
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER |
||||||
|
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, |
||||||
|
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN |
||||||
|
# THE SOFTWARE. |
||||||
|
|
||||||
|
# Known issues: |
||||||
|
# - Doesn't build qTox updater, because it wasn't ported to cmake yet and |
||||||
|
# because it requires static Qt, which means we'd need to build Qt twice, |
||||||
|
# and building Qt takes really long time. |
||||||
|
# |
||||||
|
# - Doesn't create an installer because there is no NSIS 3 in Ubuntu. We could |
||||||
|
# switch to Debian instead and backport it from Experimental, which is what |
||||||
|
# we do on Jenkins, but since we don't build an updater, we might as well |
||||||
|
# just do the nightly qTox build: no updater, no installer. |
||||||
|
# |
||||||
|
# - Qt from 5.8.0 to 5.9.1 doesn't cross-compile to Windows due to |
||||||
|
# https://bugreports.qt.io/browse/QTBUG-61740. Should be fixed in 5.9.2. You |
||||||
|
# can easily patch it though, just one sed command, but I guess we will wait |
||||||
|
# for 5.9.2. |
||||||
|
# |
||||||
|
# - FFmpeg 3.3 doesn't cross-compile correctly, qTox build fails when linking |
||||||
|
# against the 3.3 FFmpeg. They have removed `--enable-memalign-hack` switch, |
||||||
|
# which might be what causes this. |
||||||
|
# |
||||||
|
# - Toxcore v0.1.9 doesn't cross-compile to Windows due to a linking order |
||||||
|
# issue in monolith_test https://github.com/TokTok/c-toxcore/pull/564. It's |
||||||
|
# fixed in master, so we just wait checking out a stable master commit point |
||||||
|
# until the next release. Once the next release occurs, we will be checking |
||||||
|
# out that instead. |
||||||
|
|
||||||
|
|
||||||
|
set -euo pipefail |
||||||
|
|
||||||
|
|
||||||
|
# Common directory paths |
||||||
|
|
||||||
|
readonly WORKSPACE_DIR="/workspace" |
||||||
|
readonly SCRIPT_DIR="/script" |
||||||
|
readonly QTOX_SRC_DIR="/qtox" |
||||||
|
|
||||||
|
|
||||||
|
# Make sure we run in an expected environment |
||||||
|
|
||||||
|
if ! grep -q 'buntu 16\.04' /etc/lsb-release |
||||||
|
then |
||||||
|
echo "Error: This script should be run on Ubuntu 16.04." |
||||||
|
exit 1 |
||||||
|
fi |
||||||
|
|
||||||
|
if [ ! -d "$WORKSPACE_DIR" ] || [ ! -d "$SCRIPT_DIR" ] || [ ! -d "$QTOX_SRC_DIR" ] |
||||||
|
then |
||||||
|
echo "Error: At least one of $WORKSPACE_DIR, $SCRIPT_DIR or $QTOX_SRC_DIR directories is missing." |
||||||
|
exit 1 |
||||||
|
fi |
||||||
|
|
||||||
|
if [ ! -d "$QTOX_SRC_DIR/src" ] |
||||||
|
then |
||||||
|
echo "Error: $QTOX_SRC_DIR/src directory is missing, make sure $QTOX_SRC_DIR contains qTox source code." |
||||||
|
exit 1 |
||||||
|
fi |
||||||
|
|
||||||
|
if [ "$(id -u)" != "0" ] |
||||||
|
then |
||||||
|
echo "Error: This script must be run as root." |
||||||
|
exit 1 |
||||||
|
fi |
||||||
|
|
||||||
|
|
||||||
|
# Check arguments |
||||||
|
|
||||||
|
readonly ARCH=$1 |
||||||
|
readonly BUILD_TYPE=$2 |
||||||
|
|
||||||
|
if [ -z "$ARCH" ] |
||||||
|
then |
||||||
|
echo "Error: No architecture was specified. Please specify either 'i686' or 'x86_64', case sensitive, as the first argument to the script." |
||||||
|
exit 1 |
||||||
|
fi |
||||||
|
|
||||||
|
if [[ "$ARCH" != "i686" ]] && [[ "$ARCH" != "x86_64" ]] |
||||||
|
then |
||||||
|
echo "Error: Incorrect architecture was specified. Please specify either 'i686' or 'x86_64', case sensitive, as the first argument to the script." |
||||||
|
exit 1 |
||||||
|
fi |
||||||
|
|
||||||
|
if [ -z "$BUILD_TYPE" ] |
||||||
|
then |
||||||
|
echo "Error: No build type was specified. Please specify either 'release' or 'debug', case sensitive, as the second argument to the script." |
||||||
|
exit 1 |
||||||
|
fi |
||||||
|
|
||||||
|
if [[ "$BUILD_TYPE" != "release" ]] && [[ "$BUILD_TYPE" != "debug" ]] |
||||||
|
then |
||||||
|
echo "Error: Incorrect build type was specified. Please specify either 'release' or 'debug', case sensitive, as the second argument to the script." |
||||||
|
exit 1 |
||||||
|
fi |
||||||
|
|
||||||
|
|
||||||
|
# More directory variables |
||||||
|
|
||||||
|
readonly BUILD_DIR="/build" |
||||||
|
readonly DEP_DIR="$WORKSPACE_DIR/$ARCH/dep-cache" |
||||||
|
|
||||||
|
|
||||||
|
set -x |
||||||
|
|
||||||
|
|
||||||
|
# Get packages |
||||||
|
|
||||||
|
apt-get update |
||||||
|
apt-get install -y --no-install-recommends \ |
||||||
|
autoconf \ |
||||||
|
automake \ |
||||||
|
build-essential \ |
||||||
|
ca-certificates \ |
||||||
|
cmake \ |
||||||
|
git \ |
||||||
|
libtool \ |
||||||
|
pkg-config \ |
||||||
|
tclsh \ |
||||||
|
unzip \ |
||||||
|
wget \ |
||||||
|
yasm |
||||||
|
if [[ "$ARCH" == "i686" ]] |
||||||
|
then |
||||||
|
apt-get install -y --no-install-recommends \ |
||||||
|
g++-mingw-w64-i686 \ |
||||||
|
gcc-mingw-w64-i686 |
||||||
|
elif [[ "$ARCH" == "x86_64" ]] |
||||||
|
then |
||||||
|
apt-get install -y --no-install-recommends \ |
||||||
|
g++-mingw-w64-x86-64 \ |
||||||
|
gcc-mingw-w64-x86-64 |
||||||
|
fi |
||||||
|
|
||||||
|
|
||||||
|
# Create the expected directory structure |
||||||
|
|
||||||
|
# Just make sure those exist |
||||||
|
mkdir -p "$WORKSPACE_DIR" |
||||||
|
mkdir -p "$DEP_DIR" |
||||||
|
|
||||||
|
# Build dir should be empty |
||||||
|
rm -rf "$BUILD_DIR" |
||||||
|
mkdir -p "$BUILD_DIR" |
||||||
|
cd "$BUILD_DIR" |
||||||
|
|
||||||
|
|
||||||
|
# Use all cores for building |
||||||
|
|
||||||
|
MAKEFLAGS=j$(nproc) |
||||||
|
export MAKEFLAGS |
||||||
|
|
||||||
|
|
||||||
|
# OpenSSL |
||||||
|
|
||||||
|
OPENSSL_PREFIX_DIR="$DEP_DIR/libopenssl" |
||||||
|
if [ ! -f "$OPENSSL_PREFIX_DIR/done" ] |
||||||
|
then |
||||||
|
rm -rf "$OPENSSL_PREFIX_DIR" |
||||||
|
mkdir -p "$OPENSSL_PREFIX_DIR" |
||||||
|
|
||||||
|
OPENSSL_VERSION=1.0.2l |
||||||
|
OPENSSL_SHA256_HASH=ce07195b659e75f4e1db43552860070061f156a98bb37b672b101ba6e3ddf30c |
||||||
|
|
||||||
|
wget https://www.openssl.org/source/openssl-$OPENSSL_VERSION.tar.gz |
||||||
|
|
||||||
|
if ! ( echo "$OPENSSL_SHA256_HASH openssl-$OPENSSL_VERSION.tar.gz" | sha256sum -c --status - ) |
||||||
|
then |
||||||
|
echo "Error: sha256 of openssl-$OPENSSL_VERSION.tar.gz doesn't match the known one." |
||||||
|
exit 1 |
||||||
|
else |
||||||
|
echo "sha256 matches the expected one: $OPENSSL_SHA256_HASH" |
||||||
|
fi |
||||||
|
|
||||||
|
tar -xf openssl*.tar.gz |
||||||
|
rm openssl*.tar.gz |
||||||
|
cd openssl* |
||||||
|
|
||||||
|
CONFIGURE_OPTIONS="--prefix=$OPENSSL_PREFIX_DIR shared" |
||||||
|
if [[ "$ARCH" == "x86_64" ]] |
||||||
|
then |
||||||
|
CONFIGURE_OPTIONS="$CONFIGURE_OPTIONS mingw64 --cross-compile-prefix=x86_64-w64-mingw32-" |
||||||
|
elif [[ "$ARCH" == "i686" ]] |
||||||
|
then |
||||||
|
CONFIGURE_OPTIONS="$CONFIGURE_OPTIONS mingw --cross-compile-prefix=i686-w64-mingw32-" |
||||||
|
fi |
||||||
|
|
||||||
|
./Configure $CONFIGURE_OPTIONS |
||||||
|
make |
||||||
|
make install |
||||||
|
touch $OPENSSL_PREFIX_DIR/done |
||||||
|
|
||||||
|
CONFIGURE_OPTIONS="" |
||||||
|
|
||||||
|
cd .. |
||||||
|
rm -rf ./openssl* |
||||||
|
fi |
||||||
|
|
||||||
|
|
||||||
|
# Qt |
||||||
|
|
||||||
|
QT_PREFIX_DIR="$DEP_DIR/libqt5" |
||||||
|
if [ ! -f "$QT_PREFIX_DIR/done" ] |
||||||
|
then |
||||||
|
rm -rf "$QT_PREFIX_DIR" |
||||||
|
mkdir -p "$QT_PREFIX_DIR" |
||||||
|
|
||||||
|
QT_MIRROR=http://qt.mirror.constant.com |
||||||
|
|
||||||
|
QT_MAJOR=5 |
||||||
|
QT_MINOR=6 |
||||||
|
QT_PATCH=2 |
||||||
|
|
||||||
|
QT_VERSION=$QT_MAJOR.$QT_MINOR.$QT_PATCH |
||||||
|
wget $QT_MIRROR/official_releases/qt/$QT_MAJOR.$QT_MINOR/$QT_VERSION/single/qt-everywhere-opensource-src-$QT_VERSION.tar.xz |
||||||
|
|
||||||
|
tar -xf qt*.tar.xz |
||||||
|
rm qt*.tar.xz |
||||||
|
cd qt* |
||||||
|
|
||||||
|
export PKG_CONFIG_PATH="$OPENSSL_PREFIX_DIR/lib/pkgconfig" |
||||||
|
export OPENSSL_LIBS="$(pkg-config --libs openssl)" |
||||||
|
|
||||||
|
./configure -prefix $QT_PREFIX_DIR \ |
||||||
|
-release \ |
||||||
|
-shared \ |
||||||
|
-device-option CROSS_COMPILE=$ARCH-w64-mingw32- \ |
||||||
|
-xplatform win32-g++ \ |
||||||
|
-openssl \ |
||||||
|
$(pkg-config --cflags openssl) \ |
||||||
|
-opensource -confirm-license \ |
||||||
|
-pch \ |
||||||
|
-nomake examples \ |
||||||
|
-nomake tools \ |
||||||
|
-nomake tests \ |
||||||
|
-skip translations \ |
||||||
|
-skip doc \ |
||||||
|
-skip qtdeclarative \ |
||||||
|
-skip activeqt \ |
||||||
|
-skip qtwebsockets \ |
||||||
|
-skip qtscript \ |
||||||
|
-skip qtquickcontrols \ |
||||||
|
-skip qtconnectivity \ |
||||||
|
-skip qtenginio \ |
||||||
|
-skip qtsensors \ |
||||||
|
-skip qtserialport \ |
||||||
|
-skip qtlocation \ |
||||||
|
-skip qtgraphicaleffects \ |
||||||
|
-skip qtimageformats \ |
||||||
|
-skip webchannel \ |
||||||
|
-skip multimedia \ |
||||||
|
-no-dbus \ |
||||||
|
-no-icu \ |
||||||
|
-no-qml-debug \ |
||||||
|
-no-compile-examples \ |
||||||
|
-qt-libjpeg \ |
||||||
|
-qt-libpng \ |
||||||
|
-qt-zlib \ |
||||||
|
-qt-pcre |
||||||
|
|
||||||
|
make |
||||||
|
make install |
||||||
|
touch $QT_PREFIX_DIR/done |
||||||
|
|
||||||
|
unset PKG_CONFIG_PATH |
||||||
|
unset OPENSSL_LIBS |
||||||
|
|
||||||
|
cd .. |
||||||
|
rm -rf ./qt* |
||||||
|
fi |
||||||
|
|
||||||
|
|
||||||
|
# SQLCipher |
||||||
|
|
||||||
|
SQLCIPHER_PREFIX_DIR="$DEP_DIR/libsqlcipher" |
||||||
|
if [ ! -f "$SQLCIPHER_PREFIX_DIR/done" ] |
||||||
|
then |
||||||
|
rm -rf "$SQLCIPHER_PREFIX_DIR" |
||||||
|
mkdir -p "$SQLCIPHER_PREFIX_DIR" |
||||||
|
|
||||||
|
git clone \ |
||||||
|
--branch v3.4.1 \ |
||||||
|
--depth 1 \ |
||||||
|
https://github.com/sqlcipher/sqlcipher \ |
||||||
|
sqlcipher |
||||||
|
cd sqlcipher |
||||||
|
|
||||||
|
sed -i s/'LIBS="-lcrypto $LIBS"'/'LIBS="-lcrypto -lgdi32 $LIBS"'/g configure |
||||||
|
sed -i s/'LIBS="-lcrypto $LIBS"'/'LIBS="-lcrypto -lgdi32 $LIBS"'/g configure |
||||||
|
sed -i s/'if test "$TARGET_EXEEXT" = ".exe"'/'if test ".exe" = ".exe"'/g configure |
||||||
|
|
||||||
|
> Makefile.in-patch cat << "EOF" |
||||||
|
--- Makefile.in 2017-07-24 04:33:46.944080013 +0000 |
||||||
|
+++ Makefile.in-patch 2017-07-24 04:50:47.340596990 +0000 |
||||||
|
@@ -1074,7 +1074,7 @@ |
||||||
|
$(TOP)/ext/fts5/fts5_varint.c \ |
||||||
|
$(TOP)/ext/fts5/fts5_vocab.c \ |
||||||
|
|
||||||
|
-fts5parse.c: $(TOP)/ext/fts5/fts5parse.y lemon |
||||||
|
+fts5parse.c: $(TOP)/ext/fts5/fts5parse.y lemon$(BEXE) |
||||||
|
cp $(TOP)/ext/fts5/fts5parse.y . |
||||||
|
rm -f fts5parse.h |
||||||
|
./lemon$(BEXE) $(OPTS) fts5parse.y |
||||||
|
|
||||||
|
EOF |
||||||
|
|
||||||
|
patch -l < Makefile.in-patch |
||||||
|
|
||||||
|
./configure --host="$ARCH-w64-mingw32" \ |
||||||
|
--prefix="$SQLCIPHER_PREFIX_DIR" \ |
||||||
|
--disable-shared \ |
||||||
|
--enable-tempstore=yes \ |
||||||
|
CFLAGS="-O2 -g0 -DSQLITE_HAS_CODEC -I$OPENSSL_PREFIX_DIR/include/" \ |
||||||
|
LDFLAGS="$OPENSSL_PREFIX_DIR/lib/libcrypto.a -lcrypto -lgdi32 -L$OPENSSL_PREFIX_DIR/lib/" |
||||||
|
|
||||||
|
sed -i s/"TEXE = $"/"TEXE = .exe"/ Makefile |
||||||
|
|
||||||
|
make |
||||||
|
make install |
||||||
|
touch $SQLCIPHER_PREFIX_DIR/done |
||||||
|
|
||||||
|
cd .. |
||||||
|
rm -rf ./sqlcipher |
||||||
|
fi |
||||||
|
|
||||||
|
|
||||||
|
# FFmpeg |
||||||
|
|
||||||
|
FFMPEG_PREFIX_DIR="$DEP_DIR/libffmpeg" |
||||||
|
if [ ! -f "$FFMPEG_PREFIX_DIR/done" ] |
||||||
|
then |
||||||
|
rm -rf "$FFMPEG_PREFIX_DIR" |
||||||
|
mkdir -p "$FFMPEG_PREFIX_DIR" |
||||||
|
|
||||||
|
wget https://www.ffmpeg.org/releases/ffmpeg-3.2.6.tar.xz |
||||||
|
tar -xf ffmpeg*.tar.xz |
||||||
|
cd ffmpeg* |
||||||
|
|
||||||
|
if [[ "$ARCH" == "x86_64"* ]] |
||||||
|
then |
||||||
|
CONFIGURE_OPTIONS="--arch=x86_64" |
||||||
|
elif [[ "$ARCH" == "i686" ]] |
||||||
|
then |
||||||
|
CONFIGURE_OPTIONS="--arch=x86" |
||||||
|
fi |
||||||
|
|
||||||
|
./configure $CONFIGURE_OPTIONS \ |
||||||
|
--prefix="$FFMPEG_PREFIX_DIR" \ |
||||||
|
--target-os="mingw32" \ |
||||||
|
--cross-prefix="$ARCH-w64-mingw32-" \ |
||||||
|
--pkg-config="pkg-config" \ |
||||||
|
--extra-cflags="-static -O2 -g0" \ |
||||||
|
--extra-ldflags="-lm -static" \ |
||||||
|
--pkg-config-flags="--static" \ |
||||||
|
--disable-shared \ |
||||||
|
--disable-programs \ |
||||||
|
--disable-protocols \ |
||||||
|
--disable-doc \ |
||||||
|
--disable-sdl \ |
||||||
|
--disable-avfilter \ |
||||||
|
--disable-avresample \ |
||||||
|
--disable-filters \ |
||||||
|
--disable-iconv \ |
||||||
|
--disable-network \ |
||||||
|
--disable-muxers \ |
||||||
|
--disable-postproc \ |
||||||
|
--disable-swresample \ |
||||||
|
--disable-swscale-alpha \ |
||||||
|
--disable-dct \ |
||||||
|
--disable-dwt \ |
||||||
|
--disable-lsp \ |
||||||
|
--disable-lzo \ |
||||||
|
--disable-mdct \ |
||||||
|
--disable-rdft \ |
||||||
|
--disable-fft \ |
||||||
|
--disable-faan \ |
||||||
|
--disable-vaapi \ |
||||||
|
--disable-vdpau \ |
||||||
|
--disable-zlib \ |
||||||
|
--disable-xlib \ |
||||||
|
--disable-bzlib \ |
||||||
|
--disable-lzma \ |
||||||
|
--disable-encoders \ |
||||||
|
--disable-decoders \ |
||||||
|
--disable-demuxers \ |
||||||
|
--disable-parsers \ |
||||||
|
--enable-demuxer=h264 \ |
||||||
|
--enable-demuxer=mjpeg \ |
||||||
|
--enable-parser=h264 \ |
||||||
|
--enable-parser=mjpeg \ |
||||||
|
--enable-decoder=h264 \ |
||||||
|
--enable-decoder=mjpeg \ |
||||||
|
--enable-memalign-hack |
||||||
|
make |
||||||
|
make install |
||||||
|
touch $FFMPEG_PREFIX_DIR/done |
||||||
|
|
||||||
|
CONFIGURE_OPTIONS="" |
||||||
|
|
||||||
|
cd .. |
||||||
|
rm -rf ./ffmpeg* |
||||||
|
fi |
||||||
|
|
||||||
|
|
||||||
|
# Openal-soft (irungentoo's fork) |
||||||
|
|
||||||
|
OPENAL_PREFIX_DIR="$DEP_DIR/libopenal" |
||||||
|
if [ ! -f "$OPENAL_PREFIX_DIR/done" ] |
||||||
|
then |
||||||
|
rm -rf "$OPENAL_PREFIX_DIR" |
||||||
|
mkdir -p "$OPENAL_PREFIX_DIR" |
||||||
|
|
||||||
|
git clone https://github.com/irungentoo/openal-soft-tox openal-soft-tox |
||||||
|
cd openal* |
||||||
|
git checkout b80570bed017de60b67c6452264c634085c3b148 |
||||||
|
|
||||||
|
echo " |
||||||
|
SET(CMAKE_SYSTEM_NAME Windows) |
||||||
|
|
||||||
|
SET(CMAKE_C_COMPILER $ARCH-w64-mingw32-gcc) |
||||||
|
SET(CMAKE_CXX_COMPILER $ARCH-w64-mingw32-g++) |
||||||
|
SET(CMAKE_RC_COMPILER $ARCH-w64-mingw32-windres) |
||||||
|
|
||||||
|
SET(CMAKE_FIND_ROOT_PATH /usr/$ARCH-w64-mingw32) |
||||||
|
|
||||||
|
# search for programs in the build host directories |
||||||
|
SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) |
||||||
|
# for libraries and headers in the target directories |
||||||
|
SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) |
||||||
|
SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) |
||||||
|
" > toolchain.cmake |
||||||
|
|
||||||
|
CFLAGS="-fPIC" cmake -DCMAKE_INSTALL_PREFIX="$OPENAL_PREFIX_DIR" \ |
||||||
|
-DCMAKE_BUILD_TYPE=Release \ |
||||||
|
-DALSOFT_UTILS=OFF \ |
||||||
|
-DALSOFT_EXAMPLES=OFF \ |
||||||
|
-DCMAKE_TOOLCHAIN_FILE=toolchain.cmake \ |
||||||
|
-DDSOUND_INCLUDE_DIR=/usr/$ARCH-w64-mingw32/include \ |
||||||
|
-DDSOUND_LIBRARY=/usr/$ARCH-w64-mingw32/lib/libdsound.a |
||||||
|
|
||||||
|
make |
||||||
|
make install |
||||||
|
touch $OPENAL_PREFIX_DIR/done |
||||||
|
|
||||||
|
cd .. |
||||||
|
rm -rf ./openal* |
||||||
|
fi |
||||||
|
|
||||||
|
|
||||||
|
# Filteraudio |
||||||
|
|
||||||
|
FILTERAUDIO_PREFIX_DIR="$DEP_DIR/libfilteraudio" |
||||||
|
if [ ! -f "$FILTERAUDIO_PREFIX_DIR/done" ] |
||||||
|
then |
||||||
|
rm -rf "$FILTERAUDIO_PREFIX_DIR" |
||||||
|
mkdir -p "$FILTERAUDIO_PREFIX_DIR" |
||||||
|
|
||||||
|
git clone https://github.com/irungentoo/filter_audio filter_audio |
||||||
|
cd filter* |
||||||
|
git checkout ada2f4fdc04940cdeee47caffe43add4fa017096 |
||||||
|
|
||||||
|
$ARCH-w64-mingw32-gcc -O2 -g0 -c \ |
||||||
|
aec/aec_core.c \ |
||||||
|
aec/aec_core_sse2.c \ |
||||||
|
aec/aec_rdft.c \ |
||||||
|
aec/aec_rdft_sse2.c \ |
||||||
|
aec/aec_resampler.c \ |
||||||
|
aec/echo_cancellation.c \ |
||||||
|
agc/analog_agc.c \ |
||||||
|
agc/digital_agc.c \ |
||||||
|
ns/ns_core.c \ |
||||||
|
ns/nsx_core_c.c \ |
||||||
|
ns/nsx_core.c \ |
||||||
|
ns/noise_suppression_x.c \ |
||||||
|
ns/noise_suppression.c \ |
||||||
|
other/get_scaling_square.c \ |
||||||
|
other/resample_by_2.c \ |
||||||
|
other/spl_sqrt.c \ |
||||||
|
other/delay_estimator.c \ |
||||||
|
other/complex_bit_reverse.c \ |
||||||
|
other/dot_product_with_scale.c \ |
||||||
|
other/cross_correlation.c \ |
||||||
|
other/min_max_operations.c \ |
||||||
|
other/resample_48khz.c \ |
||||||
|
other/high_pass_filter.c \ |
||||||
|
other/energy.c \ |
||||||
|
other/randomization_functions.c \ |
||||||
|
other/speex_resampler.c \ |
||||||
|
other/copy_set_operations.c \ |
||||||
|
other/downsample_fast.c \ |
||||||
|
other/complex_fft.c \ |
||||||
|
other/vector_scaling_operations.c \ |
||||||
|
other/resample_by_2_internal.c \ |
||||||
|
other/delay_estimator_wrapper.c \ |
||||||
|
other/real_fft.c \ |
||||||
|
other/spl_sqrt_floor.c \ |
||||||
|
other/resample_fractional.c \ |
||||||
|
other/ring_buffer.c \ |
||||||
|
other/splitting_filter.c \ |
||||||
|
other/fft4g.c \ |
||||||
|
other/division_operations.c \ |
||||||
|
other/spl_init.c \ |
||||||
|
other/float_util.c \ |
||||||
|
zam/filters.c \ |
||||||
|
vad/vad_sp.c \ |
||||||
|
vad/vad_core.c \ |
||||||
|
vad/webrtc_vad.c \ |
||||||
|
vad/vad_gmm.c \ |
||||||
|
vad/vad_filterbank.c \ |
||||||
|
filter_audio.c \ |
||||||
|
-lpthread \ |
||||||
|
-lm |
||||||
|
|
||||||
|
ar rcs libfilteraudio.a \ |
||||||
|
aec_core.o \ |
||||||
|
aec_core_sse2.o \ |
||||||
|
aec_rdft.o \ |
||||||
|
aec_rdft_sse2.o \ |
||||||
|
aec_resampler.o \ |
||||||
|
echo_cancellation.o \ |
||||||
|
analog_agc.o \ |
||||||
|
digital_agc.o \ |
||||||
|
ns_core.o \ |
||||||
|
nsx_core_c.o \ |
||||||
|
nsx_core.o \ |
||||||
|
noise_suppression_x.o \ |
||||||
|
noise_suppression.o \ |
||||||
|
get_scaling_square.o \ |
||||||
|
resample_by_2.o \ |
||||||
|
spl_sqrt.o \ |
||||||
|
delay_estimator.o \ |
||||||
|
complex_bit_reverse.o \ |
||||||
|
dot_product_with_scale.o \ |
||||||
|
cross_correlation.o \ |
||||||
|
min_max_operations.o \ |
||||||
|
resample_48khz.o \ |
||||||
|
high_pass_filter.o \ |
||||||
|
energy.o \ |
||||||
|
randomization_functions.o \ |
||||||
|
speex_resampler.o \ |
||||||
|
copy_set_operations.o \ |
||||||
|
downsample_fast.o \ |
||||||
|
complex_fft.o \ |
||||||
|
vector_scaling_operations.o \ |
||||||
|
resample_by_2_internal.o \ |
||||||
|
delay_estimator_wrapper.o \ |
||||||
|
real_fft.o \ |
||||||
|
spl_sqrt_floor.o \ |
||||||
|
resample_fractional.o \ |
||||||
|
ring_buffer.o \ |
||||||
|
splitting_filter.o \ |
||||||
|
fft4g.o \ |
||||||
|
division_operations.o \ |
||||||
|
spl_init.o \ |
||||||
|
float_util.o \ |
||||||
|
filters.o \ |
||||||
|
vad_sp.o \ |
||||||
|
vad_core.o \ |
||||||
|
webrtc_vad.o \ |
||||||
|
vad_gmm.o \ |
||||||
|
vad_filterbank.o \ |
||||||
|
filter_audio.o |
||||||
|
|
||||||
|
mkdir $FILTERAUDIO_PREFIX_DIR/include |
||||||
|
mkdir $FILTERAUDIO_PREFIX_DIR/lib |
||||||
|
cp filter_audio.h $FILTERAUDIO_PREFIX_DIR/include |
||||||
|
cp libfilteraudio.a $FILTERAUDIO_PREFIX_DIR/lib |
||||||
|
touch $FILTERAUDIO_PREFIX_DIR/done |
||||||
|
|
||||||
|
cd .. |
||||||
|
rm -rf ./filter* |
||||||
|
fi |
||||||
|
|
||||||
|
|
||||||
|
# QREncode |
||||||
|
|
||||||
|
QRENCODE_PREFIX_DIR="$DEP_DIR/libqrencode" |
||||||
|
if [ ! -f "$QRENCODE_PREFIX_DIR/done" ] |
||||||
|
then |
||||||
|
rm -rf "$QRENCODE_PREFIX_DIR" |
||||||
|
mkdir -p "$QRENCODE_PREFIX_DIR" |
||||||
|
|
||||||
|
wget https://fukuchi.org/works/qrencode/qrencode-3.4.4.tar.bz2 |
||||||
|
tar -xf qrencode*.tar.bz2 |
||||||
|
rm qrencode*.tar.bz2 |
||||||
|
cd qrencode* |
||||||
|
|
||||||
|
CFLAGS="-O2 -g0" ./configure --host="$ARCH-w64-mingw32" \ |
||||||
|
--prefix="$QRENCODE_PREFIX_DIR" \ |
||||||
|
--disable-shared \ |
||||||
|
--enable-static \ |
||||||
|
--disable-sdltest \ |
||||||
|
--without-tools \ |
||||||
|
--without-debug |
||||||
|
make |
||||||
|
make install |
||||||
|
touch $QRENCODE_PREFIX_DIR/done |
||||||
|
|
||||||
|
cd .. |
||||||
|
rm -rf ./qrencode* |
||||||
|
fi |
||||||
|
|
||||||
|
|
||||||
|
# Opus |
||||||
|
|
||||||
|
OPUS_PREFIX_DIR="$DEP_DIR/libopus" |
||||||
|
if [ ! -f "$OPUS_PREFIX_DIR/done" ] |
||||||
|
then |
||||||
|
rm -rf "$OPUS_PREFIX_DIR" |
||||||
|
mkdir -p "$OPUS_PREFIX_DIR" |
||||||
|
|
||||||
|
git clone \ |
||||||
|
--branch v1.2.1 \ |
||||||
|
--depth 1 \ |
||||||
|
git://git.opus-codec.org/opus.git \ |
||||||
|
opus |
||||||
|
cd opus |
||||||
|
|
||||||
|
./autogen.sh |
||||||
|
CFLAGS="-O2 -g0" ./configure --host="$ARCH-w64-mingw32" \ |
||||||
|
--prefix="$OPUS_PREFIX_DIR" \ |
||||||
|
--disable-shared \ |
||||||
|
--enable-static \ |
||||||
|
--disable-extra-programs \ |
||||||
|
--disable-doc |
||||||
|
make |
||||||
|
make install |
||||||
|
touch $OPUS_PREFIX_DIR/done |
||||||
|
|
||||||
|
cd .. |
||||||
|
rm -rf ./opus |
||||||
|
fi |
||||||
|
|
||||||
|
|
||||||
|
# Sodium |
||||||
|
|
||||||
|
SODIUM_PREFIX_DIR="$DEP_DIR/libsodium" |
||||||
|
if [ ! -f "$SODIUM_PREFIX_DIR/done" ] |
||||||
|
then |
||||||
|
rm -rf "$SODIUM_PREFIX_DIR" |
||||||
|
mkdir -p "$SODIUM_PREFIX_DIR" |
||||||
|
|
||||||
|
git clone \ |
||||||
|
--branch 1.0.13 \ |
||||||
|
--depth 1 \ |
||||||
|
https://github.com/jedisct1/libsodium \ |
||||||
|
libsodium |
||||||
|
cd libsodium |
||||||
|
|
||||||
|
./autogen.sh |
||||||
|
./configure --host="$ARCH-w64-mingw32" \ |
||||||
|
--prefix="$SODIUM_PREFIX_DIR" \ |
||||||
|
--disable-shared \ |
||||||
|
--enable-static \ |
||||||
|
--with-pic |
||||||
|
make |
||||||
|
make install |
||||||
|
touch $SODIUM_PREFIX_DIR/done |
||||||
|
|
||||||
|
cd .. |
||||||
|
rm -rf ./libsodium |
||||||
|
fi |
||||||
|
|
||||||
|
|
||||||
|
# VPX |
||||||
|
|
||||||
|
VPX_PREFIX_DIR="$DEP_DIR/libvpx" |
||||||
|
if [ ! -f "$VPX_PREFIX_DIR/done" ] |
||||||
|
then |
||||||
|
rm -rf "$VPX_PREFIX_DIR" |
||||||
|
mkdir -p "$VPX_PREFIX_DIR" |
||||||
|
|
||||||
|
git clone \ |
||||||
|
--branch v1.6.1 \ |
||||||
|
--depth 1 \ |
||||||
|
https://github.com/webmproject/libvpx \ |
||||||
|
libvpx |
||||||
|
cd libvpx |
||||||
|
|
||||||
|
if [[ "$ARCH" == "x86_64" ]] |
||||||
|
then |
||||||
|
VPX_TARGET=x86_64-win64-gcc |
||||||
|
elif [[ "$ARCH" == "i686" ]] |
||||||
|
then |
||||||
|
VPX_TARGET=x86-win32-gcc |
||||||
|
fi |
||||||
|
|
||||||
|
CROSS="$ARCH-w64-mingw32-" ./configure --target="$VPX_TARGET" \ |
||||||
|
--prefix="$VPX_PREFIX_DIR" \ |
||||||
|
--disable-shared \ |
||||||
|
--enable-static \ |
||||||
|
--disable-examples \ |
||||||
|
--disable-tools \ |
||||||
|
--disable-docs \ |
||||||
|
--disable-unit-tests |
||||||
|
make |
||||||
|
make install |
||||||
|
touch $VPX_PREFIX_DIR/done |
||||||
|
|
||||||
|
cd .. |
||||||
|
rm -rf ./libvpx |
||||||
|
fi |
||||||
|
|
||||||
|
|
||||||
|
# Toxcore |
||||||
|
|
||||||
|
TOXCORE_PREFIX_DIR="$DEP_DIR/libtoxcore" |
||||||
|
if [ ! -f "$TOXCORE_PREFIX_DIR/done" ] |
||||||
|
then |
||||||
|
rm -rf "$TOXCORE_PREFIX_DIR" |
||||||
|
mkdir -p "$TOXCORE_PREFIX_DIR" |
||||||
|
|
||||||
|
git clone https://github.com/TokTok/c-toxcore |
||||||
|
cd c-toxcore |
||||||
|
git checkout 1b290c0d84d92fd28fc1f64f33bf4455d73e2e2e |
||||||
|
|
||||||
|
export PKG_CONFIG_PATH="$OPUS_PREFIX_DIR/lib/pkgconfig:$SODIUM_PREFIX_DIR/lib/pkgconfig:$VPX_PREFIX_DIR/lib/pkgconfig" |
||||||
|
export PKG_CONFIG_LIBDIR="/usr/$ARCH-w64-mingw32" |
||||||
|
|
||||||
|
echo " |
||||||
|
SET(CMAKE_SYSTEM_NAME Windows) |
||||||
|
|
||||||
|
SET(CMAKE_C_COMPILER $ARCH-w64-mingw32-gcc) |
||||||
|
SET(CMAKE_CXX_COMPILER $ARCH-w64-mingw32-g++) |
||||||
|
SET(CMAKE_RC_COMPILER $ARCH-w64-mingw32-windres) |
||||||
|
|
||||||
|
SET(CMAKE_FIND_ROOT_PATH /usr/$ARCH-w64-mingw32 $OPUS_PREFIX_DIR $SODIUM_PREFIX_DIR $VPX_PREFIX_DIR) |
||||||
|
" > toolchain.cmake |
||||||
|
|
||||||
|
cmake -DCMAKE_INSTALL_PREFIX=$TOXCORE_PREFIX_DIR \ |
||||||
|
-DBOOTSTRAP_DAEMON=OFF \ |
||||||
|
-DWARNINGS=OFF \ |
||||||
|
-DCMAKE_BUILD_TYPE=Release \ |
||||||
|
-DENABLE_STATIC=ON \ |
||||||
|
-DENABLE_SHARED=OFF \ |
||||||
|
-DCMAKE_TOOLCHAIN_FILE=toolchain.cmake |
||||||
|
|
||||||
|
make |
||||||
|
make install |
||||||
|
touch $TOXCORE_PREFIX_DIR/done |
||||||
|
|
||||||
|
unset PKG_CONFIG_PATH |
||||||
|
unset PKG_CONFIG_LIBDIR |
||||||
|
|
||||||
|
cd .. |
||||||
|
rm -rf ./c-toxcore |
||||||
|
fi |
||||||
|
|
||||||
|
|
||||||
|
# Strip to reduce file size, we don't need this information anyway. |
||||||
|
|
||||||
|
set +e |
||||||
|
for PREFIX_DIR in $DEP_DIR/*; do |
||||||
|
strip --strip-unneeded $PREFIX_DIR/bin/* |
||||||
|
$ARCH-w64-mingw32-strip --strip-unneeded $PREFIX_DIR/bin/* |
||||||
|
$ARCH-w64-mingw32-strip --strip-unneeded $PREFIX_DIR/lib/* |
||||||
|
done |
||||||
|
set -e |
||||||
|
|
||||||
|
|
||||||
|
# qTox |
||||||
|
|
||||||
|
QTOX_PREFIX_DIR="$WORKSPACE_DIR/$ARCH/qtox/$BUILD_TYPE" |
||||||
|
rm -rf "$QTOX_PREFIX_DIR" |
||||||
|
mkdir -p "$QTOX_PREFIX_DIR" |
||||||
|
|
||||||
|
rm -rf ./qtox |
||||||
|
mkdir -p qtox |
||||||
|
cd qtox |
||||||
|
cp -a $QTOX_SRC_DIR/. . |
||||||
|
|
||||||
|
mkdir build |
||||||
|
cd build |
||||||
|
|
||||||
|
PKG_CONFIG_PATH="" |
||||||
|
PKG_CONFIG_LIBDIR="" |
||||||
|
CMAKE_FIND_ROOT_PATH="" |
||||||
|
for PREFIX_DIR in $DEP_DIR/*; do |
||||||
|
if [ -d $PREFIX_DIR/lib/pkgconfig ] |
||||||
|
then |
||||||
|
export PKG_CONFIG_PATH="$PKG_CONFIG_PATH:$PREFIX_DIR/lib/pkgconfig" |
||||||
|
export PKG_CONFIG_LIBDIR="$PKG_CONFIG_LIBDIR:$PREFIX_DIR/lib/pkgconfig" |
||||||
|
CMAKE_FIND_ROOT_PATH="$CMAKE_FIND_ROOT_PATH $PREFIX_DIR" |
||||||
|
fi |
||||||
|
done |
||||||
|
|
||||||
|
echo " |
||||||
|
SET(CMAKE_SYSTEM_NAME Windows) |
||||||
|
|
||||||
|
SET(CMAKE_C_COMPILER $ARCH-w64-mingw32-gcc) |
||||||
|
SET(CMAKE_CXX_COMPILER $ARCH-w64-mingw32-g++) |
||||||
|
SET(CMAKE_RC_COMPILER $ARCH-w64-mingw32-windres) |
||||||
|
|
||||||
|
SET(CMAKE_FIND_ROOT_PATH /usr/$ARCH-w64-mingw32 $CMAKE_FIND_ROOT_PATH) |
||||||
|
" > toolchain.cmake |
||||||
|
|
||||||
|
if [[ "$BUILD_TYPE" == "release" ]] |
||||||
|
then |
||||||
|
cmake -DCMAKE_TOOLCHAIN_FILE=./toolchain.cmake \ |
||||||
|
-DCMAKE_BUILD_TYPE=Release \ |
||||||
|
.. |
||||||
|
elif [[ "$BUILD_TYPE" == "debug" ]] |
||||||
|
then |
||||||
|
cmake -DCMAKE_TOOLCHAIN_FILE=./toolchain.cmake \ |
||||||
|
-DCMAKE_BUILD_TYPE=Debug \ |
||||||
|
.. |
||||||
|
fi |
||||||
|
|
||||||
|
make |
||||||
|
|
||||||
|
cp qtox.exe $QTOX_PREFIX_DIR |
||||||
|
cp $QT_PREFIX_DIR/bin/Qt5Core.dll \ |
||||||
|
$QT_PREFIX_DIR/bin/Qt5Gui.dll \ |
||||||
|
$QT_PREFIX_DIR/bin/Qt5Network.dll \ |
||||||
|
$QT_PREFIX_DIR/bin/Qt5Sql.dll \ |
||||||
|
$QT_PREFIX_DIR/bin/Qt5Svg.dll \ |
||||||
|
$QT_PREFIX_DIR/bin/Qt5Widgets.dll \ |
||||||
|
$QT_PREFIX_DIR/bin/Qt5Xml.dll \ |
||||||
|
$QTOX_PREFIX_DIR |
||||||
|
cp -r $QT_PREFIX_DIR/plugins/imageformats \ |
||||||
|
$QT_PREFIX_DIR/plugins/platforms \ |
||||||
|
$QT_PREFIX_DIR/plugins/sqldrivers \ |
||||||
|
$QT_PREFIX_DIR/plugins/iconengines \ |
||||||
|
$QTOX_PREFIX_DIR |
||||||
|
cp $OPENAL_PREFIX_DIR/bin/OpenAL32.dll $QTOX_PREFIX_DIR |
||||||
|
cp $OPENSSL_PREFIX_DIR/bin/ssleay32.dll \ |
||||||
|
$OPENSSL_PREFIX_DIR/bin/libeay32.dll \ |
||||||
|
$QTOX_PREFIX_DIR |
||||||
|
cp /usr/lib/gcc/$ARCH-w64-mingw32/*-posix/libgcc_s_*.dll $QTOX_PREFIX_DIR |
||||||
|
cp /usr/lib/gcc/$ARCH-w64-mingw32/*-posix/libstdc++-6.dll $QTOX_PREFIX_DIR |
||||||
|
cp /usr/$ARCH-w64-mingw32/lib/libwinpthread-1.dll $QTOX_PREFIX_DIR |
||||||
|
|
||||||
|
cd .. |
||||||
|
|
||||||
|
# Setup gdb |
||||||
|
if [[ "$BUILD_TYPE" == "debug" ]] |
||||||
|
then |
||||||
|
# Copy over qTox source code so that dbg could pick it up |
||||||
|
mkdir -p "$QTOX_PREFIX_DIR/$PWD/src" |
||||||
|
cp -r "$PWD/src" "$QTOX_PREFIX_DIR/$PWD" |
||||||
|
|
||||||
|
# Get dbg executable and the debug scripts |
||||||
|
git clone https://github.com/nurupo/mingw-w64-debug-scripts |
||||||
|
cd mingw-w64-debug-scripts |
||||||
|
git checkout 7341e1ffdea352e5557f3fcae51569f13e1ef270 |
||||||
|
make $ARCH EXE_NAME=qtox.exe |
||||||
|
mv output/$ARCH/* "$QTOX_PREFIX_DIR/" |
||||||
|
cd .. |
||||||
|
fi |
||||||
|
|
||||||
|
# Strip |
||||||
|
set +e |
||||||
|
if [[ "$BUILD_TYPE" == "release" ]] |
||||||
|
then |
||||||
|
$ARCH-w64-mingw32-strip -s $QTOX_PREFIX_DIR/*.exe |
||||||
|
fi |
||||||
|
$ARCH-w64-mingw32-strip -s $QTOX_PREFIX_DIR/*.dll |
||||||
|
$ARCH-w64-mingw32-strip -s $QTOX_PREFIX_DIR/*/*.dll |
||||||
|
set -e |
||||||
|
|
||||||
|
cd .. |
||||||
|
rm -rf ./qtox |
||||||
|
|
||||||
|
# Chmod since everything is root:root |
||||||
|
chmod 777 -R "$WORKSPACE_DIR" |
@ -1,121 +0,0 @@ |
|||||||
diff -rupN ffmpeg-2.7/libavutil/file.c ffmpeg-2.7-patched/libavutil/file.c
|
|
||||||
--- ffmpeg-2.7/libavutil/file.c 2015-06-10 02:27:53 +0300
|
|
||||||
+++ ffmpeg-2.7-patched/libavutil/file.c 2015-06-25 19:25:32 +0300
|
|
||||||
@@ -23,17 +23,17 @@
|
|
||||||
#include "mem.h" |
|
||||||
#include <fcntl.h> |
|
||||||
#include <sys/stat.h> |
|
||||||
+#if HAVE_MMAP
|
|
||||||
+#include <sys/mman.h>
|
|
||||||
+#elif HAVE_MAPVIEWOFFILE
|
|
||||||
+#include <windows.h>
|
|
||||||
+#endif
|
|
||||||
#if HAVE_UNISTD_H |
|
||||||
#include <unistd.h> |
|
||||||
#endif |
|
||||||
#if HAVE_IO_H |
|
||||||
#include <io.h> |
|
||||||
#endif |
|
||||||
-#if HAVE_MMAP
|
|
||||||
-#include <sys/mman.h>
|
|
||||||
-#elif HAVE_MAPVIEWOFFILE
|
|
||||||
-#include <windows.h>
|
|
||||||
-#endif
|
|
||||||
|
|
||||||
typedef struct FileLogContext { |
|
||||||
const AVClass *class; |
|
||||||
diff -rupN ffmpeg-2.7/libavutil/file_open.c ffmpeg-2.7-patched/libavutil/file_open.c
|
|
||||||
--- ffmpeg-2.7/libavutil/file_open.c 2015-06-10 02:27:53 +0300
|
|
||||||
+++ ffmpeg-2.7-patched/libavutil/file_open.c 2015-06-25 19:26:52 +0300
|
|
||||||
@@ -22,12 +22,6 @@
|
|
||||||
#include <stdarg.h> |
|
||||||
#include <fcntl.h> |
|
||||||
#include <sys/stat.h> |
|
||||||
-#if HAVE_UNISTD_H
|
|
||||||
-#include <unistd.h>
|
|
||||||
-#endif
|
|
||||||
-#if HAVE_IO_H
|
|
||||||
-#include <io.h>
|
|
||||||
-#endif
|
|
||||||
|
|
||||||
#if defined(_WIN32) && !defined(__MINGW32CE__) |
|
||||||
#undef open |
|
||||||
@@ -63,6 +57,13 @@ fallback:
|
|
||||||
#define open win32_open |
|
||||||
#endif |
|
||||||
|
|
||||||
+#if HAVE_UNISTD_H
|
|
||||||
+#include <unistd.h>
|
|
||||||
+#endif
|
|
||||||
+#if HAVE_IO_H
|
|
||||||
+#include <io.h>
|
|
||||||
+#endif
|
|
||||||
+
|
|
||||||
int avpriv_open(const char *filename, int flags, ...) |
|
||||||
{ |
|
||||||
int fd; |
|
||||||
diff -rupN ffmpeg-2.7/libavutil/log.c ffmpeg-2.7-patched/libavutil/log.c
|
|
||||||
--- ffmpeg-2.7/libavutil/log.c 2015-06-10 02:27:53 +0300
|
|
||||||
+++ ffmpeg-2.7-patched/libavutil/log.c 2015-06-25 19:28:20 +0300
|
|
||||||
@@ -26,9 +26,6 @@
|
|
||||||
|
|
||||||
#include "config.h" |
|
||||||
|
|
||||||
-#if HAVE_UNISTD_H
|
|
||||||
-#include <unistd.h>
|
|
||||||
-#endif
|
|
||||||
#if HAVE_IO_H |
|
||||||
#include <io.h> |
|
||||||
#endif |
|
||||||
@@ -120,6 +117,9 @@ static const uint32_t color[16 + AV_CLAS
|
|
||||||
}; |
|
||||||
|
|
||||||
#endif |
|
||||||
+#if HAVE_UNISTD_H
|
|
||||||
+#include <unistd.h>
|
|
||||||
+#endif
|
|
||||||
static int use_color = -1; |
|
||||||
|
|
||||||
static void check_color_terminal(void) |
|
||||||
diff -rupN ffmpeg-2.7/libavutil/random_seed.c ffmpeg-2.7-patched/libavutil/random_seed.c
|
|
||||||
--- ffmpeg-2.7/libavutil/random_seed.c 2015-05-17 04:26:38 +0300
|
|
||||||
+++ ffmpeg-2.7-patched/libavutil/random_seed.c 2015-06-25 19:28:30 +0300
|
|
||||||
@@ -20,9 +20,6 @@
|
|
||||||
|
|
||||||
#include "config.h" |
|
||||||
|
|
||||||
-#if HAVE_UNISTD_H
|
|
||||||
-#include <unistd.h>
|
|
||||||
-#endif
|
|
||||||
#if HAVE_IO_H |
|
||||||
#include <io.h> |
|
||||||
#endif |
|
||||||
@@ -30,6 +27,9 @@
|
|
||||||
#include <windows.h> |
|
||||||
#include <wincrypt.h> |
|
||||||
#endif |
|
||||||
+#if HAVE_UNISTD_H
|
|
||||||
+#include <unistd.h>
|
|
||||||
+#endif
|
|
||||||
#include <fcntl.h> |
|
||||||
#include <math.h> |
|
||||||
#include <time.h> |
|
||||||
diff -rupN ffmpeg-2.7/libavutil/time.c ffmpeg-2.7-patched/libavutil/time.c
|
|
||||||
--- ffmpeg-2.7/libavutil/time.c 2015-06-10 02:27:53 +0300
|
|
||||||
+++ ffmpeg-2.7-patched/libavutil/time.c 2015-06-25 19:28:37 +0300
|
|
||||||
@@ -26,12 +26,12 @@
|
|
||||||
#if HAVE_GETTIMEOFDAY |
|
||||||
#include <sys/time.h> |
|
||||||
#endif |
|
||||||
-#if HAVE_UNISTD_H
|
|
||||||
-#include <unistd.h>
|
|
||||||
-#endif
|
|
||||||
#if HAVE_WINDOWS_H |
|
||||||
#include <windows.h> |
|
||||||
#endif |
|
||||||
+#if HAVE_UNISTD_H
|
|
||||||
+#include <unistd.h>
|
|
||||||
+#endif
|
|
||||||
|
|
||||||
#include "time.h" |
|
||||||
#include "error.h" |
|
Loading…
Reference in new issue