summaryrefslogtreecommitdiffstats
path: root/configure
diff options
context:
space:
mode:
authorOswald Buddenhagen <oswald.buddenhagen@nokia.com>2012-08-24 13:28:36 +0200
committerQt by Nokia <qt-info@nokia.com>2012-08-25 17:03:17 +0200
commit72a7c43e90917afd57564b881499322e92bbe78d (patch)
treebafc7d2c9b40ca1dffd77ca0643007b868e7f1b9 /configure
parentab9fde6c0cd7c50efe52f2923e79470f05f8a1b1 (diff)
filter standard paths from mysql_config & pg_config
standard paths should never be added to compiler/linker lines, as they are likely to mess up the lookup order. pkg-config does that filtering for us, but the home-grown config tools don't, so we need to take care of it. configure.exe does not have such auto-detection, so the change is not necessary there. Task-number: QTBUG-26850 Change-Id: I2f523d5cffb27c3d0a16cdef6ca8a4877c9983c0 Reviewed-by: Mark Brand <mabrand@mabrand.nl> Reviewed-by: Mitch Curtis <mitch.curtis@nokia.com> Reviewed-by: Jørgen Lind <jorgen.lind@nokia.com> Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com> Reviewed-by: Frederik Gladhorn <frederik.gladhorn@nokia.com>
Diffstat (limited to 'configure')
-rwxr-xr-xconfigure70
1 files changed, 65 insertions, 5 deletions
diff --git a/configure b/configure
index 9da128c506..7a72ba7396 100755
--- a/configure
+++ b/configure
@@ -248,6 +248,66 @@ linkerSupportsFlag()
compilerSupportsFlag "$lflags" >/dev/null 2>&1
}
+# $1: newline-separated list of default paths
+# stdin: input path
+# stdout: input path or nothing
+filterDefaultPaths()
+{
+ local path
+ path=`cat`
+ echo "$1" | grep "^$path\$" > /dev/null || echo "$path"
+}
+
+filterIncludePath()
+{
+ filterDefaultPaths "$DEFAULT_INCDIRS"
+}
+
+filterLibraryPath()
+{
+ filterDefaultPaths "$DEFAULT_LIBDIRS"
+}
+
+filterPathOptionsHelper()
+{
+ local flag defpaths sep p path
+ flag=$1; shift
+ defpaths=$1; shift
+ sep=
+ for p in "$@"; do
+ path=${p#$flag}
+ if [ "x$path" != "x$p" ]; then
+ path=`echo "$path" | filterDefaultPaths "$defpaths"`
+ test -z "$path" && continue
+ fi
+ # Re-quote for shell & qmake
+ p=`echo "$p" | sed 's,[^ ]* .*,"&",g'`
+ printf "%s%s" "$sep" "$p"
+ sep=" "
+ done
+ echo
+}
+
+# $1: flag
+# $2: newline-separated list of default paths
+# stdin: list of command line options
+# sdout: stdin without the options naming default paths
+filterPathOptions()
+{
+ # The eval does escape interpretation for us
+ eval filterPathOptionsHelper $1 "\"$2\"" "`cat`"
+}
+
+filterIncludeOptions()
+{
+ filterPathOptions -I "$DEFAULT_INCDIRS"
+}
+
+filterLibraryOptions()
+{
+ filterPathOptions -L "$DEFAULT_LIBDIRS"
+}
+
#-------------------------------------------------------------------------------
# device options
#-------------------------------------------------------------------------------
@@ -4046,9 +4106,9 @@ for _SQLDR in $CFG_SQL_AVAILABLE; do
if [ "$CFG_SQL_mysql" != "no" ]; then
[ -z "$CFG_MYSQL_CONFIG" ] && CFG_MYSQL_CONFIG=`"$WHICH" mysql_config`
if [ -x "$CFG_MYSQL_CONFIG" ]; then
- QT_CFLAGS_MYSQL=`$CFG_MYSQL_CONFIG --include 2>/dev/null`
- QT_LFLAGS_MYSQL_R=`$CFG_MYSQL_CONFIG --libs_r 2>/dev/null`
- QT_LFLAGS_MYSQL=`$CFG_MYSQL_CONFIG --libs 2>/dev/null`
+ QT_CFLAGS_MYSQL=`$CFG_MYSQL_CONFIG --include 2>/dev/null | filterIncludeOptions`
+ QT_LFLAGS_MYSQL_R=`$CFG_MYSQL_CONFIG --libs_r 2>/dev/null | filterLibraryOptions`
+ QT_LFLAGS_MYSQL=`$CFG_MYSQL_CONFIG --libs 2>/dev/null | filterLibraryOptions`
QT_MYSQL_VERSION=`$CFG_MYSQL_CONFIG --version 2>/dev/null`
QT_MYSQL_VERSION_MAJOR=`echo $QT_MYSQL_VERSION | cut -d . -f 1`
fi
@@ -4097,8 +4157,8 @@ for _SQLDR in $CFG_SQL_AVAILABLE; do
if [ "$CFG_SQL_psql" != "no" ]; then
# Be careful not to use native pg_config when cross building.
if [ "$XPLATFORM_MINGW" != "yes" ] && "$WHICH" pg_config >/dev/null 2>&1; then
- QT_CFLAGS_PSQL=`pg_config --includedir 2>/dev/null`
- QT_LFLAGS_PSQL=`pg_config --libdir 2>/dev/null`
+ QT_CFLAGS_PSQL=`pg_config --includedir 2>/dev/null | filterIncludePath`
+ QT_LFLAGS_PSQL=`pg_config --libdir 2>/dev/null | filterLibraryPath`
fi
[ -z "$QT_CFLAGS_PSQL" ] || QT_CFLAGS_PSQL="-I$QT_CFLAGS_PSQL"
[ -z "$QT_LFLAGS_PSQL" ] || QT_LFLAGS_PSQL="-L$QT_LFLAGS_PSQL"