[tor-commits] [tor/master] Split core/include.am into per-subdirectory include.am files

nickm at torproject.org nickm at torproject.org
Wed Jan 15 18:12:51 UTC 2020


commit 73ac1add3f2af813c18b1da5f0082f6112267304
Author: Nick Mathewson <nickm at torproject.org>
Date:   Mon Jan 13 09:34:17 2020 -0500

    Split core/include.am into per-subdirectory include.am files
    
    Closes ticket 32137.
---
 changes/ticket32137              |   4 +
 scripts/maint/add_c_file.py      |   7 +-
 src/app/config/include.am        |  21 ++
 src/app/main/include.am          |  18 ++
 src/core/crypto/include.am       |  18 ++
 src/core/include.am              | 453 +--------------------------------------
 src/core/mainloop/include.am     |  22 ++
 src/core/or/include.am           |  98 +++++++++
 src/core/proto/include.am        |  18 ++
 src/feature/api/include.am       |  11 +
 src/feature/client/include.am    |  20 ++
 src/feature/control/include.am   |  39 ++++
 src/feature/dirauth/include.am   |  51 +++++
 src/feature/dircache/include.am  |  15 ++
 src/feature/dirclient/include.am |  12 ++
 src/feature/dircommon/include.am |  16 ++
 src/feature/dirparse/include.am  |  25 +++
 src/feature/hibernate/include.am |   8 +
 src/feature/hs/include.am        |  35 +++
 src/feature/hs_common/include.am |  10 +
 src/feature/keymgt/include.am    |   8 +
 src/feature/nodelist/include.am  |  49 +++++
 src/feature/relay/include.am     |  39 ++++
 src/feature/rend/include.am      |  22 ++
 src/feature/stats/include.am     |  12 ++
 src/include.am                   |  37 ++++
 26 files changed, 611 insertions(+), 457 deletions(-)

diff --git a/changes/ticket32137 b/changes/ticket32137
new file mode 100644
index 000000000..3b00ddcf2
--- /dev/null
+++ b/changes/ticket32137
@@ -0,0 +1,4 @@
+  o Code simplification and refactoring:
+    - Our include.am files are now broken up by subdirectory.  Previously,
+      src/core/include.am covered all of the subdirectories in "core",
+      "feature", and "app". Closes ticket 32137.
diff --git a/scripts/maint/add_c_file.py b/scripts/maint/add_c_file.py
index a9a6eb25b..9ec182efc 100755
--- a/scripts/maint/add_c_file.py
+++ b/scripts/maint/add_c_file.py
@@ -192,12 +192,9 @@ def get_include_am_location(fname):
        not (yet) consistent.
     """
     td = topdir_file(fname)
-    m = re.match(r'^lib/([a-z0-9_]*)/', td)
+    m = re.match(r'^(lib|core|feature|app)/([a-z0-9_]*)/', td)
     if m:
-        return "src/lib/{}/include.am".format(m.group(1))
-
-    if re.match(r'^(core|feature|app)/', td):
-        return "src/core/include.am"
+        return "src/{}/{}/include.am".format(m.group(1),m.group(2))
 
     if re.match(r'^test/', td):
         return "src/test/include.am"
diff --git a/src/app/config/include.am b/src/app/config/include.am
new file mode 100644
index 000000000..5d625efec
--- /dev/null
+++ b/src/app/config/include.am
@@ -0,0 +1,21 @@
+
+# ADD_C_FILE: INSERT SOURCES HERE.
+LIBTOR_APP_A_SOURCES += 			\
+	src/app/config/config.c			\
+	src/app/config/quiet_level.c		\
+	src/app/config/statefile.c
+
+# ADD_C_FILE: INSERT HEADERS HERE.
+noinst_HEADERS +=					\
+	src/app/config/config.h				\
+	src/app/config/or_options_st.h			\
+	src/app/config/or_state_st.h			\
+	src/app/config/quiet_level.h			\
+	src/app/config/statefile.h			\
+	src/app/config/tor_cmdline_mode.h
+
+
+noinst_HEADERS +=				\
+	src/app/config/auth_dirs.inc		\
+	src/app/config/fallback_dirs.inc	\
+	src/app/config/testnet.inc
diff --git a/src/app/main/include.am b/src/app/main/include.am
new file mode 100644
index 000000000..ea392a858
--- /dev/null
+++ b/src/app/main/include.am
@@ -0,0 +1,18 @@
+
+# ADD_C_FILE: INSERT SOURCES HERE.
+LIBTOR_APP_A_SOURCES += 			\
+	src/app/main/main.c			\
+	src/app/main/shutdown.c			\
+	src/app/main/subsystem_list.c		\
+	src/app/main/subsysmgr.c
+
+# ADD_C_FILE: INSERT HEADERS HERE.
+noinst_HEADERS +=					\
+	src/app/main/main.h				\
+	src/app/main/ntmain.h				\
+	src/app/main/shutdown.h 			\
+	src/app/main/subsysmgr.h
+
+if BUILD_NT_SERVICES
+LIBTOR_APP_A_SOURCES += src/app/main/ntmain.c
+endif
diff --git a/src/core/crypto/include.am b/src/core/crypto/include.am
new file mode 100644
index 000000000..28b7e2290
--- /dev/null
+++ b/src/core/crypto/include.am
@@ -0,0 +1,18 @@
+
+# ADD_C_FILE: INSERT SOURCES HERE.
+LIBTOR_APP_A_SOURCES += 				\
+	src/core/crypto/hs_ntor.c		\
+	src/core/crypto/onion_crypto.c		\
+	src/core/crypto/onion_fast.c		\
+	src/core/crypto/onion_ntor.c		\
+	src/core/crypto/onion_tap.c		\
+	src/core/crypto/relay_crypto.c
+
+# ADD_C_FILE: INSERT HEADERS HERE.
+noinst_HEADERS +=					\
+	src/core/crypto/hs_ntor.h			\
+	src/core/crypto/onion_crypto.h	        	\
+	src/core/crypto/onion_fast.h			\
+	src/core/crypto/onion_ntor.h			\
+	src/core/crypto/onion_tap.h			\
+	src/core/crypto/relay_crypto.h
diff --git a/src/core/include.am b/src/core/include.am
index bd36d01f2..41347ed64 100644
--- a/src/core/include.am
+++ b/src/core/include.am
@@ -1,172 +1,4 @@
 
-noinst_LIBRARIES += \
-	src/core/libtor-app.a
-if UNITTESTS_ENABLED
-noinst_LIBRARIES += \
-	src/core/libtor-app-testing.a
-endif
-
-# ADD_C_FILE: INSERT SOURCES HERE.
-LIBTOR_APP_A_SOURCES = 				\
-	src/app/config/config.c			\
-	src/app/config/quiet_level.c		\
-	src/app/config/statefile.c		\
-	src/app/main/main.c			\
-	src/app/main/shutdown.c			\
-	src/app/main/subsystem_list.c		\
-	src/app/main/subsysmgr.c		\
-	src/core/crypto/hs_ntor.c		\
-	src/core/crypto/onion_crypto.c		\
-	src/core/crypto/onion_fast.c		\
-	src/core/crypto/onion_ntor.c		\
-	src/core/crypto/onion_tap.c		\
-	src/core/crypto/relay_crypto.c		\
-	src/core/mainloop/connection.c		\
-	src/core/mainloop/cpuworker.c		\
-	src/core/mainloop/mainloop.c		\
-	src/core/mainloop/mainloop_pubsub.c	\
-	src/core/mainloop/mainloop_sys.c	\
-	src/core/mainloop/netstatus.c		\
-	src/core/mainloop/periodic.c		\
-	src/core/or/address_set.c		\
-	src/core/or/channel.c			\
-	src/core/or/channelpadding.c		\
-	src/core/or/channeltls.c		\
-	src/core/or/circuitbuild.c		\
-	src/core/or/circuitlist.c		\
-	src/core/or/circuitmux.c		\
-	src/core/or/circuitmux_ewma.c		\
-	src/core/or/circuitpadding.c		\
-	src/core/or/circuitpadding_machines.c	\
-	src/core/or/circuitstats.c		\
-	src/core/or/circuituse.c		\
-	src/core/or/crypt_path.c		\
-	src/core/or/command.c			\
-	src/core/or/connection_edge.c		\
-	src/core/or/connection_or.c		\
-	src/core/or/dos.c			\
-	src/core/or/onion.c			\
-	src/core/or/ocirc_event.c		\
-	src/core/or/or_periodic.c		\
-	src/core/or/or_sys.c			\
-	src/core/or/orconn_event.c		\
-	src/core/or/policies.c			\
-	src/core/or/protover.c			\
-	src/core/or/protover_rust.c		\
-	src/core/or/reasons.c			\
-	src/core/or/relay.c			\
-	src/core/or/scheduler.c			\
-	src/core/or/scheduler_kist.c		\
-	src/core/or/scheduler_vanilla.c		\
-	src/core/or/sendme.c			\
-	src/core/or/status.c			\
-	src/core/or/versions.c			\
-	src/core/proto/proto_cell.c		\
-	src/core/proto/proto_control0.c		\
-	src/core/proto/proto_ext_or.c		\
-	src/core/proto/proto_haproxy.c		\
-	src/core/proto/proto_http.c		\
-	src/core/proto/proto_socks.c		\
-	src/feature/api/tor_api.c		\
-	src/feature/client/addressmap.c		\
-	src/feature/client/bridges.c		\
-	src/feature/client/circpathbias.c	\
-	src/feature/client/dnsserv.c		\
-	src/feature/client/entrynodes.c		\
-	src/feature/client/proxymode.c		\
-	src/feature/client/transports.c		\
-	src/feature/control/btrack.c		\
-	src/feature/control/btrack_circuit.c	\
-	src/feature/control/btrack_orconn.c	\
-	src/feature/control/btrack_orconn_cevent.c	\
-	src/feature/control/btrack_orconn_maps.c	\
-	src/feature/control/control.c		\
-	src/feature/control/control_auth.c	\
-	src/feature/control/control_bootstrap.c	\
-	src/feature/control/control_cmd.c	\
-	src/feature/control/control_hs.c	\
-	src/feature/control/control_events.c	\
-	src/feature/control/control_fmt.c	\
-	src/feature/control/control_getinfo.c	\
-	src/feature/control/control_proto.c	\
-	src/feature/control/fmt_serverstatus.c  \
-	src/feature/control/getinfo_geoip.c	\
-	src/feature/dircache/conscache.c	\
-	src/feature/dircache/consdiffmgr.c	\
-	src/feature/dircache/dircache.c		\
-	src/feature/dircache/dirserv.c		\
-	src/feature/dirclient/dirclient.c	\
-	src/feature/dirclient/dlstatus.c	\
-	src/feature/dircommon/consdiff.c	\
-	src/feature/dircommon/directory.c	\
-	src/feature/dircommon/fp_pair.c		\
-	src/feature/dircommon/voting_schedule.c	\
-	src/feature/dirparse/authcert_parse.c	\
-	src/feature/dirparse/microdesc_parse.c	\
-	src/feature/dirparse/ns_parse.c		\
-	src/feature/dirparse/parsecommon.c	\
-	src/feature/dirparse/policy_parse.c	\
-	src/feature/dirparse/routerparse.c	\
-	src/feature/dirparse/sigcommon.c	\
-	src/feature/dirparse/signing.c		\
-	src/feature/dirparse/unparseable.c	\
-	src/feature/hibernate/hibernate.c	\
-	src/feature/hs/hs_cache.c		\
-	src/feature/hs/hs_cell.c		\
-	src/feature/hs/hs_circuit.c		\
-	src/feature/hs/hs_circuitmap.c		\
-	src/feature/hs/hs_client.c		\
-	src/feature/hs/hs_common.c		\
-	src/feature/hs/hs_config.c		\
-	src/feature/hs/hs_control.c		\
-	src/feature/hs/hs_descriptor.c		\
-	src/feature/hs/hs_dos.c			\
-	src/feature/hs/hs_ident.c		\
-	src/feature/hs/hs_intropoint.c		\
-	src/feature/hs/hs_service.c		\
-	src/feature/hs/hs_stats.c		\
-	src/feature/hs_common/replaycache.c	\
-	src/feature/hs_common/shared_random_client.c	\
-	src/feature/keymgt/loadkey.c		\
-	src/feature/nodelist/authcert.c		\
-	src/feature/nodelist/describe.c		\
-	src/feature/nodelist/dirlist.c		\
-	src/feature/nodelist/microdesc.c	\
-	src/feature/nodelist/networkstatus.c	\
-	src/feature/nodelist/nickname.c		\
-	src/feature/nodelist/nodefamily.c	\
-	src/feature/nodelist/nodelist.c		\
-	src/feature/nodelist/node_select.c	\
-	src/feature/nodelist/routerinfo.c	\
-	src/feature/nodelist/routerlist.c	\
-	src/feature/nodelist/routerset.c	\
-	src/feature/nodelist/fmt_routerstatus.c	\
-	src/feature/nodelist/torcert.c		\
-	src/feature/relay/dns.c			\
-	src/feature/relay/ext_orport.c		\
-	src/feature/relay/onion_queue.c		\
-	src/feature/relay/router.c		\
-	src/feature/relay/routerkeys.c		\
-	src/feature/relay/selftest.c		\
-	src/feature/rend/rendcache.c		\
-	src/feature/rend/rendclient.c		\
-	src/feature/rend/rendcommon.c		\
-	src/feature/rend/rendmid.c		\
-	src/feature/rend/rendparse.c		\
-	src/feature/rend/rendservice.c		\
-	src/feature/stats/geoip_stats.c		\
-	src/feature/stats/rephist.c		\
-	src/feature/stats/predict_ports.c
-
-#
-# Sources that we only add for the real libtor_a, and not for testing.
-#
-LIBTOR_APP_A_STUB_SOURCES =
-
-if BUILD_NT_SERVICES
-LIBTOR_APP_A_SOURCES += src/app/main/ntmain.c
-endif
-
 #
 # Modules are conditionally compiled in tor starting here. We add the C files
 # only if the modules has been enabled at configure time. We always add the
@@ -175,49 +7,11 @@ endif
 #
 LIBTOR_APP_TESTING_A_SOURCES = $(LIBTOR_APP_A_SOURCES)
 
-# The Relay module.
-MODULE_RELAY_SOURCES = 						\
-	src/feature/relay/routermode.c				\
-	src/feature/relay/relay_config.c			\
-	src/feature/relay/relay_periodic.c			\
-	src/feature/relay/relay_sys.c				\
-	src/feature/relay/transport_config.c
-
-# The Directory Authority module.
-MODULE_DIRAUTH_SOURCES =					\
-	src/feature/dirauth/authmode.c				\
-	src/feature/dirauth/bridgeauth.c			\
-	src/feature/dirauth/bwauth.c				\
-	src/feature/dirauth/dirauth_config.c			\
-	src/feature/dirauth/dirauth_periodic.c			\
-	src/feature/dirauth/dirauth_sys.c			\
-	src/feature/dirauth/dircollate.c			\
-	src/feature/dirauth/dirvote.c				\
-	src/feature/dirauth/dsigs_parse.c			\
-	src/feature/dirauth/guardfraction.c			\
-	src/feature/dirauth/keypin.c				\
-	src/feature/dirauth/process_descs.c			\
-	src/feature/dirauth/reachability.c			\
-	src/feature/dirauth/recommend_pkg.c			\
-	src/feature/dirauth/shared_random.c			\
-	src/feature/dirauth/shared_random_state.c		\
-	src/feature/dirauth/voteflags.c
-
-if BUILD_MODULE_RELAY
-LIBTOR_APP_A_SOURCES += $(MODULE_RELAY_SOURCES)
-else
-LIBTOR_APP_A_STUB_SOURCES += src/feature/relay/relay_stub.c
-endif
-
-if BUILD_MODULE_DIRAUTH
-LIBTOR_APP_A_SOURCES += $(MODULE_DIRAUTH_SOURCES)
-else
-LIBTOR_APP_A_STUB_SOURCES += src/feature/dirauth/dirauth_stub.c
-endif
 
 src_core_libtor_app_a_SOURCES = \
 	$(LIBTOR_APP_A_SOURCES) \
 	$(LIBTOR_APP_A_STUB_SOURCES)
+
 if UNITTESTS_ENABLED
 
 # Add the sources of the modules that are needed for tests to work here.
@@ -236,251 +30,6 @@ AM_CPPFLAGS += -DSHARE_DATADIR="\"$(datadir)\""		\
 src_core_libtor_app_testing_a_CPPFLAGS = $(AM_CPPFLAGS) $(TEST_CPPFLAGS)
 src_core_libtor_app_testing_a_CFLAGS = $(AM_CFLAGS) $(TEST_CFLAGS)
 
-# ADD_C_FILE: INSERT HEADERS HERE.
-noinst_HEADERS +=					\
-	src/app/config/config.h				\
-	src/app/config/or_options_st.h			\
-	src/app/config/or_state_st.h			\
-	src/app/config/quiet_level.h			\
-	src/app/config/statefile.h			\
-	src/app/config/tor_cmdline_mode.h		\
-	src/app/main/main.h				\
-	src/app/main/ntmain.h				\
-	src/app/main/shutdown.h 			\
-	src/app/main/subsysmgr.h			\
-	src/core/crypto/hs_ntor.h			\
-	src/core/crypto/onion_crypto.h	        	\
-	src/core/crypto/onion_fast.h			\
-	src/core/crypto/onion_ntor.h			\
-	src/core/crypto/onion_tap.h			\
-	src/core/crypto/relay_crypto.h			\
-	src/core/mainloop/connection.h			\
-	src/core/mainloop/cpuworker.h			\
-	src/core/mainloop/mainloop.h			\
-	src/core/mainloop/mainloop_pubsub.h		\
-	src/core/mainloop/mainloop_state.inc    	\
-	src/core/mainloop/mainloop_state_st.h    	\
-	src/core/mainloop/mainloop_sys.h		\
-	src/core/mainloop/netstatus.h			\
-	src/core/mainloop/periodic.h			\
-	src/core/or/addr_policy_st.h			\
-	src/core/or/address_set.h			\
-	src/core/or/cell_queue_st.h			\
-	src/core/or/cell_st.h				\
-	src/core/or/channel.h				\
-	src/core/or/channelpadding.h			\
-	src/core/or/channeltls.h			\
-	src/core/or/circuit_st.h			\
-	src/core/or/circuitbuild.h			\
-	src/core/or/circuitlist.h			\
-	src/core/or/circuitmux.h			\
-	src/core/or/circuitmux_ewma.h			\
-	src/core/or/circuitstats.h			\
-	src/core/or/circuitpadding.h			\
-	src/core/or/circuitpadding_machines.h		\
-	src/core/or/circuituse.h			\
-	src/core/or/command.h				\
-	src/core/or/connection_edge.h			\
-	src/core/or/connection_or.h			\
-	src/core/or/connection_st.h			\
-	src/core/or/crypt_path.h			\
-	src/core/or/cpath_build_state_st.h		\
-	src/core/or/crypt_path_reference_st.h		\
-	src/core/or/crypt_path_st.h			\
-	src/core/or/destroy_cell_queue_st.h		\
-	src/core/or/dos.h				\
-	src/core/or/edge_connection_st.h		\
-	src/core/or/half_edge_st.h			\
-	src/core/or/entry_connection_st.h		\
-	src/core/or/entry_port_cfg_st.h			\
-	src/core/or/extend_info_st.h			\
-	src/core/or/listener_connection_st.h		\
-	src/core/or/onion.h				\
-	src/core/or/or.h				\
-	src/core/or/or_periodic.h			\
-	src/core/or/or_sys.h				\
-	src/core/or/orconn_event.h			\
-	src/core/or/orconn_event_sys.h			\
-	src/core/or/or_circuit_st.h			\
-	src/core/or/or_connection_st.h			\
-	src/core/or/or_handshake_certs_st.h		\
-	src/core/or/or_handshake_state_st.h		\
-	src/core/or/ocirc_event.h			\
-	src/core/or/ocirc_event_sys.h			\
-	src/core/or/origin_circuit_st.h			\
-	src/core/or/policies.h				\
-	src/core/or/port_cfg_st.h			\
-	src/core/or/protover.h				\
-	src/core/or/reasons.h				\
-	src/core/or/relay.h				\
-	src/core/or/relay_crypto_st.h			\
-	src/core/or/scheduler.h				\
-	src/core/or/sendme.h				\
-	src/core/or/server_port_cfg_st.h		\
-	src/core/or/socks_request_st.h			\
-	src/core/or/status.h				\
-	src/core/or/tor_version_st.h			\
-	src/core/or/var_cell_st.h			\
-	src/core/or/versions.h				\
-	src/core/proto/proto_cell.h			\
-	src/core/proto/proto_control0.h			\
-	src/core/proto/proto_ext_or.h			\
-	src/core/proto/proto_haproxy.h			\
-	src/core/proto/proto_http.h			\
-	src/core/proto/proto_socks.h			\
-	src/feature/api/tor_api_internal.h		\
-	src/feature/client/addressmap.h			\
-	src/feature/client/bridges.h			\
-	src/feature/client/circpathbias.h		\
-	src/feature/client/dnsserv.h			\
-	src/feature/client/entrynodes.h			\
-	src/feature/client/proxymode.h			\
-	src/feature/client/transports.h			\
-	src/feature/control/btrack_circuit.h		\
-	src/feature/control/btrack_orconn.h		\
-	src/feature/control/btrack_orconn_cevent.h	\
-	src/feature/control/btrack_orconn_maps.h	\
-	src/feature/control/btrack_sys.h		\
-	src/feature/control/control.h			\
-	src/feature/control/control_auth.h		\
-	src/feature/control/control_cmd.h		\
-	src/feature/control/control_hs.h		\
-	src/feature/control/control_cmd_args_st.h	\
-	src/feature/control/control_connection_st.h	\
-	src/feature/control/control_events.h		\
-	src/feature/control/control_fmt.h		\
-	src/feature/control/control_getinfo.h		\
-	src/feature/control/control_proto.h		\
-	src/feature/control/fmt_serverstatus.h		\
-	src/feature/control/getinfo_geoip.h		\
-	src/feature/dirauth/authmode.h			\
-	src/feature/dirauth/bridgeauth.h		\
-	src/feature/dirauth/bwauth.h			\
-	src/feature/dirauth/dirauth_config.h		\
-	src/feature/dirauth/dirauth_options.inc		\
-	src/feature/dirauth/dirauth_options_st.h	\
-	src/feature/dirauth/dirauth_periodic.h		\
-	src/feature/dirauth/dirauth_sys.h		\
-	src/feature/dirauth/dircollate.h		\
-	src/feature/dirauth/dirvote.h			\
-	src/feature/dirauth/dsigs_parse.h		\
-	src/feature/dirauth/guardfraction.h		\
-	src/feature/dirauth/keypin.h			\
-	src/feature/dirauth/ns_detached_signatures_st.h	\
-	src/feature/dirauth/reachability.h		\
-	src/feature/dirauth/recommend_pkg.h		\
-	src/feature/dirauth/process_descs.h		\
-	src/feature/dirauth/shared_random.h		\
-	src/feature/dirauth/shared_random_state.h	\
-	src/feature/dirauth/vote_microdesc_hash_st.h	\
-	src/feature/dirauth/voteflags.h			\
-	src/feature/dircache/cached_dir_st.h		\
-	src/feature/dircache/conscache.h		\
-	src/feature/dircache/consdiffmgr.h		\
-	src/feature/dircache/dircache.h			\
-	src/feature/dircache/dirserv.h			\
-	src/feature/dirclient/dir_server_st.h		\
-	src/feature/dirclient/dirclient.h		\
-	src/feature/dirclient/dlstatus.h		\
-	src/feature/dirclient/download_status_st.h	\
-	src/feature/dircommon/consdiff.h		\
-	src/feature/dircommon/dir_connection_st.h	\
-	src/feature/dircommon/directory.h		\
-	src/feature/dircommon/fp_pair.h			\
-	src/feature/dircommon/vote_timing_st.h		\
-	src/feature/dircommon/voting_schedule.h		\
-	src/feature/dirparse/authcert_members.h		\
-	src/feature/dirparse/authcert_parse.h		\
-	src/feature/dirparse/microdesc_parse.h		\
-	src/feature/dirparse/ns_parse.h			\
-	src/feature/dirparse/parsecommon.h		\
-	src/feature/dirparse/policy_parse.h		\
-	src/feature/dirparse/routerparse.h		\
-	src/feature/dirparse/sigcommon.h		\
-	src/feature/dirparse/signing.h			\
-	src/feature/dirparse/unparseable.h		\
-	src/feature/hibernate/hibernate.h		\
-	src/feature/hs/hs_cache.h			\
-	src/feature/hs/hs_cell.h			\
-	src/feature/hs/hs_circuit.h			\
-	src/feature/hs/hs_circuitmap.h			\
-	src/feature/hs/hs_client.h			\
-	src/feature/hs/hs_common.h			\
-	src/feature/hs/hs_config.h			\
-	src/feature/hs/hs_control.h			\
-	src/feature/hs/hs_descriptor.h			\
-	src/feature/hs/hs_dos.h				\
-	src/feature/hs/hs_ident.h			\
-	src/feature/hs/hs_intropoint.h			\
-	src/feature/hs/hs_service.h			\
-	src/feature/hs/hs_stats.h			\
-	src/feature/hs/hsdir_index_st.h			\
-	src/feature/hs_common/replaycache.h		\
-	src/feature/hs_common/shared_random_client.h	\
-	src/feature/keymgt/loadkey.h			\
-	src/feature/nodelist/authcert.h			\
-	src/feature/nodelist/authority_cert_st.h	\
-	src/feature/nodelist/describe.h			\
-	src/feature/nodelist/desc_store_st.h		\
-	src/feature/nodelist/dirlist.h			\
-	src/feature/nodelist/document_signature_st.h	\
-	src/feature/nodelist/extrainfo_st.h		\
-	src/feature/nodelist/microdesc.h		\
-	src/feature/nodelist/microdesc_st.h		\
-	src/feature/nodelist/networkstatus.h		\
-	src/feature/nodelist/networkstatus_sr_info_st.h	\
-	src/feature/nodelist/networkstatus_st.h		\
-	src/feature/nodelist/networkstatus_voter_info_st.h	\
-	src/feature/nodelist/nickname.h			\
-	src/feature/nodelist/node_st.h			\
-	src/feature/nodelist/nodefamily.h		\
-	src/feature/nodelist/nodefamily_st.h		\
-	src/feature/nodelist/nodelist.h			\
-	src/feature/nodelist/node_select.h		\
-	src/feature/nodelist/routerinfo.h		\
-	src/feature/nodelist/routerinfo_st.h		\
-	src/feature/nodelist/routerlist.h		\
-	src/feature/nodelist/routerlist_st.h		\
-	src/feature/nodelist/routerset.h		\
-	src/feature/nodelist/fmt_routerstatus.h		\
-	src/feature/nodelist/routerstatus_st.h		\
-	src/feature/nodelist/signed_descriptor_st.h	\
-	src/feature/nodelist/torcert.h			\
-	src/feature/nodelist/vote_routerstatus_st.h	\
-	src/feature/relay/dns.h				\
-	src/feature/relay/dns_structs.h			\
-	src/feature/relay/ext_orport.h			\
-	src/feature/relay/onion_queue.h			\
-	src/feature/relay/relay_config.h		\
-	src/feature/relay/relay_periodic.h		\
-	src/feature/relay/relay_sys.h			\
-	src/feature/relay/router.h			\
-	src/feature/relay/routerkeys.h			\
-	src/feature/relay/routermode.h			\
-	src/feature/relay/selftest.h			\
-	src/feature/relay/transport_config.h	\
-	src/feature/rend/rend_authorized_client_st.h	\
-	src/feature/rend/rend_encoded_v2_service_descriptor_st.h	\
-	src/feature/rend/rend_intro_point_st.h		\
-	src/feature/rend/rend_service_descriptor_st.h	\
-	src/feature/rend/rendcache.h			\
-	src/feature/rend/rendclient.h			\
-	src/feature/rend/rendcommon.h			\
-	src/feature/rend/rendmid.h			\
-	src/feature/rend/rendparse.h			\
-	src/feature/rend/rendservice.h			\
-	src/feature/stats/geoip_stats.h			\
-	src/feature/stats/rephist.h			\
-	src/feature/stats/predict_ports.h
-
-noinst_HEADERS +=				\
-	src/app/config/auth_dirs.inc		\
-	src/app/config/fallback_dirs.inc	\
-	src/app/config/testnet.inc
-
-# This may someday want to be an installed file?
-noinst_HEADERS += src/feature/api/tor_api.h
-
 micro-revision.i: FORCE
 	$(AM_V_at)rm -f micro-revision.tmp; \
 	if test -r "$(top_srcdir)/.git" && \
diff --git a/src/core/mainloop/include.am b/src/core/mainloop/include.am
new file mode 100644
index 000000000..63643127f
--- /dev/null
+++ b/src/core/mainloop/include.am
@@ -0,0 +1,22 @@
+
+# ADD_C_FILE: INSERT SOURCES HERE.
+LIBTOR_APP_A_SOURCES += 				\
+	src/core/mainloop/connection.c		\
+	src/core/mainloop/cpuworker.c		\
+	src/core/mainloop/mainloop.c		\
+	src/core/mainloop/mainloop_pubsub.c	\
+	src/core/mainloop/mainloop_sys.c	\
+	src/core/mainloop/netstatus.c		\
+	src/core/mainloop/periodic.c
+
+# ADD_C_FILE: INSERT HEADERS HERE.
+noinst_HEADERS +=					\
+	src/core/mainloop/connection.h			\
+	src/core/mainloop/cpuworker.h			\
+	src/core/mainloop/mainloop.h			\
+	src/core/mainloop/mainloop_pubsub.h		\
+	src/core/mainloop/mainloop_state.inc    	\
+	src/core/mainloop/mainloop_state_st.h    	\
+	src/core/mainloop/mainloop_sys.h		\
+	src/core/mainloop/netstatus.h			\
+	src/core/mainloop/periodic.h
diff --git a/src/core/or/include.am b/src/core/or/include.am
new file mode 100644
index 000000000..4dd251d2e
--- /dev/null
+++ b/src/core/or/include.am
@@ -0,0 +1,98 @@
+
+# ADD_C_FILE: INSERT SOURCES HERE.
+LIBTOR_APP_A_SOURCES += 				\
+	src/core/or/address_set.c		\
+	src/core/or/channel.c			\
+	src/core/or/channelpadding.c		\
+	src/core/or/channeltls.c		\
+	src/core/or/circuitbuild.c		\
+	src/core/or/circuitlist.c		\
+	src/core/or/circuitmux.c		\
+	src/core/or/circuitmux_ewma.c		\
+	src/core/or/circuitpadding.c		\
+	src/core/or/circuitpadding_machines.c	\
+	src/core/or/circuitstats.c		\
+	src/core/or/circuituse.c		\
+	src/core/or/crypt_path.c		\
+	src/core/or/command.c			\
+	src/core/or/connection_edge.c		\
+	src/core/or/connection_or.c		\
+	src/core/or/dos.c			\
+	src/core/or/onion.c			\
+	src/core/or/ocirc_event.c		\
+	src/core/or/or_periodic.c		\
+	src/core/or/or_sys.c			\
+	src/core/or/orconn_event.c		\
+	src/core/or/policies.c			\
+	src/core/or/protover.c			\
+	src/core/or/protover_rust.c		\
+	src/core/or/reasons.c			\
+	src/core/or/relay.c			\
+	src/core/or/scheduler.c			\
+	src/core/or/scheduler_kist.c		\
+	src/core/or/scheduler_vanilla.c		\
+	src/core/or/sendme.c			\
+	src/core/or/status.c			\
+	src/core/or/versions.c
+
+# ADD_C_FILE: INSERT HEADERS HERE.
+noinst_HEADERS +=					\
+	src/core/or/addr_policy_st.h			\
+	src/core/or/address_set.h			\
+	src/core/or/cell_queue_st.h			\
+	src/core/or/cell_st.h				\
+	src/core/or/channel.h				\
+	src/core/or/channelpadding.h			\
+	src/core/or/channeltls.h			\
+	src/core/or/circuit_st.h			\
+	src/core/or/circuitbuild.h			\
+	src/core/or/circuitlist.h			\
+	src/core/or/circuitmux.h			\
+	src/core/or/circuitmux_ewma.h			\
+	src/core/or/circuitstats.h			\
+	src/core/or/circuitpadding.h			\
+	src/core/or/circuitpadding_machines.h		\
+	src/core/or/circuituse.h			\
+	src/core/or/command.h				\
+	src/core/or/connection_edge.h			\
+	src/core/or/connection_or.h			\
+	src/core/or/connection_st.h			\
+	src/core/or/crypt_path.h			\
+	src/core/or/cpath_build_state_st.h		\
+	src/core/or/crypt_path_reference_st.h		\
+	src/core/or/crypt_path_st.h			\
+	src/core/or/destroy_cell_queue_st.h		\
+	src/core/or/dos.h				\
+	src/core/or/edge_connection_st.h		\
+	src/core/or/half_edge_st.h			\
+	src/core/or/entry_connection_st.h		\
+	src/core/or/entry_port_cfg_st.h			\
+	src/core/or/extend_info_st.h			\
+	src/core/or/listener_connection_st.h		\
+	src/core/or/onion.h				\
+	src/core/or/or.h				\
+	src/core/or/or_periodic.h			\
+	src/core/or/or_sys.h				\
+	src/core/or/orconn_event.h			\
+	src/core/or/orconn_event_sys.h			\
+	src/core/or/or_circuit_st.h			\
+	src/core/or/or_connection_st.h			\
+	src/core/or/or_handshake_certs_st.h		\
+	src/core/or/or_handshake_state_st.h		\
+	src/core/or/ocirc_event.h			\
+	src/core/or/ocirc_event_sys.h			\
+	src/core/or/origin_circuit_st.h			\
+	src/core/or/policies.h				\
+	src/core/or/port_cfg_st.h			\
+	src/core/or/protover.h				\
+	src/core/or/reasons.h				\
+	src/core/or/relay.h				\
+	src/core/or/relay_crypto_st.h			\
+	src/core/or/scheduler.h				\
+	src/core/or/sendme.h				\
+	src/core/or/server_port_cfg_st.h		\
+	src/core/or/socks_request_st.h			\
+	src/core/or/status.h				\
+	src/core/or/tor_version_st.h			\
+	src/core/or/var_cell_st.h			\
+	src/core/or/versions.h
diff --git a/src/core/proto/include.am b/src/core/proto/include.am
new file mode 100644
index 000000000..726ef924c
--- /dev/null
+++ b/src/core/proto/include.am
@@ -0,0 +1,18 @@
+
+# ADD_C_FILE: INSERT SOURCES HERE.
+LIBTOR_APP_A_SOURCES += 				\
+	src/core/proto/proto_cell.c		\
+	src/core/proto/proto_control0.c		\
+	src/core/proto/proto_ext_or.c		\
+	src/core/proto/proto_haproxy.c		\
+	src/core/proto/proto_http.c		\
+	src/core/proto/proto_socks.c
+
+# ADD_C_FILE: INSERT HEADERS HERE.
+noinst_HEADERS +=					\
+	src/core/proto/proto_cell.h			\
+	src/core/proto/proto_control0.h			\
+	src/core/proto/proto_ext_or.h			\
+	src/core/proto/proto_haproxy.h			\
+	src/core/proto/proto_http.h			\
+	src/core/proto/proto_socks.h
diff --git a/src/feature/api/include.am b/src/feature/api/include.am
new file mode 100644
index 000000000..8d490458d
--- /dev/null
+++ b/src/feature/api/include.am
@@ -0,0 +1,11 @@
+
+# ADD_C_FILE: INSERT SOURCES HERE.
+LIBTOR_APP_A_SOURCES += 				\
+	src/feature/api/tor_api.c
+
+# ADD_C_FILE: INSERT HEADERS HERE.
+noinst_HEADERS +=					\
+	src/feature/api/tor_api_internal.h
+
+# This may someday want to be an installed file?
+noinst_HEADERS += src/feature/api/tor_api.h
diff --git a/src/feature/client/include.am b/src/feature/client/include.am
new file mode 100644
index 000000000..53c9f047d
--- /dev/null
+++ b/src/feature/client/include.am
@@ -0,0 +1,20 @@
+
+# ADD_C_FILE: INSERT SOURCES HERE.
+LIBTOR_APP_A_SOURCES += 				\
+	src/feature/client/addressmap.c		\
+	src/feature/client/bridges.c		\
+	src/feature/client/circpathbias.c	\
+	src/feature/client/dnsserv.c		\
+	src/feature/client/entrynodes.c		\
+	src/feature/client/proxymode.c		\
+	src/feature/client/transports.c
+
+# ADD_C_FILE: INSERT HEADERS HERE.
+noinst_HEADERS +=					\
+	src/feature/client/addressmap.h			\
+	src/feature/client/bridges.h			\
+	src/feature/client/circpathbias.h		\
+	src/feature/client/dnsserv.h			\
+	src/feature/client/entrynodes.h			\
+	src/feature/client/proxymode.h			\
+	src/feature/client/transports.h
diff --git a/src/feature/control/include.am b/src/feature/control/include.am
new file mode 100644
index 000000000..07094f23b
--- /dev/null
+++ b/src/feature/control/include.am
@@ -0,0 +1,39 @@
+
+# ADD_C_FILE: INSERT SOURCES HERE.
+LIBTOR_APP_A_SOURCES += 				\
+	src/feature/control/btrack.c		\
+	src/feature/control/btrack_circuit.c	\
+	src/feature/control/btrack_orconn.c	\
+	src/feature/control/btrack_orconn_cevent.c	\
+	src/feature/control/btrack_orconn_maps.c	\
+	src/feature/control/control.c		\
+	src/feature/control/control_auth.c	\
+	src/feature/control/control_bootstrap.c	\
+	src/feature/control/control_cmd.c	\
+	src/feature/control/control_hs.c	\
+	src/feature/control/control_events.c	\
+	src/feature/control/control_fmt.c	\
+	src/feature/control/control_getinfo.c	\
+	src/feature/control/control_proto.c	\
+	src/feature/control/fmt_serverstatus.c  \
+	src/feature/control/getinfo_geoip.c
+
+# ADD_C_FILE: INSERT HEADERS HERE.
+noinst_HEADERS +=					\
+	src/feature/control/btrack_circuit.h		\
+	src/feature/control/btrack_orconn.h		\
+	src/feature/control/btrack_orconn_cevent.h	\
+	src/feature/control/btrack_orconn_maps.h	\
+	src/feature/control/btrack_sys.h		\
+	src/feature/control/control.h			\
+	src/feature/control/control_auth.h		\
+	src/feature/control/control_cmd.h		\
+	src/feature/control/control_hs.h		\
+	src/feature/control/control_cmd_args_st.h	\
+	src/feature/control/control_connection_st.h	\
+	src/feature/control/control_events.h		\
+	src/feature/control/control_fmt.h		\
+	src/feature/control/control_getinfo.h		\
+	src/feature/control/control_proto.h		\
+	src/feature/control/fmt_serverstatus.h		\
+	src/feature/control/getinfo_geoip.h
diff --git a/src/feature/dirauth/include.am b/src/feature/dirauth/include.am
new file mode 100644
index 000000000..ec7b3b296
--- /dev/null
+++ b/src/feature/dirauth/include.am
@@ -0,0 +1,51 @@
+
+# The Directory Authority module.
+# ADD_C_FILE: INSERT SOURCES HERE.
+MODULE_DIRAUTH_SOURCES =					\
+	src/feature/dirauth/authmode.c				\
+	src/feature/dirauth/bridgeauth.c			\
+	src/feature/dirauth/bwauth.c				\
+	src/feature/dirauth/dirauth_config.c			\
+	src/feature/dirauth/dirauth_periodic.c			\
+	src/feature/dirauth/dirauth_sys.c			\
+	src/feature/dirauth/dircollate.c			\
+	src/feature/dirauth/dirvote.c				\
+	src/feature/dirauth/dsigs_parse.c			\
+	src/feature/dirauth/guardfraction.c			\
+	src/feature/dirauth/keypin.c				\
+	src/feature/dirauth/process_descs.c			\
+	src/feature/dirauth/reachability.c			\
+	src/feature/dirauth/recommend_pkg.c			\
+	src/feature/dirauth/shared_random.c			\
+	src/feature/dirauth/shared_random_state.c		\
+	src/feature/dirauth/voteflags.c
+
+# ADD_C_FILE: INSERT HEADERS HERE.
+noinst_HEADERS +=					\
+	src/feature/dirauth/authmode.h			\
+	src/feature/dirauth/bridgeauth.h		\
+	src/feature/dirauth/bwauth.h			\
+	src/feature/dirauth/dirauth_config.h		\
+	src/feature/dirauth/dirauth_options.inc		\
+	src/feature/dirauth/dirauth_options_st.h	\
+	src/feature/dirauth/dirauth_periodic.h		\
+	src/feature/dirauth/dirauth_sys.h		\
+	src/feature/dirauth/dircollate.h		\
+	src/feature/dirauth/dirvote.h			\
+	src/feature/dirauth/dsigs_parse.h		\
+	src/feature/dirauth/guardfraction.h		\
+	src/feature/dirauth/keypin.h			\
+	src/feature/dirauth/ns_detached_signatures_st.h	\
+	src/feature/dirauth/reachability.h		\
+	src/feature/dirauth/recommend_pkg.h		\
+	src/feature/dirauth/process_descs.h		\
+	src/feature/dirauth/shared_random.h		\
+	src/feature/dirauth/shared_random_state.h	\
+	src/feature/dirauth/vote_microdesc_hash_st.h	\
+	src/feature/dirauth/voteflags.h
+
+if BUILD_MODULE_DIRAUTH
+LIBTOR_APP_A_SOURCES += $(MODULE_DIRAUTH_SOURCES)
+else
+LIBTOR_APP_A_STUB_SOURCES += src/feature/dirauth/dirauth_stub.c
+endif
diff --git a/src/feature/dircache/include.am b/src/feature/dircache/include.am
new file mode 100644
index 000000000..3ff54ad64
--- /dev/null
+++ b/src/feature/dircache/include.am
@@ -0,0 +1,15 @@
+
+# ADD_C_FILE: INSERT SOURCES HERE.
+LIBTOR_APP_A_SOURCES += 			\
+	src/feature/dircache/conscache.c	\
+	src/feature/dircache/consdiffmgr.c	\
+	src/feature/dircache/dircache.c		\
+	src/feature/dircache/dirserv.c
+
+# ADD_C_FILE: INSERT HEADERS HERE.
+noinst_HEADERS +=					\
+	src/feature/dircache/cached_dir_st.h		\
+	src/feature/dircache/conscache.h		\
+	src/feature/dircache/consdiffmgr.h		\
+	src/feature/dircache/dircache.h			\
+	src/feature/dircache/dirserv.h
diff --git a/src/feature/dirclient/include.am b/src/feature/dirclient/include.am
new file mode 100644
index 000000000..7e7259bc5
--- /dev/null
+++ b/src/feature/dirclient/include.am
@@ -0,0 +1,12 @@
+
+# ADD_C_FILE: INSERT SOURCES HERE.
+LIBTOR_APP_A_SOURCES += 			\
+	src/feature/dirclient/dirclient.c	\
+	src/feature/dirclient/dlstatus.c
+
+# ADD_C_FILE: INSERT HEADERS HERE.
+noinst_HEADERS +=					\
+	src/feature/dirclient/dir_server_st.h		\
+	src/feature/dirclient/dirclient.h		\
+	src/feature/dirclient/dlstatus.h		\
+	src/feature/dirclient/download_status_st.h
diff --git a/src/feature/dircommon/include.am b/src/feature/dircommon/include.am
new file mode 100644
index 000000000..f0f0323d1
--- /dev/null
+++ b/src/feature/dircommon/include.am
@@ -0,0 +1,16 @@
+
+# ADD_C_FILE: INSERT SOURCES HERE.
+LIBTOR_APP_A_SOURCES += 				\
+	src/feature/dircommon/consdiff.c	\
+	src/feature/dircommon/directory.c	\
+	src/feature/dircommon/fp_pair.c		\
+	src/feature/dircommon/voting_schedule.c
+
+# ADD_C_FILE: INSERT HEADERS HERE.
+noinst_HEADERS +=					\
+	src/feature/dircommon/consdiff.h		\
+	src/feature/dircommon/dir_connection_st.h	\
+	src/feature/dircommon/directory.h		\
+	src/feature/dircommon/fp_pair.h			\
+	src/feature/dircommon/vote_timing_st.h		\
+	src/feature/dircommon/voting_schedule.h
diff --git a/src/feature/dirparse/include.am b/src/feature/dirparse/include.am
new file mode 100644
index 000000000..edca04f6f
--- /dev/null
+++ b/src/feature/dirparse/include.am
@@ -0,0 +1,25 @@
+
+# ADD_C_FILE: INSERT SOURCES HERE.
+LIBTOR_APP_A_SOURCES += 			\
+	src/feature/dirparse/authcert_parse.c	\
+	src/feature/dirparse/microdesc_parse.c	\
+	src/feature/dirparse/ns_parse.c		\
+	src/feature/dirparse/parsecommon.c	\
+	src/feature/dirparse/policy_parse.c	\
+	src/feature/dirparse/routerparse.c	\
+	src/feature/dirparse/sigcommon.c	\
+	src/feature/dirparse/signing.c		\
+	src/feature/dirparse/unparseable.c
+
+# ADD_C_FILE: INSERT HEADERS HERE.
+noinst_HEADERS +=					\
+	src/feature/dirparse/authcert_members.h		\
+	src/feature/dirparse/authcert_parse.h		\
+	src/feature/dirparse/microdesc_parse.h		\
+	src/feature/dirparse/ns_parse.h			\
+	src/feature/dirparse/parsecommon.h		\
+	src/feature/dirparse/policy_parse.h		\
+	src/feature/dirparse/routerparse.h		\
+	src/feature/dirparse/sigcommon.h		\
+	src/feature/dirparse/signing.h			\
+	src/feature/dirparse/unparseable.h
diff --git a/src/feature/hibernate/include.am b/src/feature/hibernate/include.am
new file mode 100644
index 000000000..355e59139
--- /dev/null
+++ b/src/feature/hibernate/include.am
@@ -0,0 +1,8 @@
+
+# ADD_C_FILE: INSERT SOURCES HERE.
+LIBTOR_APP_A_SOURCES += 			\
+	src/feature/hibernate/hibernate.c
+
+# ADD_C_FILE: INSERT HEADERS HERE.
+noinst_HEADERS +=					\
+	src/feature/hibernate/hibernate.h
diff --git a/src/feature/hs/include.am b/src/feature/hs/include.am
new file mode 100644
index 000000000..5e69607e5
--- /dev/null
+++ b/src/feature/hs/include.am
@@ -0,0 +1,35 @@
+
+# ADD_C_FILE: INSERT SOURCES HERE.
+LIBTOR_APP_A_SOURCES += 				\
+	src/feature/hs/hs_cache.c		\
+	src/feature/hs/hs_cell.c		\
+	src/feature/hs/hs_circuit.c		\
+	src/feature/hs/hs_circuitmap.c		\
+	src/feature/hs/hs_client.c		\
+	src/feature/hs/hs_common.c		\
+	src/feature/hs/hs_config.c		\
+	src/feature/hs/hs_control.c		\
+	src/feature/hs/hs_descriptor.c		\
+	src/feature/hs/hs_dos.c			\
+	src/feature/hs/hs_ident.c		\
+	src/feature/hs/hs_intropoint.c		\
+	src/feature/hs/hs_service.c		\
+	src/feature/hs/hs_stats.c
+
+# ADD_C_FILE: INSERT HEADERS HERE.
+noinst_HEADERS +=					\
+	src/feature/hs/hs_cache.h			\
+	src/feature/hs/hs_cell.h			\
+	src/feature/hs/hs_circuit.h			\
+	src/feature/hs/hs_circuitmap.h			\
+	src/feature/hs/hs_client.h			\
+	src/feature/hs/hs_common.h			\
+	src/feature/hs/hs_config.h			\
+	src/feature/hs/hs_control.h			\
+	src/feature/hs/hs_descriptor.h			\
+	src/feature/hs/hs_dos.h				\
+	src/feature/hs/hs_ident.h			\
+	src/feature/hs/hs_intropoint.h			\
+	src/feature/hs/hs_service.h			\
+	src/feature/hs/hs_stats.h			\
+	src/feature/hs/hsdir_index_st.h
diff --git a/src/feature/hs_common/include.am b/src/feature/hs_common/include.am
new file mode 100644
index 000000000..3bb9225c1
--- /dev/null
+++ b/src/feature/hs_common/include.am
@@ -0,0 +1,10 @@
+
+# ADD_C_FILE: INSERT SOURCES HERE.
+LIBTOR_APP_A_SOURCES += 				\
+	src/feature/hs_common/replaycache.c	        \
+	src/feature/hs_common/shared_random_client.c
+
+# ADD_C_FILE: INSERT HEADERS HERE.
+noinst_HEADERS +=					\
+	src/feature/hs_common/replaycache.h		\
+	src/feature/hs_common/shared_random_client.h
diff --git a/src/feature/keymgt/include.am b/src/feature/keymgt/include.am
new file mode 100644
index 000000000..bc9beaa52
--- /dev/null
+++ b/src/feature/keymgt/include.am
@@ -0,0 +1,8 @@
+
+# ADD_C_FILE: INSERT SOURCES HERE.
+LIBTOR_APP_A_SOURCES += 				\
+	src/feature/keymgt/loadkey.c
+
+# ADD_C_FILE: INSERT HEADERS HERE.
+noinst_HEADERS +=					\
+	src/feature/keymgt/loadkey.h
diff --git a/src/feature/nodelist/include.am b/src/feature/nodelist/include.am
new file mode 100644
index 000000000..2f5d58ec1
--- /dev/null
+++ b/src/feature/nodelist/include.am
@@ -0,0 +1,49 @@
+
+# ADD_C_FILE: INSERT SOURCES HERE.
+LIBTOR_APP_A_SOURCES += 				\
+	src/feature/nodelist/authcert.c		\
+	src/feature/nodelist/describe.c		\
+	src/feature/nodelist/dirlist.c		\
+	src/feature/nodelist/microdesc.c	\
+	src/feature/nodelist/networkstatus.c	\
+	src/feature/nodelist/nickname.c		\
+	src/feature/nodelist/nodefamily.c	\
+	src/feature/nodelist/nodelist.c		\
+	src/feature/nodelist/node_select.c	\
+	src/feature/nodelist/routerinfo.c	\
+	src/feature/nodelist/routerlist.c	\
+	src/feature/nodelist/routerset.c	\
+	src/feature/nodelist/fmt_routerstatus.c	\
+	src/feature/nodelist/torcert.c
+
+# ADD_C_FILE: INSERT HEADERS HERE.
+noinst_HEADERS +=					\
+	src/feature/nodelist/authcert.h			\
+	src/feature/nodelist/authority_cert_st.h	\
+	src/feature/nodelist/describe.h			\
+	src/feature/nodelist/desc_store_st.h		\
+	src/feature/nodelist/dirlist.h			\
+	src/feature/nodelist/document_signature_st.h	\
+	src/feature/nodelist/extrainfo_st.h		\
+	src/feature/nodelist/microdesc.h		\
+	src/feature/nodelist/microdesc_st.h		\
+	src/feature/nodelist/networkstatus.h		\
+	src/feature/nodelist/networkstatus_sr_info_st.h	\
+	src/feature/nodelist/networkstatus_st.h		\
+	src/feature/nodelist/networkstatus_voter_info_st.h	\
+	src/feature/nodelist/nickname.h			\
+	src/feature/nodelist/node_st.h			\
+	src/feature/nodelist/nodefamily.h		\
+	src/feature/nodelist/nodefamily_st.h		\
+	src/feature/nodelist/nodelist.h			\
+	src/feature/nodelist/node_select.h		\
+	src/feature/nodelist/routerinfo.h		\
+	src/feature/nodelist/routerinfo_st.h		\
+	src/feature/nodelist/routerlist.h		\
+	src/feature/nodelist/routerlist_st.h		\
+	src/feature/nodelist/routerset.h		\
+	src/feature/nodelist/fmt_routerstatus.h		\
+	src/feature/nodelist/routerstatus_st.h		\
+	src/feature/nodelist/signed_descriptor_st.h	\
+	src/feature/nodelist/torcert.h			\
+	src/feature/nodelist/vote_routerstatus_st.h
diff --git a/src/feature/relay/include.am b/src/feature/relay/include.am
new file mode 100644
index 000000000..aa9aa3adf
--- /dev/null
+++ b/src/feature/relay/include.am
@@ -0,0 +1,39 @@
+
+# ADD_C_FILE: INSERT SOURCES HERE.
+LIBTOR_APP_A_SOURCES += 			\
+	src/feature/relay/dns.c			\
+	src/feature/relay/ext_orport.c		\
+	src/feature/relay/onion_queue.c		\
+	src/feature/relay/router.c		\
+	src/feature/relay/routerkeys.c		\
+	src/feature/relay/selftest.c
+
+# The Relay module.
+# ADD_C_FILE: INSERT SOURCES HERE.
+MODULE_RELAY_SOURCES = 						\
+	src/feature/relay/routermode.c				\
+	src/feature/relay/relay_config.c			\
+	src/feature/relay/relay_periodic.c			\
+	src/feature/relay/relay_sys.c				\
+	src/feature/relay/transport_config.c
+
+# ADD_C_FILE: INSERT HEADERS HERE.
+noinst_HEADERS +=					\
+	src/feature/relay/dns.h				\
+	src/feature/relay/dns_structs.h			\
+	src/feature/relay/ext_orport.h			\
+	src/feature/relay/onion_queue.h			\
+	src/feature/relay/relay_config.h		\
+	src/feature/relay/relay_periodic.h		\
+	src/feature/relay/relay_sys.h			\
+	src/feature/relay/router.h			\
+	src/feature/relay/routerkeys.h			\
+	src/feature/relay/routermode.h			\
+	src/feature/relay/selftest.h			\
+	src/feature/relay/transport_config.h
+
+if BUILD_MODULE_RELAY
+LIBTOR_APP_A_SOURCES += $(MODULE_RELAY_SOURCES)
+else
+LIBTOR_APP_A_STUB_SOURCES += src/feature/relay/relay_stub.c
+endif
diff --git a/src/feature/rend/include.am b/src/feature/rend/include.am
new file mode 100644
index 000000000..fb12439a9
--- /dev/null
+++ b/src/feature/rend/include.am
@@ -0,0 +1,22 @@
+
+# ADD_C_FILE: INSERT SOURCES HERE.
+LIBTOR_APP_A_SOURCES += 			\
+	src/feature/rend/rendcache.c		\
+	src/feature/rend/rendclient.c		\
+	src/feature/rend/rendcommon.c		\
+	src/feature/rend/rendmid.c		\
+	src/feature/rend/rendparse.c		\
+	src/feature/rend/rendservice.c
+
+# ADD_C_FILE: INSERT HEADERS HERE.
+noinst_HEADERS +=					\
+	src/feature/rend/rend_authorized_client_st.h	\
+	src/feature/rend/rend_encoded_v2_service_descriptor_st.h	\
+	src/feature/rend/rend_intro_point_st.h		\
+	src/feature/rend/rend_service_descriptor_st.h	\
+	src/feature/rend/rendcache.h			\
+	src/feature/rend/rendclient.h			\
+	src/feature/rend/rendcommon.h			\
+	src/feature/rend/rendmid.h			\
+	src/feature/rend/rendparse.h			\
+	src/feature/rend/rendservice.h
diff --git a/src/feature/stats/include.am b/src/feature/stats/include.am
new file mode 100644
index 000000000..8789bc3d9
--- /dev/null
+++ b/src/feature/stats/include.am
@@ -0,0 +1,12 @@
+
+# ADD_C_FILE: INSERT SOURCES HERE.
+LIBTOR_APP_A_SOURCES += 			\
+	src/feature/stats/geoip_stats.c		\
+	src/feature/stats/rephist.c		\
+	src/feature/stats/predict_ports.c
+
+# ADD_C_FILE: INSERT HEADERS HERE.
+noinst_HEADERS +=					\
+	src/feature/stats/geoip_stats.h			\
+	src/feature/stats/rephist.h			\
+	src/feature/stats/predict_ports.h
diff --git a/src/include.am b/src/include.am
index 065bdc31c..f5f868d23 100644
--- a/src/include.am
+++ b/src/include.am
@@ -1,4 +1,5 @@
 include src/ext/include.am
+
 include src/lib/arch/include.am
 include src/lib/buf/include.am
 include src/lib/err/include.am
@@ -42,6 +43,42 @@ include src/lib/version/include.am
 include src/lib/wallclock/include.am
 include src/trunnel/include.am
 
+noinst_LIBRARIES += src/core/libtor-app.a
+if UNITTESTS_ENABLED
+noinst_LIBRARIES += src/core/libtor-app-testing.a
+endif
+
+LIBTOR_APP_A_SOURCES =
+#
+# Sources that we only add for the real libtor_a, and not for testing.
+#
+LIBTOR_APP_A_STUB_SOURCES =
+
+include src/core/crypto/include.am
+include src/core/mainloop/include.am
+include src/core/or/include.am
+include src/core/proto/include.am
+
+include src/feature/api/include.am
+include src/feature/client/include.am
+include src/feature/control/include.am
+include src/feature/dirauth/include.am
+include src/feature/dircache/include.am
+include src/feature/dirclient/include.am
+include src/feature/dircommon/include.am
+include src/feature/dirparse/include.am
+include src/feature/hibernate/include.am
+include src/feature/hs_common/include.am
+include src/feature/hs/include.am
+include src/feature/keymgt/include.am
+include src/feature/nodelist/include.am
+include src/feature/relay/include.am
+include src/feature/rend/include.am
+include src/feature/stats/include.am
+
+include src/app/config/include.am
+include src/app/main/include.am
+
 include src/core/include.am
 include src/app/include.am
 





More information about the tor-commits mailing list