summary refs log tree commit diff
path: root/pkgs/build-support/setup-hooks/prune-libtool-files.sh
blob: 0ec56549645c36f481e753aaf61d88e554f82a9e (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# Clear dependency_libs in libtool files for shared libraries.

# Shared libraries already encode their dependencies with locations.  .la
# files do not always encode those locations, and sometimes encode the
# locations in the wrong Nix output. .la files are not needed for shared
# libraries, but without dependency_libs they do not hurt either.

fixupOutputHooks+=(_pruneLibtoolFiles)

_pruneLibtoolFiles() {
    if [ "${dontPruneLibtoolFiles-}" ] || [ ! -e "$prefix" ]; then
       return
    fi

    # Libtool uses "dlname" and "library_names" fields for shared libraries and
    # the "old_library" field for static libraries.  We are processing only
    # those .la files that do not describe static libraries.
    find "$prefix" -type f -name '*.la' \
         -exec grep -q '^# Generated by .*libtool' {} \; \
         -exec grep -q "^old_library=''" {} \; \
         -exec sed -i {} -e "/^dependency_libs='[^']/ c dependency_libs='' #pruned" \;
}