From 90feedb6429df225b81bc279093ae1ca1278b391 Mon Sep 17 00:00:00 2001 From: Oswald Buddenhagen Date: Wed, 8 Feb 2012 11:38:07 +0100 Subject: bootstrap configure.exe on windows it is *ugly* to have the binary in the repository. this adds a few seconds to the windows build, as the configure needs to be rebuilt, obviously. that's almost negligible. Change-Id: I40ffde23b3c3af2b6bab3e78cd0a9f433214b563 Reviewed-by: Rohan McGovern --- tools/configure/Makefile.mingw | 92 +++++++++++++++++++++++ tools/configure/Makefile.win32 | 157 +++++++++++++++++++++++++++++++++++++++ tools/configure/configureapp.cpp | 22 ++++-- 3 files changed, 264 insertions(+), 7 deletions(-) create mode 100644 tools/configure/Makefile.mingw create mode 100644 tools/configure/Makefile.win32 (limited to 'tools/configure') diff --git a/tools/configure/Makefile.mingw b/tools/configure/Makefile.mingw new file mode 100644 index 0000000000..5951cb4e92 --- /dev/null +++ b/tools/configure/Makefile.mingw @@ -0,0 +1,92 @@ +CORESRC = $(QTSRC)src/corelib +TOOLSRC = $(QTSRC)tools +CONFSRC = $(TOOLSRC)/configure + +RAW_PCH = configure_pch.h +PCH = $(RAW_PCH).gch/c++ +CXX = g++ +DEFINES = -DUNICODE -DQT_NODLL -DQT_NO_DATASTREAM -DQT_NO_CODECS -DQT_NO_TEXTCODEC -DQT_NO_UNICODETABLES -DQT_LITE_COMPONENT -DQT_NO_STL -DQT_NO_COMPRESS -DQT_NO_THREAD -DQT_NO_QOBJECT -DQT_NO_GEOM_VARIANT -D_CRT_SECURE_NO_DEPRECATE -DQT_BOOTSTRAPPED -DCOMMERCIAL_VERSION +INCPATH = -I"../../include" -I"../../include/QtCore" -I"../../include/QtCore/$(QTVERSION)" -I"../../include/QtCore/$(QTVERSION)/QtCore" -I"$(TOOLSRC)/shared" -I"$(QTSRC)mkspecs/win32-g++" +CXXFLAGS_BARE = -fno-rtti -fno-exceptions -mthreads -Wall -Wextra $(DEFINES) $(INCPATH) +CXXFLAGS = -include $(RAW_PCH) $(CXXFLAGS_BARE) +LINK = g++ +LFLAGS = -Wl,-subsystem,console -mthreads +LIBS = -lole32 -ladvapi32 -luuid + +TARGET = ../../configure.exe + +OBJECTS = \ + main.o \ + configureapp.o \ + environment.o \ + tools.o \ + qbytearray.o \ + qbytearraymatcher.o \ + qhash.o \ + qlist.o \ + qlocale.o \ + qlocale_win.o \ + qlocale_tools.o \ + qvector.o \ + qutfcodec.o \ + qtextcodec.o \ + qglobal.o \ + qnumeric.o \ + qbuffer.o \ + qdatastream.o \ + qdir.o \ + qdiriterator.o \ + qfile.o \ + qfileinfo.o \ + qabstractfileengine.o \ + qfilesystementry.o \ + qfilesystemengine.o \ + qfilesystemengine_win.o \ + qfilesystemiterator_win.o \ + qfsfileengine.o \ + qfsfileengine_win.o \ + qfsfileengine_iterator.o \ + qiodevice.o \ + qtextstream.o \ + qlogging.o \ + qtemporaryfile.o \ + qsystemlibrary.o \ + qbitarray.o \ + qdatetime.o \ + qmap.o \ + qregexp.o \ + qstring.o \ + qstringlist.o \ + qvsnprintf.o \ + qvariant.o \ + qsystemerror.o \ + qurl.o \ + qmetatype.o \ + qmalloc.o \ + qxmlstream.o \ + qxmlutils.o \ + quuid.o \ + qcryptographichash.o \ + registry.o + +$(TARGET): $(OBJECTS) + $(LINK) $(LFLAGS) -o $(TARGET) $(OBJECTS) $(LIBS) + +$(OBJECTS): $(PCH) + +CHK_DIR_EXISTS = test -d +MKDIR=mkdir -p +$(PCH): $(CONFSRC)/configure_pch.h + @$(CHK_DIR_EXISTS) $(RAW_PCH).gch || $(MKDIR) $(RAW_PCH).gch + $(CXX) -x c++-header -c $(CXXFLAGS_BARE) -o $@ $< + +VPATH = $(CONFSRC):$(TOOLSRC)/shared/windows:$(CORESRC)/global:$(CORESRC)/kernel:$(CORESRC)/tools:$(CORESRC)/codecs:$(CORESRC)/io:$(CORESRC)/xml:$(CORESRC)/plugin + +main.o: $(CONFSRC)/configureapp.h +configureapp.o: $(CONFSRC)/configureapp.h $(CONFSRC)/environment.h $(CONFSRC)/tools.h +environment.o: $(CONFSRC)/environment.h +tools.o: $(CONFSRC)/tools.h + +clean: + -rm -f *.o + -rm -rf *.gch diff --git a/tools/configure/Makefile.win32 b/tools/configure/Makefile.win32 new file mode 100644 index 0000000000..92de55f137 --- /dev/null +++ b/tools/configure/Makefile.win32 @@ -0,0 +1,157 @@ +CORESRC = $(QTSRC)src\corelib +TOOLSRC = $(QTSRC)tools +CONFSRC = $(TOOLSRC)\configure + +PCH = configure_pch.pch +DEFINES = -DUNICODE -DQT_NODLL -DQT_NO_CODECS -DQT_NO_TEXTCODEC -DQT_NO_UNICODETABLES -DQT_LITE_COMPONENT -DQT_NO_STL -DQT_NO_COMPRESS -DQT_NO_THREAD -DQT_NO_QOBJECT -DQT_NO_GEOM_VARIANT -D_CRT_SECURE_NO_DEPRECATE -DQT_BOOTSTRAPPED -DCOMMERCIAL_VERSION +INCPATH = -I"..\..\include" -I"..\..\include\QtCore" -I"..\..\include\QtCore\$(QTVERSION)" -I"..\..\include\QtCore\$(QTVERSION)\QtCore" -I"$(TOOLSRC)\shared" -I"$(QTSRC)mkspecs\win32-msvc2008" +CXXFLAGS_BARE = -nologo -Zm200 -Zc:wchar_t -MT -W3 -GR -EHsc -w34100 -w34189 $(EXTRA_CXXFLAGS) $(DEFINES) $(INCPATH) +CXXFLAGS = -FIconfigure_pch.h -Yuconfigure_pch.h -Fp$(PCH) -MP $(CXXFLAGS_BARE) +LINK = link +LFLAGS = /NOLOGO /DYNAMICBASE /NXCOMPAT /INCREMENTAL:NO /SUBSYSTEM:CONSOLE "/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'" /MANIFEST /MANIFESTFILE:"configure.intermediate.manifest" +LIBS = ole32.lib advapi32.lib + +TARGET = ..\..\configure.exe + +OBJECTS = \ + main.obj \ + configureapp.obj \ + environment.obj \ + tools.obj \ + qbytearray.obj \ + qbytearraymatcher.obj \ + qhash.obj \ + qlist.obj \ + qlocale.obj \ + qlocale_win.obj \ + qlocale_tools.obj \ + qvector.obj \ + qutfcodec.obj \ + qtextcodec.obj \ + qglobal.obj \ + qnumeric.obj \ + qbuffer.obj \ + qdatastream.obj \ + qdir.obj \ + qdiriterator.obj \ + qfile.obj \ + qfileinfo.obj \ + qabstractfileengine.obj \ + qfilesystementry.obj \ + qfilesystemengine.obj \ + qfilesystemengine_win.obj \ + qfilesystemiterator_win.obj \ + qfsfileengine.obj \ + qfsfileengine_win.obj \ + qfsfileengine_iterator.obj \ + qiodevice.obj \ + qtextstream.obj \ + qlogging.obj \ + qtemporaryfile.obj \ + qsystemlibrary.obj \ + qbitarray.obj \ + qdatetime.obj \ + qmap.obj \ + qregexp.obj \ + qstring.obj \ + qstringlist.obj \ + qvsnprintf.obj \ + qvariant.obj \ + qsystemerror.obj \ + qurl.obj \ + qmetatype.obj \ + qmalloc.obj \ + qxmlstream.obj \ + qxmlutils.obj \ + quuid.obj \ + qcryptographichash.obj \ + registry.obj + +$(TARGET): $(OBJECTS) + $(LINK) $(LFLAGS) /OUT:$(TARGET) @<< + $(OBJECTS) $(LIBS) +<< + mt.exe -nologo -manifest "configure.intermediate.manifest" -outputresource:$(TARGET);1 + +clean: + -del *.obj + -del *.pch + -del configure.intermediate.manifest + +$(PCH): $(CONFSRC)\configure_pch.h + $(CXX) -c -Yc $(CXXFLAGS_BARE) -Fp$@ -Foconfigure_pch.obj -TP $** + +main.obj: $(CONFSRC)\main.cpp $(CONFSRC)\configureapp.h $(PCH) +configureapp.obj: $(CONFSRC)\configureapp.cpp $(CONFSRC)\configureapp.h $(CONFSRC)\environment.h $(CONFSRC)\tools.h $(PCH) +environment.obj: $(CONFSRC)\environment.cpp $(CONFSRC)\environment.h $(PCH) +tools.obj: $(CONFSRC)\tools.cpp $(CONFSRC)\tools.h $(PCH) +registry.obj: $(TOOLSRC)\shared\windows\registry.cpp $(PCH) +qbytearray.obj: $(CORESRC)\tools\qbytearray.cpp $(PCH) +qbytearraymatcher.obj: $(CORESRC)\tools\qbytearraymatcher.cpp $(PCH) +qhash.obj: $(CORESRC)\tools\qhash.cpp $(PCH) +qlist.obj: $(CORESRC)\tools\qlist.cpp $(PCH) +qlocale.obj: $(CORESRC)\tools\qlocale.cpp $(PCH) +qlocale_win.obj: $(CORESRC)\tools\qlocale_win.cpp $(PCH) +qlocale_tools.obj: $(CORESRC)\tools\qlocale_tools.cpp $(PCH) +qvector.obj: $(CORESRC)\tools\qvector.cpp $(PCH) +qutfcodec.obj: $(CORESRC)\codecs\qutfcodec.cpp $(PCH) +qtextcodec.obj: $(CORESRC)\codecs\qtextcodec.cpp $(PCH) +qglobal.obj: $(CORESRC)\global\qglobal.cpp $(PCH) +qnumeric.obj: $(CORESRC)\global\qnumeric.cpp $(PCH) +qbuffer.obj: $(CORESRC)\io\qbuffer.cpp $(PCH) +qdatastream.obj: $(CORESRC)\io\qdatastream.cpp $(PCH) +qdir.obj: $(CORESRC)\io\qdir.cpp $(PCH) +qdiriterator.obj: $(CORESRC)\io\qdiriterator.cpp $(PCH) +qfile.obj: $(CORESRC)\io\qfile.cpp $(PCH) +qfileinfo.obj: $(CORESRC)\io\qfileinfo.cpp $(PCH) +qabstractfileengine.obj: $(CORESRC)\io\qabstractfileengine.cpp $(PCH) +qfilesystementry.obj: $(CORESRC)\io\qfilesystementry.cpp $(PCH) +qfilesystemengine.obj: $(CORESRC)\io\qfilesystemengine.cpp $(PCH) +qfilesystemengine_win.obj: $(CORESRC)\io\qfilesystemengine_win.cpp $(PCH) +qfilesystemiterator_win.obj: $(CORESRC)\io\qfilesystemiterator_win.cpp $(PCH) +qfsfileengine.obj: $(CORESRC)\io\qfsfileengine.cpp $(PCH) +qfsfileengine_win.obj: $(CORESRC)\io\qfsfileengine_win.cpp $(PCH) +qfsfileengine_iterator.obj: $(CORESRC)\io\qfsfileengine_iterator.cpp $(PCH) +qiodevice.obj: $(CORESRC)\io\qiodevice.cpp $(PCH) +qtextstream.obj: $(CORESRC)\io\qtextstream.cpp $(PCH) +qtemporaryfile.obj: $(CORESRC)\io\qtemporaryfile.cpp $(PCH) +qsystemlibrary.obj: $(CORESRC)\plugin\qsystemlibrary.cpp $(PCH) +qbitarray.obj: $(CORESRC)\tools\qbitarray.cpp $(PCH) +qdatetime.obj: $(CORESRC)\tools\qdatetime.cpp $(PCH) +qmap.obj: $(CORESRC)\tools\qmap.cpp $(PCH) +qregexp.obj: $(CORESRC)\tools\qregexp.cpp $(PCH) +qstring.obj: $(CORESRC)\tools\qstring.cpp $(PCH) +qstringlist.obj: $(CORESRC)\tools\qstringlist.cpp $(PCH) +qvsnprintf.obj: $(CORESRC)\tools\qvsnprintf.cpp $(PCH) +qvariant.obj: $(CORESRC)\kernel\qvariant.cpp $(PCH) +qsystemerror.obj: $(CORESRC)\kernel\qsystemerror.cpp $(PCH) +qurl.obj: $(CORESRC)\io\qurl.cpp $(PCH) +qline.obj: $(CORESRC)\tools\qline.cpp $(PCH) +qsize.obj: $(CORESRC)\tools\qsize.cpp $(PCH) +qpoint.obj: $(CORESRC)\tools\qpoint.cpp $(PCH) +qrect.obj: $(CORESRC)\tools\qrect.cpp $(PCH) +qmetatype.obj: $(CORESRC)\kernel\qmetatype.cpp $(PCH) +qmalloc.obj: $(CORESRC)\global\qmalloc.cpp $(PCH) +qxmlstream.obj: $(CORESRC)\xml\qxmlstream.cpp $(PCH) +qxmlutils.obj: $(CORESRC)\xml\qxmlutils.cpp $(PCH) +quuid.obj: $(CORESRC)\plugin\quuid.cpp $(PCH) +qcryptographichash.obj: $(CORESRC)\tools\qcryptographichash.cpp $(PCH) + +{$(CONFSRC)}.cpp{}.obj:: + $(CXX) -c $(CXXFLAGS) $< +{$(TOOLSRC)\shared\windows}.cpp{}.obj:: + $(CXX) -c $(CXXFLAGS) $< +{$(CORESRC)\tools}.cpp{}.obj:: + $(CXX) -c $(CXXFLAGS) $< +{$(CORESRC)\codecs}.cpp{}.obj:: + $(CXX) -c $(CXXFLAGS) $< +{$(CORESRC)\global}.cpp{}.obj:: + $(CXX) -c $(CXXFLAGS) $< +{$(CORESRC)\io}.cpp{}.obj:: + $(CXX) -c $(CXXFLAGS) $< +{$(CORESRC)\kernel}.cpp{}.obj:: + $(CXX) -c $(CXXFLAGS) $< +{$(CORESRC)\plugin}.cpp{}.obj:: + $(CXX) -c $(CXXFLAGS) $< +{$(CORESRC)\xml}.cpp{}.obj:: + $(CXX) -c $(CXXFLAGS) $< diff --git a/tools/configure/configureapp.cpp b/tools/configure/configureapp.cpp index fc82fe0702..3e291c2cd0 100644 --- a/tools/configure/configureapp.cpp +++ b/tools/configure/configureapp.cpp @@ -114,13 +114,18 @@ Configure::Configure(int& argc, char** argv) for (i = 1; i < argc; i++) configCmdLine += argv[ i ]; - - // Get the path to the executable - wchar_t module_name[MAX_PATH]; - GetModuleFileName(0, module_name, sizeof(module_name) / sizeof(wchar_t)); - QFileInfo sourcePathInfo = QString::fromWCharArray(module_name); - sourcePath = sourcePathInfo.absolutePath(); - sourceDir = sourcePathInfo.dir(); + if (configCmdLine.size() >= 2 && configCmdLine.at(0) == "-srcdir") { + sourcePath = QDir::cleanPath(configCmdLine.at(1)); + sourceDir = QDir(sourcePath); + configCmdLine.erase(configCmdLine.begin(), configCmdLine.begin() + 2); + } else { + // Get the path to the executable + wchar_t module_name[MAX_PATH]; + GetModuleFileName(0, module_name, sizeof(module_name) / sizeof(wchar_t)); + QFileInfo sourcePathInfo = QString::fromWCharArray(module_name); + sourcePath = sourcePathInfo.absolutePath(); + sourceDir = sourcePathInfo.dir(); + } buildPath = QDir::currentPath(); #if 0 const QString installPath = QString("C:\\Qt\\%1").arg(QT_VERSION_STR); @@ -889,6 +894,9 @@ void Configure::parseCmdLine() else if (configCmdLine.at(i) == "-internal") dictionary[ "QMAKE_INTERNAL" ] = "yes"; + else if (configCmdLine.at(i) == "-no-syncqt") + dictionary[ "SYNCQT" ] = "no"; + else if (configCmdLine.at(i) == "-no-qmake") dictionary[ "BUILD_QMAKE" ] = "no"; else if (configCmdLine.at(i) == "-qmake") -- cgit v1.2.3