qt5base-lts/qmake/Makefile.win32
Morten Johan Sørvig 89ef515177 Add JSON parsing support to qmake.
Add qjson* implementation files from corelib/json
to the qmake build. Add a read-only compile mode,
enabled by defining QT_JSON_READONLY.

Add qmake built-in function parseJson(file, into)
which parses a json file into the given variable.

qmake uses a flat key -> value-list implementation
for storing variables, which means that some hackery
is need to represent arbitrarily nested JSON. Use a
special "_KEYS_" variable for arrays and objects:

Arrays:
["item1", "item2"]
$${array._KEYS_} -> 0 1 2
$${array.0} -> "item1"
$${array.1} -> "item2"

Objects:
{ "key1" : "value1", "key2" : "value2" }
$${object._KEYS_} -> key1 key2
$${object.key1} -> value1
$${object.key2} -> value2

Change-Id: I0aa2e4e4ae14fa25be8242bc16d3cffce32504d2
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2013-10-17 08:07:25 +02:00

221 lines
5.7 KiB
Makefile

!IF "$(QMAKESPEC)" == "win32-msvc" || "$(QMAKESPEC)" == "win32-msvc.net" || "$(QMAKESPEC)" == "win32-msvc2002" || "$(QMAKESPEC)" == "win32-msvc2003" || "$(QMAKESPEC)" == "win32-msvc2005" || "$(QMAKESPEC)" == "win32-msvc2008" || "$(QMAKESPEC)" == "win32-msvc2010" || "$(QMAKESPEC)" == "win32-msvc2012" || "$(QMAKESPEC)" == "win32-msvc2013" || "$(QMAKESPEC)" == "win32-icc"
!if "$(SOURCE_PATH)" == ""
SOURCE_PATH = ..
!endif
!if "$(BUILD_PATH)" == ""
BUILD_PATH = ..
!endif
QMKSRC = $(SOURCE_PATH)\qmake
#
# specific stuff for NMake and ICC
#
!if "$(QMAKESPEC)" == "win32-icc"
CXX = icl
LINKER = link
CFLAGS = /Zc:forScope
!else
CXX = cl
LINKER = link
!endif
#
# specific stuff for VS2005
#
!if "$(QMAKESPEC)" == "win32-msvc2005"
CFLAGS_EXTRA = /Zc:wchar_t-
!elseif "$(QMAKESPEC)" == "win32-msvc2008" || "$(QMAKESPEC)" == "win32-msvc2010" || "$(QMAKESPEC)" == "win32-msvc2012" || "$(QMAKESPEC)" == "win32-msvc2013"
CFLAGS_EXTRA = /MP
!endif
CFLAGS_BARE = -c -Fo./ \
-W3 -nologo -O1 \
$(CFLAGS_EXTRA) \
-I$(QMKSRC) -I$(QMKSRC)\library -I$(QMKSRC)\generators -I$(QMKSRC)\generators\unix -I$(QMKSRC)\generators\win32 -I$(QMKSRC)\generators\mac -I$(QMKSRC)\generators\integrity \
-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 -DHAVE_QCONFIG_CPP \
-I$(SOURCE_PATH)\mkspecs\$(QMAKESPEC) \
-I$(SOURCE_PATH)\tools\shared \
-DQT_BUILD_QMAKE -DQT_BOOTSTRAPPED -DPROEVALUATOR_FULL \
-DQT_NO_TEXTCODEC -DQT_NO_UNICODETABLES -DQT_NO_COMPONENT -DQT_NO_COMPRESS \
-DQT_NO_THREAD -DQT_NO_QOBJECT -DQT_NO_GEOM_VARIANT -DQT_NO_DATASTREAM \
-DUNICODE -DQT_CRYPTOGRAPHICHASH_ONLY_SHA1 -DQT_JSON_READONLY
CFLAGS = -Yuqmake_pch.h -FIqmake_pch.h -Fpqmake_pch.pch $(CFLAGS_BARE) $(CFLAGS) $(EXTRA_CPPFLAGS)
CXXFLAGS_BARE = $(CFLAGS_BARE)
CXXFLAGS = $(CFLAGS)
LFLAGS =
LIBS = ole32.lib advapi32.lib
LINKQMAKE = $(LINKER) $(LFLAGS) -OUT:qmake.exe $(OBJS) $(QTOBJS) $(LIBS)
ADDCLEAN = vc60.pdb vc70.pdb qmake.pdb qmake.ilk
!ELSE
!ERROR Unsupported compiler for this Makefile
!ENDIF
#qmake code
OBJS = project.obj main.obj ioutils.obj proitems.obj qmakevfs.obj \
qmakeglobals.obj qmakeparser.obj qmakeevaluator.obj qmakebuiltins.obj \
makefile.obj unixmake.obj unixmake2.obj mingw_make.obj \
option.obj winmakefile.obj projectgenerator.obj property.obj meta.obj \
makefiledeps.obj metamakefile.obj xmloutput.obj pbuilder_pbx.obj \
msvc_nmake.obj msvc_vcproj.obj msvc_vcxproj.obj \
msvc_objectmodel.obj msbuild_objectmodel.obj registry.obj \
gbuild.obj cesdkhandler.obj
#qt code
QTOBJS= \
qbitarray.obj \
qbuffer.obj \
qcryptographichash.obj \
qfilesystementry.obj \
qfilesystemengine.obj \
qfilesystemengine_win.obj \
qfilesystemiterator_win.obj \
qfsfileengine.obj \
qfsfileengine_iterator.obj \
qarraydata.obj \
qbytearray.obj \
qvsnprintf.obj \
qbytearraymatcher.obj \
qdatetime.obj \
qdir.obj \
qdiriterator.obj \
qfiledevice.obj \
qfile.obj \
qtemporaryfile.obj \
qabstractfileengine.obj \
qfsfileengine_win.obj \
qsystemlibrary.obj \
qfileinfo.obj \
qglobal.obj \
qhash.obj \
qiodevice.obj \
qlist.obj \
qlinkedlist.obj \
qlocale.obj \
qlocale_tools.obj \
qlocale_win.obj \
qmalloc.obj \
qmap.obj \
qregexp.obj \
qtextcodec.obj \
qutfcodec.obj \
qstring.obj \
qstringlist.obj \
qstringbuilder.obj \
qsystemerror.obj \
qtextstream.obj \
qdatastream.obj \
quuid.obj \
qvector.obj \
qsettings.obj \
qlibraryinfo.obj \
qvariant.obj \
qsettings_win.obj \
qmetatype.obj \
qxmlstream.obj \
qxmlutils.obj \
qnumeric.obj \
qlogging.obj \
qjson.obj \
qjsondocument.obj \
qjsonparser.obj \
qjsonarray.obj \
qjsonobject.obj \
qjsonvalue.obj
first all: qmake.exe
qmake.exe: $(OBJS) $(QTOBJS)
$(LINKQMAKE) qmake_pch.obj
-copy qmake.exe $(BUILD_PATH)\bin\qmake.exe
clean::
-del $(QTOBJS)
-del $(OBJS)
-del qmake_pch.obj
-del qmake_pch.pch
-del qsystemlibrary.obj
-del vc60.pdb
-del vc70.pdb
-del qmake.pdb
-del qmake.ilk
-del qmake.tds
distclean:: clean
-del qmake
.c.obj:
$(CXX) $(CFLAGS) $<
.cpp.obj:
$(CXX) $(CXXFLAGS) $<
.cc.obj:
$(CXX) $(CXXFLAGS) $<
.cxx.obj:
$(CXX) $(CXXFLAGS) $<
$(OBJS): qmake_pch.obj
$(QTOBJS): qmake_pch.obj
qmake_pch.obj:
$(CXX) $(CXXFLAGS_BARE) -c -Yc -Fpqmake_pch.pch -TP $(QMKSRC)\qmake_pch.h
{$(SOURCE_PATH)\qmake\library}.cpp{}.obj::
$(CXX) $(CXXFLAGS) $<
{$(SOURCE_PATH)\qmake\generators\mac}.cpp{}.obj::
$(CXX) $(CXXFLAGS) $<
{$(SOURCE_PATH)\qmake\generators\integrity}.cpp{}.obj::
$(CXX) $(CXXFLAGS) $<
{$(SOURCE_PATH)\qmake\generators\unix}.cpp{}.obj::
$(CXX) $(CXXFLAGS) $<
{$(SOURCE_PATH)\qmake\generators\win32}.cpp{}.obj::
$(CXX) $(CXXFLAGS) $<
{$(SOURCE_PATH)\qmake\generators}.cpp{}.obj::
$(CXX) $(CXXFLAGS) $<
{$(SOURCE_PATH)\qmake}.cpp{}.obj::
$(CXX) $(CXXFLAGS) $<
{$(SOURCE_PATH)\src\3rdparty\md5}.cpp{}.obj::
$(CXX) $(CXXFLAGS) $<
{$(SOURCE_PATH)\src\corelib\codecs}.cpp{}.obj::
$(CXX) $(CXXFLAGS) $<
{$(SOURCE_PATH)\src\corelib\global}.cpp{}.obj::
$(CXX) $(CXXFLAGS) $<
{$(SOURCE_PATH)\src\corelib\io}.cpp{}.obj::
$(CXX) $(CXXFLAGS) $<
{$(SOURCE_PATH)\src\corelib\kernel}.cpp{}.obj::
$(CXX) $(CXXFLAGS) $<
{$(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::
$(CXX) $(CXXFLAGS) $<
{$(SOURCE_PATH)\src\corelib\json}.cpp{}.obj::
$(CXX) $(CXXFLAGS) $<
{$(SOURCE_PATH)\tools\shared\windows}.cpp{}.obj::
$(CXX) $(CXXFLAGS) $<