scripts: ext-toolchain: add option to overwrite config
authorChristian Marangi <ansuelsmth@gmail.com>
Mon, 4 Jul 2022 16:22:18 +0000 (18:22 +0200)
committerChristian Marangi <ansuelsmth@gmail.com>
Sun, 24 Jul 2022 17:53:44 +0000 (19:53 +0200)
It can be useful to overwrite an already generated config.
Option are simply added at the end of the config and make defconfig
will overwrite the relevant option with the new one.

Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
scripts/ext-toolchain.sh

index b52f170b32b7da5981343c392cc3950f5dc1a5a7..c9ceb150c1969683e146a5d38edea45a08a77c27 100755 (executable)
@@ -50,6 +50,7 @@ BIN_SPECS="
        gdbserver: gdbserver
 "
 
        gdbserver: gdbserver
 "
 
+OVERWRITE_CONFIG=""
 
 test_c() {
        cat <<-EOT | "${CC:-false}" $CFLAGS -o /dev/null -x c - 2>/dev/null
 
 test_c() {
        cat <<-EOT | "${CC:-false}" $CFLAGS -o /dev/null -x c - 2>/dev/null
@@ -320,9 +321,13 @@ print_config() {
        fi
 
        # bail out if there is a .config already
        fi
 
        # bail out if there is a .config already
-       if [ -f "${0%/scripts/*}/.config" ]; then
-               echo "There already is a .config file, refusing to overwrite!" >&2
-               return 1
+       if [ -f "$config" ]; then
+               if [ "$OVERWRITE_CONFIG" == "" ]; then
+                       echo "There already is a .config file, refusing to overwrite!" >&2
+                       return 1
+               else
+                       echo "There already is a .config file, trying to overwrite!"
+               fi
        fi
 
        case "$mktarget" in */*)
        fi
 
        case "$mktarget" in */*)
@@ -330,8 +335,11 @@ print_config() {
                mktarget="${mktarget%/*}"
        ;; esac
 
                mktarget="${mktarget%/*}"
        ;; esac
 
+       if [ ! -f "$config" ]; then
+               touch "$config"
+       fi
 
 
-       echo "CONFIG_TARGET_${mktarget}=y" > "$config"
+       echo "CONFIG_TARGET_${mktarget}=y" >> "$config"
 
        if [ -n "$mksubtarget" ]; then
                echo "CONFIG_TARGET_${mktarget}_${mksubtarget}=y" >> "$config"
 
        if [ -n "$mksubtarget" ]; then
                echo "CONFIG_TARGET_${mktarget}_${mksubtarget}=y" >> "$config"
@@ -532,6 +540,10 @@ while [ -n "$1" ]; do
                        exit $?
                ;;
 
                        exit $?
                ;;
 
+               --overwrite-config)
+                       OVERWRITE_CONFIG=y
+               ;;
+
                --config)
                        if probe_cc; then
                                print_config "$1"
                --config)
                        if probe_cc; then
                                print_config "$1"
@@ -573,6 +585,8 @@ while [ -n "$1" ]; do
                        echo -e "  is used to specify C flags to be passed to the "     >&2
                        echo -e "  cross compiler when performing tests."               >&2
                        echo -e "  This parameter may be repeated multiple times."      >&2
                        echo -e "  is used to specify C flags to be passed to the "     >&2
                        echo -e "  cross compiler when performing tests."               >&2
                        echo -e "  This parameter may be repeated multiple times."      >&2
+                       echo -e "  Use --overwrite-config before --config to overwrite" >&2
+                       echo -e "  an already present config with the required changes.">&2
                        exit 1
                ;;
 
                        exit 1
                ;;