summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHib Eris <hib@hiberis.nl>2012-02-08 12:36:28 (GMT)
committerQt by Nokia <qt-info@nokia.com>2012-02-29 16:46:21 (GMT)
commit28f294e1e98f2437ce0d9614e698df7c8dc52dc6 (patch)
tree210360100acde9fb069f3b4a8611db8139ba41b9
parentc354d16cc64cf516a0b5149cdc9ef74de096a998 (diff)
downloadQt-28f294e1e98f2437ce0d9614e698df7c8dc52dc6.zip
Qt-28f294e1e98f2437ce0d9614e698df7c8dc52dc6.tar.gz
Qt-28f294e1e98f2437ce0d9614e698df7c8dc52dc6.tar.bz2
Implement missing replacements when installing .pc files for win32
This implements replacements for win32 makefile generators similar to the replacement functionality in unix makefile generators. To enable Makefile code generation for replacements in win32 makefile generators, you must set QMAKE_STREAM_EDITOR to e.g. sed. When building for win32, sed is normally only available in the mingw/msys build environment and when cross compiling on unix. In these cases QMAKE_STREAM_EDITOR is set to sed in qmake.conf. For other win32 build environments QMAKE_STREAM_EDITOR is not set in qmake.conf and the replacements Makefile code is not generated. (cherry picked from qtbase commit 78faefdbb1ccc296c967dde40e2a7a1c78e4cec2) Change-Id: Ie5de5d517eafaeaa2544f1e972aec3fe11d0a6f1 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
-rw-r--r--mkspecs/unsupported/win32-g++-cross/qmake.conf1
-rw-r--r--mkspecs/win32-g++/qmake.conf1
-rw-r--r--qmake/generators/win32/winmakefile.cpp18
3 files changed, 19 insertions, 1 deletions
diff --git a/mkspecs/unsupported/win32-g++-cross/qmake.conf b/mkspecs/unsupported/win32-g++-cross/qmake.conf
index 97a088c..dbf5e61 100644
--- a/mkspecs/unsupported/win32-g++-cross/qmake.conf
+++ b/mkspecs/unsupported/win32-g++-cross/qmake.conf
@@ -79,6 +79,7 @@ QMAKE_SH = bash
MINGW_IN_SHELL = 1
QMAKE_DIR_SEP = /
QMAKE_COPY = cp
+QMAKE_STREAM_EDITOR = sed
QMAKE_COPY_DIR = cp -R
QMAKE_MOVE = mv
QMAKE_DEL_FILE = rm -f
diff --git a/mkspecs/win32-g++/qmake.conf b/mkspecs/win32-g++/qmake.conf
index 220af32..5aa8a2d 100644
--- a/mkspecs/win32-g++/qmake.conf
+++ b/mkspecs/win32-g++/qmake.conf
@@ -79,6 +79,7 @@ QMAKE_LIBS_QT_ENTRY = -lmingw32 -lqtmain
QMAKE_DIR_SEP = /
QMAKE_QMAKE ~= s,\\\\,/,
QMAKE_COPY = cp
+ QMAKE_STREAM_EDITOR = sed
QMAKE_COPY_DIR = cp -r
QMAKE_MOVE = mv
QMAKE_DEL_FILE = rm
diff --git a/qmake/generators/win32/winmakefile.cpp b/qmake/generators/win32/winmakefile.cpp
index 3cdabdb..f692b49 100644
--- a/qmake/generators/win32/winmakefile.cpp
+++ b/qmake/generators/win32/winmakefile.cpp
@@ -650,6 +650,7 @@ void Win32MakefileGenerator::writeStandardParts(QTextStream &t)
t << "DEF_FILE = " << varList("DEF_FILE") << endl;
t << "RES_FILE = " << varList("RES_FILE") << endl; // Not on mingw, can't see why not though...
t << "COPY = " << var("QMAKE_COPY") << endl;
+ t << "SED = " << var("QMAKE_STREAM_EDITOR") << endl;
t << "COPY_FILE = " << var("QMAKE_COPY_FILE") << endl;
t << "COPY_DIR = " << var("QMAKE_COPY_DIR") << endl;
t << "DEL_FILE = " << var("QMAKE_DEL_FILE") << endl;
@@ -847,7 +848,22 @@ QString Win32MakefileGenerator::defaultInstall(const QString &t)
dst_pc = filePrefixRoot(root, targetdir + dst_pc);
if(!ret.isEmpty())
ret += "\n\t";
- ret += "-$(INSTALL_FILE) \"" + pkgConfigFileName(true) + "\" \"" + dst_pc + "\"";
+ const QString replace_rule("QMAKE_PKGCONFIG_INSTALL_REPLACE");
+ if (project->isEmpty(replace_rule)
+ || project->isActiveConfig("no_sed_meta_install")
+ || project->isEmpty("QMAKE_STREAM_EDITOR")) {
+ ret += "-$(INSTALL_FILE) \"" + pkgConfigFileName(true) + "\" \"" + dst_pc + "\"";
+ } else {
+ ret += "-$(SED)";
+ QStringList replace_rules = project->values(replace_rule);
+ for (int r = 0; r < replace_rules.size(); ++r) {
+ const QString match = project->first(replace_rules.at(r) + ".match"),
+ replace = project->first(replace_rules.at(r) + ".replace");
+ if (!match.isEmpty() /*&& match != replace*/)
+ ret += " -e \"s," + match + "," + replace + ",g\"";
+ }
+ ret += " \"" + pkgConfigFileName(true) + "\" >\"" + dst_pc + "\"";
+ }
if(!uninst.isEmpty())
uninst.append("\n\t");
uninst.append("-$(DEL_FILE) \"" + dst_pc + "\"");