diff options
Diffstat (limited to 'qmake')
-rw-r--r-- | qmake/Makefile.unix | 386 | ||||
-rw-r--r-- | qmake/Makefile.unix.unix | 2 | ||||
-rw-r--r-- | qmake/Makefile.unix.win32 | 2 | ||||
-rw-r--r-- | qmake/Makefile.win32 | 11 | ||||
-rw-r--r-- | qmake/doc/qmake.qdocconf | 13 | ||||
-rw-r--r-- | qmake/doc/src/qmake-manual.qdoc | 117 | ||||
-rw-r--r-- | qmake/generators/makefile.cpp | 6 | ||||
-rw-r--r-- | qmake/generators/unix/unixmake2.cpp | 48 | ||||
-rw-r--r-- | qmake/generators/win32/msvc_nmake.cpp | 44 | ||||
-rw-r--r-- | qmake/generators/win32/msvc_nmake.h | 3 | ||||
-rw-r--r-- | qmake/generators/win32/msvc_objectmodel.cpp | 2 | ||||
-rw-r--r-- | qmake/generators/win32/msvc_vcproj.cpp | 2 | ||||
-rw-r--r-- | qmake/generators/win32/registry.cpp | 4 | ||||
-rw-r--r-- | qmake/library/proitems.h | 1 | ||||
-rw-r--r-- | qmake/library/qmakebuiltins.cpp | 63 | ||||
-rw-r--r-- | qmake/library/qmakeevaluator.cpp | 6 | ||||
-rw-r--r-- | qmake/option.cpp | 17 | ||||
-rw-r--r-- | qmake/project.cpp | 4 | ||||
-rw-r--r-- | qmake/qmake.pri | 9 | ||||
-rw-r--r-- | qmake/qmake.pro | 3 |
20 files changed, 475 insertions, 268 deletions
diff --git a/qmake/Makefile.unix b/qmake/Makefile.unix index ed1668d54e..426387f0c2 100644 --- a/qmake/Makefile.unix +++ b/qmake/Makefile.unix @@ -2,107 +2,144 @@ QMKSRC = $(SOURCE_PATH)/qmake QMKLIBSRC = $(QMKSRC)/library QMKGENSRC = $(QMKSRC)/generators -#qmake code -OBJS=project.o option.o property.o main.o ioutils.o proitems.o \ - qmakevfs.o qmakeglobals.o qmakeparser.o qmakeevaluator.o qmakebuiltins.o \ - makefile.o unixmake2.o unixmake.o \ - mingw_make.o winmakefile.o projectgenerator.o \ - meta.o makefiledeps.o metamakefile.o xmloutput.o pbuilder_pbx.o \ - msvc_vcproj.o msvc_vcxproj.o msvc_nmake.o msvc_objectmodel.o msbuild_objectmodel.o - -#qt code -QOBJS=qtextcodec.o qutfcodec.o qstring.o qstring_compat.o qstringbuilder.o qtextstream.o qiodevice.o \ - qringbuffer.o qdebug.o qmalloc.o qglobal.o \ - qarraydata.o qbytearray.o qbytearraymatcher.o qdatastream.o qbuffer.o qlist.o qfiledevice.o qfile.o \ - qfilesystementry.o qfilesystemengine.o qfsfileengine.o qfsfileengine_iterator.o qregexp.o \ - qbitarray.o qdir.o qdiriterator.o quuid.o qhash.o qfileinfo.o qdatetime.o qstringlist.o \ - qabstractfileengine.o qtemporaryfile.o qmap.o qmetatype.o qsettings.o qsystemerror.o \ - qvariant.o qvsnprintf.o qlocale.o qlocale_tools.o qlinkedlist.o qnumeric.o \ - qcryptographichash.o qxmlstream.o qxmlutils.o qlogging.o qoperatingsystemversion.o \ - qjson.o qjsondocument.o qjsonparser.o qjsonarray.o qjsonobject.o qjsonvalue.o \ - $(QTOBJS) $(QTOBJS2) - - -#all sources, used for the depend target +#qmake code (please keep in order matching DEPEND_SRC) +OBJS = \ + main.o meta.o option.o project.o property.o \ + ioutils.o proitems.o qmakebuiltins.o qmakeevaluator.o \ + qmakeglobals.o qmakeparser.o qmakevfs.o \ + pbuilder_pbx.o \ + makefile.o makefiledeps.o metamakefile.o projectgenerator.o \ + unixmake2.o unixmake.o \ + mingw_make.o msbuild_objectmodel.o \ + msvc_nmake.o msvc_objectmodel.o msvc_vcproj.o msvc_vcxproj.o \ + winmakefile.o \ + xmloutput.o + +#qt code (please keep in order matching DEPEND_SRC) +QOBJS = \ + qtextcodec.o qutfcodec.o \ + qglobal.o qlogging.o qmalloc.o qnumeric.o qoperatingsystemversion.o qrandom.o \ + qabstractfileengine.o qbuffer.o qdatastream.o qdebug.o \ + qdir.o qdiriterator.o \ + qfile.o qfiledevice.o qfileinfo.o qfilesystemengine.o \ + qfilesystementry.o qfsfileengine.o qfsfileengine_iterator.o \ + qiodevice.o qsettings.o qtemporaryfile.o qtextstream.o \ + qjsonarray.o qjson.o qjsondocument.o qjsonobject.o qjsonparser.o qjsonvalue.o \ + qmetatype.o qsystemerror.o qvariant.o \ + quuid.o \ + qarraydata.o qbitarray.o qbytearray.o qbytearraymatcher.o \ + qcryptographichash.o qdatetime.o qhash.o qlinkedlist.o qlist.o \ + qlocale.o qlocale_tools.o qmap.o qregexp.o qringbuffer.o \ + qstringbuilder.o qstring_compat.o qstring.o qstringlist.o qversionnumber.o \ + qvsnprintf.o qxmlstream.o qxmlutils.o \ + $(QTOBJS) $(QTOBJS2) +# QTOBJS and QTOBJS2 are populated by Makefile.unix.* as for QTSRC (see below). +# Note: qlibraryinfo.o omitted deliberately - see below. +# Note: qcore_mac_objc.o is in SOURCES (see qmake.pri) but not QOBJS. + +#all sources, used for the depend target (please keep alphabetic in each block) DEPEND_SRC = \ - $(QMKSRC)/main.cpp $(QMKSRC)/project.cpp $(QMKSRC)/option.cpp $(QMKSRC)/property.cpp \ + $(QMKSRC)/main.cpp \ $(QMKSRC)/meta.cpp \ - $(QMKLIBSRC)/ioutils.cpp $(QMKLIBSRC)/proitems.cpp $(QMKLIBSRC)/qmakeglobals.cpp \ - $(QMKLIBSRC)/qmakeparser.cpp $(QMKLIBSRC)/qmakeevaluator.cpp $(QMKLIBSRC)/qmakebuiltins.cpp \ - $(QMKGENSRC)/makefiledeps.cpp $(QMKGENSRC)/metamakefile.cpp \ - $(QMKGENSRC)/projectgenerator.cpp $(QMKGENSRC)/makefile.cpp \ - $(QMKGENSRC)/unix/unixmake.cpp $(QMKGENSRC)/unix/unixmake2.cpp \ + $(QMKSRC)/option.cpp \ + $(QMKSRC)/project.cpp \ + $(QMKSRC)/property.cpp \ + $(QMKLIBSRC)/ioutils.cpp \ + $(QMKLIBSRC)/proitems.cpp \ + $(QMKLIBSRC)/qmakebuiltins.cpp \ + $(QMKLIBSRC)/qmakeevaluator.cpp \ + $(QMKLIBSRC)/qmakeglobals.cpp \ + $(QMKLIBSRC)/qmakeparser.cpp \ + $(QMKLIBSRC)/qmakevfs.cpp \ $(QMKGENSRC)/mac/pbuilder_pbx.cpp \ - $(QMKGENSRC)/win32/registry.cpp \ + $(QMKGENSRC)/makefile.cpp \ + $(QMKGENSRC)/makefiledeps.cpp \ + $(QMKGENSRC)/metamakefile.cpp \ + $(QMKGENSRC)/projectgenerator.cpp \ + $(QMKGENSRC)/unix/unixmake2.cpp \ + $(QMKGENSRC)/unix/unixmake.cpp \ + $(QMKGENSRC)/win32/mingw_make.cpp \ + $(QMKGENSRC)/win32/msbuild_objectmodel.cpp \ + $(QMKGENSRC)/win32/msvc_nmake.cpp \ + $(QMKGENSRC)/win32/msvc_objectmodel.cpp \ + $(QMKGENSRC)/win32/msvc_vcproj.cpp \ + $(QMKGENSRC)/win32/msvc_vcxproj.cpp \ $(QMKGENSRC)/win32/winmakefile.cpp \ - $(QMKGENSRC)/win32/mingw_make.cpp $(QMKGENSRC)/win32/msvc_nmake.cpp \ - $(QMKGENSRC)/mac/xmloutput.cpp \ - $(QMKGENSRC)/win32/msvc_vcproj.cpp $(QMKGENSRC)/win32/msvc_vcxproj.cpp \ - $(QMKGENSRC)/win32/msvc_objectmodel.cpp $(QMKGENSRC)/win32/msbuild_objectmodel.cpp \ - $(SOURCE_PATH)/src/corelib/codecs/qtextcodec.cpp $(SOURCE_PATH)/src/corelib/codecs/qutfcodec.cpp \ - $(SOURCE_PATH)/src/corelib/tools/qstring.cpp $(SOURCE_PATH)/src/corelib/io/qfile.cpp \ - $(SOURCE_PATH)/src/corelib/tools/qstring_compat.cpp \ - $(SOURCE_PATH)/src/corelib/io/qfiledevice.cpp \ - $(SOURCE_PATH)/src/corelib/io/qtextstream.cpp $(SOURCE_PATH)/src/corelib/io/qiodevice.cpp \ - $(SOURCE_PATH)/src/corelib/tools/qringbuffer.cpp \ - $(SOURCE_PATH)/src/corelib/io/qdebug.cpp \ + $(QMKGENSRC)/xmloutput.cpp \ + $(SOURCE_PATH)/src/corelib/codecs/qtextcodec.cpp \ + $(SOURCE_PATH)/src/corelib/codecs/qutfcodec.cpp \ + $(SOURCE_PATH)/src/corelib/global/qglobal.cpp \ + $(SOURCE_PATH)/src/corelib/global/qlibraryinfo.cpp \ + $(SOURCE_PATH)/src/corelib/global/qlogging.cpp \ $(SOURCE_PATH)/src/corelib/global/qmalloc.cpp \ - $(SOURCE_PATH)/src/corelib/global/qglobal.cpp $(SOURCE_PATH)/src/corelib/tools/qregexp.cpp \ - $(SOURCE_PATH)/src/corelib/tools/qarraydata.cpp $(SOURCE_PATH)/src/corelib/tools/qbytearray.cpp\ - $(SOURCE_PATH)/src/corelib/tools/qbytearraymatcher.cpp \ - $(SOURCE_PATH)/src/corelib/io/qdatastream.cpp $(SOURCE_PATH)/src/corelib/io/qbuffer.cpp \ - $(SOURCE_PATH)/src/corelib/io/qfilesystementry.cpp \ - $(SOURCE_PATH)/src/corelib/io/qfilesystemengine_unix.cpp \ - $(SOURCE_PATH)/src/corelib/io/qfilesystemengine_win.cpp \ - $(SOURCE_PATH)/src/corelib/io/qfilesystemengine.cpp \ - $(SOURCE_PATH)/src/corelib/io/qfilesystemiterator_unix.cpp \ - $(SOURCE_PATH)/src/corelib/io/qfilesystemiterator_win.cpp \ - $(SOURCE_PATH)/src/corelib/io/qfsfileengine_unix.cpp \ - $(SOURCE_PATH)/src/corelib/io/qfsfileengine_win.cpp \ + $(SOURCE_PATH)/src/corelib/global/qnumeric.cpp \ + $(SOURCE_PATH)/src/corelib/global/qoperatingsystemversion.cpp \ + $(SOURCE_PATH)/src/corelib/global/qrandom.cpp \ $(SOURCE_PATH)/src/corelib/io/qabstractfileengine.cpp \ + $(SOURCE_PATH)/src/corelib/io/qbuffer.cpp \ + $(SOURCE_PATH)/src/corelib/io/qdebug.cpp \ + $(SOURCE_PATH)/src/corelib/io/qdir.cpp \ + $(SOURCE_PATH)/src/corelib/io/qdiriterator.cpp \ + $(SOURCE_PATH)/src/corelib/io/qfile.cpp \ + $(SOURCE_PATH)/src/corelib/io/qfiledevice.cpp \ + $(SOURCE_PATH)/src/corelib/io/qfileinfo.cpp \ + $(SOURCE_PATH)/src/corelib/io/qfilesystemengine.cpp \ + $(SOURCE_PATH)/src/corelib/io/qfilesystementry.cpp \ + $(SOURCE_PATH)/src/corelib/io/qfsfileengine.cpp \ $(SOURCE_PATH)/src/corelib/io/qfsfileengine_iterator.cpp \ - $(SOURCE_PATH)/src/corelib/io/qfsfileengine.cpp $(SOURCE_PATH)/src/corelib/tools/qlist.cpp \ + $(SOURCE_PATH)/src/corelib/io/qiodevice.cpp \ + $(SOURCE_PATH)/src/corelib/io/qsettings.cpp \ + $(SOURCE_PATH)/src/corelib/io/qtemporaryfile.cpp \ + $(SOURCE_PATH)/src/corelib/kernel/qcore_mac_objc.mm \ + $(SOURCE_PATH)/src/corelib/kernel/qmetatype.cpp \ + $(SOURCE_PATH)/src/corelib/kernel/qsystemerror.cpp \ + $(SOURCE_PATH)/src/corelib/kernel/qvariant.cpp \ + $(SOURCE_PATH)/src/corelib/plugin/quuid.cpp \ + $(SOURCE_PATH)/src/corelib/serialization/qdatastream.cpp \ + $(SOURCE_PATH)/src/corelib/serialization/qjsonarray.cpp \ + $(SOURCE_PATH)/src/corelib/serialization/qjson.cpp \ + $(SOURCE_PATH)/src/corelib/serialization/qjsondocument.cpp \ + $(SOURCE_PATH)/src/corelib/serialization/qjsonobject.cpp \ + $(SOURCE_PATH)/src/corelib/serialization/qjsonparser.cpp \ + $(SOURCE_PATH)/src/corelib/serialization/qjsonvalue.cpp \ + $(SOURCE_PATH)/src/corelib/serialization/qtextstream.cpp \ + $(SOURCE_PATH)/src/corelib/serialization/qxmlstream.cpp \ + $(SOURCE_PATH)/src/corelib/serialization/qxmlutils.cpp \ + $(SOURCE_PATH)/src/corelib/tools/qarraydata.cpp \ $(SOURCE_PATH)/src/corelib/tools/qbitarray.cpp \ - $(SOURCE_PATH)/src/corelib/io/qdiriterator.cpp \ - $(SOURCE_PATH)/src/corelib/io/qdir.cpp $(SOURCE_PATH)/src/corelib/plugin/quuid.cpp \ - $(SOURCE_PATH)/src/corelib/io/qfileinfo.cpp $(SOURCE_PATH)/src/corelib/tools/qdatetime.cpp \ - $(SOURCE_PATH)/src/corelib/tools/qstringlist.cpp $(SOURCE_PATH)/src/corelib/tools/qmap.cpp \ - $(SOURCE_PATH)/src/corelib/tools/qstringbuilder.cpp \ + $(SOURCE_PATH)/src/corelib/tools/qbytearray.cpp\ + $(SOURCE_PATH)/src/corelib/tools/qbytearraymatcher.cpp \ + $(SOURCE_PATH)/src/corelib/tools/qcryptographichash.cpp \ + $(SOURCE_PATH)/src/corelib/tools/qdatetime.cpp \ + $(SOURCE_PATH)/src/corelib/tools/qhash.cpp \ + $(SOURCE_PATH)/src/corelib/tools/qlinkedlist.cpp \ + $(SOURCE_PATH)/src/corelib/tools/qlist.cpp \ $(SOURCE_PATH)/src/corelib/tools/qlocale.cpp \ $(SOURCE_PATH)/src/corelib/tools/qlocale_tools.cpp \ - $(SOURCE_PATH)/src/corelib/tools/qlocale_unix.cpp \ - $(SOURCE_PATH)/src/corelib/tools/qlocale_win.cpp \ - $(SOURCE_PATH)/src/corelib/tools/qlinkedlist.cpp \ - $(SOURCE_PATH)/src/corelib/tools/qhash.cpp $(SOURCE_PATH)/src/corelib/kernel/qcore_mac.cpp \ - $(SOURCE_PATH)/src/corelib/kernel/qcore_mac_objc.mm \ - $(SOURCE_PATH)/src/corelib/kernel/qcore_foundation.mm \ - $(SOURCE_PATH)/src/corelib/io/qtemporaryfile.cpp $(SOURCE_PATH)/src/corelib/kernel/qmetatype.cpp \ - $(SOURCE_PATH)/src/corelib/io/qsettings.cpp $(SOURCE_PATH)/src/corelib/kernel/qvariant.cpp \ - $(SOURCE_PATH)/src/corelib/global/qlibraryinfo.cpp $(SOURCE_PATH)/src/corelib/tools/qcryptographichash.cpp \ - $(SOURCE_PATH)/src/corelib/tools/qvsnprintf.cpp $(SOURCE_PATH)/src/corelib/global/qnumeric.cpp \ - $(SOURCE_PATH)/src/corelib/xml/qxmlstream.cpp \ - $(SOURCE_PATH)/src/corelib/xml/qxmlutils.cpp \ - $(SOURCE_PATH)/src/corelib/kernel/qsystemerror.cpp \ - $(SOURCE_PATH)/src/corelib/global/qlogging.cpp \ - $(SOURCE_PATH)/src/corelib/plugin/qsystemlibrary.cpp \ - $(SOURCE_PATH)/src/corelib/json/qjson.cpp \ - $(SOURCE_PATH)/src/corelib/json/qjsondocument.cpp \ - $(SOURCE_PATH)/src/corelib/json/qjsonparser.cpp \ - $(SOURCE_PATH)/src/corelib/json/qjsonarray.cpp \ - $(SOURCE_PATH)/src/corelib/json/qjsonobject.cpp \ - $(SOURCE_PATH)/src/corelib/json/qjsonvalue.cpp \ + $(SOURCE_PATH)/src/corelib/tools/qmap.cpp \ + $(SOURCE_PATH)/src/corelib/tools/qregexp.cpp \ + $(SOURCE_PATH)/src/corelib/tools/qringbuffer.cpp \ + $(SOURCE_PATH)/src/corelib/tools/qstringbuilder.cpp \ + $(SOURCE_PATH)/src/corelib/tools/qstring_compat.cpp \ + $(SOURCE_PATH)/src/corelib/tools/qstring.cpp \ + $(SOURCE_PATH)/src/corelib/tools/qstringlist.cpp \ + $(SOURCE_PATH)/src/corelib/tools/qversionnumber.cpp \ + $(SOURCE_PATH)/src/corelib/tools/qvsnprintf.cpp \ $(QTSRCS) $(QTSRCS2) +# QTSRCS and QTSRCS2 come from Makefile.unix.* (concatenated with this +# by configure); QTSRCS2 may include *.mm entries on macOS. +# See below for special handling of qlibraryinfo.cpp CPPFLAGS = -g $(EXTRA_CPPFLAGS) \ - -I$(QMKSRC) -I$(QMKLIBSRC) -I$(QMKSRC)/generators -I$(QMKSRC)/generators/unix -I$(QMKSRC)/generators/win32 \ - -I$(QMKSRC)/generators/mac \ + -I$(QMKSRC) -I$(QMKLIBSRC) -I$(QMKGENSRC) \ + -I$(QMKGENSRC)/unix -I$(QMKGENSRC)/win32 -I$(QMKGENSRC)/mac \ -I$(INC_PATH) -I$(INC_PATH)/QtCore \ -I$(INC_PATH)/QtCore/$(QT_VERSION) -I$(INC_PATH)/QtCore/$(QT_VERSION)/QtCore \ -I$(BUILD_PATH)/src/corelib/global \ -I$(QMAKESPEC) \ -DQT_VERSION_STR=\"$(QT_VERSION)\" -DQT_VERSION_MAJOR=$(QT_MAJOR_VERSION) -DQT_VERSION_MINOR=$(QT_MINOR_VERSION) -DQT_VERSION_PATCH=$(QT_PATCH_VERSION) \ - -DQT_BUILD_QMAKE -DQT_BOOTSTRAPPED -DPROEVALUATOR_FULL \ - -DQT_NO_FOREACH + -DQT_BUILD_QMAKE -DQT_BOOTSTRAPPED -DPROEVALUATOR_FULL \ + -DQT_NO_FOREACH CXXFLAGS = $(EXTRA_CXXFLAGS) $(CONFIG_CXXFLAGS) $(CPPFLAGS) LFLAGS = $(EXTRA_LFLAGS) $(CONFIG_LFLAGS) @@ -219,223 +256,232 @@ projectgenerator.o: $(QMKSRC)/generators/projectgenerator.cpp $(CXX) -c -o $@ $(CXXFLAGS) $< -qtextstream.o: $(SOURCE_PATH)/src/corelib/io/qtextstream.cpp - $(CXX) -c -o $@ $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/io/qtextstream.cpp - qvariant.o: $(SOURCE_PATH)/src/corelib/kernel/qvariant.cpp - $(CXX) -c -o $@ $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/kernel/qvariant.cpp + $(CXX) -c -o $@ $(CXXFLAGS) $< qsettings.o: $(SOURCE_PATH)/src/corelib/io/qsettings.cpp - $(CXX) -c -o $@ $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/io/qsettings.cpp + $(CXX) -c -o $@ $(CXXFLAGS) $< qsystemerror.o: $(SOURCE_PATH)/src/corelib/kernel/qsystemerror.cpp - $(CXX) -c -o $@ $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/kernel/qsystemerror.cpp + $(CXX) -c -o $@ $(CXXFLAGS) $< qlibraryinfo.o: $(SOURCE_PATH)/src/corelib/global/qlibraryinfo.cpp - $(CXX) -c -o $@ $(CXXFLAGS) -DQT_BUILD_QMAKE_BOOTSTRAP $(SOURCE_PATH)/src/corelib/global/qlibraryinfo.cpp + $(CXX) -c -o $@ $(CXXFLAGS) -DQT_BUILD_QMAKE_BOOTSTRAP $< qlibraryinfo_final.o: $(SOURCE_PATH)/src/corelib/global/qlibraryinfo.cpp $(BUILD_PATH)/src/corelib/global/qconfig.cpp - $(CXX) -c -o $@ $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/global/qlibraryinfo.cpp + $(CXX) -c -o $@ $(CXXFLAGS) $< qnumeric.o: $(SOURCE_PATH)/src/corelib/global/qnumeric.cpp - $(CXX) -c -o $@ $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/global/qnumeric.cpp + $(CXX) -c -o $@ $(CXXFLAGS) $< + +qrandom.o: $(SOURCE_PATH)/src/corelib/global/qrandom.cpp + $(CXX) -c -o $@ $(CXXFLAGS) $< qsettings_mac.o: $(SOURCE_PATH)/src/corelib/io/qsettings_mac.cpp - $(CXX) -c -o $@ $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/io/qsettings_mac.cpp + $(CXX) -c -o $@ $(CXXFLAGS) $< qsettings_win.o: $(SOURCE_PATH)/src/corelib/io/qsettings_win.cpp - $(CXX) -c -o $@ $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/io/qsettings_win.cpp + $(CXX) -c -o $@ $(CXXFLAGS) $< qiodevice.o: $(SOURCE_PATH)/src/corelib/io/qiodevice.cpp - $(CXX) -c -o $@ $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/io/qiodevice.cpp + $(CXX) -c -o $@ $(CXXFLAGS) $< qringbuffer.o: $(SOURCE_PATH)/src/corelib/tools/qringbuffer.cpp - $(CXX) -c -o $@ $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/tools/qringbuffer.cpp + $(CXX) -c -o $@ $(CXXFLAGS) $< qdebug.o: $(SOURCE_PATH)/src/corelib/io/qdebug.cpp - $(CXX) -c -o $@ $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/io/qdebug.cpp + $(CXX) -c -o $@ $(CXXFLAGS) $< qmalloc.o: $(SOURCE_PATH)/src/corelib/global/qmalloc.cpp - $(CXX) -c -o $@ $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/global/qmalloc.cpp + $(CXX) -c -o $@ $(CXXFLAGS) $< qglobal.o: $(SOURCE_PATH)/src/corelib/global/qglobal.cpp - $(CXX) -c -o $@ $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/global/qglobal.cpp + $(CXX) -c -o $@ $(CXXFLAGS) $< qarraydata.o: $(SOURCE_PATH)/src/corelib/tools/qarraydata.cpp - $(CXX) -c -o $@ $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/tools/qarraydata.cpp + $(CXX) -c -o $@ $(CXXFLAGS) $< qbytearray.o: $(SOURCE_PATH)/src/corelib/tools/qbytearray.cpp - $(CXX) -c -o $@ $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/tools/qbytearray.cpp + $(CXX) -c -o $@ $(CXXFLAGS) $< qvsnprintf.o: $(SOURCE_PATH)/src/corelib/tools/qvsnprintf.cpp - $(CXX) -c -o $@ $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/tools/qvsnprintf.cpp + $(CXX) -c -o $@ $(CXXFLAGS) $< qbytearraymatcher.o: $(SOURCE_PATH)/src/corelib/tools/qbytearraymatcher.cpp - $(CXX) -c -o $@ $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/tools/qbytearraymatcher.cpp + $(CXX) -c -o $@ $(CXXFLAGS) $< qmetatype.o: $(SOURCE_PATH)/src/corelib/kernel/qmetatype.cpp - $(CXX) -c -o $@ $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/kernel/qmetatype.cpp + $(CXX) -c -o $@ $(CXXFLAGS) $< qcore_mac.o: $(SOURCE_PATH)/src/corelib/kernel/qcore_mac.cpp - $(CXX) -c -o $@ $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/kernel/qcore_mac.cpp + $(CXX) -c -o $@ $(CXXFLAGS) $< + +qcore_unix.o: $(SOURCE_PATH)/src/corelib/kernel/qcore_unix.cpp + $(CXX) -c -o $@ $(CXXFLAGS) $< qoperatingsystemversion.o: $(SOURCE_PATH)/src/corelib/global/qoperatingsystemversion.cpp - $(CXX) -c -o $@ $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/global/qoperatingsystemversion.cpp + $(CXX) -c -o $@ $(CXXFLAGS) $< qoperatingsystemversion_win.o: $(SOURCE_PATH)/src/corelib/global/qoperatingsystemversion_win.cpp - $(CXX) -c -o $@ $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/global/qoperatingsystemversion_win.cpp + $(CXX) -c -o $@ $(CXXFLAGS) $< qoperatingsystemversion_darwin.o: $(SOURCE_PATH)/src/corelib/global/qoperatingsystemversion_darwin.mm - $(CXX) -c -o $@ $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/global/qoperatingsystemversion_darwin.mm + $(CXX) -c -o $@ $(CXXFLAGS) $< qcore_mac_objc.o: $(SOURCE_PATH)/src/corelib/kernel/qcore_mac_objc.mm - $(CXX) -c -o $@ $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/kernel/qcore_mac_objc.mm + $(CXX) -c -o $@ $(CXXFLAGS) $< qcore_foundation.o: $(SOURCE_PATH)/src/corelib/kernel/qcore_foundation.mm - $(CXX) -c -o $@ $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/kernel/qcore_foundation.mm + $(CXX) -c -o $@ $(CXXFLAGS) $< qutfcodec.o: $(SOURCE_PATH)/src/corelib/codecs/qutfcodec.cpp - $(CXX) -c -o $@ $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/codecs/qutfcodec.cpp + $(CXX) -c -o $@ $(CXXFLAGS) $< qtextcodec.o: $(SOURCE_PATH)/src/corelib/codecs/qtextcodec.cpp - $(CXX) -c -o $@ $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/codecs/qtextcodec.cpp + $(CXX) -c -o $@ $(CXXFLAGS) $< qstring.o: $(SOURCE_PATH)/src/corelib/tools/qstring.cpp - $(CXX) -c -o $@ $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/tools/qstring.cpp + $(CXX) -c -o $@ $(CXXFLAGS) $< qstring_compat.o: $(SOURCE_PATH)/src/corelib/tools/qstring_compat.cpp - $(CXX) -c -o $@ $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/tools/qstring_compat.cpp + $(CXX) -c -o $@ $(CXXFLAGS) $< qstringbuilder.o: $(SOURCE_PATH)/src/corelib/tools/qstringbuilder.cpp - $(CXX) -c -o $@ $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/tools/qstringbuilder.cpp + $(CXX) -c -o $@ $(CXXFLAGS) $< qlocale.o: $(SOURCE_PATH)/src/corelib/tools/qlocale.cpp - $(CXX) -c -o $@ $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/tools/qlocale.cpp + $(CXX) -c -o $@ $(CXXFLAGS) $< qlocale_tools.o: $(SOURCE_PATH)/src/corelib/tools/qlocale_tools.cpp - $(CXX) -c -o $@ $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/tools/qlocale_tools.cpp + $(CXX) -c -o $@ $(CXXFLAGS) $< qlocale_unix.o: $(SOURCE_PATH)/src/corelib/tools/qlocale_unix.cpp - $(CXX) -c -o $@ $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/tools/qlocale_unix.cpp + $(CXX) -c -o $@ $(CXXFLAGS) $< qlocale_win.o: $(SOURCE_PATH)/src/corelib/tools/qlocale_win.cpp - $(CXX) -c -o $@ $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/tools/qlocale_win.cpp + $(CXX) -c -o $@ $(CXXFLAGS) $< -qdatastream.o: $(SOURCE_PATH)/src/corelib/io/qdatastream.cpp - $(CXX) -c -o $@ $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/io/qdatastream.cpp +qversionnumber.o: $(SOURCE_PATH)/src/corelib/tools/qversionnumber.cpp + $(CXX) -c -o $@ $(CXXFLAGS) $< qbuffer.o: $(SOURCE_PATH)/src/corelib/io/qbuffer.cpp - $(CXX) -c -o $@ $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/io/qbuffer.cpp + $(CXX) -c -o $@ $(CXXFLAGS) $< qlist.o: $(SOURCE_PATH)/src/corelib/tools/qlist.cpp - $(CXX) -c -o $@ $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/tools/qlist.cpp + $(CXX) -c -o $@ $(CXXFLAGS) $< qfile.o: $(SOURCE_PATH)/src/corelib/io/qfile.cpp - $(CXX) -c -o $@ $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/io/qfile.cpp + $(CXX) -c -o $@ $(CXXFLAGS) $< qfiledevice.o: $(SOURCE_PATH)/src/corelib/io/qfiledevice.cpp - $(CXX) -c -o $@ $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/io/qfiledevice.cpp + $(CXX) -c -o $@ $(CXXFLAGS) $< qfilesystementry.o: $(SOURCE_PATH)/src/corelib/io/qfilesystementry.cpp - $(CXX) -c -o $@ $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/io/qfilesystementry.cpp + $(CXX) -c -o $@ $(CXXFLAGS) $< qfilesystemengine.o: $(SOURCE_PATH)/src/corelib/io/qfilesystemengine.cpp - $(CXX) -c -o $@ $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/io/qfilesystemengine.cpp + $(CXX) -c -o $@ $(CXXFLAGS) $< qfilesystemengine_unix.o: $(SOURCE_PATH)/src/corelib/io/qfilesystemengine_unix.cpp - $(CXX) -c -o $@ $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/io/qfilesystemengine_unix.cpp + $(CXX) -c -o $@ $(CXXFLAGS) $< qfilesystemengine_win.o: $(SOURCE_PATH)/src/corelib/io/qfilesystemengine_win.cpp - $(CXX) -c -o $@ $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/io/qfilesystemengine_win.cpp + $(CXX) -c -o $@ $(CXXFLAGS) $< qfilesystemiterator_unix.o: $(SOURCE_PATH)/src/corelib/io/qfilesystemiterator_unix.cpp - $(CXX) -c -o $@ $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/io/qfilesystemiterator_unix.cpp + $(CXX) -c -o $@ $(CXXFLAGS) $< qfilesystemiterator_win.o: $(SOURCE_PATH)/src/corelib/io/qfilesystemiterator_win.cpp - $(CXX) -c -o $@ $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/io/qfilesystemiterator_win.cpp + $(CXX) -c -o $@ $(CXXFLAGS) $< qfsfileengine.o: $(SOURCE_PATH)/src/corelib/io/qfsfileengine.cpp - $(CXX) -c -o $@ $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/io/qfsfileengine.cpp + $(CXX) -c -o $@ $(CXXFLAGS) $< qfsfileengine_iterator.o: $(SOURCE_PATH)/src/corelib/io/qfsfileengine_iterator.cpp - $(CXX) -c -o $@ $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/io/qfsfileengine_iterator.cpp + $(CXX) -c -o $@ $(CXXFLAGS) $< qfsfileengine_unix.o: $(SOURCE_PATH)/src/corelib/io/qfsfileengine_unix.cpp - $(CXX) -c -o $@ $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/io/qfsfileengine_unix.cpp + $(CXX) -c -o $@ $(CXXFLAGS) $< qfsfileengine_win.o: $(SOURCE_PATH)/src/corelib/io/qfsfileengine_win.cpp - $(CXX) -c -o $@ $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/io/qfsfileengine_win.cpp + $(CXX) -c -o $@ $(CXXFLAGS) $< qabstractfileengine.o: $(SOURCE_PATH)/src/corelib/io/qabstractfileengine.cpp - $(CXX) -c -o $@ $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/io/qabstractfileengine.cpp + $(CXX) -c -o $@ $(CXXFLAGS) $< qtemporaryfile.o: $(SOURCE_PATH)/src/corelib/io/qtemporaryfile.cpp - $(CXX) -c -o $@ $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/io/qtemporaryfile.cpp + $(CXX) -c -o $@ $(CXXFLAGS) $< qregexp.o: $(SOURCE_PATH)/src/corelib/tools/qregexp.cpp - $(CXX) -c -o $@ $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/tools/qregexp.cpp + $(CXX) -c -o $@ $(CXXFLAGS) $< qbitarray.o: $(SOURCE_PATH)/src/corelib/tools/qbitarray.cpp - $(CXX) -c -o $@ $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/tools/qbitarray.cpp + $(CXX) -c -o $@ $(CXXFLAGS) $< qdir.o: $(SOURCE_PATH)/src/corelib/io/qdir.cpp - $(CXX) -c -o $@ $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/io/qdir.cpp + $(CXX) -c -o $@ $(CXXFLAGS) $< qdiriterator.o: $(SOURCE_PATH)/src/corelib/io/qdiriterator.cpp - $(CXX) -c -o $@ $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/io/qdiriterator.cpp + $(CXX) -c -o $@ $(CXXFLAGS) $< quuid.o: $(SOURCE_PATH)/src/corelib/plugin/quuid.cpp - $(CXX) -c -o $@ $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/plugin/quuid.cpp + $(CXX) -c -o $@ $(CXXFLAGS) $< qfileinfo.o: $(SOURCE_PATH)/src/corelib/io/qfileinfo.cpp - $(CXX) -c -o $@ $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/io/qfileinfo.cpp + $(CXX) -c -o $@ $(CXXFLAGS) $< qdatetime.o: $(SOURCE_PATH)/src/corelib/tools/qdatetime.cpp - $(CXX) -c -o $@ $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/tools/qdatetime.cpp + $(CXX) -c -o $@ $(CXXFLAGS) $< qstringlist.o: $(SOURCE_PATH)/src/corelib/tools/qstringlist.cpp - $(CXX) -c -o $@ $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/tools/qstringlist.cpp + $(CXX) -c -o $@ $(CXXFLAGS) $< qmap.o: $(SOURCE_PATH)/src/corelib/tools/qmap.cpp - $(CXX) -c -o $@ $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/tools/qmap.cpp + $(CXX) -c -o $@ $(CXXFLAGS) $< qhash.o: $(SOURCE_PATH)/src/corelib/tools/qhash.cpp - $(CXX) -c -o $@ $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/tools/qhash.cpp + $(CXX) -c -o $@ $(CXXFLAGS) $< qlinkedlist.o: $(SOURCE_PATH)/src/corelib/tools/qlinkedlist.cpp - $(CXX) -c -o $@ $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/tools/qlinkedlist.cpp - -qcryptographichash.o: $(SOURCE_PATH)/src/corelib/tools/qcryptographichash.cpp - $(CXX) -c -o $@ $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/tools/qcryptographichash.cpp - -qxmlstream.o: $(SOURCE_PATH)/src/corelib/xml/qxmlstream.cpp - $(CXX) -c -o $@ $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/xml/qxmlstream.cpp + $(CXX) -c -o $@ $(CXXFLAGS) $< -qxmlutils.o: $(SOURCE_PATH)/src/corelib/xml/qxmlutils.cpp - $(CXX) -c -o $@ $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/xml/qxmlutils.cpp +qcryptographichash.o: $(SOURCE_PATH)/src/corelib/tools/qcryptographichash.cpp + $(CXX) -c -o $@ $(CXXFLAGS) $< qlogging.o: $(SOURCE_PATH)/src/corelib/global/qlogging.cpp - $(CXX) -c -o $@ $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/global/qlogging.cpp + $(CXX) -c -o $@ $(CXXFLAGS) $< qsystemlibrary.o: $(SOURCE_PATH)/src/corelib/plugin/qsystemlibrary.cpp - $(CXX) -c -o $@ $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/plugin/qsystemlibrary.cpp + $(CXX) -c -o $@ $(CXXFLAGS) $< -qjson.o: $(SOURCE_PATH)/src/corelib/json/qjson.cpp - $(CXX) -c -o $@ $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/json/qjson.cpp +qdatastream.o: $(SOURCE_PATH)/src/corelib/serialization/qdatastream.cpp + $(CXX) -c -o $@ $(CXXFLAGS) $< -qjsondocument.o: $(SOURCE_PATH)/src/corelib/json/qjsondocument.cpp - $(CXX) -c -o $@ $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/json/qjsondocument.cpp +qjson.o: $(SOURCE_PATH)/src/corelib/serialization/qjson.cpp + $(CXX) -c -o $@ $(CXXFLAGS) $< -qjsonparser.o: $(SOURCE_PATH)/src/corelib/json/qjsonparser.cpp - $(CXX) -c -o $@ $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/json/qjsonparser.cpp +qjsondocument.o: $(SOURCE_PATH)/src/corelib/serialization/qjsondocument.cpp + $(CXX) -c -o $@ $(CXXFLAGS) $< -qjsonarray.o: $(SOURCE_PATH)/src/corelib/json/qjsonarray.cpp - $(CXX) -c -o $@ $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/json/qjsonarray.cpp +qjsonparser.o: $(SOURCE_PATH)/src/corelib/serialization/qjsonparser.cpp + $(CXX) -c -o $@ $(CXXFLAGS) $< -qjsonobject.o: $(SOURCE_PATH)/src/corelib/json/qjsonobject.cpp - $(CXX) -c -o $@ $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/json/qjsonobject.cpp +qjsonarray.o: $(SOURCE_PATH)/src/corelib/serialization/qjsonarray.cpp + $(CXX) -c -o $@ $(CXXFLAGS) $< -qjsonvalue.o: $(SOURCE_PATH)/src/corelib/json/qjsonvalue.cpp - $(CXX) -c -o $@ $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/json/qjsonvalue.cpp +qjsonobject.o: $(SOURCE_PATH)/src/corelib/serialization/qjsonobject.cpp + $(CXX) -c -o $@ $(CXXFLAGS) $< + +qjsonvalue.o: $(SOURCE_PATH)/src/corelib/serialization/qjsonvalue.cpp + $(CXX) -c -o $@ $(CXXFLAGS) $< + +qxmlstream.o: $(SOURCE_PATH)/src/corelib/serialization/qxmlstream.cpp + $(CXX) -c -o $@ $(CXXFLAGS) $< + +qxmlutils.o: $(SOURCE_PATH)/src/corelib/serialization/qxmlutils.cpp + $(CXX) -c -o $@ $(CXXFLAGS) $< + +qtextstream.o: $(SOURCE_PATH)/src/corelib/serialization/qtextstream.cpp + $(CXX) -c -o $@ $(CXXFLAGS) $< # DO NOT DELETE THIS LINE -- make depend depends on it diff --git a/qmake/Makefile.unix.unix b/qmake/Makefile.unix.unix index 63eba4f5a5..e8c1cd1017 100644 --- a/qmake/Makefile.unix.unix +++ b/qmake/Makefile.unix.unix @@ -1,10 +1,12 @@ EXEEXT = QTOBJS = \ + qcore_unix.o \ qfilesystemengine_unix.o \ qfilesystemiterator_unix.o \ qfsfileengine_unix.o \ qlocale_unix.o QTSRCS = \ + $(SOURCE_PATH)/src/corelib/kernel/qcore_unix.cpp \ $(SOURCE_PATH)/src/corelib/io/qfilesystemengine_unix.cpp \ $(SOURCE_PATH)/src/corelib/io/qfilesystemiterator_unix.cpp \ $(SOURCE_PATH)/src/corelib/io/qfsfileengine_unix.cpp \ diff --git a/qmake/Makefile.unix.win32 b/qmake/Makefile.unix.win32 index c747eedcd0..bfcad35357 100644 --- a/qmake/Makefile.unix.win32 +++ b/qmake/Makefile.unix.win32 @@ -1,6 +1,6 @@ EXEEXT = .exe EXTRA_CXXFLAGS = -DUNICODE -EXTRA_LFLAGS = -static -s -lole32 -luuid -ladvapi32 -lkernel32 +EXTRA_LFLAGS = -static -s -lole32 -luuid -ladvapi32 -lkernel32 -lnetapi32 QTOBJS = \ qfilesystemengine_win.o \ qfilesystemiterator_win.o \ diff --git a/qmake/Makefile.win32 b/qmake/Makefile.win32 index 7639d09ffd..3abcc1f21c 100644 --- a/qmake/Makefile.win32 +++ b/qmake/Makefile.win32 @@ -46,7 +46,7 @@ CXXFLAGS_BARE = $(CFLAGS_BARE) CXXFLAGS = $(CFLAGS) LFLAGS = -LIBS = ole32.lib advapi32.lib shell32.lib +LIBS = ole32.lib advapi32.lib shell32.lib netapi32.lib ADDCLEAN = qmake.pdb qmake.ilk #qmake code @@ -93,6 +93,7 @@ QTOBJS= \ qlocale.obj \ qlocale_tools.obj \ qlocale_win.obj \ + qversionnumber.obj \ qmalloc.obj \ qmap.obj \ qoperatingsystemversion.obj \ @@ -108,6 +109,7 @@ QTOBJS= \ qtextstream.obj \ qdatastream.obj \ quuid.obj \ + qrandom.obj \ qsettings.obj \ qvariant.obj \ qsettings_win.obj \ @@ -195,13 +197,10 @@ qmake_pch.obj: {$(SOURCE_PATH)\src\corelib\plugin}.cpp{}.obj:: $(CXX) $(CXXFLAGS) $< -{$(SOURCE_PATH)\src\corelib\tools}.cpp{}.obj:: - $(CXX) $(CXXFLAGS) $< - -{$(SOURCE_PATH)\src\corelib\xml}.cpp{}.obj:: +{$(SOURCE_PATH)\src\corelib\serialization}.cpp{}.obj:: $(CXX) $(CXXFLAGS) $< -{$(SOURCE_PATH)\src\corelib\json}.cpp{}.obj:: +{$(SOURCE_PATH)\src\corelib\tools}.cpp{}.obj:: $(CXX) $(CXXFLAGS) $< # Make sure qstring_compat.obj and qlibraryinfo.obj aren't compiled with PCH enabled diff --git a/qmake/doc/qmake.qdocconf b/qmake/doc/qmake.qdocconf index 1a23237999..3493a697f4 100644 --- a/qmake/doc/qmake.qdocconf +++ b/qmake/doc/qmake.qdocconf @@ -1,6 +1,7 @@ include($QT_INSTALL_DOCS/global/qt-module-defaults.qdocconf) project = QMake +moduleheader = qmake_pch.h description = QMake Manual qhp.projects = qmake @@ -30,12 +31,10 @@ depends += \ qtassistant \ qtbluetooth \ qtconcurrent \ - qtcontacts \ qtcore \ qtdbus \ qtdoc \ qtdesigner \ - qtfeedback \ qtgraphicaleffects \ qtgui \ qthelp \ @@ -43,31 +42,21 @@ depends += \ qtlinguist \ qtlocation \ qtmultimedia \ - qtmultimediawidgets \ qtnetwork \ qtopengl \ - qtorganizer \ qtprintsupport \ - qtpublishsubscribe \ qtqml \ qtquick \ qtquickcontrols \ - qtquickcontrolsstyles \ qtquickdialogs \ - qtquicklayouts \ qtscript \ qtscripttools \ qtsensors \ qtserialport \ - qtserviceframework \ qtsql \ qtsvg \ - qtsysteminfo \ qttestlib \ qtuitools \ - qtversit \ - qtwebkit \ - qtwebkitexamples \ qtwidgets \ qtwinextras \ qtx11extras \ diff --git a/qmake/doc/src/qmake-manual.qdoc b/qmake/doc/src/qmake-manual.qdoc index 75a93fd996..cc3b73418b 100644 --- a/qmake/doc/src/qmake-manual.qdoc +++ b/qmake/doc/src/qmake-manual.qdoc @@ -939,6 +939,8 @@ order in which they are given. \row \li precompile_header \li Enables support for the use of \l{Using Precompiled Headers}{precompiled headers} in projects. + \row \li precompile_header_c (MSVC only) \li Enables support for the use of + \l{Using Precompiled Headers}{precompiled headers} for C files. \row \li warn_on \li The compiler should output as many warnings as possible. If \c warn_off is also specified, the last one takes effect. \row \li warn_off \li The compiler should output as few warnings as possible. @@ -1324,6 +1326,30 @@ \snippet code/doc_src_qmake-manual.pro 40 + \target OBJECTIVE_HEADERS + \section1 OBJECTIVE_HEADERS + + Defines the Objective-C++ header files for the project. + + qmake automatically detects whether \l{moc} is required by the classes in the + headers, and adds the appropriate dependencies and files to the project for + generating and linking the moc files. + + This is similar to the HEADERS variable, but will let the generated moc + files be compiled with the Objective-C++ compiler. + + See also \l{#OBJECTIVE_SOURCES}{OBJECTIVE_SOURCES}. + + \target OBJECTIVE_SOURCES + \section1 OBJECTIVE_SOURCES + + Specifies the names of all Objective-C/C++ source files in the project. + + This variable is now obsolete, Objective-C/C++ files (.m and .mm) can be + added to the \l{#SOURCES}{SOURCES} variable. + + See also \l{#OBJECTIVE_HEADERS}{OBJECTIVE_HEADERS}. + \target OBJECTS \section1 OBJECTS @@ -1797,9 +1823,55 @@ Specifies the name of the property list file, \c{.plist}, you would like to include in your \macos, iOS, tvOS, and watchOS application bundle. - In the \c{.plist} file, you can define some variables, e.g., @EXECUTABLE@, - which qmake will replace with the actual executable name. Other variables - include @ICON@, @TYPEINFO@, @LIBRARY@, and @SHORT_VERSION@. + In the \c{.plist} file, you can define some variables which + qmake will replace with the relevant values: + + \table + \header + \li Placeholder(s) + \li Effect + \row + \li \c ${PRODUCT_BUNDLE_IDENTIFIER}, \c @BUNDLEIDENTIFIER@ + \li Expands to the target bundle's bundle identifier string, + for example: \c{com.example.myapp}. Determined by concatenating the + values of QMAKE_TARGET_BUNDLE_PREFIX and QMAKE_BUNDLE, separated + by a full stop (\c{.}). + \row + \li \c ${EXECUTABLE_NAME}, \c @EXECUTABLE@, \c @LIBRARY@ + \li Equivalent to the value of QMAKE_APPLICATION_BUNDLE_NAME, + QMAKE_PLUGIN_BUNDLE_NAME, or QMAKE_FRAMEWORK_BUNDLE_NAME + (depending on the type of target being created), + or TARGET if none of the previous values are set. + \row + \li \c ${ASSETCATALOG_COMPILER_APPICON_NAME}, \c @ICON@ + \li Expands to the value of ICON. + \row + \li \c ${QMAKE_PKGINFO_TYPEINFO}, \c @TYPEINFO@ + \li Expands to the value of QMAKE_PKGINFO_TYPEINFO. + \row + \li \c ${QMAKE_FULL_VERSION}, \c @FULL_VERSION@ + \li Expands to the value of VERSION expressed with three version components. + \row + \li \c ${QMAKE_SHORT_VERSION}, \c @SHORT_VERSION@ + \li Expands to the value of VERSION expressed with two version components. + \row + \li \c ${MACOSX_DEPLOYMENT_TARGET} + \li Expands to the value of QMAKE_MACOSX_DEPLOYMENT_TARGET. + \row + \li \c ${IPHONEOS_DEPLOYMENT_TARGET} + \li Expands to the value of QMAKE_IPHONEOS_DEPLOYMENT_TARGET. + \row + \li \c ${TVOS_DEPLOYMENT_TARGET} + \li Expands to the value of QMAKE_TVOS_DEPLOYMENT_TARGET. + \row + \li \c ${WATCHOS_DEPLOYMENT_TARGET} + \li Expands to the value of QMAKE_WATCHOS_DEPLOYMENT_TARGET. + \endtable + + \note When using the Xcode generator, the above \c{${var}}-style + placeholders are replaced directly by the Xcode build system and are not + handled by qmake. The \c{@var@} style placeholders work only with the qmake + Makefile generators and not with the Xcode generator. If building for iOS, and the \c{.plist} file contains the key \c NSPhotoLibraryUsageDescription, qmake will include an additional plugin @@ -2266,6 +2338,14 @@ For more information, see \l {Expressing Supported iOS Versions}. + \section1 QMAKE_UIC_FLAGS + + This variable is used to customize the list of options passed to the + \l{uic}{User Interface Compiler} in each of the build rules where it is + used. For example, \c{-no-stringliteral} can be passed to use QLatin1String + instead of QStringLiteral in generated code (which is the default for + dynamic libraries). + \section1 QMAKE_WATCHOS_DEPLOYMENT_TARGET \note This variable is used on the watchOS platform only. @@ -3091,11 +3171,6 @@ \snippet code/doc_src_qmake-manual.pro 70 - \section2 sprintf(string, arguments...) - - Replaces %1-%9 with the arguments passed in the comma-separated list - of function \c arguments and returns the processed string. - \section2 resolve_depends(variablename, prefix) This is an internal function that you will typically not need. @@ -3162,6 +3237,11 @@ \snippet code/doc_src_qmake-manual.pro 168 + \section2 sprintf(string, arguments...) + + Replaces %1-%9 in \c string with the arguments passed in the comma-separated + list of function \c arguments and returns the processed string. + \target str_member() \section2 str_member(arg [, start [, end]]) @@ -3229,7 +3309,7 @@ \section2 system_quote(arg) - Quotes \c arg for the for the shell that is used by the \c{system()} + Quotes \c arg for the shell that is used by the \c{system()} functions. See also \l{shell_quote(arg)}{shell_quote()}. @@ -3560,6 +3640,20 @@ \snippet code/doc_src_qmake-manual.pro 169 + \section2 versionAtLeast(variablename, versionNumber) + + Tests that the version number from \c variablename is greater than or equal + to \c versionNumber. The version number is considered to be a sequence of + non-negative decimal numbers delimited by '.'; any non-numerical tail of + the string will be ignored. Comparison is performed segment-wise from left + to right; if one version is a prefix of the other, it is considered smaller. + + \section2 versionAtMost(variablename, versionNumber) + + Tests that the version number from \c variablename is less than or equal to + \c versionNumber. Works as + \l{versionAtLeast(variablename, versionNumber)}{versionAtLeast()}. + \section2 warning(string) Always succeeds, and displays \c string as a warning message to the user. @@ -4534,6 +4628,11 @@ \snippet code/doc_src_qmake-manual.pro 106 + To use the precompiled header also for C files on MSVC nmake target, add + \c precompile_header_c to the \l{CONFIG} variable. If the header is + used also for C++ and it contains C++ keywords/includes, enclose them + with \c{#ifdef __cplusplus}). + \section1 Notes on Possible Issues On some platforms, the file name suffix for precompiled header files is diff --git a/qmake/generators/makefile.cpp b/qmake/generators/makefile.cpp index a1f3352aa3..82573347b6 100644 --- a/qmake/generators/makefile.cpp +++ b/qmake/generators/makefile.cpp @@ -2164,9 +2164,9 @@ MakefileGenerator::writeExtraVariables(QTextStream &t) ProStringList outlist; const ProValueMap &vars = project->variables(); const ProStringList &exports = project->values("QMAKE_EXTRA_VARIABLES"); - for (ProValueMap::ConstIterator it = vars.begin(); it != vars.end(); ++it) { - for (ProStringList::ConstIterator exp_it = exports.begin(); exp_it != exports.end(); ++exp_it) { - QRegExp rx((*exp_it).toQString(), Qt::CaseInsensitive, QRegExp::Wildcard); + for (ProStringList::ConstIterator exp_it = exports.begin(); exp_it != exports.end(); ++exp_it) { + QRegExp rx((*exp_it).toQString(), Qt::CaseInsensitive, QRegExp::Wildcard); + for (ProValueMap::ConstIterator it = vars.begin(); it != vars.end(); ++it) { if (rx.exactMatch(it.key().toQString())) outlist << ("EXPORT_" + it.key() + " = " + it.value().join(' ')); } diff --git a/qmake/generators/unix/unixmake2.cpp b/qmake/generators/unix/unixmake2.cpp index 6b08a2dd28..8ecfa0bf31 100644 --- a/qmake/generators/unix/unixmake2.cpp +++ b/qmake/generators/unix/unixmake2.cpp @@ -820,14 +820,23 @@ UnixMakefileGenerator::writeMakeParts(QTextStream &t) t << mkdir_p_asstring(destdir) << "\n\t"; ProStringList commonSedArgs; if (!project->values("VERSION").isEmpty()) { - commonSedArgs << "-e \"s,@SHORT_VERSION@," << project->first("VER_MAJ") << "." - << project->first("VER_MIN") << ",g\" "; - commonSedArgs << "-e \"s,@FULL_VERSION@," << project->first("VER_MAJ") << "." - << project->first("VER_MIN") << "." - << project->first("VER_PAT") << ",g\" "; + const ProString shortVersion = + project->first("VER_MAJ") + "." + + project->first("VER_MIN"); + commonSedArgs << "-e \"s,@SHORT_VERSION@," << shortVersion << ",g\" "; + commonSedArgs << "-e \"s,\\$${QMAKE_SHORT_VERSION}," << shortVersion << ",g\" "; + const ProString fullVersion = + project->first("VER_MAJ") + "." + + project->first("VER_MIN") + "." + + project->first("VER_PAT"); + commonSedArgs << "-e \"s,@FULL_VERSION@," << fullVersion << ",g\" "; + commonSedArgs << "-e \"s,\\$${QMAKE_FULL_VERSION}," << fullVersion << ",g\" "; } - commonSedArgs << "-e \"s,@TYPEINFO@,"<< (project->isEmpty("QMAKE_PKGINFO_TYPEINFO") ? - QString::fromLatin1("????") : project->first("QMAKE_PKGINFO_TYPEINFO").left(4)) << ",g\" "; + const ProString typeInfo = project->isEmpty("QMAKE_PKGINFO_TYPEINFO") + ? QString::fromLatin1("????") + : project->first("QMAKE_PKGINFO_TYPEINFO").left(4); + commonSedArgs << "-e \"s,@TYPEINFO@," << typeInfo << ",g\" "; + commonSedArgs << "-e \"s,\\$${QMAKE_PKGINFO_TYPEINFO}," << typeInfo << ",g\" "; QString bundlePrefix = project->first("QMAKE_TARGET_BUNDLE_PREFIX").toQString(); if (bundlePrefix.isEmpty()) @@ -842,6 +851,16 @@ UnixMakefileGenerator::writeMakeParts(QTextStream &t) // replace invalid bundle id characters bundleIdentifier = rfc1034Identifier(bundleIdentifier); commonSedArgs << "-e \"s,@BUNDLEIDENTIFIER@," << bundleIdentifier << ",g\" "; + commonSedArgs << "-e \"s,\\$${PRODUCT_BUNDLE_IDENTIFIER}," << bundleIdentifier << ",g\" "; + + commonSedArgs << "-e \"s,\\$${MACOSX_DEPLOYMENT_TARGET}," + << project->first("QMAKE_MACOSX_DEPLOYMENT_TARGET").toQString() << ",g\" "; + commonSedArgs << "-e \"s,\\$${IPHONEOS_DEPLOYMENT_TARGET}," + << project->first("QMAKE_IPHONEOS_DEPLOYMENT_TARGET").toQString() << ",g\" "; + commonSedArgs << "-e \"s,\\$${TVOS_DEPLOYMENT_TARGET}," + << project->first("QMAKE_TVOS_DEPLOYMENT_TARGET").toQString() << ",g\" "; + commonSedArgs << "-e \"s,\\$${WATCHOS_DEPLOYMENT_TARGET}," + << project->first("QMAKE_WATCHOS_DEPLOYMENT_TARGET").toQString() << ",g\" "; if (!isFramework) { ProString app_bundle_name = var("QMAKE_APPLICATION_BUNDLE_NAME"); @@ -857,11 +876,14 @@ UnixMakefileGenerator::writeMakeParts(QTextStream &t) << "@sed "; for (const ProString &arg : qAsConst(commonSedArgs)) t << arg; - t << "-e \"s,@ICON@," << icon.section(Option::dir_sep, -1) << ",g\" " + const QString iconName = icon.section(Option::dir_sep, -1); + t << "-e \"s,@ICON@," << iconName << ",g\" " + << "-e \"s,\\$${ASSETCATALOG_COMPILER_APPICON_NAME}," << iconName << ",g\" " << "-e \"s,@EXECUTABLE@," << app_bundle_name << ",g\" " << "-e \"s,@LIBRARY@," << plugin_bundle_name << ",g\" " - << "-e \"s,@TYPEINFO@,"<< (project->isEmpty("QMAKE_PKGINFO_TYPEINFO") ? - QString::fromLatin1("????") : project->first("QMAKE_PKGINFO_TYPEINFO").left(4)) << ",g\" " + << "-e \"s,\\$${EXECUTABLE_NAME}," << (app_bundle_name.isEmpty() ? app_bundle_name : plugin_bundle_name) << ",g\" " + << "-e \"s,@TYPEINFO@,"<< typeInfo << ",g\" " + << "-e \"s,\\$${QMAKE_PKGINFO_TYPEINFO},"<< typeInfo << ",g\" " << "" << info_plist << " >" << info_plist_out << endl; //copy the icon if (!project->isEmpty("ICON")) { @@ -887,9 +909,9 @@ UnixMakefileGenerator::writeMakeParts(QTextStream &t) for (const ProString &arg : qAsConst(commonSedArgs)) t << arg; t << "-e \"s,@LIBRARY@," << lib_bundle_name << ",g\" " - << "-e \"s,@TYPEINFO@," - << (project->isEmpty("QMAKE_PKGINFO_TYPEINFO") ? - QString::fromLatin1("????") : project->first("QMAKE_PKGINFO_TYPEINFO").left(4)) << ",g\" " + << "-e \"s,\\$${EXECUTABLE_NAME}," << lib_bundle_name << ",g\" " + << "-e \"s,@TYPEINFO@," << typeInfo << ",g\" " + << "-e \"s,\\$${QMAKE_PKGINFO_TYPEINFO}," << typeInfo << ",g\" " << "" << info_plist << " >" << info_plist_out << endl; } break; diff --git a/qmake/generators/win32/msvc_nmake.cpp b/qmake/generators/win32/msvc_nmake.cpp index 21f96e49d9..ccc2ea6d2b 100644 --- a/qmake/generators/win32/msvc_nmake.cpp +++ b/qmake/generators/win32/msvc_nmake.cpp @@ -51,7 +51,7 @@ static QString nmakePathList(const QStringList &list) .replace('#', QLatin1String("^#")).replace('$', QLatin1String("$$")); } -NmakeMakefileGenerator::NmakeMakefileGenerator() : Win32MakefileGenerator(), usePCH(false) +NmakeMakefileGenerator::NmakeMakefileGenerator() : usePCH(false), usePCHC(false) { } @@ -302,6 +302,13 @@ QStringList &NmakeMakefileGenerator::findDependencies(const QString &file) break; } } + for (QStringList::Iterator it = Option::c_ext.begin(); it != Option::c_ext.end(); ++it) { + if (file.endsWith(*it)) { + if (!precompObjC.isEmpty() && !aList.contains(precompObjC)) + aList += precompObjC; + break; + } + } return aList; } @@ -318,18 +325,30 @@ void NmakeMakefileGenerator::writeNmakeParts(QTextStream &t) << "\n\t$(CXX) " + precompRule +" $(CXXFLAGS) $(INCPATH) -TP " << escapeFilePath(precompH) << endl << endl; } + if (usePCHC) { + QString precompRuleC = QString("-c -Yc -Fp%1 -Fo%2") + .arg(escapeFilePath(precompPchC), escapeFilePath(precompObjC)); + t << escapeDependencyPath(precompObjC) << ": " << escapeDependencyPath(precompH) << ' ' + << escapeDependencyPaths(findDependencies(precompH)).join(" \\\n\t\t") + << "\n\t$(CC) " + precompRuleC +" $(CFLAGS) $(INCPATH) -TC " + << escapeFilePath(precompH) << endl << endl; + } } QString NmakeMakefileGenerator::var(const ProKey &value) const { - if (usePCH) { - if ((value == "QMAKE_RUN_CXX_IMP_BATCH" - || value == "QMAKE_RUN_CXX_IMP" - || value == "QMAKE_RUN_CXX")) { + if (usePCH || usePCHC) { + const bool isRunC = (value == "QMAKE_RUN_CC_IMP_BATCH" + || value == "QMAKE_RUN_CC_IMP" + || value == "QMAKE_RUN_CC"); + const bool isRunCpp = (value == "QMAKE_RUN_CXX_IMP_BATCH" + || value == "QMAKE_RUN_CXX_IMP" + || value == "QMAKE_RUN_CXX"); + if ((isRunCpp && usePCH) || (isRunC && usePCHC)) { QFileInfo precompHInfo(fileInfo(precompH)); QString precompH_f = escapeFilePath(precompHInfo.fileName()); QString precompRule = QString("-c -FI%1 -Yu%2 -Fp%3") - .arg(precompH_f, precompH_f, escapeFilePath(precompPch)); + .arg(precompH_f, precompH_f, escapeFilePath(isRunC ? precompPchC : precompPch)); QString p = MakefileGenerator::var(value); p.replace(QLatin1String("-c"), precompRule); // Cannot use -Gm with -FI & -Yu, as this gives an @@ -393,18 +412,27 @@ void NmakeMakefileGenerator::init() // Setup PCH variables precompH = project->first("PRECOMPILED_HEADER").toQString(); usePCH = !precompH.isEmpty() && project->isActiveConfig("precompile_header"); + usePCHC = !precompH.isEmpty() && project->isActiveConfig("precompile_header_c"); if (usePCH) { // Created files precompObj = var("PRECOMPILED_DIR") + project->first("TARGET") + "_pch" + Option::obj_ext; precompPch = var("PRECOMPILED_DIR") + project->first("TARGET") + "_pch.pch"; // Add linking of precompObj (required for whole precompiled classes) - project->values("OBJECTS") += precompObj; + project->values("OBJECTS") += precompObj; // Add pch file to cleanup - project->values("QMAKE_CLEAN") += precompPch; + project->values("QMAKE_CLEAN") += precompPch; // Return to variable pool project->values("PRECOMPILED_OBJECT") = ProStringList(precompObj); project->values("PRECOMPILED_PCH") = ProStringList(precompPch); } + if (usePCHC) { + precompObjC = var("PRECOMPILED_DIR") + project->first("TARGET") + "_pch_c" + Option::obj_ext; + precompPchC = var("PRECOMPILED_DIR") + project->first("TARGET") + "_pch_c.pch"; + project->values("OBJECTS") += precompObjC; + project->values("QMAKE_CLEAN") += precompPchC; + project->values("PRECOMPILED_OBJECT_C") = ProStringList(precompObjC); + project->values("PRECOMPILED_PCH_C") = ProStringList(precompPchC); + } ProString tgt = project->first("DESTDIR") + project->first("TARGET") + project->first("TARGET_VERSION_EXT"); diff --git a/qmake/generators/win32/msvc_nmake.h b/qmake/generators/win32/msvc_nmake.h index f782f9d734..67b609d0a6 100644 --- a/qmake/generators/win32/msvc_nmake.h +++ b/qmake/generators/win32/msvc_nmake.h @@ -52,7 +52,8 @@ protected: virtual QStringList &findDependencies(const QString &file); QString var(const ProKey &value) const; QString precompH, precompObj, precompPch; - bool usePCH; + QString precompObjC, precompPchC; + bool usePCH, usePCHC; public: NmakeMakefileGenerator(); diff --git a/qmake/generators/win32/msvc_objectmodel.cpp b/qmake/generators/win32/msvc_objectmodel.cpp index 74989e4e7e..300792c5af 100644 --- a/qmake/generators/win32/msvc_objectmodel.cpp +++ b/qmake/generators/win32/msvc_objectmodel.cpp @@ -320,7 +320,7 @@ triState operator!(const triState &rhs) QStringList VCToolBase::fixCommandLine(const QString &input) { // The splitting regexp is a bit bizarre for backwards compat reasons (why else ...). - return input.split(QRegExp(QLatin1String("\n\t|\r\\\\h|\r\n"))); + return input.split(QRegExp(QLatin1String("(\n\t|\r\\\\h|\r\n)\\s*"))); } static QString vcCommandSeparator() diff --git a/qmake/generators/win32/msvc_vcproj.cpp b/qmake/generators/win32/msvc_vcproj.cpp index f261574482..24d1657552 100644 --- a/qmake/generators/win32/msvc_vcproj.cpp +++ b/qmake/generators/win32/msvc_vcproj.cpp @@ -223,7 +223,7 @@ QUuid VcprojGenerator::getProjectUUID(const QString &filename) bool validUUID = true; // Read GUID from variable-space - QUuid uuid = project->first("GUID").toQString(); + auto uuid = QUuid::fromString(project->first("GUID").toQStringView()); // If none, create one based on the MD5 of absolute project path if(uuid.isNull() || !filename.isEmpty()) { diff --git a/qmake/generators/win32/registry.cpp b/qmake/generators/win32/registry.cpp index 74c912ca43..7320cb0551 100644 --- a/qmake/generators/win32/registry.cpp +++ b/qmake/generators/win32/registry.cpp @@ -32,7 +32,7 @@ QT_BEGIN_NAMESPACE #ifdef Q_OS_WIN32 -/*! +/* Returns the path part of a registry key. e.g. For a key @@ -48,7 +48,7 @@ static QString keyPath(const QString &rKey) return rKey.left(idx + 1); } -/*! +/* Returns the name part of a registry key. e.g. For a key diff --git a/qmake/library/proitems.h b/qmake/library/proitems.h index 8f88883683..1d7ebed3aa 100644 --- a/qmake/library/proitems.h +++ b/qmake/library/proitems.h @@ -141,6 +141,7 @@ public: static uint hash(const QChar *p, int n); ALWAYS_INLINE QStringRef toQStringRef() const { return QStringRef(&m_string, m_offset, m_length); } + ALWAYS_INLINE QStringView toQStringView() const { return QStringView(m_string).mid(m_offset, m_length); } ALWAYS_INLINE ProKey &toKey() { return *(ProKey *)this; } ALWAYS_INLINE const ProKey &toKey() const { return *(const ProKey *)this; } diff --git a/qmake/library/qmakebuiltins.cpp b/qmake/library/qmakebuiltins.cpp index e4b00a6cb3..83c3d1d643 100644 --- a/qmake/library/qmakebuiltins.cpp +++ b/qmake/library/qmakebuiltins.cpp @@ -51,6 +51,7 @@ #ifdef PROEVALUATOR_THREAD_SAFE # include <qthreadpool.h> #endif +#include <qversionnumber.h> #include <algorithm> @@ -97,6 +98,7 @@ enum ExpandFunc { enum TestFunc { T_INVALID = 0, T_REQUIRES, T_GREATERTHAN, T_LESSTHAN, T_EQUALS, + T_VERSION_AT_LEAST, T_VERSION_AT_MOST, T_EXISTS, T_EXPORT, T_CLEAR, T_UNSET, T_EVAL, T_CONFIG, T_SYSTEM, T_DEFINED, T_DISCARD_FROM, T_CONTAINS, T_INFILE, T_COUNT, T_ISEMPTY, T_PARSE_JSON, T_INCLUDE, T_LOAD, T_DEBUG, T_LOG, T_MESSAGE, T_WARNING, T_ERROR, T_IF, @@ -170,6 +172,8 @@ void QMakeEvaluator::initFunctionStatics() { "lessThan", T_LESSTHAN }, { "equals", T_EQUALS }, { "isEqual", T_EQUALS }, + { "versionAtLeast", T_VERSION_AT_LEAST }, + { "versionAtMost", T_VERSION_AT_MOST }, { "exists", T_EXISTS }, { "export", T_EXPORT }, { "clear", T_CLEAR }, @@ -569,7 +573,7 @@ QMakeEvaluator::VisitReturn QMakeEvaluator::evaluateBuiltinExpand( } } else { if (args.count() != 1) { - evalError(fL1S("%1(var) requires one argument.").arg(func.toQString(m_tmp1))); + evalError(fL1S("%1(var) requires one argument.").arg(func.toQStringView())); } else { var = args[0]; regexp = true; @@ -603,7 +607,7 @@ QMakeEvaluator::VisitReturn QMakeEvaluator::evaluateBuiltinExpand( } else { QString tmp = args.at(0).toQString(m_tmp1); for (int i = 1; i < args.count(); ++i) - tmp = tmp.arg(args.at(i).toQString(m_tmp2)); + tmp = tmp.arg(args.at(i).toQStringView()); ret << (tmp.isSharedWith(m_tmp1) ? args.at(0) : ProString(tmp).setSource(args.at(0))); } break; @@ -636,7 +640,7 @@ QMakeEvaluator::VisitReturn QMakeEvaluator::evaluateBuiltinExpand( leftalign = true; } else { evalError(fL1S("format_number(): invalid format option %1.") - .arg(opt.toQString(m_tmp3))); + .arg(opt.toQStringView())); goto formfail; } } @@ -649,7 +653,7 @@ QMakeEvaluator::VisitReturn QMakeEvaluator::evaluateBuiltinExpand( qlonglong num = args.at(0).toLongLong(&ok, ibase); if (!ok) { evalError(fL1S("format_number(): malformed number %2 for base %1.") - .arg(ibase).arg(args.at(0).toQString(m_tmp3))); + .arg(ibase).arg(args.at(0).toQStringView())); break; } QString outstr; @@ -691,7 +695,7 @@ QMakeEvaluator::VisitReturn QMakeEvaluator::evaluateBuiltinExpand( qlonglong num = arg.toLongLong(&ok); if (!ok) { evalError(fL1S("num_add(): malformed number %1.") - .arg(arg.toQString(m_tmp3))); + .arg(arg.toQStringView())); goto nafail; } sum += num; @@ -778,7 +782,7 @@ QMakeEvaluator::VisitReturn QMakeEvaluator::evaluateBuiltinExpand( case E_FIRST: case E_LAST: if (args.count() != 1) { - evalError(fL1S("%1(var) requires one argument.").arg(func.toQString(m_tmp1))); + evalError(fL1S("%1(var) requires one argument.").arg(func.toQStringView())); } else { const ProStringList &var = values(map(args.at(0))); if (!var.isEmpty()) { @@ -792,7 +796,7 @@ QMakeEvaluator::VisitReturn QMakeEvaluator::evaluateBuiltinExpand( case E_TAKE_FIRST: case E_TAKE_LAST: if (args.count() != 1) { - evalError(fL1S("%1(var) requires one argument.").arg(func.toQString(m_tmp1))); + evalError(fL1S("%1(var) requires one argument.").arg(func.toQStringView())); } else { ProStringList &var = valuesRef(map(args.at(0))); if (!var.isEmpty()) { @@ -1123,7 +1127,7 @@ QMakeEvaluator::VisitReturn QMakeEvaluator::evaluateBuiltinExpand( case E_RESOLVE_DEPENDS: if (args.count() < 1 || args.count() > 4) { evalError(fL1S("%1(var, [prefix, [suffixes, [prio-suffix]]]) requires one to four arguments.") - .arg(func.toQString(m_tmp1))); + .arg(func.toQStringView())); } else { QHash<ProKey, QSet<ProKey> > dependencies; ProValueMap dependees; @@ -1265,7 +1269,7 @@ QMakeEvaluator::VisitReturn QMakeEvaluator::evaluateBuiltinExpand( } break; default: - evalError(fL1S("Function '%1' is not implemented.").arg(func.toQString(m_tmp1))); + evalError(fL1S("Function '%1' is not implemented.").arg(func.toQStringView())); break; } @@ -1295,7 +1299,7 @@ QMakeEvaluator::VisitReturn QMakeEvaluator::evaluateBuiltinConditional( return returnBool(findValues(var, &it)); } evalError(fL1S("defined(function, type): unexpected type [%1].") - .arg(args.at(1).toQString(m_tmp1))); + .arg(args.at(1).toQStringView())); return ReturnFalse; } return returnBool(m_functionDefs.replaceFunctions.contains(var) @@ -1433,12 +1437,12 @@ QMakeEvaluator::VisitReturn QMakeEvaluator::evaluateBuiltinConditional( } if (args.count() == 1) return returnBool(isActiveConfig(args.at(0).toQStringRef())); - const auto &mutuals = args.at(1).toQStringRef().split(QLatin1Char('|')); + const auto mutuals = args.at(1).toQStringRef().split(QLatin1Char('|')); const ProStringList &configs = values(statics.strCONFIG); for (int i = configs.size() - 1; i >= 0; i--) { for (int mut = 0; mut < mutuals.count(); mut++) { - if (configs[i] == mutuals[mut].trimmed()) + if (configs[i].toQStringRef() == mutuals[mut].trimmed()) return returnBool(configs[i] == args[0]); } } @@ -1465,11 +1469,11 @@ QMakeEvaluator::VisitReturn QMakeEvaluator::evaluateBuiltinConditional( return ReturnTrue; } } else { - const auto &mutuals = args.at(2).toQStringRef().split(QLatin1Char('|')); + const auto mutuals = args.at(2).toQStringRef().split(QLatin1Char('|')); for (int i = l.size() - 1; i >= 0; i--) { const ProString val = l[i]; for (int mut = 0; mut < mutuals.count(); mut++) { - if (val == mutuals[mut].trimmed()) { + if (val.toQStringRef() == mutuals[mut].trimmed()) { return returnBool((!regx.isEmpty() && regx.exactMatch(val.toQString(m_tmp[m_toggle ^= 1]))) || val == qry); @@ -1500,7 +1504,7 @@ QMakeEvaluator::VisitReturn QMakeEvaluator::evaluateBuiltinConditional( || comp == QLatin1String("=") || comp == QLatin1String("==")) { // fallthrough } else { - evalError(fL1S("Unexpected modifier to count(%2).").arg(comp.toQString(m_tmp1))); + evalError(fL1S("Unexpected modifier to count(%2).").arg(comp.toQStringView())); return ReturnFalse; } } @@ -1510,7 +1514,7 @@ QMakeEvaluator::VisitReturn QMakeEvaluator::evaluateBuiltinConditional( case T_LESSTHAN: { if (args.count() != 2) { evalError(fL1S("%1(variable, value) requires two arguments.") - .arg(function.toQString(m_tmp1))); + .arg(function.toQStringView())); return ReturnFalse; } const ProString &rhs = args.at(1); @@ -1532,15 +1536,28 @@ QMakeEvaluator::VisitReturn QMakeEvaluator::evaluateBuiltinConditional( case T_EQUALS: if (args.count() != 2) { evalError(fL1S("%1(variable, value) requires two arguments.") - .arg(function.toQString(m_tmp1))); + .arg(function.toQStringView())); return ReturnFalse; } return returnBool(values(map(args.at(0))).join(statics.field_sep) - == args.at(1).toQStringRef()); + == args.at(1).toQStringView()); + case T_VERSION_AT_LEAST: + case T_VERSION_AT_MOST: { + if (args.count() != 2) { + evalError(fL1S("%1(variable, versionNumber) requires two arguments.") + .arg(function.toQStringView())); + return ReturnFalse; + } + const QVersionNumber lvn = QVersionNumber::fromString(values(args.at(0).toKey()).join('.')); + const QVersionNumber rvn = QVersionNumber::fromString(args.at(1).toQStringView()); + if (func_t == T_VERSION_AT_LEAST) + return returnBool(lvn >= rvn); + return returnBool(lvn <= rvn); + } case T_CLEAR: { if (args.count() != 1) { evalError(fL1S("%1(variable) requires one argument.") - .arg(function.toQString(m_tmp1))); + .arg(function.toQStringView())); return ReturnFalse; } ProValueMap *hsh; @@ -1557,7 +1574,7 @@ QMakeEvaluator::VisitReturn QMakeEvaluator::evaluateBuiltinConditional( case T_UNSET: { if (args.count() != 1) { evalError(fL1S("%1(variable) requires one argument.") - .arg(function.toQString(m_tmp1))); + .arg(function.toQStringView())); return ReturnFalse; } ProValueMap *hsh; @@ -1664,7 +1681,7 @@ QMakeEvaluator::VisitReturn QMakeEvaluator::evaluateBuiltinConditional( case T_MESSAGE: { if (args.count() != 1) { evalError(fL1S("%1(message) requires one argument.") - .arg(function.toQString(m_tmp1))); + .arg(function.toQStringView())); return ReturnFalse; } const QString &msg = m_option->expandEnvVars(args.at(0).toQString(m_tmp2)); @@ -1846,7 +1863,7 @@ QMakeEvaluator::VisitReturn QMakeEvaluator::evaluateBuiltinConditional( srcvar = dstvar; ProValueMap::Iterator srcvarIt; if (!findValues(srcvar, &srcvarIt)) { - evalError(fL1S("Variable %1 is not defined.").arg(srcvar.toQString(m_tmp1))); + evalError(fL1S("Variable %1 is not defined.").arg(srcvar.toQStringView())); return ReturnFalse; } // The caches for the host and target may differ (e.g., when we are manipulating @@ -1975,7 +1992,7 @@ QMakeEvaluator::VisitReturn QMakeEvaluator::evaluateBuiltinConditional( #endif return ReturnTrue; default: - evalError(fL1S("Function '%1' is not implemented.").arg(function.toQString(m_tmp1))); + evalError(fL1S("Function '%1' is not implemented.").arg(function.toQStringView())); return ReturnFalse; } } diff --git a/qmake/library/qmakeevaluator.cpp b/qmake/library/qmakeevaluator.cpp index 6c8112de57..6e6c72de59 100644 --- a/qmake/library/qmakeevaluator.cpp +++ b/qmake/library/qmakeevaluator.cpp @@ -1581,7 +1581,7 @@ ProString QMakeEvaluator::propertyValue(const ProKey &name) const return ProString(m_mkspecPaths.join(m_option->dirlist_sep)); ProString ret = m_option->propertyValue(name); // if (ret.isNull()) -// evalError(fL1S("Querying unknown property %1").arg(name.toQString(m_mtmp))); +// evalError(fL1S("Querying unknown property %1").arg(name.toQStringView())); return ret; } @@ -1778,7 +1778,7 @@ QMakeEvaluator::VisitReturn QMakeEvaluator::evaluateConditionalFunction( } skipExpression(tokPtr); - evalError(fL1S("'%1' is not a recognized test function.").arg(func.toQString(m_tmp1))); + evalError(fL1S("'%1' is not a recognized test function.").arg(func.toQStringView())); return ReturnFalse; } @@ -1804,7 +1804,7 @@ QMakeEvaluator::VisitReturn QMakeEvaluator::evaluateExpandFunction( } skipExpression(tokPtr); - evalError(fL1S("'%1' is not a recognized replace function.").arg(func.toQString(m_tmp1))); + evalError(fL1S("'%1' is not a recognized replace function.").arg(func.toQStringView())); return ReturnFalse; } diff --git a/qmake/option.cpp b/qmake/option.cpp index 8e457a2626..baad644280 100644 --- a/qmake/option.cpp +++ b/qmake/option.cpp @@ -355,16 +355,19 @@ Option::init(int argc, char **argv) } } } - if (!globals->qmake_abslocation.isNull()) - globals->qmake_abslocation = QDir::cleanPath(globals->qmake_abslocation); - else // This is rather unlikely to ever happen on a modern system ... - globals->qmake_abslocation = QLibraryInfo::rawLocation(QLibraryInfo::HostBinariesPath, - QLibraryInfo::EffectivePaths) + + if (Q_UNLIKELY(globals->qmake_abslocation.isNull())) { + // This is rather unlikely to ever happen on a modern system ... + globals->qmake_abslocation = QLibraryInfo::rawLocation( + QLibraryInfo::HostBinariesPath, + QLibraryInfo::EffectivePaths) #ifdef Q_OS_WIN - "/qmake.exe"; + + "/qmake.exe"; #else - "/qmake"; + + "/qmake"; #endif + } else { + globals->qmake_abslocation = QDir::cleanPath(globals->qmake_abslocation); + } } else { Option::qmake_mode = Option::QMAKE_GENERATE_MAKEFILE; } diff --git a/qmake/project.cpp b/qmake/project.cpp index 3a073b0954..e8509ad096 100644 --- a/qmake/project.cpp +++ b/qmake/project.cpp @@ -91,7 +91,7 @@ bool QMakeProject::test(const ProKey &func, const QList<ProStringList> &args) return boolRet(evaluateBoolFunction(*it, args, func)); evalError(QStringLiteral("'%1' is not a recognized test function.") - .arg(func.toQString(m_tmp1))); + .arg(func.toQStringView())); return false; } @@ -116,7 +116,7 @@ QStringList QMakeProject::expand(const ProKey &func, const QList<ProStringList> } evalError(QStringLiteral("'%1' is not a recognized replace function.") - .arg(func.toQString(m_tmp1))); + .arg(func.toQStringView())); return QStringList(); } diff --git a/qmake/qmake.pri b/qmake/qmake.pri index c0f7250bcf..f6f6a47e95 100644 --- a/qmake/qmake.pri +++ b/qmake/qmake.pri @@ -68,6 +68,7 @@ bootstrap { #Qt code qlibraryinfo.cpp \ qsystemerror.cpp \ qvariant.cpp \ + qversionnumber.cpp \ qvsnprintf.cpp \ qxmlstream.cpp \ qxmlutils.cpp \ @@ -119,6 +120,7 @@ bootstrap { #Qt code qtextstream.h \ quuid.h \ qvector.h \ + qversionnumber.h \ qxmlstream.h \ qxmlutils.h \ qjson.h \ @@ -132,8 +134,7 @@ bootstrap { #Qt code unix { SOURCES += qfilesystemengine_unix.cpp qfilesystemiterator_unix.cpp qfsfileengine_unix.cpp mac { - SOURCES += qcore_mac.cpp qsettings_mac.cpp - OBJECTIVE_SOURCES += qcore_mac_objc.mm qlocale_mac.mm + SOURCES += qcore_mac.cpp qsettings_mac.cpp qcore_mac_objc.mm qlocale_mac.mm LIBS += -framework ApplicationServices -framework CoreServices -framework Foundation } else { SOURCES += qlocale_unix.cpp @@ -141,8 +142,8 @@ bootstrap { #Qt code } else:win32 { SOURCES += qfilesystemengine_win.cpp qfsfileengine_win.cpp qfilesystemiterator_win.cpp qsettings_win.cpp \ qsystemlibrary.cpp qlocale_win.cpp registry.cpp - win32-msvc*:LIBS += ole32.lib advapi32.lib - mingw:LIBS += -lole32 -luuid -ladvapi32 -lkernel32 + win32-msvc*:LIBS += ole32.lib advapi32.lib netapi32.lib + mingw:LIBS += -lole32 -luuid -ladvapi32 -lkernel32 -lnetapi32 } qnx { diff --git a/qmake/qmake.pro b/qmake/qmake.pro index 1472aef3e4..000aec45fc 100644 --- a/qmake/qmake.pro +++ b/qmake/qmake.pro @@ -16,9 +16,8 @@ VPATH += \ ../src/corelib/kernel \ ../src/corelib/codecs \ ../src/corelib/plugin \ - ../src/corelib/xml \ ../src/corelib/io \ - ../src/corelib/json \ + ../src/corelib/serialization \ ../tools/shared/windows INCLUDEPATH += . \ |