configure.ac/Makefile.am:

add support for EXTRA_CPPFLAGS, EXTRA_CCASFLAGS, and EXTRA_LDFLAGS;

fix typo in setup for CFLAG_VISIBILITY;

lightly refactor handling of CPPFLAGS/AM_CPPFLAGS in handlers for --with-liboqs, --with-wnr, and --with-cavium;

refactor+enhance options.h generation to handle -U directives.
This commit is contained in:
Daniel Pouzzner
2023-01-25 23:45:21 -06:00
parent 022d0e7c89
commit c3a5698799
2 changed files with 43 additions and 22 deletions

View File

@ -26,7 +26,10 @@ SUBDIRS_OPT =
DIST_SUBDIRS_OPT = DIST_SUBDIRS_OPT =
# allow supplementary or override flags to be passed at make time: # allow supplementary or override flags to be passed at make time:
AM_CPPFLAGS += $(EXTRA_CPPFLAGS)
AM_CFLAGS += $(EXTRA_CFLAGS) AM_CFLAGS += $(EXTRA_CFLAGS)
AM_CCASFLAGS += $(EXTRA_CCASFLAGS)
AM_LDFLAGS += $(EXTRA_LDFLAGS)
#includes additional rules from aminclude.am #includes additional rules from aminclude.am
@INC_AMINCLUDE@ @INC_AMINCLUDE@
@ -201,13 +204,15 @@ include scripts/include.am
if BUILD_LINUXKM if BUILD_LINUXKM
# rather than setting $SUBDIRS here directly, we set an auxiliary variable. # rather than setting $SUBDIRS here directly, we set an auxiliary variable.
# autotools see the SUBDIRS assignment here even if BUILD_LINUXKM is false, # autotools sees the SUBDIRS assignment here even if BUILD_LINUXKM is false,
# at least for purposes of recursing for "make distdir", which we don't want to happen. # at least for purposes of recursing for "make distdir", which we don't want to happen.
SUBDIRS_OPT += linuxkm SUBDIRS_OPT += linuxkm
DIST_SUBDIRS_OPT += linuxkm DIST_SUBDIRS_OPT += linuxkm
export KERNEL_ROOT KERNEL_ARCH KERNEL_EXTRA_CFLAGS AM_CPPFLAGS CPPFLAGS \ export KERNEL_ROOT KERNEL_ARCH KERNEL_EXTRA_CFLAGS \
AM_CFLAGS CFLAGS AM_CCASFLAGS CCASFLAGS \ EXTRA_CFLAGS EXTRA_CPPFLAGS EXTRA_CCASFLAGS EXTRA_LDFLAGS \
AM_CPPFLAGS CPPFLAGS AM_CFLAGS CFLAGS \
AM_CCASFLAGS CCASFLAGS \
src_libwolfssl_la_OBJECTS ENABLED_CRYPT_TESTS ENABLED_LINUXKM_PIE ENABLED_ASM \ src_libwolfssl_la_OBJECTS ENABLED_CRYPT_TESTS ENABLED_LINUXKM_PIE ENABLED_ASM \
CFLAGS_FPU_DISABLE CFLAGS_FPU_ENABLE CFLAGS_SIMD_DISABLE CFLAGS_SIMD_ENABLE \ CFLAGS_FPU_DISABLE CFLAGS_FPU_ENABLE CFLAGS_SIMD_DISABLE CFLAGS_SIMD_ENABLE \
CFLAGS_AUTO_VECTORIZE_DISABLE CFLAGS_AUTO_VECTORIZE_ENABLE \ CFLAGS_AUTO_VECTORIZE_DISABLE CFLAGS_AUTO_VECTORIZE_ENABLE \

View File

@ -35,7 +35,10 @@ AC_CONFIG_HEADERS([config.h:config.in])
LT_PREREQ([2.4.2]) LT_PREREQ([2.4.2])
LT_INIT([disable-static win32-dll]) LT_INIT([disable-static win32-dll])
AC_ARG_VAR(EXTRA_CFLAGS, [Extra CFLAGS to add to autoconf-computed arg list. Can also supply directly to make.]) AC_ARG_VAR(EXTRA_CPPFLAGS, [Extra CPPFLAGS to add to end of autoconf-computed arg list. Can also supply directly to make.])
AC_ARG_VAR(EXTRA_CFLAGS, [Extra CFLAGS to add to end of autoconf-computed arg list. Can also supply directly to make.])
AC_ARG_VAR(EXTRA_CCASFLAGS, [Extra CCASFLAGS to add to end of autoconf-computed arg list. Can also supply directly to make.])
AC_ARG_VAR(EXTRA_LDFLAGS, [Extra LDFLAGS to add to end of autoconf-computed arg list. Can also supply directly to make.])
WOLFSSL_CONFIG_ARGS=$ac_configure_args WOLFSSL_CONFIG_ARGS=$ac_configure_args
AC_SUBST([WOLFSSL_CONFIG_ARGS]) AC_SUBST([WOLFSSL_CONFIG_ARGS])
@ -65,7 +68,7 @@ AC_SUBST([WOLFSSL_LIBRARY_VERSION])
gl_VISIBILITY gl_VISIBILITY
AS_IF([ test -n "$CFLAG_VISIBILITY" ], [ AS_IF([ test -n "$CFLAG_VISIBILITY" ], [
AM_CFLAGS="$AM_CPPFLAGS $CFLAG_VISIBILITY" AM_CFLAGS="$AM_CFLAGS $CFLAG_VISIBILITY"
]) ])
@ -981,7 +984,6 @@ AC_ARG_WITH([liboqs],
[AS_HELP_STRING([--with-liboqs=PATH],[Path to liboqs install (default /usr/local) EXPERIMENTAL!])], [AS_HELP_STRING([--with-liboqs=PATH],[Path to liboqs install (default /usr/local) EXPERIMENTAL!])],
[ [
AC_MSG_CHECKING([for liboqs]) AC_MSG_CHECKING([for liboqs])
CPPFLAGS="$CPPFLAGS -DHAVE_LIBOQS -DHAVE_TLS_EXTENSIONS"
LIBS="$LIBS -loqs" LIBS="$LIBS -loqs"
AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <oqs/common.h>]], [[ OQS_init(); ]])], [ liboqs_linked=yes ],[ liboqs_linked=no ]) AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <oqs/common.h>]], [[ OQS_init(); ]])], [ liboqs_linked=yes ],[ liboqs_linked=no ])
@ -994,8 +996,8 @@ AC_ARG_WITH([liboqs],
tryliboqsdir="/usr/local" tryliboqsdir="/usr/local"
fi fi
CPPFLAGS="$AM_CPPFLAGS -DHAVE_LIBOQS -DHAVE_TLS_EXTENSIONS -I$tryliboqsdir/include"
LDFLAGS="$AM_LDFLAGS $LDFLAGS -L$tryliboqsdir/lib" LDFLAGS="$AM_LDFLAGS $LDFLAGS -L$tryliboqsdir/lib"
CPPFLAGS="$CPPFLAGS -I$tryliboqsdir/include"
AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <oqs/common.h>]], [[ OQS_init(); ]])], [ liboqs_linked=yes ],[ liboqs_linked=no ]) AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <oqs/common.h>]], [[ OQS_init(); ]])], [ liboqs_linked=yes ],[ liboqs_linked=no ])
@ -1004,6 +1006,7 @@ AC_ARG_WITH([liboqs],
If it's already installed, specify its path using --with-liboqs=/dir/]) If it's already installed, specify its path using --with-liboqs=/dir/])
fi fi
AC_MSG_RESULT([yes]) AC_MSG_RESULT([yes])
AM_CPPFLAGS="$CPPFLAGS"
AM_LDFLAGS="$AM_LDFLAGS -L$tryliboqsdir/lib" AM_LDFLAGS="$AM_LDFLAGS -L$tryliboqsdir/lib"
else else
AC_MSG_RESULT([yes]) AC_MSG_RESULT([yes])
@ -4840,7 +4843,6 @@ AC_ARG_WITH([wnr],
[AS_HELP_STRING([--with-wnr=PATH],[Path to Whitewood netRandom install (default /usr/local)])], [AS_HELP_STRING([--with-wnr=PATH],[Path to Whitewood netRandom install (default /usr/local)])],
[ [
AC_MSG_CHECKING([for Whitewood netRandom]) AC_MSG_CHECKING([for Whitewood netRandom])
CPPFLAGS="$CPPFLAGS -DHAVE_WNR"
LIBS="$LIBS -lwnr" LIBS="$LIBS -lwnr"
AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <wnr.h>]], [[ wnr_setup(0, 0); ]])], [ wnr_linked=yes ],[ wnr_linked=no ]) AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <wnr.h>]], [[ wnr_setup(0, 0); ]])], [ wnr_linked=yes ],[ wnr_linked=no ])
@ -4853,8 +4855,8 @@ AC_ARG_WITH([wnr],
trywnrdir="/usr/local" trywnrdir="/usr/local"
fi fi
CPPFLAGS="$AM_CPPFLAGS -DHAVE_WNR -I$trywnrdir/include"
LDFLAGS="$AM_LDFLAGS $LDFLAGS -L$trywnrdir/lib" LDFLAGS="$AM_LDFLAGS $LDFLAGS -L$trywnrdir/lib"
CPPFLAGS="$CPPFLAGS -I$trywnrdir/include"
AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <wnr.h>]], [[ wnr_setup(0, 0); ]])], [ wnr_linked=yes ],[ wnr_linked=no ]) AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <wnr.h>]], [[ wnr_setup(0, 0); ]])], [ wnr_linked=yes ],[ wnr_linked=no ])
@ -4863,6 +4865,7 @@ AC_ARG_WITH([wnr],
If it's already installed, specify its path using --with-wnr=/dir/]) If it's already installed, specify its path using --with-wnr=/dir/])
fi fi
AC_MSG_RESULT([yes]) AC_MSG_RESULT([yes])
AM_CPPFLAGS="$CPPFLAGS"
AM_LDFLAGS="$AM_LDFLAGS -L$trywnrdir/lib" AM_LDFLAGS="$AM_LDFLAGS -L$trywnrdir/lib"
else else
AC_MSG_RESULT([yes]) AC_MSG_RESULT([yes])
@ -6423,7 +6426,6 @@ AC_ARG_WITH([cavium],
[ --with-cavium=PATH PATH to cavium/software dir ], [ --with-cavium=PATH PATH to cavium/software dir ],
[ [
AC_MSG_CHECKING([for cavium]) AC_MSG_CHECKING([for cavium])
CPPFLAGS="$CPPFLAGS -DHAVE_CAVIUM"
LIB_ADD="-lrt $LIB_ADD" LIB_ADD="-lrt $LIB_ADD"
if test "x$withval" = "xyes" ; then if test "x$withval" = "xyes" ; then
@ -6433,8 +6435,8 @@ AC_ARG_WITH([cavium],
trycaviumdir=$withval trycaviumdir=$withval
fi fi
CPPFLAGS="$AM_CPPFLAGS -DHAVE_CAVIUM -I$trycaviumdir/include"
LDFLAGS="$AM_LDFLAGS $trycaviumdir/api/cavium_common.o" LDFLAGS="$AM_LDFLAGS $trycaviumdir/api/cavium_common.o"
CPPFLAGS="$CPPFLAGS -I$trycaviumdir/include"
AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include "cavium_common.h"]], [[ CspShutdown(CAVIUM_DEV_ID); ]])],[ cavium_linked=yes ],[ cavium_linked=no ]) AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include "cavium_common.h"]], [[ CspShutdown(CAVIUM_DEV_ID); ]])],[ cavium_linked=yes ],[ cavium_linked=no ])
@ -6442,7 +6444,8 @@ AC_ARG_WITH([cavium],
AC_MSG_ERROR([cavium isn't found. AC_MSG_ERROR([cavium isn't found.
If it's already installed, specify its path using --with-cavium=/dir/]) If it's already installed, specify its path using --with-cavium=/dir/])
else else
AM_CFLAGS="$AM_CFLAGS -DHAVE_CAVIUM" AM_CPPFLAGS="$CPPFLAGS"
AM_LDFLAGS="$LDFLAGS"
fi fi
AC_MSG_RESULT([yes]) AC_MSG_RESULT([yes])
enable_shared=no enable_shared=no
@ -8508,6 +8511,10 @@ then
AM_CFLAGS="$AM_CFLAGS -include ${output_objdir}/.build_params" AM_CFLAGS="$AM_CFLAGS -include ${output_objdir}/.build_params"
fi fi
AM_CPPFLAGS="$AM_CPPFLAGS $EXTRA_CPPFLAGS"
AM_CFLAGS="$AM_CFLAGS $EXTRA_CFLAGS"
AM_CCASFLAGS="$AM_CCASFLAGS $EXTRA_CCASFLAGS"
AM_LDFLAGS="$AM_LDFLAGS $EXTRA_LDFLAGS"
CREATE_HEX_VERSION CREATE_HEX_VERSION
AC_SUBST([AM_CPPFLAGS]) AC_SUBST([AM_CPPFLAGS])
@ -8579,7 +8586,7 @@ rm -f $OPTION_FILE
echo "/* wolfssl options.h" > $OPTION_FILE echo "/* wolfssl options.h" > $OPTION_FILE
echo " * generated from configure options" >> $OPTION_FILE echo " * generated from configure options" >> $OPTION_FILE
echo " *" >> $OPTION_FILE echo " *" >> $OPTION_FILE
echo " * Copyright (C) 2006-2022 wolfSSL Inc." >> $OPTION_FILE echo " * Copyright (C) 2006-2023 wolfSSL Inc." >> $OPTION_FILE
echo " *" >> $OPTION_FILE echo " *" >> $OPTION_FILE
echo " * This file is part of wolfSSL. (formerly known as CyaSSL)" >> $OPTION_FILE echo " * This file is part of wolfSSL. (formerly known as CyaSSL)" >> $OPTION_FILE
echo " *" >> $OPTION_FILE echo " *" >> $OPTION_FILE
@ -8595,11 +8602,12 @@ echo "extern \"C\" {" >> $OPTION_FILE
echo "#endif" >> $OPTION_FILE echo "#endif" >> $OPTION_FILE
echo "" >> $OPTION_FILE echo "" >> $OPTION_FILE
for option in $CPPFLAGS $AM_CPPFLAGS $CFLAGS $AM_CFLAGS $EXTRA_CFLAGS; do for option in $AM_CPPFLAGS $AM_CFLAGS; do
defonly=`echo $option | sed 's/^-D//'` opt_type=$(echo $option | colrm 3)
if test "$defonly" != "$option" case "$opt_type" in
then -D)
noequalsign=`echo $defonly | sed 's/=/ /'` RHS_only=$(echo $option | sed 's/^-D//')
noequalsign=$(echo $RHS_only | sed 's/=/ /')
if test "$noequalsign" = "NDEBUG" || test "$noequalsign" = "DEBUG" if test "$noequalsign" = "NDEBUG" || test "$noequalsign" = "DEBUG"
then then
if test "$verbose" = "yes"; then if test "$verbose" = "yes"; then
@ -8615,7 +8623,7 @@ for option in $CPPFLAGS $AM_CPPFLAGS $CFLAGS $AM_CFLAGS $EXTRA_CFLAGS; do
echo "#ifndef WOLFSSL_OPTIONS_IGNORE_SYS" >> $OPTION_FILE echo "#ifndef WOLFSSL_OPTIONS_IGNORE_SYS" >> $OPTION_FILE
fi fi
noarg=`echo $defonly | sed 's/=.*//'` noarg=$(echo "$RHS_only" | sed 's/=.*//')
echo "#undef $noarg" >> $OPTION_FILE echo "#undef $noarg" >> $OPTION_FILE
echo "#define $noequalsign" >> $OPTION_FILE echo "#define $noequalsign" >> $OPTION_FILE
@ -8625,11 +8633,18 @@ for option in $CPPFLAGS $AM_CPPFLAGS $CFLAGS $AM_CFLAGS $EXTRA_CFLAGS; do
fi fi
echo "" >> $OPTION_FILE echo "" >> $OPTION_FILE
else ;;
-U)
RHS_only=$(echo $option | sed 's/^-U//')
echo "#undef $RHS_only" >> $OPTION_FILE
echo "" >> $OPTION_FILE
;;
*)
if test "$verbose" = "yes"; then if test "$verbose" = "yes"; then
AC_MSG_NOTICE([option w/o begin -D is $option, not saving to $OPTION_FILE]) AC_MSG_NOTICE([option "$option" is not a preprocessor directive -- not saving to $OPTION_FILE])
fi fi
fi ;;
esac
done done
echo "" >> $OPTION_FILE echo "" >> $OPTION_FILE
@ -8678,6 +8693,7 @@ echo " * C++ Compiler: $CXX"
echo " * C++ Flags: $CXXFLAGS" echo " * C++ Flags: $CXXFLAGS"
echo " * CPP Flags: $CPPFLAGS" echo " * CPP Flags: $CPPFLAGS"
echo " * CCAS Flags: $CCASFLAGS" echo " * CCAS Flags: $CCASFLAGS"
echo " * LD Flags: $LDFLAGS"
echo " * LIB Flags: $LIB" echo " * LIB Flags: $LIB"
echo " * Library Suffix: $LIBSUFFIX" echo " * Library Suffix: $LIBSUFFIX"