1 # SPDX-License-Identifier: GPL-2.0+
3 # Copyright 2021 Google, Inc
5 # SPDX-License-Identifier: GPL-2.0+
7 # Awk script to parse a text file containing an environment and convert it
8 # to a C string which can be compiled into U-Boot.
10 # The resulting output is:
12 # #define CONFIG_EXTRA_ENV_TEXT "<environment here>"
14 # If the input is empty, this script outputs a comment instead.
17 # env holds the env variable we are currently processing
22 # Skip empty lines, as these are generated by the clang preprocessor
27 # Is this the start of a new environment variable?
28 if (match($0, "^([^ \t=][^ =]*)=(.*)$", arr)) {
29 if (length(env) != 0) {
30 # Record the value of the variable now completed
36 # Deal with += which concatenates the new string to the existing
38 if (length(env) != 0 && match(var, "^(.*)[+]$", var_arr))
40 # Allow var\+=val to indicate that the variable name is
41 # var+ and this is not actually a concatenation
42 if (substr(var_arr[1], length(var_arr[1])) == "\\") {
44 sub(/\\[+]$/, "+", var)
51 # Change newline to space
54 # Don't keep leading spaces generated by the previous blank line
55 if (length(env) == 0) {
64 # Record the value of the variable now completed. If the variable is
65 # empty it is not set.
66 if (length(env) != 0) {
70 if (length(vars) != 0) {
71 printf("%s", "#define CONFIG_EXTRA_ENV_TEXT \"")
73 # Print out all the variables
76 print var "=" vars[var] "\\0"