mirror of
git://code.qt.io/qt/qt5.git
synced 2026-03-17 09:46:08 +08:00
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:
@@ -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'
|
||||
|
||||
@@ -1 +1 @@
|
||||
--disable-programs --disable-doc --disable-debug --disable-network --enable-pic
|
||||
--disable-programs --disable-doc --disable-debug --disable-network --disable-lzma --enable-pic
|
||||
102
coin/provisioning/common/unix/install-ffmpeg.sh
Executable file
102
coin/provisioning/common/unix/install-ffmpeg.sh
Executable 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"
|
||||
@@ -0,0 +1,3 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
source "${BASH_SOURCE%/*}/../common/unix/install-ffmpeg.sh" "linux"
|
||||
@@ -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"
|
||||
|
||||
@@ -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"
|
||||
|
||||
5
coin/provisioning/qtci-macos-10.14-x86_64/90-install-ffmpeg.sh
Executable file
5
coin/provisioning/qtci-macos-10.14-x86_64/90-install-ffmpeg.sh
Executable file
@@ -0,0 +1,5 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -ex
|
||||
|
||||
source "${BASH_SOURCE%/*}/../common/unix/install-ffmpeg.sh" "macos"
|
||||
5
coin/provisioning/qtci-macos-10.15-x86_64/90-install-ffmpeg.sh
Executable file
5
coin/provisioning/qtci-macos-10.15-x86_64/90-install-ffmpeg.sh
Executable file
@@ -0,0 +1,5 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -ex
|
||||
|
||||
source "${BASH_SOURCE%/*}/../common/unix/install-ffmpeg.sh" "macos"
|
||||
5
coin/provisioning/qtci-macos-11-x86_64/90-install-ffmpeg.sh
Executable file
5
coin/provisioning/qtci-macos-11-x86_64/90-install-ffmpeg.sh
Executable file
@@ -0,0 +1,5 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -ex
|
||||
|
||||
source "${BASH_SOURCE%/*}/../common/unix/install-ffmpeg.sh" "macos-universal"
|
||||
5
coin/provisioning/qtci-macos-11.0-arm/90-install-ffmpeg.sh
Executable file
5
coin/provisioning/qtci-macos-11.0-arm/90-install-ffmpeg.sh
Executable file
@@ -0,0 +1,5 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -ex
|
||||
|
||||
source "${BASH_SOURCE%/*}/../common/unix/install-ffmpeg.sh" "macos-universal"
|
||||
5
coin/provisioning/qtci-macos-12-x86_64/90-install-ffmpeg.sh
Executable file
5
coin/provisioning/qtci-macos-12-x86_64/90-install-ffmpeg.sh
Executable file
@@ -0,0 +1,5 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -ex
|
||||
|
||||
source "${BASH_SOURCE%/*}/../common/unix/install-ffmpeg.sh" "macos-universal"
|
||||
5
coin/provisioning/qtci-macos-12.0-arm/90-install-ffmpeg.sh
Executable file
5
coin/provisioning/qtci-macos-12.0-arm/90-install-ffmpeg.sh
Executable file
@@ -0,0 +1,5 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -ex
|
||||
|
||||
source "${BASH_SOURCE%/*}/../common/unix/install-ffmpeg.sh" "macos-universal"
|
||||
Reference in New Issue
Block a user