summaryrefslogtreecommitdiff
path: root/configure.ac
diff options
context:
space:
mode:
Diffstat (limited to 'configure.ac')
-rw-r--r--configure.ac71
1 files changed, 63 insertions, 8 deletions
diff --git a/configure.ac b/configure.ac
index a22a003cff..00658da6ee 100644
--- a/configure.ac
+++ b/configure.ac
@@ -4,7 +4,7 @@ dnl Copyright (c) 2007-2019, The Tor Project, Inc.
dnl See LICENSE for licensing information
AC_PREREQ([2.63])
-AC_INIT([tor],[0.4.7.14-dev])
+AC_INIT([tor],[0.4.8.5-dev])
AC_CONFIG_SRCDIR([src/app/main/tor_main.c])
AC_CONFIG_MACRO_DIR([m4])
@@ -18,7 +18,7 @@ AC_DEFINE_UNQUOTED([CONFIG_FLAGS], ["$configure_flags"], [Flags passed to config
# version number changes. Tor uses it to make sure that it
# only shuts down for missing "required protocols" when those protocols
# are listed as required by a consensus after this date.
-AC_DEFINE(APPROX_RELEASE_DATE, ["2023-07-26"], # for 0.4.7.14-dev
+AC_DEFINE(APPROX_RELEASE_DATE, ["2023-08-30"], # for 0.4.8.5-dev
[Approximate date when this software was released. (Updated when the version changes.)])
# "foreign" means we don't follow GNU package layout standards
@@ -51,6 +51,19 @@ if test "x$PKG_CONFIG_PATH" = "x" && test "x$prefix" != "xNONE" && test "$host"
AC_MSG_NOTICE([set PKG_CONFIG_PATH=$PKG_CONFIG_PATH to support cross-compiling])
fi
+# License options
+
+AC_ARG_ENABLE(gpl,
+ AS_HELP_STRING(--enable-gpl, [allow the inclusion of GPL-licensed code, building a version of tor and libtor covered by the GPL rather than its usual 3-clause BSD license]))
+license_option=BSD
+AS_IF([test "x$enable_gpl" = xyes],
+ [
+ AC_DEFINE(ENABLE_GPL, 1, [Defined if tor is building in GPL-licensed mode.])
+ license_option=GPL
+ ])
+
+# Optional features
+
AC_ARG_ENABLE(openbsd-malloc,
AS_HELP_STRING(--enable-openbsd-malloc, [use malloc code from OpenBSD. Linux only. Deprecated: see --with-malloc]))
AC_ARG_ENABLE(static-openssl,
@@ -358,7 +371,7 @@ dnl Tor modules options. These options are namespaced with --disable-module-XXX
dnl ---
dnl All our modules.
-m4_define(MODULES, relay dirauth dircache)
+m4_define([MODULES], [relay dirauth dircache pow])
# Some modules are only disabled through another option. For those, we don't
# want to print the help in the summary at the end of the configure. Any entry
@@ -367,6 +380,9 @@ m4_define(MODULES, relay dirauth dircache)
m4_set_add_all([MODULES_WITH_NO_OPTIONS], [dircache])
dnl Relay module.
+m4_define([module_option_hints(relay)],
+ [AS_IF([test "x$value" = x1], [HINT_OPT([--disable-module-relay])],
+ [HINT_NONE])])
AC_ARG_ENABLE([module-relay],
AS_HELP_STRING([--disable-module-relay],
[Build tor without the Relay modules: tor can not run as a relay, bridge, or authority. Implies --disable-module-dirauth]))
@@ -384,6 +400,9 @@ AM_COND_IF(BUILD_MODULE_DIRCACHE,
[Compile with directory cache support]))
dnl Directory Authority module.
+m4_define([module_option_hints(dirauth)],
+ [AS_IF([test "x$value" = x1], [HINT_OPT([--disable-module-dirauth])],
+ [HINT_NONE])])
AC_ARG_ENABLE([module-dirauth],
AS_HELP_STRING([--disable-module-dirauth],
[Build tor without the Directory Authority module: tor can not run as a directory authority or bridge authority]))
@@ -392,6 +411,19 @@ AM_COND_IF(BUILD_MODULE_DIRAUTH,
AC_DEFINE([HAVE_MODULE_DIRAUTH], [1],
[Compile with Directory Authority feature support]))
+dnl Hidden Service Proof-of-Work module.
+m4_define([module_option_hints(pow)],
+ [AS_IF([test "x$value" = x1], [HINT_OPT([--disable-module-pow])],
+ [AS_IF([test "x$license_option" != "xGPL"], [HINT_OPT([requires --enable-gpl])],
+ [HINT_NONE])])])
+AC_ARG_ENABLE([module-pow],
+ AS_HELP_STRING([--disable-module-pow],
+ [Build tor without proof-of-work denial of service mitigation, normally available when building with --enable-gpl]))
+AM_CONDITIONAL(BUILD_MODULE_POW,
+ [test "x$license_option" = "xGPL" && test "x$enable_module_pow" != "xno"])
+AM_COND_IF(BUILD_MODULE_POW,
+ AC_DEFINE([HAVE_MODULE_POW], [1], [Compile with proof-of-work support]))
+
dnl Helper variables.
TOR_MODULES_ALL_ENABLED=
AC_DEFUN([ADD_MODULE], [
@@ -1022,7 +1054,7 @@ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
AC_MSG_CHECKING([for OpenSSL < 1.0.1])
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
#include <openssl/opensslv.h>
-#if !defined(LIBRESSL_VERSION_NUMBER) && OPENSSL_VERSION_NUMBER < 0x1000100fL
+#if OPENSSL_VERSION_NUMBER < 0x1000100fL
#error "too old"
#endif
]], [[]])],
@@ -2357,7 +2389,6 @@ if test "x$enable_gcc_warnings_advisory" != "xno"; then
-Wexplicit-ownership-type
-Wextern-initializer
-Wextra
- -Wextra-semi
-Wextra-tokens
-Wflexible-array-extensions
-Wfloat-conversion
@@ -2504,6 +2535,8 @@ if test "x$enable_gcc_warnings_advisory" != "xno"; then
], [ TOR_TRY_COMPILE_WITH_CFLAGS(warning_flag, [],
[TOR_WARNING_FLAGS="$TOR_WARNING_FLAGS warning_flag" CFLAGS="$CFLAGS warning_flag"], true)
])
+
+ AX_CHECK_COMPILE_FLAG([-Wextra-semi], [CFLAGS="$CFLAGS -Wextra-semi"], [], [-Werror])
dnl We should re-enable this in some later version. Clang doesn't
dnl mind, but it causes trouble with GCC.
@@ -2567,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([
@@ -2645,6 +2689,7 @@ PPRINT_SUBTITLE([Build Features])
PPRINT_PROP_STRING([Compiler], [$CC])
PPRINT_PROP_STRING([Host OS], [$host_os])
+PPRINT_PROP_STRING([License Option], [$license_option])
AS_ECHO
test "x$enable_fatal_warnings" = "xyes" && value=1 || value=0
@@ -2713,12 +2758,22 @@ PPRINT_PROP_BOOL([Fragile Hardening (--enable-fragile-hardening, dev only)], $va
AS_ECHO
PPRINT_SUBTITLE([Modules])
+# Modules have documentation hints indicating how they can be enabled
+# or disabled, and those hints can select which version of our message
+# to show based on variables at configure-time.
+#
+# Each "module_option_hints(<name>)" macro, if it exists, must
+# visit exactly one HINT_* macro using shell conditionals.
+
m4_foreach_w([mname], MODULES,
[
AM_COND_IF(m4_join([], [BUILD_MODULE_], m4_toupper([]mname[])), value=1, value=0)
- m4_set_contains([MODULES_WITH_NO_OPTIONS], mname,
- PPRINT_PROP_BOOL([mname], $value),
- PPRINT_PROP_BOOL([mname (--disable-module-mname)], $value))
+ m4_pushdef([HINT_OPT], [PPRINT_PROP_BOOL](mname ($1), [[$value]]))
+ m4_pushdef([HINT_NONE], [PPRINT_PROP_BOOL](mname, [[$value]]))
+ m4_ifdef([module_option_hints](mname),
+ [m4_indir([module_option_hints](mname))],
+ [HINT_NONE])
+ m4_popdef([HINT_OPT], [HINT_NONE])
]
)