aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPiotr Srebrny <piotr.srebrny@qt.io>2022-06-24 17:32:30 +0200
committerSimo Fält <simo.falt@qt.io>2022-11-02 16:52:29 +0200
commit221750003129e16ae349f322b47ec265068673db (patch)
tree5d313524abe580d7157f3d1b655daec1d6ce5a8d
parentd7984542a21d0b66941be5c4735c4eb4f96a2a7b (diff)
Build static FFmpeg library on macOS
This patch modifies linux/ffmpeg-install.sh to work also for macOS. The FFmpeg libraries are installed under /usr/local both for Linux and macOS. Since macOS x64 does not have the lzma lib for arm64 architecture installed by default, I disable this libraries for FFmpeg. This only affects the TIFF image decoder that we do not use. Added the execute permission to the ubuntu scripts. Change-Id: Ib8623c6a9bcdd24c89045ede0494839fb9cd2ecc Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io> (cherry picked from commit 51c663d171ce261e01d98e7c019460f6db0d220f) Reviewed-by: Lars Knoll <lars@knoll.priv.no>
-rw-r--r--coin/platform_configs/macos.yaml5
-rw-r--r--coin/provisioning/common/shared/ffmpeg_config_options.txt2
-rwxr-xr-xcoin/provisioning/common/unix/install-ffmpeg.sh102
-rw-r--r--coin/provisioning/qtci-linux-RHEL-8.4-x86_64/90-install-ffmpeg.sh3
-rw-r--r--coin/provisioning/qtci-linux-Ubuntu-18.04-x86_64/90-install-ffmpeg.sh3
-rw-r--r--coin/provisioning/qtci-linux-Ubuntu-20.04-x86_64/90-install-ffmpeg.sh3
-rwxr-xr-xcoin/provisioning/qtci-macos-10.14-x86_64/90-install-ffmpeg.sh5
-rwxr-xr-xcoin/provisioning/qtci-macos-10.15-x86_64/90-install-ffmpeg.sh5
-rwxr-xr-xcoin/provisioning/qtci-macos-11-x86_64/90-install-ffmpeg.sh5
-rwxr-xr-xcoin/provisioning/qtci-macos-11.0-arm/90-install-ffmpeg.sh5
-rwxr-xr-xcoin/provisioning/qtci-macos-12-x86_64/90-install-ffmpeg.sh5
-rwxr-xr-xcoin/provisioning/qtci-macos-12.0-arm/90-install-ffmpeg.sh5
12 files changed, 141 insertions, 7 deletions
diff --git a/coin/platform_configs/macos.yaml b/coin/platform_configs/macos.yaml
index 49e0ce12..112d0c82 100644
--- a/coin/platform_configs/macos.yaml
+++ b/coin/platform_configs/macos.yaml
@@ -16,7 +16,7 @@ Configurations:
Configure arguments: '-nomake examples -release -force-debug-info -separate-debug-info -headersclean -framework'
Environment variables: [
'CMAKE_ARGS=-DCMAKE_OSX_ARCHITECTURES="x86_64;arm64" -DODBC_ROOT=/usr/local/opt/libiodbc -DPostgreSQL_ROOT={{.Env.POSTGRESQLBINPATH}}/.. -DOPENSSL_ROOT_DIR={{.Env.OPENSSL_DIR}}',
- 'NON_QTBASE_CMAKE_ARGS=-DFEATURE_gds=OFF',
+ 'NON_QTBASE_CMAKE_ARGS=-DFEATURE_gds=OFF -DFFMPEG_DIR={{.Env.FFMPEG_DIR}}',
'CONAN_PROFILE=coin/conan/profiles/ci-macos-universal-clang'
]
@@ -95,7 +95,8 @@ Configurations:
Features: ['Sccache', 'DoNotRunTests', 'WarningsAreErrors', 'UseConfigure']
Configure arguments: '-developer-build -release -force-debug-info -no-pch -no-framework -qtnamespace TestNamespace -make examples'
Environment variables: [
- 'CMAKE_ARGS=-DOPENSSL_ROOT_DIR={{.Env.OPENSSL_DIR}}'
+ 'CMAKE_ARGS=-DOPENSSL_ROOT_DIR={{.Env.OPENSSL_DIR}}',
+ 'NON_QTBASE_CMAKE_ARGS=-DFFMPEG_DIR={{.Env.FFMPEG_DIR}}'
]
-
Id: 'macos-latest-xcode-arm64-developer-build'
diff --git a/coin/provisioning/common/shared/ffmpeg_config_options.txt b/coin/provisioning/common/shared/ffmpeg_config_options.txt
index fc746288..ccfed1ee 100644
--- a/coin/provisioning/common/shared/ffmpeg_config_options.txt
+++ b/coin/provisioning/common/shared/ffmpeg_config_options.txt
@@ -1 +1 @@
---disable-programs --disable-doc --disable-debug --disable-network --enable-pic \ No newline at end of file
+--disable-programs --disable-doc --disable-debug --disable-network --disable-lzma --enable-pic \ No newline at end of file
diff --git a/coin/provisioning/common/unix/install-ffmpeg.sh b/coin/provisioning/common/unix/install-ffmpeg.sh
new file mode 100755
index 00000000..dedad29a
--- /dev/null
+++ b/coin/provisioning/common/unix/install-ffmpeg.sh
@@ -0,0 +1,102 @@
+#!/usr/bin/env bash
+
+############################################################################
+##
+## Copyright (C) 2022 The Qt Company Ltd.
+## Contact: https://www.qt.io/licensing/
+##
+## This file is part of the provisioning scripts of the Qt Toolkit.
+##
+## $QT_BEGIN_LICENSE:LGPL$
+## Commercial License Usage
+## Licensees holding valid commercial Qt licenses may use this file in
+## accordance with the commercial license agreement provided with the
+## Software or, alternatively, in accordance with the terms contained in
+## a written agreement between you and The Qt Company. For licensing terms
+## and conditions see https://www.qt.io/terms-conditions. For further
+## information use the contact form at https://www.qt.io/contact-us.
+##
+## GNU Lesser General Public License Usage
+## Alternatively, this file may be used under the terms of the GNU Lesser
+## General Public License version 3 as published by the Free Software
+## Foundation and appearing in the file LICENSE.LGPL3 included in the
+## packaging of this file. Please review the following information to
+## ensure the GNU Lesser General Public License version 3 requirements
+## will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
+##
+## GNU General Public License Usage
+## Alternatively, this file may be used under the terms of the GNU
+## General Public License version 2.0 or (at your option) the GNU General
+## Public license version 3 or any later version approved by the KDE Free
+## Qt Foundation. The licenses are as published by the Free Software
+## Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
+## included in the packaging of this file. Please review the following
+## information to ensure the GNU General Public License requirements will
+## be met: https://www.gnu.org/licenses/gpl-2.0.html and
+## https://www.gnu.org/licenses/gpl-3.0.html.
+##
+## $QT_END_LICENSE$
+##
+#############################################################################
+
+# This script will build and install FFmpeg static libs
+set -ex
+os="$1"
+
+# shellcheck source=../unix/InstallFromCompressedFileFromURL.sh
+source "${BASH_SOURCE%/*}/../unix/InstallFromCompressedFileFromURL.sh"
+# shellcheck source=../unix/SetEnvVar.sh
+source "${BASH_SOURCE%/*}/../unix/SetEnvVar.sh"
+
+version="n5.0"
+ffmpeg_name="FFmpeg-$version"
+
+url_cached="http://ci-files01-hki.intra.qt.io/input/ffmpeg/$version.tar.gz"
+url_public="https://github.com/FFmpeg/FFmpeg/archive/refs/tags/$version.tar.gz"
+sha1="1a979876463fd81e481d53ceb3cc117f0fce8521"
+
+target_dir="$HOME"
+app_prefix=""
+
+InstallFromCompressedFileFromURL "$url_cached" "$url_public" "$sha1" "$target_dir" "$app_prefix"
+
+ffmpeg_config_options=$(cat "${BASH_SOURCE%/*}/../shared/ffmpeg_config_options.txt")
+ffmpeg_source_dir="$target_dir/$ffmpeg_name"
+
+build_ffmpeg() {
+ local arch="$1"
+ local build_dir="$ffmpeg_source_dir/build/$arch"
+ mkdir -p "$build_dir"
+ pushd "$build_dir"
+ if [ -n "$arch" ]
+ then $ffmpeg_source_dir/configure $ffmpeg_config_options --prefix="/usr/local/$ffmpeg_name" --enable-cross-compile --arch=$arch --cc="clang -arch $arch"
+ else $ffmpeg_source_dir/configure $ffmpeg_config_options --prefix="/usr/local/$ffmpeg_name"
+ fi
+ make install DESTDIR=$build_dir/installed -j4
+ popd
+}
+
+if [ "$os" == "linux" ]; then
+ if [ -f /etc/redhat-release ]
+ then sudo yum -y install yasm
+ else sudo apt install yasm
+ fi
+ build_ffmpeg
+ sudo mv "$ffmpeg_source_dir/build/installed/usr/local/$ffmpeg_name" "/usr/local"
+
+elif [ "$os" == "macos" ]; then
+ brew install yasm
+ export MACOSX_DEPLOYMENT_TARGET=10.14
+ build_ffmpeg
+ sudo mv "$ffmpeg_source_dir/build/installed/usr/local/$ffmpeg_name" "/usr/local"
+
+elif [ "$os" == "macos-universal" ]; then
+ brew install yasm
+ export MACOSX_DEPLOYMENT_TARGET=10.14
+ build_ffmpeg "arm64"
+ build_ffmpeg "x86_64"
+
+ sudo "${BASH_SOURCE%/*}/../macos/makeuniversal.sh" "$ffmpeg_source_dir/build/arm64/installed" "$ffmpeg_source_dir/build/x86_64/installed"
+fi
+
+SetEnvVar "FFMPEG_DIR" "/usr/local/$ffmpeg_name"
diff --git a/coin/provisioning/qtci-linux-RHEL-8.4-x86_64/90-install-ffmpeg.sh b/coin/provisioning/qtci-linux-RHEL-8.4-x86_64/90-install-ffmpeg.sh
new file mode 100644
index 00000000..61da9b7b
--- /dev/null
+++ b/coin/provisioning/qtci-linux-RHEL-8.4-x86_64/90-install-ffmpeg.sh
@@ -0,0 +1,3 @@
+#!/usr/bin/env bash
+
+source "${BASH_SOURCE%/*}/../common/unix/install-ffmpeg.sh" "linux"
diff --git a/coin/provisioning/qtci-linux-Ubuntu-18.04-x86_64/90-install-ffmpeg.sh b/coin/provisioning/qtci-linux-Ubuntu-18.04-x86_64/90-install-ffmpeg.sh
index 6d8981c4..61da9b7b 100644
--- a/coin/provisioning/qtci-linux-Ubuntu-18.04-x86_64/90-install-ffmpeg.sh
+++ b/coin/provisioning/qtci-linux-Ubuntu-18.04-x86_64/90-install-ffmpeg.sh
@@ -1,4 +1,3 @@
#!/usr/bin/env bash
-BASEDIR=$(dirname "$0")
-"$BASEDIR/../common/linux/install-ffmpeg.sh"
+source "${BASH_SOURCE%/*}/../common/unix/install-ffmpeg.sh" "linux"
diff --git a/coin/provisioning/qtci-linux-Ubuntu-20.04-x86_64/90-install-ffmpeg.sh b/coin/provisioning/qtci-linux-Ubuntu-20.04-x86_64/90-install-ffmpeg.sh
index 6d8981c4..61da9b7b 100644
--- a/coin/provisioning/qtci-linux-Ubuntu-20.04-x86_64/90-install-ffmpeg.sh
+++ b/coin/provisioning/qtci-linux-Ubuntu-20.04-x86_64/90-install-ffmpeg.sh
@@ -1,4 +1,3 @@
#!/usr/bin/env bash
-BASEDIR=$(dirname "$0")
-"$BASEDIR/../common/linux/install-ffmpeg.sh"
+source "${BASH_SOURCE%/*}/../common/unix/install-ffmpeg.sh" "linux"
diff --git a/coin/provisioning/qtci-macos-10.14-x86_64/90-install-ffmpeg.sh b/coin/provisioning/qtci-macos-10.14-x86_64/90-install-ffmpeg.sh
new file mode 100755
index 00000000..1f8734c3
--- /dev/null
+++ b/coin/provisioning/qtci-macos-10.14-x86_64/90-install-ffmpeg.sh
@@ -0,0 +1,5 @@
+#!/usr/bin/env bash
+
+set -ex
+
+source "${BASH_SOURCE%/*}/../common/unix/install-ffmpeg.sh" "macos"
diff --git a/coin/provisioning/qtci-macos-10.15-x86_64/90-install-ffmpeg.sh b/coin/provisioning/qtci-macos-10.15-x86_64/90-install-ffmpeg.sh
new file mode 100755
index 00000000..1f8734c3
--- /dev/null
+++ b/coin/provisioning/qtci-macos-10.15-x86_64/90-install-ffmpeg.sh
@@ -0,0 +1,5 @@
+#!/usr/bin/env bash
+
+set -ex
+
+source "${BASH_SOURCE%/*}/../common/unix/install-ffmpeg.sh" "macos"
diff --git a/coin/provisioning/qtci-macos-11-x86_64/90-install-ffmpeg.sh b/coin/provisioning/qtci-macos-11-x86_64/90-install-ffmpeg.sh
new file mode 100755
index 00000000..a8333b36
--- /dev/null
+++ b/coin/provisioning/qtci-macos-11-x86_64/90-install-ffmpeg.sh
@@ -0,0 +1,5 @@
+#!/usr/bin/env bash
+
+set -ex
+
+source "${BASH_SOURCE%/*}/../common/unix/install-ffmpeg.sh" "macos-universal"
diff --git a/coin/provisioning/qtci-macos-11.0-arm/90-install-ffmpeg.sh b/coin/provisioning/qtci-macos-11.0-arm/90-install-ffmpeg.sh
new file mode 100755
index 00000000..a8333b36
--- /dev/null
+++ b/coin/provisioning/qtci-macos-11.0-arm/90-install-ffmpeg.sh
@@ -0,0 +1,5 @@
+#!/usr/bin/env bash
+
+set -ex
+
+source "${BASH_SOURCE%/*}/../common/unix/install-ffmpeg.sh" "macos-universal"
diff --git a/coin/provisioning/qtci-macos-12-x86_64/90-install-ffmpeg.sh b/coin/provisioning/qtci-macos-12-x86_64/90-install-ffmpeg.sh
new file mode 100755
index 00000000..a8333b36
--- /dev/null
+++ b/coin/provisioning/qtci-macos-12-x86_64/90-install-ffmpeg.sh
@@ -0,0 +1,5 @@
+#!/usr/bin/env bash
+
+set -ex
+
+source "${BASH_SOURCE%/*}/../common/unix/install-ffmpeg.sh" "macos-universal"
diff --git a/coin/provisioning/qtci-macos-12.0-arm/90-install-ffmpeg.sh b/coin/provisioning/qtci-macos-12.0-arm/90-install-ffmpeg.sh
new file mode 100755
index 00000000..a8333b36
--- /dev/null
+++ b/coin/provisioning/qtci-macos-12.0-arm/90-install-ffmpeg.sh
@@ -0,0 +1,5 @@
+#!/usr/bin/env bash
+
+set -ex
+
+source "${BASH_SOURCE%/*}/../common/unix/install-ffmpeg.sh" "macos-universal"