X-Git-Url: https://git.exim.org/users/jgh/exim.git/blobdiff_plain/80fea873648ca2ab2e592999a336c59cf054ab55..ee92d1806a00a2c11f9a47b3e8583c5e0a53ef59:/src/scripts/Configure-Makefile diff --git a/src/scripts/Configure-Makefile b/src/scripts/Configure-Makefile index 4aa7d76cd..61368ecb3 100755 --- a/src/scripts/Configure-Makefile +++ b/src/scripts/Configure-Makefile @@ -1,11 +1,13 @@ #! /bin/sh +LC_ALL=C +export LC_ALL # Shell script to build Makefile in a build directory. It must be called # from inside the directory. It does its own checking of when to rebuild; it # just got too horrendous to get it right in "make", because of the optionally # existing configuration files. # -# Copyright (c) The Exim Maintainers 2016 +# Copyright (c) The Exim Maintainers 1995 - 2020 # First off, get the OS type, and check that there is a make file for it. @@ -78,6 +80,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 +90,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 +120,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 @@ -136,13 +164,16 @@ then USE_*_PC) eval "pc_value=\"\$$var\"" need_this='' - if [ ".$SUPPORT_TLS" = "." ]; then + need_core='' + if [ ".$DISABLE_TLS" = .yes ]; then # no TLS, not referencing true elif [ ".$var" = ".USE_GNUTLS_PC" ] && [ ".$USE_GNUTLS" != "." ]; then need_this=t + need_core="gnutls-special" elif [ ".$var" = ".USE_OPENSSL_PC" ] && [ ".$USE_GNUTLS" = "." ]; then need_this=t + need_core=t fi if [ ".$need_this" != "." ]; then tls_include=`pkg-config --cflags $pc_value` @@ -153,6 +184,19 @@ then tls_libs=`pkg-config --libs $pc_value` echo "TLS_INCLUDE=$tls_include" echo "TLS_LIBS=$tls_libs" + # With hash.h pulling crypto into the core, we need to also handle that + if [ ".$need_this" = ".t" ]; then + echo "CFLAGS += $tls_include" + echo "LDFLAGS += $tls_libs" + elif [ ".$need_this" = ".gnutls-special" ]; then + if pkg-config --atleast-version=2.10 gnutls ; then + echo "CFLAGS += $tls_include" + echo "LDFLAGS += $tls_libs" + else + echo "CFLAGS += `libgcrypt-config --cflags`" + echo "LDFLAGS += `libgcrypt-config --libs`" + fi + fi fi ;;