summary refs log tree commit diff
path: root/pkgs/development/libraries/qt-6/hooks/fix-qmake-libtool.sh
blob: 44bf10a0db068523213e1a94a684e324934c42a7 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# 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')