Some enumerations in the kernel headers use #ifdef to reduce their size based on the the configuration. These lines have to be stripped to avoid parsing problems. For example a simple input like /** * enum flags - test flags * @flag1: first flag * @flag2: second flag */ enum flags { flag1 = BIT(0), #ifdef SECOND_FLAG flag2 = BIT(1), #endif }; resulted in parsing warnings like warning: Enum value '#ifdef SECOND_FLAG;flag2 = BIT(1)' not described in enum 'flags' warning: Enum value '#endif;' not described in enum 'flags'
Unified · Split
| @@ -1844,7 +1844,8 @@ sub dump_enum($$) { · 1843 unmodified lines | ||
| 1844 | 1844 | my $file = shift; |
| 1845 | 1845 | |
| 1846 | 1846 | $x =~ s@/\*.*?\*/@@gos; # strip comments. |
| 1847 | − $x =~ s@#\s*define\s+[^;]*;@@gos; # strip #define macros inside enums | |
| 1847 | + # strip #define macros inside enums | |
| 1848 | + $x =~ s@#\s*((define|ifdef)\s+|endif)[^;]*;@@gos; | |
| 1848 | 1849 | |
| 1849 | 1850 | if ($x =~ /enum\s+(\w+)\s*{(.*)}/) { |
| 1850 | 1851 | $declaration_name = $1; |