Give more flexibility to define configs that can be interpreted by make, e.g. to define fallback values of configs like in the example below. Before this change, the config lines: #define CONFIG_SPL_MAX_SIZE 2048 #define CONFIG_SPL_PAD_TO CONFIG_SPL_MAX_SIZE would have been changed in autoconfig.mk into: CONFIG_SPL_MAX_SIZE=2048 CONFIG_SPL_PAD_TO="CONFIG_SPL_MAX_SIZE" Hence, a make recipe using as an argument to $(OBJCOPY): --pad-to=$(CONFIG_SPL_PAD_TO) would have issued: --pad-to="CONFIG_SPL_MAX_SIZE" which means nothing for $(OBJCOPY) and makes it fail. Thanks to this change, the config lines above are changed in autoconfig.mk into: CONFIG_SPL_MAX_SIZE=2048 CONFIG_SPL_PAD_TO=$(CONFIG_SPL_MAX_SIZE) Hence, the make recipe above now issues: --pad-to=2048 as expected from the defined config. Signed-off-by: Benoît Thébaudeau <benoit.thebaudeau@advansee.com> Reviewed-by: Tom Rini <trini@ti.com>
36 lines
1.0 KiB
Sed
36 lines
1.0 KiB
Sed
#
|
|
# 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 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
|
|
}
|