nix-shell -I nixpkgs=https://github.com/NixOS/nixpkgs/archive/865c1cb0e921c173e88be7d4cddaee651b79bbfe.tar.gz -p doxygen graphviz
graphviz
is needed to generate the graph-related content (this is also noted in the Doxyfile
snippet below).
The timestamp of the above Nixpkgs commit is 2025-05-15T00:46:48.000Z
.
NOTE
Keep forgetting this post about how to pin packages withnix-shell
.
NOTE
The end result will (or should) be this Doxyfile. Was thinking about including the results in this repo, but the size of the generated output was 1.6 GB…
Enter the FreeSWITCH directory
Generate the configuration
doxygen -g
Plug in the following values:
PROJECT_NAME = FreeSWITCH
# This may already be a long list, but
# make sure that these are definitely
# listed:
FILE_PATTERNS = *.c *.h
INPUT =
OUTPUT_DIRECTORY = ../<your-dir>
RECURSIVE = YES
EXTRACT_ALL = YES
EXTRACT_PRIVATE = YES
EXTRACT_STATIC = YES
SOURCE_BROWSER = YES
GENERATE_HTML = YES
GENERATE_LATEX = NO
GENERATE_XML = NO
Leaving INPUT
empty means to scan the current directory (i.e., the FreeSWITCH repo’s root). src
holds the main code, but libs
has all the supporting data structures and functions FreeSWITCH is built on.
It is recommended to set OUTPUT_DIRECTORY
somewhere outside the FreeSWITCH repo, because code editors such as VS Code can start scanning it and might even crash (just the generated graphs alone are around 70,000).
Here is the reference documentation of the Doxygen configuration options.
doxygen Doxyfile
Finally, open the generated docs:
open html/index.html