Browse Source

Patch osx binaries to remove rpath references

tags/v1.0
falkTX 4 years ago
parent
commit
75fbae3bde
2 changed files with 51 additions and 8 deletions
  1. +35
    -8
      build-jack.sh
  2. +16
    -0
      setup/functions.sh

+ 35
- 8
build-jack.sh View File

@@ -185,32 +185,59 @@ fi

build_waf jack2 "${JACK2_VERSION}" "${jack2_args}"

# patch pkg-config file for static builds in regular prefix
# remove useless dbus-specific file
rm "${PAWPAW_PREFIX}/jack2/bin/jack_control"

# copy jack pkg-config file to main system, so qjackctl can find it
if [ ! -e "${PAWPAW_PREFIX}/lib/pkgconfig/jack.pc" ]; then
if [ "${WIN64}" -eq 1 ]; then
s="64"
else
s=""
fi
cp -v "${PAWPAW_PREFIX}/jack2/lib/pkgconfig/jack.pc" "${PAWPAW_PREFIX}/lib/pkgconfig/jack.pc"

# patch pkg-config file for static win32 builds in regular prefix
if [ "${WIN32}" -eq 1 ]; then
# FIXME rule that works for server lib too
if [ "${WIN64}" -eq 1 ]; then
s="64"
else
s=""
fi
# FIXME rule that works for server lib too, maybe ignoring suffix even
sed -i -e "s/lib -ljack${s}/lib -Wl,-Bdynamic -ljack${s} -Wl,-Bstatic/" "${PAWPAW_PREFIX}/lib/pkgconfig/jack.pc"
fi
fi

if [ "${MACOS}" -eq 1 ]; then
for f in $(ls "${PAWPAW_PREFIX}/jack2/bin/"); do
patch_osx_binary_libs "${PAWPAW_PREFIX}/jack2/bin/${f}"
done
fi

# ---------------------------------------------------------------------------------------------------------------------
# if qt is available, build qjackctl

if [ -f "${PAWPAW_PREFIX}/bin/moc" ]; then
download qjackctl "${QJACKCTL_VERSION}" https://download.sourceforge.net/qjackctl

if [ "${WIN64}" -eq 1 ]; then
patch_file qjackctl "${QJACKCTL_VERSION}" "configure" 's/-ljack /-Wl,-Bdynamic -ljack64 -Wl,-Bstatic /'
elif [ "${WIN32}" -eq 1 ]; then
patch_file qjackctl "${QJACKCTL_VERSION}" "configure" 's/-ljack /-Wl,-Bdynamic -ljack -Wl,-Bstatic /'
fi

build_autoconf qjackctl "${QJACKCTL_VERSION}" "--enable-jack-version"
if [ "${WIN32}" -eq 1 ]; then

if [ "${MACOS}" -eq 1 ]; then
qjackctl_dir="${PAWPAW_PREFIX}/bin/qjackctl.app/Contents/MacOS"
patch_osx_binary_libs "${qjackctl_dir}/qjackctl"
if [ ! -e "${qjackctl_dir}/QtXml" ]; then
cp -v "${PAWPAW_PREFIX}/lib/QtCore.framework/Versions/5/QtCore" "${qjackctl_dir}/"
patch_osx_binary_libs "${qjackctl_dir}/QtCore"
cp -v "${PAWPAW_PREFIX}/lib/QtGui.framework/Versions/5/QtGui" "${qjackctl_dir}/"
patch_osx_binary_libs "${qjackctl_dir}/QtGui"
cp -v "${PAWPAW_PREFIX}/lib/QtWidgets.framework/Versions/5/QtWidgets" "${qjackctl_dir}/"
patch_osx_binary_libs "${qjackctl_dir}/QtWidgets"
cp -v "${PAWPAW_PREFIX}/lib/QtXml.framework/Versions/5/QtXml" "${qjackctl_dir}/"
patch_osx_binary_libs "${qjackctl_dir}/QtXml"
fi
elif [ "${WIN32}" -eq 1 ]; then
copy_file qjackctl "${QJACKCTL_VERSION}" "src/release/qjackctl.exe" "${PAWPAW_PREFIX}/jack2/bin/qjackctl.exe"
fi
fi


+ 16
- 0
setup/functions.sh View File

@@ -506,3 +506,19 @@ function remove_file() {
}

# ---------------------------------------------------------------------------------------------------------------------

function patch_osx_binary_libs() {
local file="${1}"

if otool -L "${file}" | grep -q "${PAWPAW_PREFIX}"; then
install_name_tool -change "@rpath/QtCore.framework/Versions/5/QtCore" "@executable_path/QtCore" "${file}"
install_name_tool -change "@rpath/QtGui.framework/Versions/5/QtGui" "@executable_path/QtGui" "${file}"
install_name_tool -change "@rpath/QtWidgets.framework/Versions/5/QtWidgets" "@executable_path/QtWidgets" "${file}"
install_name_tool -change "@rpath/QtXml.framework/Versions/5/QtXml" "@executable_path/QtXml" "${file}"
install_name_tool -change "${PAWPAW_PREFIX}/jack2/lib/libjack.0.dylib" "/usr/local/lib/libjack.0.dylib" "${file}"
install_name_tool -change "${PAWPAW_PREFIX}/jack2/lib/libjacknet.0.dylib" "/usr/local/lib/libjacknet.0.dylib" "${file}"
install_name_tool -change "${PAWPAW_PREFIX}/jack2/lib/libjackserver.0.dylib" "/usr/local/lib/libjackserver.0.dylib" "${file}"
fi
}

# ---------------------------------------------------------------------------------------------------------------------

Loading…
Cancel
Save