Skip to contentSkip to conversation

Avoid unneeded rebuilds

PATCH New Stefan Weil 1 participant 1 message Jul 31, 2007

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 Avoid unneeded rebuilds

Today, a change of the target list for a QEMU build (caused by calling configure a second time) creates new files config-host.h and */config.h. So make is forced to re-compile a lot of files which depend on any of these two files - even when they did not change anything but their time stamp.

A small patch for configure improves this behaviour. Both header files are now saved before creating new ones. If nothing changed, the backup is restored. This is standard for other makes, for example Linux kernels.

It would be nice to see my patch applied to CVS HEAD.

Thanks,
Stefan

Index: configure
===================================================================
RCS file: /sources/qemu/qemu/configure,v
retrieving revision 1.150

configure +8 -0
diff -u -b -B -r1.150 configure
@@ -699,6 +699,8 @@
 
 #echo "Creating $config_mak and $config_h"
 
+test -f $config_h && mv $config_h ${config_h}~
+
 echo "# Automatically generated by configure - do not modify" > $config_mak
 echo "# Configured with: $0 $@" >> $config_mak
 echo "/* Automatically generated by configure - do not modify */" > $config_h
@@ -867,6 +869,8 @@
 
 echo "#define CONFIG_UNAME_RELEASE \"$uname_release\"" >> $config_h
 
+test -f ${config_h}~ && cmp -s $config_h ${config_h}~ && mv ${config_h}~ $config_h
+
 for target in $target_list; do
 target_dir="$target"
 config_mak=$target_dir/config.mak
@@ -915,6 +919,8 @@
 
 #echo "Creating $config_mak, $config_h and $target_dir/Makefile"
 
+test -f $config_h && mv $config_h ${config_h}~
+
 mkdir -p $target_dir
 mkdir -p $target_dir/fpu
 if test "$target" = "arm-linux-user" -o "$target" = "armeb-linux-user" ; then
@@ -1074,6 +1080,8 @@
     echo "CONFIG_COCOA=yes" >> $config_mak
 fi
 
+test -f ${config_h}~ && cmp -s $config_h ${config_h}~ && mv ${config_h}~ $config_h
+
 done # for target in $targets
 
 # build tree in object directory if source path is different from current one