4 - _lib: library without need for a process
5 - _service: library that needs a service process
6 - _plugin: plugin definition
7 - _protocol: structs used in network protocol
9 * gnunet_config.h --- generated
10 * platform.h --- first included
11 * plibc.h --- external library
12 * gnunet_common.h --- fundamental routines
13 * gnunet_directories.h --- generated
14 * gettext.h --- external library
18 - gnunet-service-xxx: service process (has listen socket)
19 - gnunet-daemon-xxx: daemon process (no listen socket)
20 - gnunet-helper-xxx[-yyy]: SUID helper for module xxx
21 - gnunet-yyy: command-line tool for end-users
22 - libgnunet_plugin_xxx_yyy.so: plugin for API xxx
23 - libgnunetxxx.so: library for API xxx
27 - paths (that are substituted in all filenames) are in PATHS (have as few as possible)
28 - globals for the daemon are in [gnunetd] (for now, have as few as possible!)
29 - all options for a particular module (src/MODULE) are under [MODULE]
30 - options for a plugin of a module are under [MODULE-PLUGINNAME]
31 - options only for debugging / testing / profiling are under [TESTING],
32 together with the options for the testing module itself
36 - must start with "GNUNET_modulename_" and be defined in "modulename.c"
37 - exceptions: those defined in gnunet_common.h
40 private (library-internal) symbols (including structs & macros):
41 - must NOT start with any prefix
42 - must not be exported in a way that linkers could use them or
43 other libraries might see them via headers; they must be either
44 declared/defined in C source files or in headers that are in
45 the respective directory under src/modulename/ and NEVER be
46 declared in src/include/.
49 - must be called "test_module-under-test_case-description.c"
50 - "case-description" maybe omitted if there is only one test
54 - must be called "perf_module-under-test_case-description.c"
55 - "case-description" maybe omitted if there is only one performance test
56 - Must only be run if HAVE_BENCHMARKS is satisfied
60 - gnunet-NAME: end-user applications (i.e., gnunet-search, gnunet-arm)
61 - gnunet-service-NAME: service processes with accessor library (i.e., gnunet-service-arm)
62 - libgnunetNAME: accessor library (_service.h-header) or standalone library (_lib.h-header)
63 - gnunet-daemon-NAME: daemon process without accessor library (i.e., gnunet-daemon-hostlist) and no GNUnet management port
64 - libgnunet_plugin_DIR_NAME: loadable plugins (i.e., libgnunet_plugin_transport_tcp)
68 - GNU guidelines apply
69 - declare only one variable per line, so
81 If you have code that is likely not to compile or build rules you might want to not
82 trigger for most developers, use "if HAVE_EXPERIMENTAL" in your Makefile.am. Then
83 it is OK to (temporarily) add non-compiling (or known-to-not-port) code.
85 If you want to compile all testcases but NOT run them, run configure with the
86 --enable-test-suppression option.
88 If you want to run all testcases, including those that take a while, run configure with the
89 --enable-expensive-testcases option.
91 If you want to compile and run benchmarks, run configure with the
92 --enable-benchmarks option.
94 If you want to obtain code coverage results, run configure with the
95 --enable-coverage option and run the coverage.sh script in contrib/.
98 Minimum file-sharing system (in order of dependency):
100 gnunet-service-transport
102 gnunet-daemon-hostlist
103 gnunet-daemon-topology
104 gnunet-service-statistics
105 gnunet-service-datastore
106 gnunet-service-datacache