Use a full config.h with doxygen
Otherwise we get warnings that some documentation items don't have
corresponding #define, and more importantly the corresponding snippets are not
included in the output.
For that we need a modified version of the "full" argument for config.pl.
Also, the new CMakeLists.txt target only works on Unix (which was already the
case of the Makefile target). Hopefully this is not an issue as people are
unlikely to need that target on Windows.
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 094d906..8905218 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -85,9 +85,20 @@
add_subdirectory(programs)
endif()
-ADD_CUSTOM_TARGET(apidoc
- COMMAND doxygen doxygen/mbedtls.doxyfile
- WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
+# targets for doxygen only work on Unix
+if(UNIX)
+ ADD_CUSTOM_TARGET(apidoc
+ COMMAND mkdir -p apidoc
+ COMMAND cp include/mbedtls/config.h include/mbedtls/config.h.bak
+ COMMAND scripts/config.pl realfull
+ COMMAND doxygen doxygen/mbedtls.doxyfile
+ COMMAND mv include/mbedtls/config.h.bak include/mbedtls/config.h
+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
+
+ ADD_CUSTOM_TARGET(apidoc_clean
+ COMMAND rm -rf apidoc
+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
+endif(UNIX)
if(ENABLE_TESTING)
enable_testing()
diff --git a/Makefile b/Makefile
index 7f03115..0950e6b 100644
--- a/Makefile
+++ b/Makefile
@@ -87,7 +87,10 @@
apidoc:
mkdir -p apidoc
+ cp include/mbedtls/config.h include/mbedtls/config.h.bak
+ scripts/config.pl realfull
doxygen doxygen/mbedtls.doxyfile
+ mv include/mbedtls/config.h.bak include/mbedtls/config.h
apidoc_clean:
rm -rf apidoc
diff --git a/scripts/config.pl b/scripts/config.pl
index f673c2a..d4c32fd 100755
--- a/scripts/config.pl
+++ b/scripts/config.pl
@@ -10,7 +10,7 @@
$0 [-f <file>] set <name> [<value>]
EOU
# for our eyes only:
-# $0 [-f <file>] full
+# $0 [-f <file>] full|realfull
# Things that shouldn't be enabled with "full".
# Notes:
@@ -61,7 +61,7 @@
my $action = shift;
my ($name, $value);
-if ($action eq "full") {
+if ($action eq "full" || $action eq "realfull") {
# nothing to do
} elsif ($action eq "unset") {
die $usage unless @ARGV;
@@ -79,14 +79,20 @@
my @config_lines = <$config_read>;
close $config_read;
-my $exclude_re = join '|', @excluded;
-my $no_exclude_re = join '|', @non_excluded;
+my ($exclude_re, $no_exclude_re);
+if ($action eq "realfull") {
+ $exclude_re = qr/^$/;
+ $no_exclude_re = qr/./;
+} else {
+ $exclude_re = join '|', @excluded;
+ $no_exclude_re = join '|', @non_excluded;
+}
open my $config_write, '>', $config_file or die "write $config_file: $!\n";
my $done;
for my $line (@config_lines) {
- if ($action eq "full") {
+ if ($action eq "full" || $action eq "realfull") {
if ($line =~ /name SECTION: Module configuration options/) {
$done = 1;
}