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:
Piotr Srebrny
2022-06-24 17:32:30 +02:00
parent e1d4acf4b0
commit 51c663d171
12 changed files with 79 additions and 26 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

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

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

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