aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael S. Tsirkin <mst@redhat.com>2014-04-28 15:09:01 +0300
committerMichael S. Tsirkin <mst@redhat.com>2014-05-07 19:14:57 +0300
commitcab00a5aa163b6bba3043ef0636c4a3a061511ec (patch)
treed9dc6c1fa37107974b736dbad7bd3c7ea48a7b9d
parent62622c11f230edddcc47aabe2d988555bf125993 (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>
-rwxr-xr-xconfigure12
1 files changed, 10 insertions, 2 deletions
diff --git a/configure b/configure
index 8c50d78f87..b18f531606 100755
--- a/configure
+++ b/configure
@@ -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