summaryrefslogtreecommitdiff
path: root/config
diff options
context:
space:
mode:
authorRichard Levitte <levitte@openssl.org>2018-03-07 22:44:59 +0100
committerRichard Levitte <levitte@openssl.org>2018-03-08 17:24:02 +0100
commit2ab92ae9dca7c4a9dc3b8468333b10aff7629c5a (patch)
tree8aa74fb30da8a2dce76828f648c6d04891b29f85 /config
parent72d7f221ee7a3909496c240bab85770b48b515dd (diff)
downloadopenssl-new-2ab92ae9dca7c4a9dc3b8468333b10aff7629c5a.tar.gz
config: Pass diverse flags to Configure via the environment
Passing flags "discovered" by 'config' on the command line to 'Configure' mixes them up with flags given by the user. That is contrary to their intention, so they need to be passed in a different manner. Enter the environment variables __CNF_CPPDEFINES, __CNF_CPPINCLUDES, __CNF_CPPFLAGS, __CNF_CFLAGS, __CNF_CXXFLAGS, __CNF_LDFLAGS, and __CNF_LDLIBS, initialised by 'config', and then used by Configure to initialise these %config values: defines, includes, cppflags, cflags, cxxflags, lflags, and ex_libs. Reviewed-by: Andy Polyakov <appro@openssl.org> (Merged from https://github.com/openssl/openssl/pull/5534)
Diffstat (limited to 'config')
-rwxr-xr-xconfig103
1 files changed, 78 insertions, 25 deletions
diff --git a/config b/config
index 00f9087611..92dfa4af7f 100755
--- a/config
+++ b/config
@@ -40,6 +40,15 @@ EOF
esac
done
+# Environment that's being passed to Configure
+__CNF_CPPDEFINES=
+__CNF_CPPINCLUDES=
+__CNF_CPPFLAGS=
+__CNF_CFLAGS=
+__CNF_CXXFLAGS=
+__CNF_LDFLAGS=
+__CNF_LDLIBS=
+
# First get uname entries that we use below
[ "$MACHINE" ] || MACHINE=`(uname -m) 2>/dev/null` || MACHINE="unknown"
@@ -504,10 +513,12 @@ case "$GUESSOS" in
OUT="darwin64-x86_64-cc"
fi ;;
armv6+7-*-iphoneos)
- options="$options -arch%20armv6 -arch%20armv7"
+ __CNF_CFLAGS="$__CNF_CFLAGS -arch%20armv6 -arch%20armv7"
+ __CNF_CXXFLAGS="$__CNF_CXXFLAGS -arch%20armv6 -arch%20armv7"
OUT="iphoneos-cross" ;;
*-*-iphoneos)
- options="$options -arch%20${MACHINE}"
+ __CNF_CFLAGS="$__CNF_CFLAGS -arch%20${MACHINE}"
+ __CNF_CXXFLAGS="$__CNF_CXXFLAGS -arch%20${MACHINE}"
OUT="iphoneos-cross" ;;
arm64-*-iphoneos|*-*-ios64)
OUT="ios64-cross" ;;
@@ -519,9 +530,12 @@ case "$GUESSOS" in
esac
if [ "$CC" = "gcc" ]; then
case ${ISA:-generic} in
- EV5|EV45) options="$options -mcpu=ev5";;
- EV56|PCA56) options="$options -mcpu=ev56";;
- *) options="$options -mcpu=ev6";;
+ EV5|EV45) __CNF_CFLAGS="$__CNF_CFLAGS -mcpu=ev5"
+ __CNF_CXXFLAGS="$__CNF_CFLAGS -mcpu=ev5";;
+ EV56|PCA56) __CNF_CFLAGS="$__CNF_CFLAGS -mcpu=ev56"
+ __CNF_CXXFLAGS="$__CNF_CXXFLAGS -mcpu=ev56";;
+ *) __CNF_CFLAGS="$__CNF_CFLAGS -mcpu=ev6"
+ __CNF_CXXFLAGS="$__CNF_CXXFLAGS -mcpu=ev6";;
esac
fi
;;
@@ -538,7 +552,12 @@ case "$GUESSOS" in
OUT="linux-ppc64"
else
OUT="linux-ppc"
- (echo "__LP64__" | gcc -E -x c - 2>/dev/null | grep "^__LP64__" 2>&1 > /dev/null) || options="$options -m32"
+ if (echo "__LP64__" | gcc -E -x c - 2>/dev/null | grep "^__LP64__" 2>&1 > /dev/null); then
+ :;
+ else
+ __CNF_CFLAGS="$__CNF_CFLAGS -m32"
+ __CNF_CXXFLAGS="$__CNF_CXXFLAGS -m32"
+ fi
fi
;;
ppc64le-*-linux2) OUT="linux-ppc64le" ;;
@@ -574,7 +593,8 @@ case "$GUESSOS" in
sun4u*) OUT="linux-sparcv9" ;;
sun4m) OUT="linux-sparcv8" ;;
sun4d) OUT="linux-sparcv8" ;;
- *) OUT="linux-generic32"; options="$options -DB_ENDIAN" ;;
+ *) OUT="linux-generic32";
+ __CNF_CPPFLAGS="$__CNF_CPPFLAGS -DB_ENDIAN" ;;
esac ;;
parisc*-*-linux2)
# 64-bit builds under parisc64 linux are not supported and
@@ -596,16 +616,25 @@ case "$GUESSOS" in
CPUSCHEDULE=`echo $CPUSCHEDULE|sed -e 's/7300LC/7100LC/' -e 's/8.00/8000/'`
# Finish Model transformations
- options="$options -DB_ENDIAN -mschedule=$CPUSCHEDULE -march=$CPUARCH"
+ __CNF_CPPFLAGS="$__CNF_CPPFLAGS -DB_ENDIAN"
+ __CNF_CFLAGS="$__CNF_CFLAGS -mschedule=$CPUSCHEDULE -march=$CPUARCH"
+ __CNF_CXXFLAGS="$__CNF_CXXFLAGS -mschedule=$CPUSCHEDULE -march=$CPUARCH"
OUT="linux-generic32" ;;
armv[1-3]*-*-linux2) OUT="linux-generic32" ;;
- armv[7-9]*-*-linux2) OUT="linux-armv4"; options="$options -march=armv7-a" ;;
+ armv[7-9]*-*-linux2) OUT="linux-armv4"
+ __CNF_CFLAGS="$__CNF_CFLAGS -march=armv7-a"
+ __CNF_CXXFLAGS="$__CNF_CXXFLAGS -march=armv7-a"
+ ;;
arm*-*-linux2) OUT="linux-armv4" ;;
aarch64-*-linux2) OUT="linux-aarch64" ;;
- sh*b-*-linux2) OUT="linux-generic32"; options="$options -DB_ENDIAN" ;;
- sh*-*-linux2) OUT="linux-generic32"; options="$options -DL_ENDIAN" ;;
- m68k*-*-linux2) OUT="linux-generic32"; options="$options -DB_ENDIAN" ;;
- s390-*-linux2) OUT="linux-generic32"; options="$options -DB_ENDIAN" ;;
+ sh*b-*-linux2) OUT="linux-generic32";
+ __CNF_CPPFLAGS="$__CNF_CPPFLAGS -DB_ENDIAN" ;;
+ sh*-*-linux2) OUT="linux-generic32";
+ __CNF_CPPFLAGS="$__CNF_CPPFLAGS -DL_ENDIAN" ;;
+ m68k*-*-linux2) OUT="linux-generic32";
+ __CNF_CPPFLAGS="$__CNF_CPPFLAGS -DB_ENDIAN" ;;
+ s390-*-linux2) OUT="linux-generic32";
+ __CNF_CPPFLAGS="$__CNF_CPPFLAGS -DB_ENDIAN" ;;
s390x-*-linux2)
# To be uncommented when glibc bug is fixed, see Configure...
#if egrep -e '^features.* highgprs' /proc/cpuinfo >/dev/null ; then
@@ -687,9 +716,12 @@ case "$GUESSOS" in
;;
*-*-sunos4) OUT="sunos-$CC" ;;
- *86*-*-bsdi4) OUT="BSD-x86-elf"; options="$options no-sse2 -ldl" ;;
- alpha*-*-*bsd*) OUT="BSD-generic64"; options="$options -DL_ENDIAN" ;;
- powerpc64-*-*bsd*) OUT="BSD-generic64"; options="$options -DB_ENDIAN" ;;
+ *86*-*-bsdi4) OUT="BSD-x86-elf"; options="$options no-sse2";
+ __CNF_LDFLAGS="$__CNF_LDFLAGS -ldl" ;;
+ alpha*-*-*bsd*) OUT="BSD-generic64";
+ __CNF_CPPFLAGS="$__CNF_CPPFLAGS -DL_ENDIAN" ;;
+ powerpc64-*-*bsd*) OUT="BSD-generic64";
+ __CNF_CPPFLAGS="$__CNF_CPPFLAGS -DB_ENDIAN" ;;
sparc64-*-*bsd*) OUT="BSD-sparc64" ;;
ia64-*-*bsd*) OUT="BSD-ia64" ;;
x86_64-*-dragonfly*) OUT="BSD-x86_64" ;;
@@ -716,7 +748,8 @@ case "$GUESSOS" in
if [ "$CC" = "gcc" ]; then
OUT="unixware-7-gcc" ; options="$options no-sse2"
else
- OUT="unixware-7" ; options="$options no-sse2 -D__i386__"
+ OUT="unixware-7" ; options="$options no-sse2"
+ __CNF_CPPFLAGS="$__CNF_CPPFLAGS -D__i386__"
fi
;;
*-*-[Uu]nix[Ww]are20*) OUT="unixware-2.0"; options="$options no-sse2 no-sha512" ;;
@@ -763,7 +796,7 @@ case "$GUESSOS" in
else # Motorola(?) CPU
OUT="hpux-$CC"
fi
- options="$options -D_REENTRANT" ;;
+ __CNF_CPPFLAGS="$__CNF_CPPFLAGS -D_REENTRANT" ;;
*-hpux) OUT="hpux-parisc-$CC" ;;
*-aix)
[ "$KERNEL_BITS" ] || KERNEL_BITS=`(getconf KERNEL_BITMODE) 2>/dev/null`
@@ -802,7 +835,9 @@ case "$GUESSOS" in
*-*-qnx6) OUT="QNX6" ;;
x86-*-android|i?86-*-android) OUT="android-x86" ;;
armv[7-9]*-*-android)
- OUT="android-armeabi"; options="$options -march=armv7-a" ;;
+ OUT="android-armeabi"
+ __CNF_CFLAGS="$__CNF_CFLAGS -march=armv7-a"
+ __CNF_CXXFLAGS="$__CNF_CXXFLAGS -march=armv7-a";;
arm*-*-android) OUT="android-armeabi" ;;
*) OUT=`echo $GUESSOS | awk -F- '{print $3}'`;;
esac
@@ -816,7 +851,7 @@ esac
# See whether we can compile Atalla support
#if [ -f /usr/include/atasi.h ]
#then
-# options="$options -DATALLA"
+# __CNF_CPPFLAGS="$__CNF_CPPFLAGS -DATALLA"
#fi
if [ -n "$CONFIG_OPTIONS" ]; then
@@ -824,9 +859,11 @@ if [ -n "$CONFIG_OPTIONS" ]; then
fi
if expr "$options" : '.*no\-asm' > /dev/null; then :; else
- sh -c "$CROSS_COMPILE${CC:-gcc} -Wa,--help -c -o /tmp/null.$$.o -x assembler /dev/null && rm /tmp/null.$$.o" 2>&1 | \
- grep \\--noexecstack >/dev/null && \
- options="$options -Wa,--noexecstack"
+ if sh -c "$CROSS_COMPILE${CC:-gcc} -Wa,--help -c -o /tmp/null.$$.o -x assembler /dev/null && rm /tmp/null.$$.o" 2>&1 | \
+ grep \\--noexecstack >/dev/null; then
+ __CNF_CFLAGS="$__CNF_CFLAGS -Wa,--noexecstack"
+ __CNF_CXXFLAGS="$__CNF_CXXFLAGS -Wa,--noexecstack"
+ fi
fi
# gcc < 2.8 does not support -march=ultrasparc
@@ -900,12 +937,28 @@ OUT="$OUT"
$PERL $THERE/Configure LIST | grep "$OUT" > /dev/null
if [ $? = "0" ]; then
if [ "$VERBOSE" = "true" ]; then
- echo $PERL $THERE/Configure $OUT $options
+ echo /usr/bin/env \
+ __CNF_CPPDEFINES="'$__CNF_CPPDEFINES'" \
+ __CNF_CPPINCLUDES="'$__CNF_CPPINCLUDES'" \
+ __CNF_CPPFLAGS="'$__CNF_CPPFLAGS'" \
+ __CNF_CFLAGS="'$__CNF_CFLAGS'" \
+ __CNF_CXXFLAGS="'$__CNF_CXXFLAGS'" \
+ __CNF_LDFLAGS="'$__CNF_LDFLAGS'" \
+ __CNF_LDLIBS="'$__CNF_LDLIBS'" \
+ $PERL $THERE/Configure $OUT $options
fi
if [ "$DRYRUN" = "false" ]; then
# eval to make sure quoted options, possibly with spaces inside,
# are treated right
- eval $PERL $THERE/Configure $OUT $options
+ eval /usr/bin/env \
+ __CNF_CPPDEFINES="'$__CNF_CPPDEFINES'" \
+ __CNF_CPPINCLUDES="'$__CNF_CPPINCLUDES'" \
+ __CNF_CPPFLAGS="'$__CNF_CPPFLAGS'" \
+ __CNF_CFLAGS="'$__CNF_CFLAGS'" \
+ __CNF_CXXFLAGS="'$__CNF_CXXFLAGS'" \
+ __CNF_LDFLAGS="'$__CNF_LDFLAGS'" \
+ __CNF_LDLIBS="'$__CNF_LDLIBS'" \
+ $PERL $THERE/Configure $OUT $options
fi
else
echo "This system ($OUT) is not supported. See file INSTALL for details."