Grant Likely | 0f91019 | 2007-09-24 09:05:31 -0600 | [diff] [blame] | 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_ |
Marcel Moolenaar | 0760ff9 | 2008-02-22 10:48:07 -0800 | [diff] [blame] | 10 | /^#define CONFIG_[A-Za-z0-9_][A-Za-z0-9_]*/ { |
Grant Likely | 0f91019 | 2007-09-24 09:05:31 -0600 | [diff] [blame] | 11 | # Strip the #define prefix |
| 12 | s/#define *//; |
| 13 | # Change to form CONFIG_*=VALUE |
Marcel Moolenaar | 0760ff9 | 2008-02-22 10:48:07 -0800 | [diff] [blame] | 14 | s/ */=/; |
Grant Likely | 0f91019 | 2007-09-24 09:05:31 -0600 | [diff] [blame] | 15 | # Drop trailing spaces |
| 16 | s/ *$//; |
| 17 | # drop quotes around string values |
| 18 | s/="\(.*\)"$/=\1/; |
| 19 | # Concatenate string values |
| 20 | s/" *"//g; |
Wolfgang Denk | d52a799 | 2010-10-16 23:50:51 +0200 | [diff] [blame] | 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/; |
Masahiro Yamada | 8cc84e7 | 2016-06-11 18:44:10 +0900 | [diff] [blame^] | 25 | # ... and from negative decimal numbers |
| 26 | s/="\(-[1-9][0-9]*\)"/=\1/; |
Wolfgang Denk | d52a799 | 2010-10-16 23:50:51 +0200 | [diff] [blame] | 27 | # ... and from hex numbers |
| 28 | s/="\(0[Xx][0-9a-fA-F][0-9a-fA-F]*\)"/=\1/; |
Benoît Thébaudeau | 924e40c | 2013-04-11 09:35:48 +0000 | [diff] [blame] | 29 | # ... and from configs defined from other configs |
| 30 | s/="\(CONFIG_[A-Za-z0-9_][A-Za-z0-9_]*\)"/=$(\1)/; |
Grant Likely | 0f91019 | 2007-09-24 09:05:31 -0600 | [diff] [blame] | 31 | # Change '1' and empty values to "y" (not perfect, but |
| 32 | # supports conditional compilation in the makefiles |
| 33 | s/=$/=y/; |
| 34 | s/=1$/=y/; |
| 35 | # print the line |
| 36 | p |
| 37 | } |