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 51c663d171)
Reviewed-by: Lars Knoll <lars@knoll.priv.no>
This commit is contained in:
Piotr Srebrny
2022-06-24 17:32:30 +02:00
committed by Simo Fält
parent d7984542a2
commit 2217500031
12 changed files with 141 additions and 7 deletions

View File

@@ -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'

View File

@@ -1 +1 @@
--disable-programs --disable-doc --disable-debug --disable-network --enable-pic
--disable-programs --disable-doc --disable-debug --disable-network --disable-lzma --enable-pic

View File

@@ -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"

View File

@@ -0,0 +1,3 @@
#!/usr/bin/env bash
source "${BASH_SOURCE%/*}/../common/unix/install-ffmpeg.sh" "linux"

View File

@@ -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"

View File

@@ -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"

View File

@@ -0,0 +1,5 @@
#!/usr/bin/env bash
set -ex
source "${BASH_SOURCE%/*}/../common/unix/install-ffmpeg.sh" "macos"

View File

@@ -0,0 +1,5 @@
#!/usr/bin/env bash
set -ex
source "${BASH_SOURCE%/*}/../common/unix/install-ffmpeg.sh" "macos"

View File

@@ -0,0 +1,5 @@
#!/usr/bin/env bash
set -ex
source "${BASH_SOURCE%/*}/../common/unix/install-ffmpeg.sh" "macos-universal"

View File

@@ -0,0 +1,5 @@
#!/usr/bin/env bash
set -ex
source "${BASH_SOURCE%/*}/../common/unix/install-ffmpeg.sh" "macos-universal"

View File

@@ -0,0 +1,5 @@
#!/usr/bin/env bash
set -ex
source "${BASH_SOURCE%/*}/../common/unix/install-ffmpeg.sh" "macos-universal"

View File

@@ -0,0 +1,5 @@
#!/usr/bin/env bash
set -ex
source "${BASH_SOURCE%/*}/../common/unix/install-ffmpeg.sh" "macos-universal"