diff options
Diffstat (limited to 'support/doxygen')
| -rw-r--r-- | support/doxygen/Doxyfile | 18 | ||||
| -rwxr-xr-x | support/doxygen/evil_mangler.awk | 38 | 
2 files changed, 50 insertions, 6 deletions
| diff --git a/support/doxygen/Doxyfile b/support/doxygen/Doxyfile index 67b7692..daeaf38 100644 --- a/support/doxygen/Doxyfile +++ b/support/doxygen/Doxyfile @@ -263,7 +263,7 @@ IDL_PROPERTY_SUPPORT   = YES  # member in the group (if any) for the other members of the group. By default   # all members of a group must be documented explicitly. -DISTRIBUTE_GROUP_DOC   = NO +DISTRIBUTE_GROUP_DOC   = YES  # Set the SUBGROUPING tag to YES (the default) to allow class member groups of   # the same type (for instance a group of public functions) to be put as a  @@ -281,7 +281,7 @@ SUBGROUPING            = YES  # be useful for C code in case the coding convention dictates that all compound   # types are typedef'ed and only the typedef is referenced, never the tag name. -TYPEDEF_HIDES_STRUCT   = YES +TYPEDEF_HIDES_STRUCT   = NO  # The SYMBOL_CACHE_SIZE determines the size of the internal cache use to   # determine which symbols to keep in memory and which to flush to disk.  @@ -537,7 +537,7 @@ LAYOUT_FILE            =  # The QUIET tag can be used to turn on/off the messages that are generated   # by doxygen. Possible values are YES and NO. If left blank NO is used. -QUIET                  = NO +QUIET                  = YES  # The WARNINGS tag can be used to turn on/off the warning messages that are   # generated by doxygen. Possible values are YES and NO. If left blank  @@ -549,7 +549,7 @@ WARNINGS               = YES  # for undocumented members. If EXTRACT_ALL is set to YES then this flag will   # automatically be disabled. -WARN_IF_UNDOCUMENTED   = YES +WARN_IF_UNDOCUMENTED   = NO  # If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for   # potential errors in the documentation, such as not documenting some  @@ -690,7 +690,9 @@ INPUT_FILTER           =  # info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER   # is applied to all files. -FILTER_PATTERNS        =  +# Trick Doxygen into thinking series headers are in separate +# namespaces; see the Evil Mangler source for more information. +FILTER_PATTERNS        = */libmaple/stm32*/include/series/*.h=./support/doxygen/evil_mangler.awk  # If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using   # INPUT_FILTER) will be used to filter the input files when producing source  @@ -1373,11 +1375,15 @@ INCLUDE_FILE_PATTERNS  =  # instead of the = operator.  PREDEFINED             = __attribute__()= \ +                       __deprecated= \ +                       __always_inline= \ +                       __packed = \ +                       __weak = \                         __cplusplus \                         STM32_MEDIUM_DENSITY \                         STM32_HIGH_DENSITY \                         STM32_XL_DENSITY \ -                       __DOXYGEN_PREDEFINED_HACK +                       __DOXYGEN__  # If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then   # this tag can be used to specify a list of macro names that should be expanded.  diff --git a/support/doxygen/evil_mangler.awk b/support/doxygen/evil_mangler.awk new file mode 100755 index 0000000..b07da72 --- /dev/null +++ b/support/doxygen/evil_mangler.awk @@ -0,0 +1,38 @@ +#!/usr/bin/awk -f + +# libmaple's own Evil Mangler +# +# Input filter hack to trick Doxygen into thinking that a series +# header is in a separate namespace. This is necessary because Doxygen +# doesn't know how to cope with two data structures with the same name +# in different places in the project. (We do that all the time, +# e.g. for foo_reg_map structs.) +# +# E.g., an STM32F1 header gets transformed into: +# +# namespace stm32f1 { +# <contents of header> +# } + +BEGIN { +    # For extracting series component from header FILENAME. +    series_regex = "/stm32[flw][0-9]*/"; +    # Holds header FILENAME. Cargo-culted; not sure why it's necessary. +    f = ""; +    # Holds series component. +    series = ""; +} +{ +    if (f != FILENAME) { +        f = FILENAME; +        match(f, series_regex); +        series = substr(f, RSTART + 1, RLENGTH - 2); +        printf("namespace %s {\n", series); +    } +    print; +} +END { +    if (series != "") { +        print "}" +    } +} | 
