Handle PKG_CONFIG_PATH in Local/Makefile
authorPhil Pennock <pdp@exim.org>
Mon, 13 Feb 2017 02:22:02 +0000 (21:22 -0500)
committerPhil Pennock <pdp@exim.org>
Mon, 13 Feb 2017 02:25:59 +0000 (21:25 -0500)
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.

doc/doc-txt/ChangeLog
doc/doc-txt/NewStuff
src/scripts/Configure-Makefile
src/src/EDITME

index 1c282ac8ec4a6a450dac7816c4f5dfc833553e3e..95d822df53b01dbd3c07ccca11c1492120cc3df2 100644 (file)
@@ -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.
 
       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
 -----------------
 
 Exim version 4.89
 -----------------
index dd70201e5e22a01b7b995725b6c63722a33c7dbb..ac876ed9ffb168c7a47cafb42ba42d93502cde14 100644 (file)
@@ -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.
 
 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
 ------------
 
 Version 4.89
 ------------
 
index 3e486a6bb9e3cfe232a95deb73209028ed04f622..b6f2e2e0979a1fa2760638edf01335156faaf486 100755 (executable)
@@ -78,6 +78,8 @@ fi
 mf=Makefile
 mft=$mf-t
 mftt=$mf-tt
 mf=Makefile
 mft=$mf-t
 mftt=$mf-tt
+mftepcp=$mf-tepcp
+mftepcp2=$mf-tepcp2
 
 look_mf=lookups/Makefile
 look_mf_pre=${look_mf}.predynamic
 
 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.
 
 # 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
 (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
 
      | 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.
 # 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
 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 += $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
             fi
           fi
         fi
index df74aacde229657078186a3c806014b93b4a69b0..956b1e1e29343585003cd97abb6ad19cf6bae3e8 100644 (file)
@@ -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.
 
 # 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
 
 #------------------------------------------------------------------------------
 # These settings determine which individual router drivers are included in the