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
17 - paths (that are substituted in all filenames) are in PATHS (have as few as possible)
18 - globals for the daemon are in [gnunetd] (for now, have as few as possible!)
19 - all options for a particular module (src/MODULE) are under [MODULE]
20 - options for a plugin of a module are under [MODULE-PLUGINNAME]
21 - options only for debugging / testing / profiling are under [TESTING],
22 together with the options for the testing module itself
27 - must start with "GNUNET_modulename_" and be defined in "modulename.c"
28 - exceptions: those defined in gnunet_common.h
30 private (library-internal) symbols (including structs & macros):
31 - must NOT start with any prefix
32 - must not be exported in a way that linkers could use them or
33 other libraries might see them via headers; they must be either
34 declared/defined in C source files or in headers that are in
35 the respective directory under src/modulename/ and NEVER be
36 declared in src/include/.
39 - must be called "test_module-under-test_case-description.c"
40 - "case-description" maybe omitted if there is only one test
44 - must be called "perf_module-under-test_case-description.c"
45 - "case-description" maybe omitted if there is only one performance test
50 - gnunet-NAME: end-user applications (i.e., gnunet-search, gnunet-arm)
51 - gnunet-service-NAME: service processes with accessor library (i.e., gnunet-service-arm)
52 - libgnunetNAME: accessor library (_service.h-header) or standalone library (_lib.h-header)
53 - gnunet-daemon-NAME: daemon process without accessor library (i.e., gnunet-daemon-hostlist) and no GNUnet management port
54 - libgnunet_plugin_DIR_NAME: loadable plugins (i.e., libgnunet_plugin_transport_tcp)
58 Minimum file-sharing system (in order of dependency):
60 gnunet-service-transport
62 gnunet-daemon-hostlist
63 gnunet-daemon-topology
64 gnunet-service-statistics
65 gnunet-service-datastore
66 gnunet-service-datacache
68 gnunet-service-fs (or just lib?)
74 - GNU guidelines apply
75 - declare only one variable per line, so
88 If you have code that is likely not to compile or build rules you might want to not
89 trigger for most developers, use "if HAVE_EXPERIMENTAL" in your Makefile.am. Then
90 it is OK to (temporarily) add non-compiling (or known-to-not-port) code.
92 If you want to compile all testcases but NOT run them, run configure with the
93 --enable-test-suppression option.
95 If you want to obtain code coverage results, run configure with the
96 --enable-coverage option and run the coverage.sh script in contrib/.