File: define2mk.sed

package info (click to toggle)
u-boot 2025.01-3.1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 330,748 kB
  • sloc: ansic: 2,627,855; python: 60,773; sh: 41,641; asm: 21,854; makefile: 15,048; perl: 12,447; cs: 6,763; cpp: 1,868; yacc: 1,100; lex: 747; awk: 57; tcl: 32; sed: 24
file content (37 lines) | stat: -rw-r--r-- 1,123 bytes parent folder | download | duplicates (9)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#
# Sed script to parse CPP macros and generate output usable by make
#
# It is expected that this script is fed the output of 'gpp -dM'
# which preprocesses the common.h header files and outputs the final
# list of CPP macros (and whitespace is sanitized)
#

# Only process values prefixed with #define CONFIG_
/^#define CONFIG_[A-Za-z0-9_][A-Za-z0-9_]*/ {
	# Strip the #define prefix
	s/#define *//;
	# Change to form CONFIG_*=VALUE
	s/  */=/;
	# Drop trailing spaces
	s/ *$//;
	# drop quotes around string values
	s/="\(.*\)"$/=\1/;
	# Concatenate string values
	s/" *"//g;
	# Assume strings as default - add quotes around values
	s/=\(..*\)/="\1"/;
	# but remove again from decimal numbers
	s/="\([0-9][0-9]*\)"/=\1/;
	# ... and from negative decimal numbers
	s/="\(-[1-9][0-9]*\)"/=\1/;
	# ... and from hex numbers
	s/="\(0[Xx][0-9a-fA-F][0-9a-fA-F]*\)"/=\1/;
	# ... and from configs defined from other configs
	s/="\(CONFIG_[A-Za-z0-9_][A-Za-z0-9_]*\)"/=$(\1)/;
	# Change '1' and empty values to "y" (not perfect, but
	# supports conditional compilation in the makefiles
	s/=$/=y/;
	s/=1$/=y/;
	# print the line
	p
}