mirror of
git://code.qt.io/qt/qt5.git
synced 2026-02-01 19:36:04 +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>
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
|
||||
@@ -41,21 +41,13 @@
|
||||
|
||||
# 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"
|
||||
|
||||
ffmpeg_config_options=$(cat "${BASH_SOURCE%/*}/../shared/ffmpeg_config_options.txt")
|
||||
|
||||
if [ -f /etc/redhat-release ]
|
||||
then
|
||||
sudo sudo yum -y install yasm
|
||||
else
|
||||
sudo apt install yasm
|
||||
fi
|
||||
|
||||
version="n5.0"
|
||||
ffmpeg_name="FFmpeg-$version"
|
||||
|
||||
@@ -63,15 +55,48 @@ 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_folder="$HOME"
|
||||
target_dir="$HOME"
|
||||
app_prefix=""
|
||||
|
||||
InstallFromCompressedFileFromURL "$url_cached" "$url_public" "$sha1" "$target_folder" "$app_prefix"
|
||||
InstallFromCompressedFileFromURL "$url_cached" "$url_public" "$sha1" "$target_dir" "$app_prefix"
|
||||
|
||||
mkdir -p "$target_folder/$ffmpeg_name/build"
|
||||
pushd "$target_folder/$ffmpeg_name/build"
|
||||
../configure $ffmpeg_config_options --prefix=installed
|
||||
make install -j
|
||||
popd
|
||||
ffmpeg_config_options=$(cat "${BASH_SOURCE%/*}/../shared/ffmpeg_config_options.txt")
|
||||
ffmpeg_source_dir="$target_dir/$ffmpeg_name"
|
||||
|
||||
SetEnvVar "FFMPEG_DIR" "$target_folder/$ffmpeg_name/build/installed"
|
||||
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"
|
||||
@@ -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"
|
||||
|
||||
3
coin/provisioning/qtci-linux-Ubuntu-18.04-x86_64/90-install-ffmpeg.sh
Normal file → Executable file
3
coin/provisioning/qtci-linux-Ubuntu-18.04-x86_64/90-install-ffmpeg.sh
Normal file → Executable 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"
|
||||
|
||||
3
coin/provisioning/qtci-linux-Ubuntu-20.04-x86_64/90-install-ffmpeg.sh
Normal file → Executable file
3
coin/provisioning/qtci-linux-Ubuntu-20.04-x86_64/90-install-ffmpeg.sh
Normal file → Executable 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"
|
||||
|
||||
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