# Fix libtool libraries generated by qmake.
# qmake started inserting filenames of shared objects instead of the appropriate
# linker flags. fixQmakeLibtool searches for broken libtool libraries and
# replaces the filenames with the linker flags that should have been there.
fixQmakeLibtool() {
    if [ -d "$1" ]; then
        find "$1" -name '*.la' | while read la; do
            sed -i "$la" \
                -e '/^dependency_libs/ s,\(/[^ ]\+\)/lib\([^/ ]\+\)\.so,-L\1 -l\2,g'
        done
    fi
}

fixupOutputHooks+=('fixQmakeLibtool $prefix')

# Fix libtool libraries generated by qmake.
# qmake started inserting filenames of shared objects instead of the appropriate
# linker flags. fixQmakeLibtool searches for broken libtool libraries and
# replaces the filenames with the linker flags that should have been there.
fixQmakeLibtool() {
    if [ -d "$1" ]; then
        find "$1" -name '*.la' | while read la; do
            set +e
            framework_libs=$(grep '^dependency_libs' "$la" | grep -Eo -- '-framework +\w+' | tr '\n' ' ')
            set -e
            sed -i "$la" \
                -e '/^dependency_libs/ s,\(/[^ ]\+\)/lib\([^/ ]\+\)\.so,-L\1 -l\2,g' \
                -e '/^dependency_libs/ s,-framework \+\w\+,,g'
            if [ ! -z "$framework_libs" ]; then
                if grep '^inherited_linker_flags=' $la >/dev/null; then
                    sed -i "$la" -e "s/^\(inherited_linker_flags='[^']*\)/\1 $framework_libs/"
                else
                    echo "inherited_linker_flags='$framework_libs'" >> "$la"
                fi
            fi
        done
    fi
}

fixupOutputHooks+=('fixQmakeLibtool $prefix')

Fix libtool framework link failure on Darwin
octave: Fix libtool framework link failure on Darwin

This fix moves linker flags of the form `-framework foo` from dependency_libs to
inherited_linker_flags, since libtool doesn't understand them.  See #96977 for
details.

Fixes #96977
