summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorOswald Buddenhagen <oswald.buddenhagen@digia.com>2013-10-24 20:36:25 +0200
committerThe Qt Project <gerrit-noreply@qt-project.org>2013-10-31 12:33:55 +0100
commit67c9b5ad9f32bc0ef89a34f01b1f0602a4869865 (patch)
tree0a0be6315c3c21b93bd33b6884d5eff28cd52eb1
parent65b12fbdb13d34c61bcadd5cc8fd6ee28a8dfafd (diff)
fix filtering of system paths
the path filtering functions assume that DEFAULT_{INC,LIB}DIRS are newline separated lists of unquoted strings, which 8fbf959be broke. Task-number: QTBUG-33714 Change-Id: Ie07909963ac5155a8ac79ca9254f34069925e001 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
-rwxr-xr-xconfigure44
1 files changed, 23 insertions, 21 deletions
diff --git a/configure b/configure
index f8dcebe9f6..3a8665d1c2 100755
--- a/configure
+++ b/configure
@@ -93,6 +93,13 @@ shellEscape()
echo "$@" | sed 's/ /\ /g'
}
+shellQuoteLines()
+{
+ # The call of the outer echo makes the shell word-split the output of
+ # the nested pipe, thus effectively converting newlines to spaces.
+ echo `echo "$1" | sed 's,^[^ ]* .*$,"&",'`
+}
+
# Adds a new qmake variable to the cache
# Usage: QMakeVar mode varname contents
# where mode is one of: set, add, del
@@ -3028,35 +3035,26 @@ else
CFG_FRAMEWORK=no
fi
-# auto-detect default include and library search paths
-unset tty
-[ "$OPT_VERBOSE" = "yes" ] && tty=/dev/stderr
+# Auto-detect default include and library search paths.
-eval `LC_ALL=C $TEST_COMPILER $SYSROOT_FLAG $TEST_COMPILER_CXXFLAGS -xc++ -E -v - < /dev/null 2>&1 > /dev/null | $AWK '
+# Use intermediate variable to get around backtick/quote nesting problems.
+awkprog='
BEGIN { ORS = ""; FS = "="; incs = 0; libs = 0; }
function normalize(dir)
{
do {
odir = dir
- gsub(/\\/[^\\/]+\\/\\.\\./, "", dir)
+ gsub(/\/[^\/]+\/\.\./, "", dir)
} while (dir != odir);
do {
odir = dir
- gsub(/\\/\\./, "", dir)
+ gsub(/\/\./, "", dir)
} while (dir != odir);
sub("/$", "", dir);
return dir;
}
-function quote(s)
-{
- # We only handle spaces
- if (match(s, " ") != 0)
- return "\\\\\"" s "\\\\\"";
- return s;
-}
-
# extract include paths from indented lines between
# #include <...> search starts here:
# and
@@ -3064,7 +3062,7 @@ function quote(s)
/^\#include </ { yup=1; print "DEFAULT_INCDIRS=\""; next }
/^End of search/ { yup=0; print "\"\n" }
/ \(framework directory\)$/ { next }
-yup { print quote(normalize(substr($0, 2))) " "; ++incs }
+yup { print normalize(substr($0, 2)) "\n"; ++incs }
# extract from one line like LIBRARY_PATH=/one/path:/another/path:...
$1 == "LIBRARY_PATH" {
@@ -3073,7 +3071,7 @@ $1 == "LIBRARY_PATH" {
for (lib in library_paths) {
dir = normalize(library_paths[lib]);
if (!(dir in dirs)) {
- print quote(dir) " ";
+ print dir "\n";
dirs[dir] = 1;
}
}
@@ -3082,10 +3080,14 @@ $1 == "LIBRARY_PATH" {
END {
if (incs == 0)
- print "DEFAULT_INCDIRS=\"/usr/include /usr/local/include\"\n";
+ print "DEFAULT_INCDIRS=\"/usr/include\n/usr/local/include\"\n";
if (libs == 0)
- print "DEFAULT_LIBDIRS=\"/lib /usr/lib\"\n";
-}' | tee $tty`
+ print "DEFAULT_LIBDIRS=\"/lib\n/usr/lib\"\n";
+}'
+
+unset tty
+[ "$OPT_VERBOSE" = "yes" ] && tty=/dev/stderr
+eval "`LC_ALL=C $TEST_COMPILER $SYSROOT_FLAG $TEST_COMPILER_CXXFLAGS -xc++ -E -v - < /dev/null 2>&1 > /dev/null | $AWK "$awkprog" | tee $tty`"
unset tty
#setup the build parts
@@ -6597,8 +6599,8 @@ host_build {
QT_TARGET_ARCH = $CFG_ARCH
} else {
QT_ARCH = $CFG_ARCH
- QMAKE_DEFAULT_LIBDIRS = $DEFAULT_LIBDIRS
- QMAKE_DEFAULT_INCDIRS = $DEFAULT_INCDIRS
+ QMAKE_DEFAULT_LIBDIRS = `shellQuoteLines "$DEFAULT_LIBDIRS"`
+ QMAKE_DEFAULT_INCDIRS = `shellQuoteLines "$DEFAULT_INCDIRS"`
}
QT_EDITION = $Edition
QT_CONFIG += $QT_CONFIG