summaryrefslogtreecommitdiffstats
path: root/tools/configure/configureapp.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tools/configure/configureapp.cpp')
-rw-r--r--tools/configure/configureapp.cpp81
1 files changed, 74 insertions, 7 deletions
diff --git a/tools/configure/configureapp.cpp b/tools/configure/configureapp.cpp
index 5ff4a67315..55ac3d997a 100644
--- a/tools/configure/configureapp.cpp
+++ b/tools/configure/configureapp.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
+** Copyright (C) 2013 Intel Corporation
** Contact: http://www.qt-project.org/legal
**
** This file is part of the tools applications of the Qt Toolkit.
@@ -244,6 +245,7 @@ Configure::Configure(int& argc, char** argv)
dictionary[ "CFG_GCC_SYSROOT" ] = "yes";
dictionary[ "SLOG2" ] = "no";
dictionary[ "SYSTEM_PROXIES" ] = "no";
+ dictionary[ "WERROR" ] = "auto";
//Only used when cross compiling.
dictionary[ "QT_INSTALL_SETTINGS" ] = "/etc/xdg";
@@ -891,6 +893,11 @@ void Configure::parseCmdLine()
dictionary[ "SYSTEM_PROXIES" ] = "no";
} else if (configCmdLine.at(i) == "-system-proxies") {
dictionary[ "SYSTEM_PROXIES" ] = "yes";
+ } else if (configCmdLine.at(i) == "-warnings-are-errors" ||
+ configCmdLine.at(i) == "-Werror") {
+ dictionary[ "WERROR" ] = "yes";
+ } else if (configCmdLine.at(i) == "-no-warnings-are-errors") {
+ dictionary[ "WERROR" ] = "no";
}
// Work around compiler nesting limitation
@@ -1291,7 +1298,7 @@ void Configure::parseCmdLine()
dictionary[ "QMAKEMAKEFILE" ] = "Makefile.win32";
} else if (dictionary[ "QMAKESPEC" ] == QString("win32-g++")) {
if (dictionary[ "MAKE" ].isEmpty()) dictionary[ "MAKE" ] = "mingw32-make";
- dictionary[ "QMAKEMAKEFILE" ] = "Makefile.win32-g++";
+ dictionary[ "QMAKEMAKEFILE" ] = "Makefile.unix";
} else {
if (dictionary[ "MAKE" ].isEmpty()) dictionary[ "MAKE" ] = "make";
dictionary[ "QMAKEMAKEFILE" ] = "Makefile.win32";
@@ -1361,8 +1368,14 @@ void Configure::parseCmdLine()
}
// Allow tests for private classes to be compiled against internal builds
- if (dictionary["BUILDDEV"] == "yes")
- qtConfig += "private_tests";
+ if (dictionary["BUILDDEV"] == "yes") {
+ qtConfig << "private_tests";
+ if (dictionary["WERROR"] != "no")
+ qmakeConfig << "warnings_are_errors";
+ } else {
+ if (dictionary["WERROR"] == "yes")
+ qmakeConfig << "warnings_are_errors";
+ }
if (dictionary["FORCE_ASSERTS"] == "yes")
qtConfig += "force_asserts";
@@ -1734,6 +1747,8 @@ bool Configure::displayHelp()
desc("SYSTEM_PROXIES", "yes", "-system-proxies", "Use system network proxies by default.");
desc("SYSTEM_PROXIES", "no", "-no-system-proxies", "Do not use system network proxies by default.\n");
+ desc("WERROR", "yes", "-warnings-are-errors", "Make warnings be treated as errors.");
+ desc("WERROR", "no", "-no-warnings-are-errors","Make warnings be treated normally.");
#if !defined(EVAL)
desc( "-qtnamespace <name>", "Wraps all Qt library code in 'namespace name {...}'.");
@@ -3707,12 +3722,64 @@ void Configure::buildQmake()
stream << "#AutoGenerated by configure.exe" << endl
<< "BUILD_PATH = " << QDir::toNativeSeparators(buildPath) << endl
<< "SOURCE_PATH = " << QDir::toNativeSeparators(sourcePath) << endl;
- stream << "QMAKESPEC = " << dictionary["QMAKESPEC"] << endl
- << "QT_VERSION = " << dictionary["VERSION"] << endl;
-
+ stream << "QT_VERSION = " << dictionary["VERSION"] << endl;
+ if (dictionary[ "QMAKESPEC" ] == QString("win32-g++")) {
+ stream << "QMAKESPEC = $(SOURCE_PATH)\\mkspecs\\win32-g++" << endl
+ << "EXTRA_CFLAGS = -DUNICODE" << endl
+ << "EXTRA_CXXFLAGS = -DUNICODE" << endl
+ << "QTOBJS = qfilesystemengine_win.o \\" << endl
+ << " qfilesystemiterator_win.o \\" << endl
+ << " qfsfileengine_win.o \\" << endl
+ << " qlocale_win.o \\" << endl
+ << " qsettings_win.o \\" << endl
+ << " qsystemlibrary.o \\" << endl
+ << " registry.o" << endl
+ << "QTSRCS=\"$(SOURCE_PATH)/src/corelib/io/qfilesystemengine_win.cpp\" \\" << endl
+ << " \"$(SOURCE_PATH)/src/corelib/io/qfilesystemiterator_win.cpp\" \\" << endl
+ << " \"$(SOURCE_PATH)/src/corelib/io/qfsfileengine_win.cpp\" \\" << endl
+ << " \"$(SOURCE_PATH)/src/corelib/io/qsettings_win.cpp\" \\" << endl
+ << " \"$(SOURCE_PATH)/src/corelib/tools/qlocale_win.cpp\" \\" << endl\
+ << " \"$(SOURCE_PATH)/src/corelib/plugin/qsystemlibrary.cpp\" \\" << endl
+ << " \"$(SOURCE_PATH)/tools/shared/windows/registry.cpp\"" << endl
+ << "EXEEXT=.exe" << endl
+ << "LFLAGS=-static -s -lole32 -luuid -ladvapi32 -lkernel32" << endl;
+ /*
+ ** SHELL is the full path of sh.exe, unless
+ ** 1) it is found in the current directory
+ ** 2) it is not found at all
+ ** 3) it is overridden on the command line with an existing file
+ ** ... otherwise it is always sh.exe. Specifically, SHELL from the
+ ** environment has no effect.
+ **
+ ** This check will fail if SHELL is explicitly set to a not
+ ** sh-compatible shell. This is not a problem, because configure.bat
+ ** will not do that.
+ */
+ stream << "ifeq ($(SHELL), sh.exe)" << endl
+ << " ifeq ($(wildcard $(CURDIR)/sh.exe), )" << endl
+ << " SH = 0" << endl
+ << " else" << endl
+ << " SH = 1" << endl
+ << " endif" << endl
+ << "else" << endl
+ << " SH = 1" << endl
+ << "endif" << endl
+ << "\n"
+ << "ifeq ($(SH), 1)" << endl
+ << " RM_F = rm -f" << endl
+ << " RM_RF = rm -rf" << endl
+ << "else" << endl
+ << " RM_F = del /f" << endl
+ << " RM_RF = rmdir /s /q" << endl
+ << "endif" << endl;
+ stream << "\n\n";
+ } else {
+ stream << "QMAKESPEC = " << dictionary["QMAKESPEC"] << endl;
+ }
if (dictionary["EDITION"] == "OpenSource" ||
dictionary["QT_EDITION"].contains("OPENSOURCE"))
- stream << "QMAKE_OPENSOURCE_EDITION = yes" << endl;
+ stream << "EXTRA_CPPFLAGS = -DQMAKE_OPENSOURCE_EDITION" << endl;
+
stream << "\n\n";
QFile in(sourcePath + "/qmake/" + dictionary["QMAKEMAKEFILE"]);