]>
Commit | Line | Data |
---|---|---|
2f155f6c GL |
1 | # |
2 | # Sed script to parse CPP macros and generate output usable by make | |
3 | # | |
4 | # It is expected that this script is fed the output of 'gpp -dM' | |
5 | # which preprocesses the common.h header files and outputs the final | |
6 | # list of CPP macros (and whitespace is sanitized) | |
7 | # | |
8 | ||
9 | # Only process values prefixed with #define CONFIG_ | |
02409f8c | 10 | /^#define CONFIG_[A-Za-z0-9_][A-Za-z0-9_]*/ { |
2f155f6c GL |
11 | # Strip the #define prefix |
12 | s/#define *//; | |
13 | # Change to form CONFIG_*=VALUE | |
02409f8c | 14 | s/ */=/; |
2f155f6c GL |
15 | # Drop trailing spaces |
16 | s/ *$//; | |
17 | # drop quotes around string values | |
18 | s/="\(.*\)"$/=\1/; | |
19 | # Concatenate string values | |
20 | s/" *"//g; | |
2bad5df7 WD |
21 | # Assume strings as default - add quotes around values |
22 | s/=\(..*\)/="\1"/; | |
23 | # but remove again from decimal numbers | |
24 | s/="\([0-9][0-9]*\)"/=\1/; | |
25 | # ... and from hex numbers | |
26 | s/="\(0[Xx][0-9a-fA-F][0-9a-fA-F]*\)"/=\1/; | |
2979b263 BT |
27 | # ... and from configs defined from other configs |
28 | s/="\(CONFIG_[A-Za-z0-9_][A-Za-z0-9_]*\)"/=$(\1)/; | |
2f155f6c GL |
29 | # Change '1' and empty values to "y" (not perfect, but |
30 | # supports conditional compilation in the makefiles | |
31 | s/=$/=y/; | |
32 | s/=1$/=y/; | |
33 | # print the line | |
34 | p | |
35 | } |