aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Goulet <dgoulet@torproject.org>2018-04-27 11:33:22 -0400
committerDavid Goulet <dgoulet@torproject.org>2018-05-01 10:07:09 -0400
commit43bba89656cce89964f260d46f2550ab9af00c9e (patch)
treeee61931d1ce7d095abf4e3eb6db5f9d54a18b78f
parenta2ff4975f372870c841a8c4eeeeb93d834663650 (diff)
downloadtor-43bba89656cce89964f260d46f2550ab9af00c9e.tar.gz
tor-43bba89656cce89964f260d46f2550ab9af00c9e.zip
build: Always compile module support for tests
The --disable-module-* configure option removes code from the final binary but we still build the unit tests with the disable module(s) so we can actually test that code path all the time and not forget about it. Signed-off-by: David Goulet <dgoulet@torproject.org>
-rw-r--r--Makefile.am6
-rw-r--r--configure.ac12
-rw-r--r--src/or/include.am11
3 files changed, 22 insertions, 7 deletions
diff --git a/Makefile.am b/Makefile.am
index cccad6c5ed..163b650bb0 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -51,14 +51,14 @@ AM_ETAGSFLAGS=--regex='{c}/MOCK_IMPL([^,]+,\W*\([a-zA-Z0-9_]+\)\W*,/\1/s'
if COVERAGE_ENABLED
TEST_CFLAGS=-fno-inline -fprofile-arcs -ftest-coverage
if DISABLE_ASSERTS_IN_UNIT_TESTS
-TEST_CPPFLAGS=-DTOR_UNIT_TESTS -DTOR_COVERAGE -DDISABLE_ASSERTS_IN_UNIT_TESTS
+TEST_CPPFLAGS=-DTOR_UNIT_TESTS -DTOR_COVERAGE -DDISABLE_ASSERTS_IN_UNIT_TESTS @TOR_MODULES_ALL_ENABLED@
else
-TEST_CPPFLAGS=-DTOR_UNIT_TESTS -DTOR_COVERAGE
+TEST_CPPFLAGS=-DTOR_UNIT_TESTS -DTOR_COVERAGE @TOR_MODULES_ALL_ENABLED@
endif
TEST_NETWORK_FLAGS=--coverage --hs-multi-client 1
else
TEST_CFLAGS=
-TEST_CPPFLAGS=-DTOR_UNIT_TESTS
+TEST_CPPFLAGS=-DTOR_UNIT_TESTS @TOR_MODULES_ALL_ENABLED@
TEST_NETWORK_FLAGS=--hs-multi-client 1
endif
TEST_NETWORK_WARNING_FLAGS=--quiet --only-warnings
diff --git a/configure.ac b/configure.ac
index b423ea95e5..ae2c420557 100644
--- a/configure.ac
+++ b/configure.ac
@@ -234,6 +234,9 @@ dnl ---
dnl Tor modules options. These options are namespaced with --disable-module-XXX
dnl ---
+dnl All our modules.
+m4_define(MODULES, dirauth)
+
dnl Directory Authority module.
AC_ARG_ENABLE([module-dirauth],
AS_HELP_STRING([--disable-module-dirauth],
@@ -243,6 +246,15 @@ AC_ARG_ENABLE([module-dirauth],
[Compile with Directory Authority feature support]))
AM_CONDITIONAL(BUILD_MODULE_DIRAUTH, [test "x$enable_module_dirauth" != "xno"])
+dnl Helper variables.
+TOR_MODULES_ALL_ENABLED=
+AC_DEFUN([ADD_MODULE], [
+ MODULE=m4_toupper($1)
+ TOR_MODULES_ALL_ENABLED="${TOR_MODULES_ALL_ENABLED} -DHAVE_MODULE_${MODULE}=1"
+])
+m4_foreach_w([module], MODULES, [ADD_MODULE([module])])
+AC_SUBST(TOR_MODULES_ALL_ENABLED)
+
dnl check for the correct "ar" when cross-compiling.
dnl (AM_PROG_AR was new in automake 1.11.2, which we do not yet require,
dnl so kludge up a replacement for the case where it isn't there yet.)
diff --git a/src/or/include.am b/src/or/include.am
index 93f405d619..bb505937ac 100644
--- a/src/or/include.am
+++ b/src/or/include.am
@@ -114,20 +114,23 @@ LIBTOR_A_SOURCES = \
#
# Modules are conditionnally compiled in tor starting here. We add the C files
-# only if the modules has been enabled at configure time.
+# only if the modules has been enabled at configure time. We always add the
+# source files of every module to libtor-testing.a so we can build the unit
+# tests for everything.
#
# The Directory Authority module.
-if BUILD_MODULE_DIRAUTH
-LIBTOR_A_SOURCES += \
+MODULE_DIRAUTH_SOURCES = \
src/or/dirauth/dircollate.c \
src/or/dirauth/dirvote.c \
src/or/dirauth/shared_random.c \
src/or/dirauth/shared_random_state.c
+if BUILD_MODULE_DIRAUTH
+LIBTOR_A_SOURCES += $(MODULE_DIRAUTH_SOURCES)
endif
src_or_libtor_a_SOURCES = $(LIBTOR_A_SOURCES)
-src_or_libtor_testing_a_SOURCES = $(LIBTOR_A_SOURCES)
+src_or_libtor_testing_a_SOURCES = $(LIBTOR_A_SOURCES) $(MODULE_DIRAUTH_SOURCES)
src_or_tor_SOURCES = src/or/tor_main.c
AM_CPPFLAGS += -I$(srcdir)/src/or -Isrc/or