diff --git a/docs/Doxyfile b/docs/Doxyfile index 054f3ec032..7015c9e5bf 100644 --- a/docs/Doxyfile +++ b/docs/Doxyfile @@ -1295,15 +1295,6 @@ HTML_COLORSTYLE_SAT = 100 HTML_COLORSTYLE_GAMMA = 80 -# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML -# page will contain the date and time when the page was generated. Setting this -# to YES can help to show when doxygen was last run and thus if the -# documentation is up to date. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_TIMESTAMP = NO - # If the HTML_DYNAMIC_MENUS tag is set to YES then the generated HTML # documentation will contain a main index with vertical navigation menus that # are dynamically created via JavaScript. If disabled, the navigation index will @@ -1950,14 +1941,6 @@ LATEX_HIDE_INDICES = NO LATEX_BIB_STYLE = plain -# If the LATEX_TIMESTAMP tag is set to YES then the footer of each generated -# page will contain the date and time when the page was generated. Setting this -# to NO can help when comparing the output of multiple runs. -# The default value is: NO. -# This tag requires that the tag GENERATE_LATEX is set to YES. - -LATEX_TIMESTAMP = NO - # The LATEX_EMOJI_DIRECTORY tag is used to specify the (relative or absolute) # path from which the emoji images will be read. If a relative path is entered, # it will be relative to the LATEX_OUTPUT directory. If left blank the @@ -2587,3 +2570,19 @@ GENERATE_LEGEND = YES # The default value is: YES. DOT_CLEANUP = YES + +# If the CLANG_ASSISTED_PARSING tag is set to YES then doxygen will use the +# clang parser for more accurate parsing at the cost of reduced performance. +# This can be particularly helpful with template rich C++ code for which +# doxygen's built-in parser lacks the necessary type information. + +CLANG_ASSISTED_PARSING = NO + +# If clang assisted parsing is enabled you can provide the clang parser with +# the path to the directory containing a file called compile_commands.json. +# This file is the compilation database containing the options used when the +# source files were built. This is equivalent to specifying the -p option to a +# clang tool, such as clang-check. These options will then be passed to the +# parser. Any options specified with CLANG_OPTIONS will be added as well. + +CLANG_DATABASE_PATH = _build diff --git a/other/docker/doxygen/dockerignore b/other/docker/doxygen/dockerignore new file mode 100644 index 0000000000..e3dd207f70 --- /dev/null +++ b/other/docker/doxygen/dockerignore @@ -0,0 +1,2 @@ +# ===== custom ===== +!docs/Doxyfile diff --git a/other/docker/doxygen/doxygen.Dockerfile b/other/docker/doxygen/doxygen.Dockerfile index 09e8029226..44732be0a3 100644 --- a/other/docker/doxygen/doxygen.Dockerfile +++ b/other/docker/doxygen/doxygen.Dockerfile @@ -1,19 +1,20 @@ -FROM toxchat/c-toxcore:sources AS sources -FROM alpine:3.19.0 AS build +FROM toxchat/doxygen:latest AS build -ENV LANG=en_US.UTF-8 \ - LANGUAGE=en_US.UTF-8 \ - LC_CTYPE=en_US.UTF-8 \ - LC_ALL=en_US.UTF-8 +RUN ["apk", "add", "--no-cache", \ + "gtest-dev", \ + "libconfig-dev", \ + "libsodium-dev", \ + "libvpx-dev", \ + "opus-dev"] -RUN apk add --no-cache doxygen git graphviz texlive \ - && git clone --depth=1 https://github.com/jothepro/doxygen-awesome-css.git /work/doxygen-awesome-css -WORKDIR /work -COPY --from=sources /src/ /work/ -COPY docs/Doxyfile /work/Doxyfile -RUN echo "WARN_AS_ERROR = YES" >> Doxyfile \ +RUN git clone --depth=1 https://github.com/jothepro/doxygen-awesome-css.git /work/c-toxcore/doxygen-awesome-css + +WORKDIR /work/c-toxcore +COPY . /work/c-toxcore/ +RUN cmake . -B_build -GNinja -DCMAKE_EXPORT_COMPILE_COMMANDS=ON \ + && echo "WARN_AS_ERROR = YES" >> Doxyfile \ && sed -i -e 's/^non_null([^)]*) *//;s/^nullable([^)]*) *//' $(find . -name "*.[ch]") \ - && doxygen Doxyfile + && doxygen docs/Doxyfile FROM nginx:alpine -COPY --from=build /work/_docs/html/ /usr/share/nginx/html/ +COPY --from=build /work/c-toxcore/_docs/html/ /usr/share/nginx/html/ diff --git a/other/docker/doxygen/doxygen.Dockerfile.dockerignore b/other/docker/doxygen/doxygen.Dockerfile.dockerignore new file mode 100644 index 0000000000..532c4e44e3 --- /dev/null +++ b/other/docker/doxygen/doxygen.Dockerfile.dockerignore @@ -0,0 +1,25 @@ +# ===== common ===== +# Ignore everything ... +**/* +# ... except sources +!**/*.[ch] +!**/*.cc +!**/*.hh +!CHANGELOG.md +!LICENSE +!README.md +!auto_tests/data/* +!other/bootstrap_daemon/bash-completion/** +!other/bootstrap_daemon/tox-bootstrapd.* +!other/proxy/*.mod +!other/proxy/*.sum +!other/proxy/*.go +# ... and CMake build files (used by most builds). +!**/CMakeLists.txt +!.github/scripts/flags*.sh +!cmake/*.cmake +!other/pkgconfig/* +!other/rpm/* +!so.version +# ===== custom ===== +!docs/Doxyfile diff --git a/other/docker/doxygen/run b/other/docker/doxygen/run index b7deb9433e..2c038325e2 100755 --- a/other/docker/doxygen/run +++ b/other/docker/doxygen/run @@ -1,8 +1,4 @@ -#!/bin/sh - -set -eux -BUILD=doxygen -other/docker/sources/build -docker build -t "toxchat/c-toxcore:$BUILD" -f "other/docker/$BUILD/$BUILD.Dockerfile" . +#!/usr/bin/env bash +. "$(cd "$(dirname "${BASH_SOURCE[0]}")/../sources" && pwd)/run.sh" docker run --name toxcore-doxygen --rm -it -p "28192:80" "toxchat/c-toxcore:$BUILD" diff --git a/other/docker/sources/run.sh b/other/docker/sources/run.sh new file mode 100644 index 0000000000..2259513d3a --- /dev/null +++ b/other/docker/sources/run.sh @@ -0,0 +1,21 @@ +#!/usr/bin/env bash + +# Common docker build script usable by many builds in the other/docker +# directory. We're using a common dockerignore that ignores everything except +# sources and CMake scripts. Subdirectories can contain a "dockerignore" file +# (note the missing "." at the start) that will be pasted to the end of the +# common dockerignore file. This way, we can use "COPY ." and get all the +# files we need at once, which is much faster, more flexible, and less +# error-prone than manually writing lots of COPY directives. + +SOURCESDIR="$(dirname "${BASH_SOURCE[0]}")" +DOCKERDIR="$(dirname "${BASH_SOURCE[1]}")" +BUILD="$(basename "$DOCKERDIR")" + +set -eux +cat "$SOURCESDIR/sources.Dockerfile.dockerignore" >"$DOCKERDIR/$BUILD.Dockerfile.dockerignore" +if [ -f "$DOCKERDIR/dockerignore" ]; then + cat "$DOCKERDIR/dockerignore" >>"$DOCKERDIR/$BUILD.Dockerfile.dockerignore" +fi + +docker build -t "toxchat/c-toxcore:$BUILD" -f "other/docker/$BUILD/$BUILD.Dockerfile" . diff --git a/other/docker/sources/sources.Dockerfile.dockerignore b/other/docker/sources/sources.Dockerfile.dockerignore index 698f7a55bf..3a3643cba1 100644 --- a/other/docker/sources/sources.Dockerfile.dockerignore +++ b/other/docker/sources/sources.Dockerfile.dockerignore @@ -1,3 +1,4 @@ +# ===== common ===== # Ignore everything ... **/* # ... except sources