diff --git a/.travis.yml b/.travis.yml index 14c278520..427efb37d 100644 --- a/.travis.yml +++ b/.travis.yml @@ -9,7 +9,7 @@ matrix: env: - CC_OVERRIDE=gcc - ENABLE_SIG_PICNIC=0 - - USE_OPENSSL=1 + - WITH_OPENSSL=1 - CHECK_STYLE=true addons: apt: @@ -67,7 +67,7 @@ matrix: compiler: gcc env: - CC_OVERRIDE=gcc-6 - - USE_OPENSSL=1 + - WITH_OPENSSL=1 addons: apt: sources: @@ -84,8 +84,7 @@ matrix: env: - CC_OVERRIDE=clang - AES_NI=0 - - USE_OPENSSL=1 - - OPENSSL_DIR=/usr/local/opt/openssl # openssl is a keg-only package + - WITH_OPENSSL=1 before_install: - brew update - brew install doxygen graphviz diff --git a/.travis/all-tests.sh b/.travis/all-tests.sh index d4659d1d2..f035b69b8 100755 --- a/.travis/all-tests.sh +++ b/.travis/all-tests.sh @@ -33,11 +33,10 @@ source $(dirname $0)/defs.sh # construct configure arguments enable_disable_str= - if [[ ${USE_OPENSSL} == 1 ]];then - enable_disable_str=" --enable-openssl" - if [[ ! -z "${OPENSSL_DIR// }" ]];then - enable_disable_str+=" --with-openssl-dir=${OPENSSL_DIR}" - fi + if [[ ${WITH_OPENSSL} == 1 ]];then + enable_disable_str=" --with-openssl" + else + enable_disable_str=" --without-openssl" fi if [[ ${AES_NI} == 0 ]];then diff --git a/README.md b/README.md index 07b28d807..1f5b9b779 100644 --- a/README.md +++ b/README.md @@ -134,7 +134,7 @@ Run the build system: (If on macOS you encounter an error like `Can't exec "libtoolize": No such file or directory at ...`, try running with `LIBTOOLIZE=glibtoolize autoreconf -i`.) -You can enable/disable various algorithms at compile-time, tell liboqs to use OpenSSL for certain crypto algorithms, and more; see `./configure --help`. (In particular, on macOS, you might want to point liboqs to brew's version of OpenSSL, via the command: `./configure --enable-openssl --with-openssl-dir=/usr/local/opt/openssl`.) +You can enable/disable various algorithms at compile-time, tell liboqs to use OpenSSL for certain crypto algorithms, and more; see `./configure --help`. ### Build results diff --git a/config/external-libraries.m4 b/config/external-libraries.m4 index aef11cb2e..bef37fab7 100644 --- a/config/external-libraries.m4 +++ b/config/external-libraries.m4 @@ -1,17 +1,49 @@ # Checks for libraries. -AC_DEFUN([ADD_EXTERNAL_LIB], - [AC_ARG_WITH( - [openssl-dir], - AS_HELP_STRING([--with-openssl-dir=dir],[openssl dir used locally (default /usr).]), - [AC_DEFINE_UNQUOTED(OPENSSLDIR, [$withval], [OPENSSL DIR used locally]) - AC_SUBST(OPENSSL_DIR, [$withval])], - [AC_SUBST(OPENSSL_DIR, /usr)] - )] - [AC_ARG_WITH( - [m4ri-dir], - AS_HELP_STRING([--with-m4ri-dir=dir],[m4ri dir used locally (default /usr).]), - [AC_DEFINE_UNQUOTED(M4RIDIR, [$withval], [M4RI DIR used locally]) - AC_SUBST(M4RI_DIR, [$withval])], +AC_DEFUN([ADD_EXTERNAL_LIB],[ + + AC_MSG_CHECKING([whether to use OpenSSL]) + # define the --with-openssl option + AC_ARG_WITH([openssl], + [AS_HELP_STRING( + [--without-openssl], + [disable OpenSSL; use --with-openssl=dir to specify OpenSSL dir (default /usr or /usr/local/opt/openssl on macOS)] + )], + [with_openssl=$withval], + [with_openssl=default] + ) + # platform-specific default directory + AS_IF( + [test "x${with_openssl}" = "xdefault"], + [AM_COND_IF(ON_DARWIN, + [with_openssl=/usr/local/opt/openssl], + [with_openssl=/usr] + )] + ) + AS_IF( + [test "x${with_openssl}" = "xno"], + [AC_MSG_RESULT([no])], + [ + AC_MSG_RESULT([${with_openssl}]) + # set OPENSSL_DIR based on value provided + AC_SUBST([OPENSSL_DIR], [${with_openssl}]) + ] + ) + # define automake conditional USE_OPENSSL + AM_CONDITIONAL(USE_OPENSSL, [test "x${with_openssl}" != "xno"]) + # define C macro USE_OPENSSL + AM_COND_IF(USE_OPENSSL, + [AC_DEFINE(USE_OPENSSL, 1, [Defined to 1 if using OpenSSL in liboqs])] + ) + + AC_ARG_WITH([m4ri-dir], + [AS_HELP_STRING( + [--with-m4ri-dir=dir], + [m4ri dir used locally (default /usr)] + )], + [ + AC_DEFINE_UNQUOTED(M4RIDIR, [$withval], [M4RI DIR used locally]) + AC_SUBST(M4RI_DIR, [$withval]) + ], [AC_SUBST(M4RI_DIR, /usr)] - )] -) + ) +]) diff --git a/config/features.m4 b/config/features.m4 index e78f18192..82822e8b7 100644 --- a/config/features.m4 +++ b/config/features.m4 @@ -23,7 +23,7 @@ AC_DEFUN([ARG_ENABL_SET_WRAP], AC_DEFUN([CONFIG_FEATURE_FLAGS], [ - #The flags are organizes according to features then cryptosystems. + # The flags are organized according to features then cryptosystems. # The parameters are # 1) Flag-name @@ -31,7 +31,6 @@ AC_DEFUN([CONFIG_FEATURE_FLAGS], # 3) Compilation param name # 4) Compilation directory ARG_DISBL_SET_WRAP([aes-ni], [aes_ni], [USE_AES_NI]) - ARG_ENABL_SET_WRAP([openssl], [openssl], [USE_OPENSSL]) AS_IF([test "x${enable_shared}" = "xyes" ], AC_MSG_RESULT([yes]), AC_MSG_RESULT([no])) AM_CONDITIONAL([ENABLE_SHARED],[test "x${enable_shared}" = "xyes"]) @@ -53,11 +52,8 @@ AC_DEFUN([CONFIG_FEATURE_FLAGS], ##### OQS_COPY_FROM_PQCLEAN_FRAGMENT_ARG_DISBL_SET_WRAP_END ARG_DISBL_SET_WRAP([kem-frodokem], [kem_frodokem], [ENABLE_KEM_FRODOKEM], [src/kem/frodokem]) ARG_DISBL_SET_WRAP([kem-sike], [kem_sike], [ENABLE_KEM_SIKE], [src/kem/sike]) - - ARG_DISBL_SET_WRAP([sig-picnic], [sig_picnic], - [ENABLE_SIG_PICNIC], [src/sig/picnic]) - ARG_DISBL_SET_WRAP([sig-qtesla], [sig_qtesla], - [ENABLE_SIG_QTESLA], [src/sig/qtesla]) + ARG_DISBL_SET_WRAP([sig-picnic], [sig_picnic], [ENABLE_SIG_PICNIC], [src/sig/picnic]) + ARG_DISBL_SET_WRAP([sig-qtesla], [sig_qtesla], [ENABLE_SIG_QTESLA], [src/sig/qtesla]) ] ) diff --git a/configure.ac b/configure.ac index a1725e360..505cde746 100644 --- a/configure.ac +++ b/configure.ac @@ -25,6 +25,9 @@ AC_DEFINE([OQS_MASTER_BRANCH],[],[liboqs branch]) AC_CONFIG_HEADERS([config.h]) AC_CONFIG_MACRO_DIRS([config]) +# Detect the host CPU and x86 features that are available. +DETECT_HOST_AND_CPU + # Set paths to external libraries. ADD_EXTERNAL_LIB @@ -42,9 +45,6 @@ AC_GENERAL_CHECKS # DOXYGEN SUPPORT CONFIG_DOXYGEN -# Detect the host CPU and x86 features that are availble. -DETECT_HOST_AND_CPU - # Configure the list of supported features CONFIG_FEATURES diff --git a/scripts/arm-cross-compile.sh b/scripts/arm-cross-compile.sh index ebf7d5704..c18c30120 100755 --- a/scripts/arm-cross-compile.sh +++ b/scripts/arm-cross-compile.sh @@ -30,6 +30,6 @@ hacks=( CFLAGS=-D_ARM_ # Several files aren't using the right define ) -./configure --disable-shared --enable-static --host="${CHOST}" --build="$CBUILD" CC="${CHOST}-gcc" --with-openssl-dir="${PREFIX}" "${hacks[@]}" +./configure --disable-shared --enable-static --host="${CHOST}" --build="$CBUILD" CC="${CHOST}-gcc" --with-openssl="${PREFIX}" "${hacks[@]}" make -j make -j check LDFLAGS="-L${PREFIX}/lib -static"