diff options
author | Michael S. Tsirkin <mst@redhat.com> | 2014-04-28 15:09:01 +0300 |
---|---|---|
committer | Michael S. Tsirkin <mst@redhat.com> | 2014-05-07 19:14:57 +0300 |
commit | cab00a5aa163b6bba3043ef0636c4a3a061511ec (patch) | |
tree | d9dc6c1fa37107974b736dbad7bd3c7ea48a7b9d /configure | |
parent | 62622c11f230edddcc47aabe2d988555bf125993 (diff) |
configure: make source tree build more robust
When source directory can be arrived at by two paths,
configure might misdetect an out of tree build.
The simplest way to trigger the problem is running
configure using a full path. E.g. (<firstpath> refers to qemu source
tree):
ln -s <firstpath> <secondpath>
cd <firstpath>
<secondpath>/configure
A more practical way is when make runs configure automatically:
1. cd <firstpath>/; ./configure
SRC_PATH=<firstpath>/ is written into config_host.mak
2. cd <secondpath>/; touch configure; make
make now runs <firstpath>/configure, so configure
assumes it's an out of tree build
When this happens configure overwrites parts of
the current tree with symlinks.
Make the test more robust: look for configure
in the current directory.
If there - we know it's a source build!
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Diffstat (limited to 'configure')
-rwxr-xr-x | configure | 12 |
1 files changed, 10 insertions, 2 deletions
@@ -403,6 +403,14 @@ fi # make source path absolute source_path=`cd "$source_path"; pwd` +# running configure in the source tree? +# we know that's the case if configure is there. +if test -f "./configure"; then + pwd_is_source_path="y" +else + pwd_is_source_path="n" +fi + check_define() { cat > $TMPC <<EOF #if !defined($1) @@ -2940,7 +2948,7 @@ EOF fdt=yes dtc_internal="yes" mkdir -p dtc - if [ "$source_path" != `pwd` ] ; then + if [ "$pwd_is_source_path" != "y" ] ; then symlink "$source_path/dtc/Makefile" "dtc/Makefile" symlink "$source_path/dtc/scripts" "dtc/scripts" fi @@ -5176,7 +5184,7 @@ do done mkdir -p $DIRS for f in $FILES ; do - if [ -e "$source_path/$f" ] && [ "$source_path" != `pwd` ]; then + if [ -e "$source_path/$f" ] && [ "$pwd_is_source_path" != "y" ]; then symlink "$source_path/$f" "$f" fi done |