From 3a5542f9e853e5c78619de0590c1ee38c7e33c88 Mon Sep 17 00:00:00 2001 From: Christian Paquin Date: Mon, 5 Mar 2018 10:17:07 -0500 Subject: [PATCH] Fix build on ARM. (#233) --- README.md | 7 ------- configure.ac | 12 ++++++++++-- src/sig_picnic/Makefile.am | 5 ++++- 3 files changed, 14 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 29d28a53b..53c136d57 100644 --- a/README.md +++ b/README.md @@ -203,13 +203,6 @@ Run it from your Android device: Tested on SM-930F -Building for ARM ----------------- - -To build on ARM (such as a Raspberry Pi), certain ciphers must be disabled when running configure: - - ./configure --disable-aes-ni - Documentation ------------- diff --git a/configure.ac b/configure.ac index 30a8c699c..c57ba7086 100644 --- a/configure.ac +++ b/configure.ac @@ -88,7 +88,7 @@ DX_INIT_DOXYGEN([$PACKAGE_NAME],[doxygen.cfg]) ###################################################################### ARG_DISBL_SET([aes-ni], [enable AES-NI.]) -AM_CONDITIONAL([aes_ni], [test "x$aes_ni" = xtrue]) +AM_CONDITIONAL([aes_ni], [test "x$aes_ni" = xtrue]) # disabled on ARM below AM_CONDITIONAL([USE_AES_NI], [test "x$aes_ni" = xtrue]) ARG_ENABL_SET([openssl], [enable OPENSSL.]) @@ -166,11 +166,18 @@ if test x"$linux" = x"true"; then AM_CPPFLAGS=${AM_CPPFLAGS}" -DSIDH_ASM -march=armv8-a+crc" arm64=true ;; + arm* ) + AM_CPPFLAGS=${AM_CPPFLAGS}" -DARM" + AM_CONDITIONAL([aes_ni], [false]) + AM_CONDITIONAL([USE_AES_NI], [false]) + arm=true + ;; esac fi AM_CONDITIONAL([X86_64], [test "x$x86_64" = xtrue]) AM_CONDITIONAL([ARM64], [test "x$arm64" = xtrue]) +AM_CONDITIONAL([ARM], [test "x$arm" = xtrue]) # Common sources SRCDIR=" src/common" @@ -231,7 +238,8 @@ fi # Flags AM_CPPFLAGS=${AM_CPPFLAGS}" -g -std=gnu11 -Wno-unused-function -Werror -Wpedantic -Wall -Wextra -DCONSTANT_TIME" -if test x"$aes_ni" = x"true"; then +# if test x"$aes_ni" = x"true" && test x"$ARM" = x"false"; then +if test -z "${aes_ni_TRUE}"; then AM_CPPFLAGS=${AM_CPPFLAGS}" -DAES_ENABLE_NI" fi if test x"$openssl" = x"true"; then diff --git a/src/sig_picnic/Makefile.am b/src/sig_picnic/Makefile.am index 0dbebdb6a..082195a84 100644 --- a/src/sig_picnic/Makefile.am +++ b/src/sig_picnic/Makefile.am @@ -2,6 +2,9 @@ AUTOMAKE_OPTIONS = foreign noinst_LTLIBRARIES = libpicnic_i.la libpicnic_i_la_SOURCES = sig_picnic.c external/aligned_alloc.c external/bitstream.c external/cpu.c external/io.c external/kdf_shake.c external/lowmc.c external/lowmc_pars.c external/lowmc_128_128_20.c external/lowmc_192_192_30.c external/lowmc_256_256_38.c external/mpc.c external/mpc_lowmc.c external/mzd_additional.c external/picnic.c external/picnic_impl.c external/sha3/KeccakHash.c external/sha3/KeccakSponge.c external/sha3/opt64/KeccakP-1600-opt64.c -libpicnic_i_la_CPPFLAGS = -I../../include -Iexternal -Iexternal/sha3 -Iexternal/sha3/opt64 -DMUL_M4RI -DREDUCED_LINEAR_LAYER -DHAVE_POSIX_MEMALIGN -DWITH_LOWMC_128_128_20 -DWITH_LOWMC_192_192_30 -DWITH_LOWMC_256_256_38 -DWITH_OPT -DWITH_SSE2 -DWITH_SSE4_1 +libpicnic_i_la_CPPFLAGS = -I../../include -Iexternal -Iexternal/sha3 -Iexternal/sha3/opt64 -DMUL_M4RI -DREDUCED_LINEAR_LAYER -DHAVE_POSIX_MEMALIGN -DWITH_LOWMC_128_128_20 -DWITH_LOWMC_192_192_30 -DWITH_LOWMC_256_256_38 -DWITH_OPT +if !ARM +libpicnic_i_la_CPPFLAGS += -DWITH_SSE2 -DWITH_SSE4_1 +endif libpicnic_i_la_CPPFLAGS += $(AM_CPPFLAGS)