From: Phil Pennock Date: Mon, 13 Feb 2017 02:22:02 +0000 (-0500) Subject: Handle PKG_CONFIG_PATH in Local/Makefile X-Git-Url: https://git.exim.org/users/jgh/exim.git/commitdiff_plain/856d1e16b3386ce51b73986b9d7aaf1fbf95aba9 Handle PKG_CONFIG_PATH in Local/Makefile Handle PKG_CONFIG_PATH, stripping whitespace expanding globs, collecting multiple sets and just build one variable, and use it in environment at configure time so that the libraries are found. --- diff --git a/doc/doc-txt/ChangeLog b/doc/doc-txt/ChangeLog index 1c282ac8e..95d822df5 100644 --- a/doc/doc-txt/ChangeLog +++ b/doc/doc-txt/ChangeLog @@ -13,6 +13,9 @@ JH/01 Rework error string handling in TLS interface so that the caller in string to be attached to addresses during delivery, and collapses pairs of long lines into single ones. +PP/01 Allow PKG_CONFIG_PATH to be set in Local/Makefile and use it correctly + during configuration. Wildcards are allowed and expanded. + Exim version 4.89 ----------------- diff --git a/doc/doc-txt/NewStuff b/doc/doc-txt/NewStuff index dd70201e5..ac876ed9f 100644 --- a/doc/doc-txt/NewStuff +++ b/doc/doc-txt/NewStuff @@ -6,6 +6,13 @@ Before a formal release, there may be quite a lot of detail so that people can test from the snapshots or the Git before the documentation is updated. Once the documentation is updated, this file is reduced to a short list. +Version 4.90 +------------ + + 1. PKG_CONFIG_PATH can now be set in Local/Makefile; + wildcards will be expanded, values are collapsed. + + Version 4.89 ------------ diff --git a/src/scripts/Configure-Makefile b/src/scripts/Configure-Makefile index 3e486a6bb..b6f2e2e09 100755 --- a/src/scripts/Configure-Makefile +++ b/src/scripts/Configure-Makefile @@ -78,6 +78,8 @@ fi mf=Makefile mft=$mf-t mftt=$mf-tt +mftepcp=$mf-tepcp +mftepcp2=$mf-tepcp2 look_mf=lookups/Makefile look_mf_pre=${look_mf}.predynamic @@ -86,7 +88,7 @@ look_mf_post=${look_mf}.postdynamic # Ensure the temporary does not exist and start the new one by setting # the OSTYPE and ARCHTYPE variables. -rm -f $mft $mftt $look_mf-t +rm -f $mft $mftt $mftepcp $mftepcp2 $look_mf-t (echo "OSTYPE=$ostype"; echo "ARCHTYPE=$archtype"; echo "") > $mft || exit 1 # Now concatenate the files to the temporary file. Copy the files using sed to @@ -116,9 +118,33 @@ done \ | sed 's/^TMPDIR=/EXIM_&/' \ >> $mft || exit 1 +# handle PKG_CONFIG_PATH because we need it in our env, and we want to handle +# wildcards; note that this logic means all setting _appends_ values, never +# replacing; if that's a problem, we can revisit. +sed -n "s/^[$st]*PKG_CONFIG_PATH[$st]*[+]*=[$st]*//p" $mft | \ + sed "s/[$st]*\$//" >> $mftepcp +if test -s ./$mftepcp +then + # expand any wildcards and strip spaces, to make it a real PATH-like variable + ( IFS=":${IFS-$st}"; for P in `cat ./$mftepcp`; do echo "$P"; done ) | xargs | sed "s/[$st]/:/g" >./$mftepcp2 + sed "s/^/PKG_CONFIG_PATH='/" < ./$mftepcp2 | sed "s/\$/'/" > ./$mftepcp + . ./$mftepcp + export PKG_CONFIG_PATH + egrep -v "^[$st]*PKG_CONFIG_PATH[$st]*=" ./$mft > ./$mftt + rm -f ./$mft + ( + echo "# Collapsed PKG_CONFIG_PATH in build-prep:" + sed "s/'//g" ./$mftepcp + echo "# End of collapsed PKG_CONFIG_PATH" + echo "" + cat ./$mftt + ) > ./$mft + rm -f ./$mftt +fi +rm -f ./$mftepcp ./$mftepcp2 + # handle pkg-config # beware portability of extended regexps with sed. - egrep "^[$st]*(AUTH|LOOKUP)_[A-Z0-9_]*[$st]*=[$st]*" $mft | \ sed "s/[$st]*=/='/" | \ sed "s/\$/'/" > $mftt @@ -165,8 +191,8 @@ then echo "CFLAGS += $tls_include" echo "LDFLAGS += $tls_libs" else - echo "CFLAGS += $(libgcrypt-config --cflags)" - echo "LDFLAGS += $(libgcrypt-config --libs)" + echo "CFLAGS += `libgcrypt-config --cflags`" + echo "LDFLAGS += `libgcrypt-config --libs`" fi fi fi diff --git a/src/src/EDITME b/src/src/EDITME index df74aacde..956b1e1e2 100644 --- a/src/src/EDITME +++ b/src/src/EDITME @@ -192,6 +192,11 @@ SPOOL_DIRECTORY=/var/spool/exim # least one type of lookup. You should consider whether you want to build # the Exim monitor or not. +# If you need to override how pkg-config finds configuration files for +# installed software, then you can set that here; wildcards will be expanded. + +# PKG_CONFIG_PATH=/usr/local/opt/openssl/lib/pkgconfig : /opt/*/lib/pkgconfig + #------------------------------------------------------------------------------ # These settings determine which individual router drivers are included in the