aboutsummaryrefslogtreecommitdiffstats
path: root/coin/provisioning/common/macos/fix_relative_dependencies.sh
diff options
context:
space:
mode:
Diffstat (limited to 'coin/provisioning/common/macos/fix_relative_dependencies.sh')
-rwxr-xr-xcoin/provisioning/common/macos/fix_relative_dependencies.sh25
1 files changed, 25 insertions, 0 deletions
diff --git a/coin/provisioning/common/macos/fix_relative_dependencies.sh b/coin/provisioning/common/macos/fix_relative_dependencies.sh
new file mode 100755
index 00000000..e67a00c4
--- /dev/null
+++ b/coin/provisioning/common/macos/fix_relative_dependencies.sh
@@ -0,0 +1,25 @@
+#!/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 -e
+
+# realpath is not included to macOS <= 12.
+# dir=$(realpath "$1")
+dir=$(cd "$1" && pwd)
+
+dir_length=${#dir}
+dylib_regex="^$dir/.*\.dylib$"
+
+find "$dir" -type f -name '*.dylib' | while read -r library_path; do
+ install_name=$(otool -D "$library_path" | sed -n '2p' | grep -E "$dylib_regex" )
+ if [ -n "$install_name" ]; then
+ fixed_install_name="@rpath${install_name:dir_length}"
+ install_name_tool -id "$fixed_install_name" "$library_path"
+ fi
+
+ otool -L "$library_path" | awk '/\t/ {print $1}' | grep -E "$dylib_regex" | while read -r dependency_path; do
+ fixed_dependency_path="@loader_path${dependency_path:dir_length}"
+ install_name_tool -change "$dependency_path" "$fixed_dependency_path" "$library_path"
+ done
+done