configure: Fix creation of symbolic links for MinGW toolchain
The MinGW toolchain on w32/w64 hosts does not create symbolic links, but implements 'ln -s' similar to 'cp -r'. In incremental out of tree builds, this resulted in files which were not updated when their counterparts in the QEMU source tree changed. Especially for Makefile* this happened very often. With this patch, the 'symlinked' files are now always updated for out of tree builds. Similar code was already used for the symbolic link of libcacard/Makefile. The symlink macro always removes the target before it is created again, therefore the rm command for libcacard/Makefile was redundant and is removed now. Macro symlink is also used with directories. To remove them on w32 hosts, a recursive rm is needed. v2: Quote arguments in shell function symlink, and also quote any argument which is passed to symlink and which contains macros. This should reduce the chance of accidents caused by rm -rf. Signed-off-by: Stefan Weil <sw@weilnetz.de> Signed-off-by: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>
This commit is contained in:
		
							parent
							
								
									42fe1c245f
								
							
						
					
					
						commit
						72b8b5a19a
					
				
							
								
								
									
										21
									
								
								configure
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										21
									
								
								configure
									
									
									
									
										vendored
									
									
								
							@ -41,8 +41,8 @@ compile_prog() {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
# symbolically link $1 to $2.  Portable version of "ln -sf".
 | 
					# symbolically link $1 to $2.  Portable version of "ln -sf".
 | 
				
			||||||
symlink() {
 | 
					symlink() {
 | 
				
			||||||
  rm -f $2
 | 
					  rm -rf "$2"
 | 
				
			||||||
  ln -s $1 $2
 | 
					  ln -s "$1" "$2"
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# check whether a command is available to this shell (may be either an
 | 
					# check whether a command is available to this shell (may be either an
 | 
				
			||||||
@ -3435,7 +3435,7 @@ fi
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
for d in libdis libdis-user; do
 | 
					for d in libdis libdis-user; do
 | 
				
			||||||
    mkdir -p $d
 | 
					    mkdir -p $d
 | 
				
			||||||
    symlink $source_path/Makefile.dis $d/Makefile
 | 
					    symlink "$source_path/Makefile.dis" "$d/Makefile"
 | 
				
			||||||
    echo > $d/config.mak
 | 
					    echo > $d/config.mak
 | 
				
			||||||
done
 | 
					done
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -3444,13 +3444,13 @@ if test "$linux" = "yes" ; then
 | 
				
			|||||||
  mkdir -p linux-headers
 | 
					  mkdir -p linux-headers
 | 
				
			||||||
  case "$cpu" in
 | 
					  case "$cpu" in
 | 
				
			||||||
  i386|x86_64)
 | 
					  i386|x86_64)
 | 
				
			||||||
    symlink $source_path/linux-headers/asm-x86 linux-headers/asm
 | 
					    symlink "$source_path/linux-headers/asm-x86" linux-headers/asm
 | 
				
			||||||
    ;;
 | 
					    ;;
 | 
				
			||||||
  ppcemb|ppc|ppc64)
 | 
					  ppcemb|ppc|ppc64)
 | 
				
			||||||
    symlink $source_path/linux-headers/asm-powerpc linux-headers/asm
 | 
					    symlink "$source_path/linux-headers/asm-powerpc" linux-headers/asm
 | 
				
			||||||
    ;;
 | 
					    ;;
 | 
				
			||||||
  s390x)
 | 
					  s390x)
 | 
				
			||||||
    symlink $source_path/linux-headers/asm-s390 linux-headers/asm
 | 
					    symlink "$source_path/linux-headers/asm-s390" linux-headers/asm
 | 
				
			||||||
    ;;
 | 
					    ;;
 | 
				
			||||||
  esac
 | 
					  esac
 | 
				
			||||||
fi
 | 
					fi
 | 
				
			||||||
@ -3515,7 +3515,7 @@ mkdir -p $target_dir/kvm
 | 
				
			|||||||
if test "$target" = "arm-linux-user" -o "$target" = "armeb-linux-user" -o "$target" = "arm-bsd-user" -o "$target" = "armeb-bsd-user" ; then
 | 
					if test "$target" = "arm-linux-user" -o "$target" = "armeb-linux-user" -o "$target" = "arm-bsd-user" -o "$target" = "armeb-bsd-user" ; then
 | 
				
			||||||
  mkdir -p $target_dir/nwfpe
 | 
					  mkdir -p $target_dir/nwfpe
 | 
				
			||||||
fi
 | 
					fi
 | 
				
			||||||
symlink $source_path/Makefile.target $target_dir/Makefile
 | 
					symlink "$source_path/Makefile.target" "$target_dir/Makefile"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
echo "# Automatically generated by configure - do not modify" > $config_target_mak
 | 
					echo "# Automatically generated by configure - do not modify" > $config_target_mak
 | 
				
			||||||
@ -3958,7 +3958,7 @@ do
 | 
				
			|||||||
done
 | 
					done
 | 
				
			||||||
mkdir -p $DIRS
 | 
					mkdir -p $DIRS
 | 
				
			||||||
for f in $FILES ; do
 | 
					for f in $FILES ; do
 | 
				
			||||||
    if [ -e "$source_path/$f" ] && ! [ -e "$f" ]; then
 | 
					    if [ -e "$source_path/$f" ] && [ "$source_path" != `pwd` ]; then
 | 
				
			||||||
        symlink "$source_path/$f" "$f"
 | 
					        symlink "$source_path/$f" "$f"
 | 
				
			||||||
    fi
 | 
					    fi
 | 
				
			||||||
done
 | 
					done
 | 
				
			||||||
@ -3981,7 +3981,7 @@ for hwlib in 32 64; do
 | 
				
			|||||||
  mkdir -p $d
 | 
					  mkdir -p $d
 | 
				
			||||||
  mkdir -p $d/ide
 | 
					  mkdir -p $d/ide
 | 
				
			||||||
  mkdir -p $d/usb
 | 
					  mkdir -p $d/usb
 | 
				
			||||||
  symlink $source_path/Makefile.hw $d/Makefile
 | 
					  symlink "$source_path/Makefile.hw" "$d/Makefile"
 | 
				
			||||||
  mkdir -p $d/9pfs
 | 
					  mkdir -p $d/9pfs
 | 
				
			||||||
  echo "QEMU_CFLAGS+=-DTARGET_PHYS_ADDR_BITS=$hwlib" > $d/config.mak
 | 
					  echo "QEMU_CFLAGS+=-DTARGET_PHYS_ADDR_BITS=$hwlib" > $d/config.mak
 | 
				
			||||||
done
 | 
					done
 | 
				
			||||||
@ -3989,7 +3989,6 @@ done
 | 
				
			|||||||
if [ "$source_path" != `pwd` ]; then
 | 
					if [ "$source_path" != `pwd` ]; then
 | 
				
			||||||
    # out of tree build
 | 
					    # out of tree build
 | 
				
			||||||
    mkdir -p libcacard
 | 
					    mkdir -p libcacard
 | 
				
			||||||
    rm -f libcacard/Makefile
 | 
					 | 
				
			||||||
    symlink "$source_path/libcacard/Makefile" libcacard/Makefile
 | 
					    symlink "$source_path/libcacard/Makefile" libcacard/Makefile
 | 
				
			||||||
fi
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -3997,7 +3996,7 @@ d=libuser
 | 
				
			|||||||
mkdir -p $d
 | 
					mkdir -p $d
 | 
				
			||||||
mkdir -p $d/trace
 | 
					mkdir -p $d/trace
 | 
				
			||||||
mkdir -p $d/qom
 | 
					mkdir -p $d/qom
 | 
				
			||||||
symlink $source_path/Makefile.user $d/Makefile
 | 
					symlink "$source_path/Makefile.user" "$d/Makefile"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if test "$docs" = "yes" ; then
 | 
					if test "$docs" = "yes" ; then
 | 
				
			||||||
  mkdir -p QMP
 | 
					  mkdir -p QMP
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user