ext: build equix and hashx using automake

This replaces the sketchy cmake invocation we had inside configure

The libs are always built and always used in unit tests, but only
included in libtor and tor when --enable-gpl is set.

Signed-off-by: Micah Elizabeth Scott <beth@torproject.org>
This commit is contained in:
Micah Elizabeth Scott 2023-03-09 19:33:41 -08:00
parent bfa2102c95
commit 246ced3a8c
7 changed files with 73 additions and 37 deletions

1
.gitignore vendored
View File

@ -152,7 +152,6 @@ core.*
# /src/ext/
/src/ext/ed25519/ref10/libed25519_ref10.lib
/src/ext/ed25519/donna/libed25519_donna.lib
/src/ext/equix/build
/src/ext/keccak-tiny/libkeccak-tiny.lib
# /src/app

View File

@ -114,6 +114,10 @@ TOR_CRYPTO_LIBS = \
$(LIBKECCAK_TINY) \
$(LIBDONNA)
if BUILD_MODULE_POW
TOR_CRYPTO_LIBS += $(EQUIX_LIBS)
endif
# Variants of the above for linking the testing variant of tor (for coverage
# and tests)
if UNITTESTS_ENABLED
@ -121,13 +125,10 @@ TOR_CRYPTO_TESTING_LIBS = \
src/lib/libtor-tls-testing.a \
src/lib/libtor-crypt-ops-testing.a \
$(LIBKECCAK_TINY) \
$(LIBDONNA)
$(LIBDONNA) \
$(EQUIX_LIBS)
endif
EQUIX_LIBS = \
src/ext/equix/build/libequix.a \
src/ext/equix/build/hashx/libhashx.a
# All static libraries used to link tor.
TOR_INTERNAL_LIBS = \
src/core/libtor-app.a \
@ -136,8 +137,7 @@ TOR_INTERNAL_LIBS = \
$(TOR_CRYPTO_LIBS) \
$(TOR_UTIL_LIBS) \
src/trunnel/libor-trunnel.a \
src/lib/libtor-trace.a \
$(EQUIX_LIBS)
src/lib/libtor-trace.a
libtor.a: $(TOR_INTERNAL_LIBS)
$(AM_V_AR) export AR="$(AR)"; \
@ -157,8 +157,7 @@ TOR_INTERNAL_TESTING_LIBS = \
$(TOR_CRYPTO_TESTING_LIBS) \
$(TOR_UTIL_TESTING_LIBS) \
src/trunnel/libor-trunnel-testing.a \
src/lib/libtor-trace.a \
$(EQUIX_LIBS)
src/lib/libtor-trace.a
src/test/libtor-testing.a: $(TOR_INTERNAL_TESTING_LIBS)
$(AM_V_AR) export AR="$(AR)"; \

View File

@ -31,8 +31,6 @@ tor_incr_n_warnings() {
tor_ac_n_warnings=`expr $tor_ac_n_warnings + 1`
}
AC_CONFIG_COMMANDS([equix], [./src/ext/equix/build.sh])
m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
AC_CONFIG_HEADERS([orconfig.h])
@ -2602,6 +2600,17 @@ if test "$enable_coverage" = "yes" && test "$have_clang" = "no"; then
esac
fi
# These HashX parameter definitions are needed in CPPFLAGS when compiling
# the equix and hashx ext modules, but elsewhere in tor we can use orconfig.h
m4_define([equix_hashx_size], [8])
[HASHX_SIZE=]equix_hashx_size
AC_SUBST([HASHX_SIZE])
AC_DEFINE([HASHX_SIZE], equix_hashx_size,
[Output size in bytes for the internal customization of HashX])
AC_DEFINE([HASHX_STATIC], [1], [We statically link with HashX])
AC_DEFINE([EQUIX_STATIC], [1], [We statically link with EquiX])
CPPFLAGS="$CPPFLAGS $TOR_CPPFLAGS_libevent $TOR_CPPFLAGS_openssl $TOR_CPPFLAGS_zlib"
AC_CONFIG_FILES([

View File

@ -1,3 +0,0 @@
[submodule "hashx"]
path = hashx
url = https://github.com/tevador/hashx

View File

@ -1,7 +0,0 @@
#!/bin/bash
cd ./src/ext/equix
mkdir build
cd build
cmake ..
make

View File

@ -1,9 +0,0 @@
bin/
obj/
*.user
*.suo
.vs
x64/
Release/
Debug/
build/

View File

@ -1,14 +1,8 @@
AM_CPPFLAGS += \
-I$(srcdir)/src/ext/ \
-I$(srcdir)/src/ext/equix/include/ \
-I$(srcdir)/src/ext/equix/hashx/include/
# TODO: put this with other equix/hashx ext defs when those happen,
# and also add it to the autoconf config header. For now this is here
# just for test_crypto's benefit.
AM_CPPFLAGS += -DHASHX_SIZE=8
EXTRA_DIST += src/ext/ext.md
EXTHEADERS = \
@ -152,6 +146,60 @@ noinst_HEADERS += $(ED25519_DONNA_HDRS)
LIBED25519_DONNA=src/ext/ed25519/donna/libed25519_donna.a
noinst_LIBRARIES += $(LIBED25519_DONNA)
src_ext_equix_libhashx_a_CPPFLAGS = \
-I$(srcdir)/src/ext/equix/hashx/include/ \
-I$(srcdir)/src/ext/equix/hashx/src/ \
-DHASHX_SIZE=@HASHX_SIZE@ \
-DEQUIX_STATIC=1 -DHASHX_STATIC=1
src_ext_equix_libhashx_a_SOURCES = \
src/ext/equix/hashx/src/blake2.c \
src/ext/equix/hashx/src/compiler.c \
src/ext/equix/hashx/src/compiler_a64.c \
src/ext/equix/hashx/src/compiler_x86.c \
src/ext/equix/hashx/src/context.c \
src/ext/equix/hashx/src/hashx.c \
src/ext/equix/hashx/src/program.c \
src/ext/equix/hashx/src/program_exec.c \
src/ext/equix/hashx/src/siphash.c \
src/ext/equix/hashx/src/siphash_rng.c \
src/ext/equix/hashx/src/virtual_memory.c
src_ext_equix_libequix_a_CPPFLAGS = \
-I$(srcdir)/src/ext/equix/include/ \
-I$(srcdir)/src/ext/equix/src/ \
$(src_ext_equix_libhashx_a_CPPFLAGS)
src_ext_equix_libequix_a_SOURCES = \
src/ext/equix/src/context.c \
src/ext/equix/src/equix.c \
src/ext/equix/src/solver.c
EQUIX_HDRS = \
src/ext/equix/hashx/include/hashx.h \
src/ext/equix/hashx/src/blake2.h \
src/ext/equix/hashx/src/compiler.h \
src/ext/equix/hashx/src/context.h \
src/ext/equix/hashx/src/force_inline.h \
src/ext/equix/hashx/src/hashx_endian.h \
src/ext/equix/hashx/src/instruction.h \
src/ext/equix/hashx/src/program.h \
src/ext/equix/hashx/src/siphash_rng.h \
src/ext/equix/hashx/src/siphash.h \
src/ext/equix/hashx/src/unreachable.h \
src/ext/equix/hashx/src/virtual_memory.h \
src/ext/equix/include/equix.h \
src/ext/equix/src/context.h \
src/ext/equix/src/solver_heap.h \
src/ext/equix/src/solver.h
EQUIX_LIBS = \
src/ext/equix/libhashx.a \
src/ext/equix/libequix.a
noinst_HEADERS += $(EQUIX_HDRS)
noinst_LIBRARIES += $(EQUIX_LIBS)
if BUILD_KECCAK_TINY
src_ext_keccak_tiny_libkeccak_tiny_a_CFLAGS=\
@CFLAGS_CONSTTIME@