diff options
Diffstat (limited to 'qmake')
-rw-r--r-- | qmake/Makefile.unix | 353 | ||||
-rw-r--r-- | qmake/Makefile.win32 | 2 | ||||
-rw-r--r-- | qmake/doc/src/qmake-manual.qdoc | 14 | ||||
-rw-r--r-- | qmake/generators/win32/msvc_objectmodel.cpp | 2 | ||||
-rw-r--r-- | qmake/generators/win32/msvc_vcproj.cpp | 2 | ||||
-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/project.cpp | 4 | ||||
-rw-r--r-- | qmake/qmake.pri | 5 |
10 files changed, 265 insertions, 187 deletions
diff --git a/qmake/Makefile.unix b/qmake/Makefile.unix index ed1668d54e..259c5cba16 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/qdatastream.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/io/qtextstream.cpp \ + $(SOURCE_PATH)/src/corelib/json/qjsonarray.cpp \ + $(SOURCE_PATH)/src/corelib/json/qjson.cpp \ + $(SOURCE_PATH)/src/corelib/json/qjsondocument.cpp \ + $(SOURCE_PATH)/src/corelib/json/qjsonobject.cpp \ + $(SOURCE_PATH)/src/corelib/json/qjsonparser.cpp \ + $(SOURCE_PATH)/src/corelib/json/qjsonvalue.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/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/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 \ $(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 \ $(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) @@ -220,222 +257,228 @@ projectgenerator.o: $(QMKSRC)/generators/projectgenerator.cpp qtextstream.o: $(SOURCE_PATH)/src/corelib/io/qtextstream.cpp - $(CXX) -c -o $@ $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/io/qtextstream.cpp + $(CXX) -c -o $@ $(CXXFLAGS) $< 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) $< 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) $< + +qversionnumber.o: $(SOURCE_PATH)/src/corelib/tools/qversionnumber.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 + $(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 + $(CXX) -c -o $@ $(CXXFLAGS) $< -qcryptographichash.o: $(SOURCE_PATH)/src/corelib/tools/qcryptographichash.cpp - $(CXX) -c -o $@ $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/tools/qcryptographichash.cpp +qcryptographichash.o: $(SOURCE_PATH)/src/corelib/tools/qcryptographichash.cpp + $(CXX) -c -o $@ $(CXXFLAGS) $< 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 + $(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 + $(CXX) -c -o $@ $(CXXFLAGS) $< qjsondocument.o: $(SOURCE_PATH)/src/corelib/json/qjsondocument.cpp - $(CXX) -c -o $@ $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/json/qjsondocument.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 + $(CXX) -c -o $@ $(CXXFLAGS) $< qjsonarray.o: $(SOURCE_PATH)/src/corelib/json/qjsonarray.cpp - $(CXX) -c -o $@ $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/json/qjsonarray.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 + $(CXX) -c -o $@ $(CXXFLAGS) $< qjsonvalue.o: $(SOURCE_PATH)/src/corelib/json/qjsonvalue.cpp - $(CXX) -c -o $@ $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/json/qjsonvalue.cpp + $(CXX) -c -o $@ $(CXXFLAGS) $< # DO NOT DELETE THIS LINE -- make depend depends on it diff --git a/qmake/Makefile.win32 b/qmake/Makefile.win32 index 7639d09ffd..385493b582 100644 --- a/qmake/Makefile.win32 +++ b/qmake/Makefile.win32 @@ -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 \ diff --git a/qmake/doc/src/qmake-manual.qdoc b/qmake/doc/src/qmake-manual.qdoc index 0af6f8ca76..db6ddc3995 100644 --- a/qmake/doc/src/qmake-manual.qdoc +++ b/qmake/doc/src/qmake-manual.qdoc @@ -3534,6 +3534,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. 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 ac198dcda3..cc1aaf3817 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/library/proitems.h b/qmake/library/proitems.h index c81e205699..40fc23ed19 100644 --- a/qmake/library/proitems.h +++ b/qmake/library/proitems.h @@ -139,6 +139,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 2bb6f2e12d..85de50ef0c 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()) { @@ -1120,7 +1124,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; @@ -1261,7 +1265,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; } @@ -1291,7 +1295,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) @@ -1432,12 +1436,12 @@ QMakeEvaluator::VisitReturn QMakeEvaluator::evaluateBuiltinConditional( } if (args.count() == 1) return returnBool(isActiveConfig(args.at(0).toQStringRef())); - const QStringList &mutuals = args.at(1).toQString(m_tmp2).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]); } } @@ -1466,11 +1470,11 @@ QMakeEvaluator::VisitReturn QMakeEvaluator::evaluateBuiltinConditional( t ^= 1; } } else { - const QStringList &mutuals = args.at(2).toQString(m_tmp3).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_tmp2))) || val == qry); @@ -1501,7 +1505,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; } } @@ -1511,7 +1515,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); @@ -1533,15 +1537,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).toQString(m_tmp1)); + == 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; @@ -1558,7 +1575,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; @@ -1665,7 +1682,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 b0ed01e3aa..12e2827788 100644 --- a/qmake/library/qmakeevaluator.cpp +++ b/qmake/library/qmakeevaluator.cpp @@ -1582,7 +1582,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; } @@ -1775,7 +1775,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; } @@ -1801,7 +1801,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/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..77c190bb9a 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 |