Start splitting src/or

This is a very gentle commit that just lays the groundwork in the
build system: it puts the include files to build libtor-app.a into
src/core, and to build the tor executable into src/app.  The
executable is now "src/app/tor".
This commit is contained in:
Nick Mathewson 2018-07-05 16:04:32 -04:00
parent 4eac5c6ce6
commit 81cb0afb2b
12 changed files with 74 additions and 74 deletions

19
.gitignore vendored
View File

@ -206,16 +206,15 @@ uptime-*.json
/src/lib/libtor-wallclock.a /src/lib/libtor-wallclock.a
/src/lib/libtor-wallclock-testing.a /src/lib/libtor-wallclock-testing.a
# /src/or/ # /src/tor
/src/or/Makefile /src/core/libtor-app.a
/src/or/Makefile.in /src/core/libtor-app-testing.a
/src/or/tor
/src/or/tor.exe # /src/app
/src/or/tor-cov /src/app/tor
/src/or/tor-cov.exe /src/app/tor.exe
/src/or/libtor-app.a /src/app/tor-cov
/src/or/libtor-app-testing.a /src/app/tor-cov.exe
/src/or/libtor.lib
# /src/rust # /src/rust
/src/rust/.cargo/config /src/rust/.cargo/config

View File

@ -25,9 +25,9 @@ AM_CFLAGS=@TOR_SYSTEMD_CFLAGS@ @CFLAGS_BUGTRAP@ @TOR_LZMA_CFLAGS@ @TOR_ZSTD_CFLA
SHELL=@SHELL@ SHELL=@SHELL@
if COVERAGE_ENABLED if COVERAGE_ENABLED
TESTING_TOR_BINARY=$(top_builddir)/src/or/tor-cov$(EXEEXT) TESTING_TOR_BINARY=$(top_builddir)/src/app/tor-cov$(EXEEXT)
else else
TESTING_TOR_BINARY=$(top_builddir)/src/or/tor$(EXEEXT) TESTING_TOR_BINARY=$(top_builddir)/src/app/tor$(EXEEXT)
endif endif
if USE_RUST if USE_RUST
@ -108,7 +108,7 @@ TOR_CRYPTO_TESTING_LIBS = \
# All static libraries used to link tor. # All static libraries used to link tor.
TOR_INTERNAL_LIBS = \ TOR_INTERNAL_LIBS = \
src/or/libtor-app.a \ src/core/libtor-app.a \
src/lib/libtor-compress.a \ src/lib/libtor-compress.a \
src/lib/libtor-evloop.a \ src/lib/libtor-evloop.a \
$(TOR_CRYPTO_LIBS) \ $(TOR_CRYPTO_LIBS) \
@ -119,7 +119,7 @@ TOR_INTERNAL_LIBS = \
# Variants of the above for linking the testing variant of tor (for coverage # Variants of the above for linking the testing variant of tor (for coverage
# and tests) # and tests)
TOR_INTERNAL_TESTING_LIBS = \ TOR_INTERNAL_TESTING_LIBS = \
src/or/libtor-app-testing.a \ src/core/libtor-app-testing.a \
src/lib/libtor-compress-testing.a \ src/lib/libtor-compress-testing.a \
src/lib/libtor-evloop-testing.a \ src/lib/libtor-evloop-testing.a \
$(TOR_CRYPTO_TESTING_LIBS) \ $(TOR_CRYPTO_TESTING_LIBS) \

View File

@ -28,7 +28,7 @@ Jenkins
Valgrind Valgrind
-------- --------
valgrind --leak-check=yes --error-limit=no --show-reachable=yes src/or/tor valgrind --leak-check=yes --error-limit=no --show-reachable=yes src/app/tor
(Note that if you get a zillion openssl warnings, you will also need to (Note that if you get a zillion openssl warnings, you will also need to
pass `--undef-value-errors=no` to valgrind, or rebuild your openssl pass `--undef-value-errors=no` to valgrind, or rebuild your openssl
@ -232,10 +232,10 @@ Beforehand, install google-perftools.
Now you can run Tor with profiling enabled, and use the pprof utility to look at Now you can run Tor with profiling enabled, and use the pprof utility to look at
performance! See the gperftools manual for more info, but basically: performance! See the gperftools manual for more info, but basically:
2. Run `env CPUPROFILE=/tmp/profile src/or/tor -f <path/torrc>`. The profile file 2. Run `env CPUPROFILE=/tmp/profile src/app/tor -f <path/torrc>`. The profile file
is not written to until Tor finishes execuction. is not written to until Tor finishes execuction.
3. Run `pprof src/or/tor /tm/profile` to start the REPL. 3. Run `pprof src/app/tor /tm/profile` to start the REPL.
Generating and analyzing a callgraph Generating and analyzing a callgraph
------------------------------------ ------------------------------------

View File

@ -7,7 +7,7 @@ my %torrcSampleOptions = ();
my %manPageOptions = (); my %manPageOptions = ();
# Load the canonical list as actually accepted by Tor. # Load the canonical list as actually accepted by Tor.
open(F, "@abs_top_builddir@/src/or/tor --list-torrc-options |") or die; open(F, "@abs_top_builddir@/src/app/tor --list-torrc-options |") or die;
while (<F>) { while (<F>) {
next if m!\[notice\] Tor v0\.!; next if m!\[notice\] Tor v0\.!;
if (m!^([A-Za-z0-9_]+)!) { if (m!^([A-Za-z0-9_]+)!) {

38
src/app/include.am Normal file
View File

@ -0,0 +1,38 @@
bin_PROGRAMS+= src/app/tor
if COVERAGE_ENABLED
noinst_PROGRAMS+= src/app/tor-cov
endif
noinst_HEADERS += \
src/app/ntmain.h
src_app_tor_SOURCES = src/app/tor_main.c
if BUILD_NT_SERVICES
src_app_tor_SOURCES += src/app/ntmain.c
endif
# -L flags need to go in LDFLAGS. -l flags need to go in LDADD.
# This seems to matter nowhere but on windows, but I assure you that it
# matters a lot there, and is quite hard to debug if you forget to do it.
src_app_tor_LDFLAGS = @TOR_LDFLAGS_zlib@ @TOR_LDFLAGS_openssl@ @TOR_LDFLAGS_libevent@
src_app_tor_LDADD = $(TOR_INTERNAL_LIBS) \
$(rust_ldadd) \
@TOR_ZLIB_LIBS@ @TOR_LIB_MATH@ @TOR_LIBEVENT_LIBS@ @TOR_OPENSSL_LIBS@ \
@TOR_LIB_WS32@ @TOR_LIB_IPHLPAPI@ @TOR_LIB_GDI@ @TOR_LIB_USERENV@ \
@CURVE25519_LIBS@ @TOR_SYSTEMD_LIBS@ \
@TOR_LZMA_LIBS@ @TOR_ZSTD_LIBS@
if COVERAGE_ENABLED
src_app_tor_cov_SOURCES = $(src_app_tor_SOURCES)
src_app_tor_cov_CPPFLAGS = $(AM_CPPFLAGS) $(TEST_CPPFLAGS)
src_app_tor_cov_CFLAGS = $(AM_CFLAGS) $(TEST_CFLAGS)
src_app_tor_cov_LDFLAGS = @TOR_LDFLAGS_zlib@ @TOR_LDFLAGS_openssl@ @TOR_LDFLAGS_libevent@
src_app_tor_cov_LDADD = $(TOR_INTERNAL_TESTING_LIBS) \
@TOR_ZLIB_LIBS@ @TOR_LIB_MATH@ @TOR_LIBEVENT_LIBS@ @TOR_OPENSSL_LIBS@ \
@TOR_LIB_WS32@ @TOR_LIB_IPHLPAPI@ @TOR_LIB_GDI@ \
@CURVE25519_LIBS@ @TOR_SYSTEMD_LIBS@ \
@TOR_LZMA_LIBS@ @TOR_ZSTD_LIBS@
endif

View File

@ -22,7 +22,7 @@
#include "or/or.h" #include "or/or.h"
#include "or/config.h" #include "or/config.h"
#include "or/main.h" #include "or/main.h"
#include "or/ntmain.h" #include "app/ntmain.h"
#include "lib/log/win32err.h" #include "lib/log/win32err.h"
#include "lib/fs/winlib.h" #include "lib/fs/winlib.h"
#include "lib/evloop/compat_libevent.h" #include "lib/evloop/compat_libevent.h"

View File

@ -1,21 +1,10 @@
bin_PROGRAMS+= src/or/tor
noinst_LIBRARIES += \ noinst_LIBRARIES += \
src/or/libtor-app.a src/core/libtor-app.a
if UNITTESTS_ENABLED if UNITTESTS_ENABLED
noinst_LIBRARIES += \ noinst_LIBRARIES += \
src/or/libtor-app-testing.a src/core/libtor-app-testing.a
endif endif
if COVERAGE_ENABLED
noinst_PROGRAMS+= src/or/tor-cov
endif
if BUILD_NT_SERVICES
tor_platform_source=src/or/ntmain.c
else
tor_platform_source=
endif
EXTRA_DIST+= src/or/ntmain.c src/or/Makefile.nmake
LIBTOR_APP_A_SOURCES = \ LIBTOR_APP_A_SOURCES = \
src/or/addressmap.c \ src/or/addressmap.c \
@ -110,8 +99,7 @@ LIBTOR_APP_A_SOURCES = \
src/or/torcert.c \ src/or/torcert.c \
src/or/tor_api.c \ src/or/tor_api.c \
src/or/voting_schedule.c \ src/or/voting_schedule.c \
src/or/onion_ntor.c \ src/or/onion_ntor.c
$(tor_platform_source)
# #
# Modules are conditionnally compiled in tor starting here. We add the C files # Modules are conditionnally compiled in tor starting here. We add the C files
@ -131,53 +119,26 @@ if BUILD_MODULE_DIRAUTH
LIBTOR_APP_A_SOURCES += $(MODULE_DIRAUTH_SOURCES) LIBTOR_APP_A_SOURCES += $(MODULE_DIRAUTH_SOURCES)
endif endif
src_or_libtor_app_a_SOURCES = $(LIBTOR_APP_A_SOURCES) src_core_libtor_app_a_SOURCES = $(LIBTOR_APP_A_SOURCES)
if UNITTESTS_ENABLED if UNITTESTS_ENABLED
# Add the sources of the modules that are needed for tests to work here. # Add the sources of the modules that are needed for tests to work here.
LIBTOR_APP_TESTING_A_SOURCES += $(MODULE_DIRAUTH_SOURCES) LIBTOR_APP_TESTING_A_SOURCES += $(MODULE_DIRAUTH_SOURCES)
src_or_libtor_app_testing_a_SOURCES = $(LIBTOR_APP_TESTING_A_SOURCES) src_core_libtor_app_testing_a_SOURCES = $(LIBTOR_APP_TESTING_A_SOURCES)
else else
src_or_libtor_app_testing_a_SOURCES = src_core_libtor_app_testing_a_SOURCES =
endif endif
src_or_tor_SOURCES = src/or/tor_main.c
src/or/git_revision.$(OBJEXT) \ src/or/git_revision.$(OBJEXT) \
src/or/src_or_libtor_app_testing_a-git_revision.$(OBJEXT): micro-revision.i src/or/src_core_libtor_app_testing_a-git_revision.$(OBJEXT): micro-revision.i
AM_CPPFLAGS += -DSHARE_DATADIR="\"$(datadir)\"" \ AM_CPPFLAGS += -DSHARE_DATADIR="\"$(datadir)\"" \
-DLOCALSTATEDIR="\"$(localstatedir)\"" \ -DLOCALSTATEDIR="\"$(localstatedir)\"" \
-DBINDIR="\"$(bindir)\"" -DBINDIR="\"$(bindir)\""
src_or_libtor_app_testing_a_CPPFLAGS = $(AM_CPPFLAGS) $(TEST_CPPFLAGS) src_core_libtor_app_testing_a_CPPFLAGS = $(AM_CPPFLAGS) $(TEST_CPPFLAGS)
src_or_libtor_app_testing_a_CFLAGS = $(AM_CFLAGS) $(TEST_CFLAGS) src_core_libtor_app_testing_a_CFLAGS = $(AM_CFLAGS) $(TEST_CFLAGS)
# -L flags need to go in LDFLAGS. -l flags need to go in LDADD.
# This seems to matter nowhere but on windows, but I assure you that it
# matters a lot there, and is quite hard to debug if you forget to do it.
src_or_tor_LDFLAGS = @TOR_LDFLAGS_zlib@ @TOR_LDFLAGS_openssl@ @TOR_LDFLAGS_libevent@
src_or_tor_LDADD = $(TOR_INTERNAL_LIBS) \
$(rust_ldadd) \
@TOR_ZLIB_LIBS@ @TOR_LIB_MATH@ @TOR_LIBEVENT_LIBS@ @TOR_OPENSSL_LIBS@ \
@TOR_LIB_WS32@ @TOR_LIB_IPHLPAPI@ @TOR_LIB_GDI@ @TOR_LIB_USERENV@ \
@CURVE25519_LIBS@ @TOR_SYSTEMD_LIBS@ \
@TOR_LZMA_LIBS@ @TOR_ZSTD_LIBS@
if COVERAGE_ENABLED
src_or_tor_cov_SOURCES = src/or/tor_main.c
src_or_tor_cov_CPPFLAGS = $(AM_CPPFLAGS) $(TEST_CPPFLAGS)
src_or_tor_cov_CFLAGS = $(AM_CFLAGS) $(TEST_CFLAGS)
src_or_tor_cov_LDFLAGS = @TOR_LDFLAGS_zlib@ @TOR_LDFLAGS_openssl@ @TOR_LDFLAGS_libevent@
src_or_tor_cov_LDADD = $(TOR_INTERNAL_TESTING_LIBS) \
@TOR_ZLIB_LIBS@ @TOR_LIB_MATH@ @TOR_LIBEVENT_LIBS@ @TOR_OPENSSL_LIBS@ \
@TOR_LIB_WS32@ @TOR_LIB_IPHLPAPI@ @TOR_LIB_GDI@ \
@CURVE25519_LIBS@ @TOR_SYSTEMD_LIBS@ \
@TOR_LZMA_LIBS@ @TOR_ZSTD_LIBS@
endif
ORHEADERS = \ ORHEADERS = \
src/or/addressmap.h \ src/or/addressmap.h \
@ -267,7 +228,6 @@ ORHEADERS = \
src/or/nodelist.h \ src/or/nodelist.h \
src/or/node_st.h \ src/or/node_st.h \
src/or/ns_detached_signatures_st.h \ src/or/ns_detached_signatures_st.h \
src/or/ntmain.h \
src/or/onion.h \ src/or/onion.h \
src/or/onion_fast.h \ src/or/onion_fast.h \
src/or/onion_ntor.h \ src/or/onion_ntor.h \

View File

@ -33,7 +33,10 @@ include src/lib/tls/include.am
include src/lib/trace/include.am include src/lib/trace/include.am
include src/lib/wallclock/include.am include src/lib/wallclock/include.am
include src/trunnel/include.am include src/trunnel/include.am
include src/or/include.am
include src/core/include.am
include src/app/include.am
include src/rust/include.am include src/rust/include.am
include src/test/include.am include src/test/include.am
include src/tools/include.am include src/tools/include.am

View File

@ -88,7 +88,7 @@
#include "or/microdesc.h" #include "or/microdesc.h"
#include "or/networkstatus.h" #include "or/networkstatus.h"
#include "or/nodelist.h" #include "or/nodelist.h"
#include "or/ntmain.h" #include "app/ntmain.h"
#include "or/onion.h" #include "or/onion.h"
#include "or/periodic.h" #include "or/periodic.h"
#include "or/policies.h" #include "or/policies.h"

View File

@ -3,8 +3,8 @@
exitcode=0 exitcode=0
"${SHELL:-sh}" "${abs_top_srcdir:-.}/src/test/zero_length_keys.sh" "${builddir:-.}/src/or/tor" -z || exitcode=1 "${SHELL:-sh}" "${abs_top_srcdir:-.}/src/test/zero_length_keys.sh" "${builddir:-.}/src/app/tor" -z || exitcode=1
"${SHELL:-sh}" "${abs_top_srcdir:-.}/src/test/zero_length_keys.sh" "${builddir:-.}/src/or/tor" -d || exitcode=1 "${SHELL:-sh}" "${abs_top_srcdir:-.}/src/test/zero_length_keys.sh" "${builddir:-.}/src/app/tor" -d || exitcode=1
"${SHELL:-sh}" "${abs_top_srcdir:-.}/src/test/zero_length_keys.sh" "${builddir:-.}/src/or/tor" -e || exitcode=1 "${SHELL:-sh}" "${abs_top_srcdir:-.}/src/test/zero_length_keys.sh" "${builddir:-.}/src/app/tor" -e || exitcode=1
exit ${exitcode} exit ${exitcode}