summaryrefslogtreecommitdiffstats
path: root/qmake/Makefile.win32
blob: a1699bd6f8bda33635086a34e91a0c052a4dd1e4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
!if "$(SOURCE_PATH)" == ""
SOURCE_PATH = ..
!endif
!if "$(BUILD_PATH)" == ""
BUILD_PATH = ..
!endif

QMKSRC = $(SOURCE_PATH)\qmake

#
# per-compiler options
#
!if "$(QMAKESPEC)" == "win32-icc"
CXX               = icl
LINKER            = link
CFLAGS_EXTRA      = /Zc:forScope /Qstd=c++11
!elseif "$(QMAKESPEC)" == "win32-clang-msvc"
CXX               = clang-cl
LINKER            = link
CFLAGS_EXTRA      = -fms-compatibility-version=19.00.23506 -Wno-microsoft-enum-value
!else
CXX               = cl
LINKER            = link
CFLAGS_EXTRA      = /MP /wd4577 $(CFLAGS_CRT)
!endif  # !win32-icc

!if "$(QMAKESPEC)" != "win32-clang-msvc"
CFLAGS_PCH        = -Yuqmake_pch.h -FIqmake_pch.h -Fpqmake_pch.pch
PCH_OBJECT        = qmake_pch.obj
!endif

CFLAGS_BARE = -c -Fo./ -Fdqmake.pdb \
              -W2 -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$(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$(SOURCE_PATH)\mkspecs\$(QMAKESPEC)  \
              -D_CRT_SECURE_NO_WARNINGS -D_SCL_SECURE_NO_WARNINGS \
              -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 -DUNICODE -D_ENABLE_EXTENDED_ALIGNED_STORAGE
CFLAGS   = $(CFLAGS_PCH) $(CFLAGS_BARE) $(CFLAGS)

CXXFLAGS_BARE = $(CFLAGS_BARE)
CXXFLAGS = $(CFLAGS)

LFLAGS	    =
LIBS        = ole32.lib advapi32.lib shell32.lib netapi32.lib
ADDCLEAN    = qmake.pdb qmake.ilk

#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 \
              msvc_nmake.obj msvc_vcproj.obj msvc_vcxproj.obj \
              msvc_objectmodel.obj msbuild_objectmodel.obj registry.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 \
	qendian.obj \
	qglobal.obj \
	qhash.obj \
	qiodevice.obj \
	qringbuffer.obj \
	qdebug.obj \
	qlist.obj \
	qlinkedlist.obj \
	qlocale.obj \
	qlocale_tools.obj \
	qlocale_win.obj \
	qversionnumber.obj \
	qmalloc.obj \
	qmap.obj \
	qoperatingsystemversion.obj \
	qoperatingsystemversion_win.obj \
	qregexp.obj \
	qtextcodec.obj \
	qutfcodec.obj \
	qstring.obj \
	qstring_compat.obj \
	qstringlist.obj \
	qstringbuilder.obj \
	qsystemerror.obj \
	qtextstream.obj \
	qdatastream.obj \
	quuid.obj \
	qrandom.obj \
	qsettings.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: $(BUILD_PATH)\bin\qmake.exe
binary: $(BUILD_PATH)\qmake\qmake.exe

$(BUILD_PATH)\bin\qmake.exe: $(OBJS) $(QTOBJS) qlibraryinfo.obj
	$(LINKER) $(LFLAGS) /OUT:$(BUILD_PATH)\bin\qmake.exe $(OBJS) $(QTOBJS) qlibraryinfo.obj $(PCH_OBJECT) $(LIBS)

$(BUILD_PATH)\qmake\qmake.exe: $(OBJS) $(QTOBJS) qlibraryinfo_final.obj
	$(LINKER) $(LFLAGS) /OUT:$(BUILD_PATH)\qmake\qmake.exe $(OBJS) $(QTOBJS) qlibraryinfo_final.obj $(PCH_OBJECT) $(LIBS)

clean::
	-del $(QTOBJS) qlibraryinfo.obj qlibraryinfo_final.obj
	-del $(OBJS)
	-del qmake_pch.obj
	-del qmake_pch.pch
	-del qmake.pdb
	-del qmake.ilk
	-del qmake.tds

distclean:: clean
	-del $(BUILD_PATH)\bin\qmake.exe
	-del $(BUILD_PATH)\qmake\qmake.exe
	-del Makefile

.cpp.obj:
	$(CXX) $(CXXFLAGS) $<

$(OBJS): $(PCH_OBJECT)

$(QTOBJS): $(PCH_OBJECT)

qlibraryinfo.obj: $(PCH_OBJECT)
qlibraryinfo_final.obj: $(PCH_OBJECT)

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\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\serialization}.cpp{}.obj::
	$(CXX) $(CXXFLAGS) $<

{$(SOURCE_PATH)\src\corelib\tools}.cpp{}.obj::
	$(CXX) $(CXXFLAGS) $<

# Make sure qstring_compat.obj and qlibraryinfo.obj aren't compiled with PCH enabled
qstring_compat.obj: $(SOURCE_PATH)\src\corelib\tools\qstring_compat.cpp
	$(CXX) -c $(CXXFLAGS_BARE) $(SOURCE_PATH)\src\corelib\tools\qstring_compat.cpp

qlibraryinfo.obj: $(SOURCE_PATH)\src\corelib\global\qlibraryinfo.cpp
        $(CXX) $(CXXFLAGS_BARE) -DQT_BUILD_QMAKE_BOOTSTRAP $(SOURCE_PATH)\src\corelib\global\qlibraryinfo.cpp

qlibraryinfo_final.obj: $(SOURCE_PATH)\src\corelib\global\qlibraryinfo.cpp $(BUILD_PATH)\src\corelib\global\qconfig.cpp
	$(CXX) $(CXXFLAGS) -Foqlibraryinfo_final.obj $(SOURCE_PATH)\src\corelib\global\qlibraryinfo.cpp