diff --git a/Makefile b/Makefile index 87779d791..590512191 100644 --- a/Makefile +++ b/Makefile @@ -509,7 +509,7 @@ include $(srctree)/Makefile.flags # with it and forgot to run make oldconfig. # If kconfig.d is missing then we are probarly in a cleaned tree so # we execute the config step to be sure to catch updated Kconfig files -include/autoconf.h: .kconfig.d .config gen_build_files +include/autoconf.h: .kconfig.d .config | gen_build_files $(Q)$(MAKE) -f $(srctree)/Makefile silentoldconfig else diff --git a/scripts/gen_build_files.sh b/scripts/gen_build_files.sh index 647c7daf7..a98f509ce 100755 --- a/scripts/gen_build_files.sh +++ b/scripts/gen_build_files.sh @@ -11,20 +11,19 @@ srctree="$1" src="$srctree/include/applets.src.h" dst="include/applets.h" s=`sed -n 's@^//applet:@@p' -- "$srctree"/*/*.c "$srctree"/*/*/*.c` -echo "/* DO NOT EDIT. This file is generated from applets.src.h */" >"$dst.$$.tmp" +old=`cat "$dst" 2>/dev/null` # Why "IFS='' read -r REPLY"?? # This atrocity is needed to read lines without mangling. # IFS='' prevents whitespace trimming, # -r suppresses backslash handling. +new=`echo "/* DO NOT EDIT. This file is generated from applets.src.h */" while IFS='' read -r REPLY; do test x"$REPLY" = x"INSERT" && REPLY="$s" printf "%s\n" "$REPLY" -done <"$src" >>"$dst.$$.tmp" -if test -f "$dst" && cmp -s "$dst.$$.tmp" "$dst"; then - rm -- "$dst.$$.tmp" -else +done <"$src"` +if test x"$new" != x"$old"; then echo " GEN $dst" - mv -- "$dst.$$.tmp" "$dst" + printf "%s\n" "$new" >"$dst" fi # (Re)generate include/usage.h @@ -35,20 +34,15 @@ dst="include/usage.h" # with space or tab # (note: we need to use \\\\ because of ``) s=`sed -n -e 's@^//usage:\([ \t].*\)$@\1 \\\\@p' -e 's@^//usage:\([^ \t].*\)$@\n\1 \\\\@p' -- "$srctree"/*/*.c "$srctree"/*/*/*.c` -echo "/* DO NOT EDIT. This file is generated from usage.src.h */" >"$dst.$$.tmp" -# Why "IFS='' read -r REPLY"?? -# This atrocity is needed to read lines without mangling. -# IFS='' prevents whitespace trimming, -# -r suppresses backslash handling. +old=`cat "$dst" 2>/dev/null` +new=`echo "/* DO NOT EDIT. This file is generated from usage.src.h */" while IFS='' read -r REPLY; do test x"$REPLY" = x"INSERT" && REPLY="$s" printf "%s\n" "$REPLY" -done <"$src" >>"$dst.$$.tmp" -if test -f "$dst" && cmp -s "$dst.$$.tmp" "$dst"; then - rm -- "$dst.$$.tmp" -else +done <"$src"` +if test x"$new" != x"$old"; then echo " GEN $dst" - mv -- "$dst.$$.tmp" "$dst" + printf "%s\n" "$new" >"$dst" fi # (Re)generate */Kbuild and */Config.in @@ -61,16 +55,15 @@ find -type d | while read -r d; do s=`sed -n 's@^//kbuild:@@p' -- "$srctree/$d"/*.c` - echo "# DO NOT EDIT. This file is generated from Kbuild.src" >"$dst.$$.tmp" + old=`cat "$dst" 2>/dev/null` + new=`echo "# DO NOT EDIT. This file is generated from Kbuild.src" while IFS='' read -r REPLY; do test x"$REPLY" = x"INSERT" && REPLY="$s" printf "%s\n" "$REPLY" - done <"$src" >>"$dst.$$.tmp" - if test -f "$dst" && cmp -s "$dst.$$.tmp" "$dst"; then - rm -- "$dst.$$.tmp" - else + done <"$src"` + if test x"$new" != x"$old"; then echo " GEN $dst" - mv -- "$dst.$$.tmp" "$dst" + printf "%s\n" "$new" >"$dst" fi fi @@ -81,16 +74,15 @@ find -type d | while read -r d; do s=`sed -n 's@^//config:@@p' -- "$srctree/$d"/*.c` - echo "# DO NOT EDIT. This file is generated from Config.src" >"$dst.$$.tmp" + old=`cat "$dst" 2>/dev/null` + new=`echo "# DO NOT EDIT. This file is generated from Config.src" while IFS='' read -r REPLY; do test x"$REPLY" = x"INSERT" && REPLY="$s" printf "%s\n" "$REPLY" - done <"$src" >>"$dst.$$.tmp" - if test -f "$dst" && cmp -s "$dst.$$.tmp" "$dst"; then - rm -- "$dst.$$.tmp" - else + done <"$src"` + if test x"$new" != x"$old"; then echo " GEN $dst" - mv -- "$dst.$$.tmp" "$dst" + printf "%s\n" "$new" >"$dst" fi fi done