core/pkgs/build-support/setup-hooks/copy-pkgconfig-items.sh
2024-05-13 11:34:52 -04:00

47 lines
1.4 KiB
Bash

# shellcheck shell=bash
# Setup hook that installs specified pkgconfig items.
#
# Example usage in a derivation:
#
# { …, makePkgconfigItem, copyPkgconfigItems, … }:
#
# let pkgconfigItem = makePkgconfigItem { … }; in
# stdenv.mkDerivation {
# …
# nativeBuildInputs = [ copyPkgconfigItems ];
#
# pkgconfigItems = [ pkgconfigItem ];
# …
# }
#
# This hook will copy files which are either given by full path
# or all '*.pc' files placed inside the 'lib/pkgconfig'
# folder of each `pkgconfigItems` argument.
postInstallHooks+=(copyPkgconfigItems)
copyPkgconfigItems() {
if [ "${dontCopyPkgconfigItems-}" = 1 ]; then return; fi
if [ -z "$pkgconfigItems" ]; then
return
fi
pkgconfigdir="${!outputDev}/lib/pkgconfig"
for pkgconfigItem in $pkgconfigItems; do
if [[ -f "$pkgconfigItem" ]]; then
substituteAllInPlace "$pkgconfigItem"
echo "Copying '$pkgconfigItem' into '${pkgconfigdir}'"
install -D -m 444 -t "${pkgconfigdir}" "$pkgconfigItem"
substituteAllInPlace "${pkgconfigdir}"/*
else
for f in "$pkgconfigItem"/lib/pkgconfig/*.pc; do
echo "Copying '$f' into '${pkgconfigdir}'"
install -D -m 444 -t "${pkgconfigdir}" "$f"
substituteAllInPlace "${pkgconfigdir}"/*
done
fi
done
}