# 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 }