mirror of
git://code.qt.io/qt/qt5.git
synced 2026-02-01 19:36:04 +08:00
This file is used by the script common/unix/install-ffmpeg-android.sh. This script is useful for compiling FFmpeg for Android locally on macOS. Currently the script assumes the Homebrew installation of readelf is that of x86. The Homebrews path for readelf is different under arm64 and this change accounts for this. Pick-to: 6.8 6.5 Change-Id: I7ec1d4173e35fe91bc988492e56dd9a5fcbad072 Reviewed-by: Artem Dyomin <artem.dyomin@qt.io>
51 lines
1.8 KiB
Bash
Executable File
51 lines
1.8 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# Copyright (C) 2024 The Qt Company Ltd.
|
|
# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
|
|
|
|
set -x
|
|
|
|
lib_dir="$1/lib"
|
|
additional_suffix="${2:-}"
|
|
set_rpath="${3:-yes}"
|
|
|
|
if [ "$(uname -s)" = "Darwin" ]; then
|
|
# Under Homebrew, binutils package is not symlinked into PATH.
|
|
# This lets us use readelf provided by Homebrew.
|
|
readelf() { "$(brew --prefix binutils)/bin/readelf" "$@"; }
|
|
fi
|
|
|
|
ffmpeg_libs=("avcodec" "avdevice" "avfilter" "avformat" "avutil" "swresample" "swscale")
|
|
|
|
for lib_name in "${ffmpeg_libs[@]}"; do
|
|
lib_path="$lib_dir/lib$lib_name.so"
|
|
pkg_config_file_path="$lib_dir/pkgconfig/lib$lib_name.pc"
|
|
|
|
if [ ! -f "$lib_path" ]; then
|
|
echo "FFmpeg lib $lib_path hasn't been found"
|
|
exit 1
|
|
fi
|
|
|
|
if [ ! -f "$pkg_config_file_path" ]; then
|
|
echo "FFmpeg pc file $pkg_config_file_path hasn't been found"
|
|
exit 1
|
|
fi
|
|
|
|
while read -r line; do
|
|
if [[ $line =~ .*\[(lib((ssl|crypto|va|va-x11|va-drm)(_3)?\.so(\.[0-9]+)*))\].* ]]; then
|
|
stub_name="libQt6FFmpegStub-${BASH_REMATCH[2]}"
|
|
if [[ ${BASH_REMATCH[4]} == "_3" ]]; then
|
|
stub_name="${stub_name/_3/}" # Remove "_3" from stub_name
|
|
fi
|
|
if [[ -n "$additional_suffix" ]]; then
|
|
stub_name="${stub_name%%.*}${additional_suffix}.${stub_name#*.}" # Add additional_suffix
|
|
fi
|
|
patchelf --replace-needed "${BASH_REMATCH[1]}" "${stub_name}" $lib_path
|
|
fi
|
|
done <<< "$(readelf -d $lib_path | grep '(NEEDED)' )"
|
|
|
|
sed -i.bak -E '/^Libs.private:/s/ -l(va|va-x11|va-drm|ssl|crypto)/ -lQt6FFmpegStub-\1/g;' $pkg_config_file_path && rm -f ${pkg_config_file_path}.bak
|
|
if [[ "$set_rpath" == "yes" ]]; then
|
|
patchelf --set-rpath '$ORIGIN' $lib_path
|
|
fi
|
|
done
|