summaryrefslogtreecommitdiffstats
path: root/src/commonplatform.pri
blob: cec9d152365adb533bc2ae54f76702df66faa60f (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
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
load(qt_build_config)
load(qt_build_paths)

# Common defines across platforms that should be checked if/where they are used
# as we remove dependencies to see where we can reduce
DEFINES += \
    QT3DS_FOUNDATION_NO_EXPORTS \
    _CRT_SECURE_NO_DEPRECATE \
    _CRT_NONSTDC_NO_DEPRECATE \
    QT3DS_GRAPHICS_API_GL \
    QT3DS_NO_SEARCH_PATH \
    QT3DS_RENDER_ENABLE_LOAD_UIP \
    FONT_NO_RES_DIR \
    _TEGRA_NO_LOG_FILE \
    EA_COMPILER_HAS_INTTYPES \
    EASTL_ALLOCATOR_COPY_ENABLED \
    UNICODE \
    _UNICODE \
    NO_BOOST

win32: PlatformSpecificDir = windows
macos: PlatformSpecificDir = macos
linux|integrity|qnx: PlatformSpecificDir = linux
android: PlatformSpecificDir = android/jni

integrity: {
    DEFINES += _LINUX
    DEFINES += _INTEGRITYPLATFORM
}

INCLUDEPATH += $$PWD/Runtime/Source/platformspecific/$$PlatformSpecificDir

THIRDPARTY_DIR = $$(QT3DSTUDIO_3RDPARTY_DIR)
isEmpty(THIRDPARTY_DIR) {
    THIRDPARTY_DIR = $$PWD/3rdparty
}

contains(QT_ARCH, x86_64) {
    DEFINES += QT3DS_PROCESSOR_X64
}

CONFIG(debug, debug|release) {
    DEFINES += _DEBUG
} else {
    DEFINES += NDEBUG
}

linux|qnx {
    CONFIG += egl
    DEFINES+=_LINUX QT3DS_OS_LINUX _LINUXPLATFORM QT3DS_NO_X11 \
        QT3DS_VIEWER_EXPORTS WIDE_IS_DIFFERENT_TYPE_THAN_CHAR16_T
    QMAKE_CXXFLAGS_WARN_ON = -Wall -Wno-unused-local-typedefs
}

linux-clang {
    DEFINES += __STRICT_ANSI__
}

macos {
    DEFINES += _MACOSX _LINUXPLATFORM WIDE_IS_DIFFERENT_TYPE_THAN_CHAR16_T
    INCLUDEPATH += /usr/local/include

# macOS builds treat most warnings as errors to prevent slipping more warnings
# in to the code

# Suppress large number of warnings from the Qt 3D Studio Code.
# Suppressions have been reported in JIRA with these bugs:
# QT3DS-2214 -Wno-unused-local-typedefs
# QT3DS-2216 -Wno-inconsistent-missing-override
# QT3DS-2222 -Wno-reorder
# QT3DS-2223 -Wno-format
# QT3DS-2224 -Wno-unused-function
# QT3DS-2227 -Wno-unused-value
# QT3DS-2229 -Wno-delete-non-virtual-dtor
# QT3DS-2234 -Wno-unused-variable
# QT3DS-2235 -Wno-overloaded-virtual
# QT3DS-2237 -Wno-unused-private-field
# QT3DS-2238 -Wno-comment
# QT3DS-2240 -Wno-enum-compare
# QT3DS-2241 -Wno-int-to-pointer-cast
# QT3DS-2242 -Wno-int-to-void-pointer-cast
# QT3DS-2244 -Wno-unused-lambda-capture
# QT3DS-2246 -Wno-deprecated-declarations
# QT3DS-2247 -Wno-pointer-bool-conversion
# QT3DS-2248 -Wno-self-assign
# QT3DS-2249 -Wno-tautological-compare
# QT3DS-2251 -Wno-tautological-constant-out-of-range-compare
    QMAKE_CXXFLAGS_WARN_ON = -Wall \
        -Werror \
        -Wno-unknown-pragmas \
        -Wno-unused-local-typedefs \
        -Wno-inconsistent-missing-override \
        -Wno-reorder \
        -Wno-format \
        -Wno-unused-function \
        -Wno-unused-value \
        -Wno-delete-non-virtual-dtor \
        -Wno-unused-variable \
        -Wno-overloaded-virtual \
        -Wno-unused-private-field \
        -Wno-comment \
        -Wno-enum-compare \
        -Wno-int-to-pointer-cast \
        -Wno-int-to-void-pointer-cast \
        -Wno-unused-lambda-capture \
        -Wno-deprecated-declarations \
        -Wno-pointer-bool-conversion \
        -Wno-self-assign \
        -Wno-tautological-compare \
        -Wno-tautological-constant-out-of-range-compare \
        -Wno-mismatched-tags \
        -Wno-pragma-pack \
        -Wno-error=unused-local-typedefs \
        -Wno-error=inconsistent-missing-override \
        -Wno-error=reorder \
        -Wno-error=format \
        -Wno-error=unused-function \
        -Wno-error=unused-value \
        -Wno-error=delete-non-virtual-dtor \
        -Wno-error=unused-variable \
        -Wno-error=overloaded-virtual \
        -Wno-error=unused-private-field \
        -Wno-error=comment \
        -Wno-error=enum-compare \
        -Wno-error=int-to-pointer-cast \
        -Wno-error=int-to-void-pointer-cast \
        -Wno-error=unused-lambda-capture \
        -Wno-error=deprecated-declarations \
        -Wno-error=pointer-bool-conversion \
        -Wno-error=self-assign \
        -Wno-error=tautological-compare \
        -Wno-error=tautological-constant-out-of-range-compare \
        -Wno-error=switch \
        -Wno-error=mismatched-tags \
        -Wno-error=logical-op-parentheses \
        -Wno-error=pragmas \
        -Wno-error=pragma-pack \
        -Wno-error=mismatched-tags

    QMAKE_CFLAGS_WARN_ON = -Wall \
        -Werror \
        -Wno-unknown-pragmas \
        -Wno-unused-local-typedefs \
        -Wno-inconsistent-missing-override \
        -Wno-reorder \
        -Wno-format \
        -Wno-unused-function \
        -Wno-unused-value \
        -Wno-delete-non-virtual-dtor \
        -Wno-unused-variable \
        -Wno-overloaded-virtual \
        -Wno-unused-private-field \
        -Wno-comment \
        -Wno-enum-compare \
        -Wno-int-to-pointer-cast \
        -Wno-int-to-void-pointer-cast \
        -Wno-unused-lambda-capture \
        -Wno-deprecated-declarations \
        -Wno-pointer-bool-conversion \
        -Wno-self-assign \
        -Wno-tautological-compare \
        -Wno-tautological-constant-out-of-range-compare \
        -Wno-mismatched-tags \
        -Wno-pragma-pack \
        -Wno-error=unused-local-typedefs \
        -Wno-error=inconsistent-missing-override \
        -Wno-error=reorder \
        -Wno-error=format \
        -Wno-error=unused-function \
        -Wno-error=unused-value \
        -Wno-error=delete-non-virtual-dtor \
        -Wno-error=unused-variable \
        -Wno-error=overloaded-virtual \
        -Wno-error=unused-private-field \
        -Wno-error=comment \
        -Wno-error=enum-compare \
        -Wno-error=int-to-pointer-cast \
        -Wno-error=int-to-void-pointer-cast \
        -Wno-error=unused-lambda-capture \
        -Wno-error=deprecated-declarations \
        -Wno-error=pointer-bool-conversion \
        -Wno-error=self-assign \
        -Wno-error=tautological-compare \
        -Wno-error=tautological-constant-out-of-range-compare \
        -Wno-error=switch \
        -Wno-error=mismatched-tags \
        -Wno-error=logical-op-parentheses \
        -Wno-error=pragmas \
        -Wno-error=pragma-pack \
        -Wno-error=mismatched-tags

# Suppress the huge pile of Qt related warnings on "direct access in function
# from file to global weak symbol". These arise when not using devbuilds of Qt.
    QMAKE_CXXFLAGS += -fvisibility=hidden
    QMAKE_CFLAGS += -fvisibility=hidden
}

clang {
# Suppress large number of warnings from the Qt 3D Studio Code.
# Suppressions have been reported in JIRA with bugs
    QMAKE_CXXFLAGS_WARN_ON = -Wall \
        -Wno-unknown-pragmas \
        -Wno-unused-local-typedefs \
        -Wno-inconsistent-missing-override \
        -Wno-reorder \
        -Wno-format \
        -Wno-unused-function \
        -Wno-unused-value \
        -Wno-delete-non-virtual-dtor \
        -Wno-unused-variable \
        -Wno-overloaded-virtual \
        -Wno-unused-private-field \
        -Wno-comment \
        -Wno-enum-compare \
        -Wno-int-to-pointer-cast \
        -Wno-int-to-void-pointer-cast \
        -Wno-unused-lambda-capture \
        -Wno-deprecated-declarations \
        -Wno-pointer-bool-conversion \
        -Wno-self-assign \
        -Wno-tautological-compare \
        -Wno-tautological-constant-out-of-range-compare \
        -Wno-mismatched-tags \
        -Wno-pragma-pack

    QMAKE_CFLAGS_WARN_ON = -Wall \
        -Wno-unknown-pragmas \
        -Wno-unused-local-typedefs \
        -Wno-inconsistent-missing-override \
        -Wno-reorder \
        -Wno-format \
        -Wno-unused-function \
        -Wno-unused-value \
        -Wno-delete-non-virtual-dtor \
        -Wno-unused-variable \
        -Wno-overloaded-virtual \
        -Wno-unused-private-field \
        -Wno-comment \
        -Wno-enum-compare \
        -Wno-int-to-pointer-cast \
        -Wno-int-to-void-pointer-cast \
        -Wno-unused-lambda-capture \
        -Wno-deprecated-declarations \
        -Wno-pointer-bool-conversion \
        -Wno-self-assign \
        -Wno-tautological-compare \
        -Wno-tautological-constant-out-of-range-compare \
        -Wno-mismatched-tags \
        -Wno-pragma-pack

# Suppress the huge pile of Qt related warnings on "direct access in function
# from file to global weak symbol". These arise when not using devbuilds of Qt.
    QMAKE_CXXFLAGS += -fvisibility=hidden
    QMAKE_CFLAGS += -fvisibility=hidden
}

android {
    QMAKE_CXXFLAGS -= -fstack-protector-strong
    QMAKE_CFLAGS -= -fstack-protector-strong
    # TODO: Should be done using this instead of copying the GLES headers, but including this
    # causes lots of conflicting definitions in signal.h for some reason. Feel free to fix it if
    # you know how. After this works, GLES3 and GLES2 folders can be deleted from
    # 3rdparty/RuntimePlatformSpecific/Android/jni
#    INCLUDEPATH += $$(ANDROID_NDK_ROOT)/sysroot/usr/include
#    DEFINES += __BITS_PER_LONG=32
}

win32 {
    DEFINES += QT3DS_OS_WINDOWS _WIN32 _PCPLATFORM \
        WIDE_IS_DIFFERENT_TYPE_THAN_CHAR16_T KDWIN NOMINMAX

    win32-msvc {
        QMAKE_CXXFLAGS += /MP /d2Zi+
        QMAKE_CFLAGS += /MP /d2Zi+
        # Warning C4251 = needs to have dll-interface to be used by clients of class,
        #                 it comes from a lot of Qt headers, so disabling it.
        QMAKE_CXXFLAGS_WARN_ON += -wd4251 #needs to have dll-interface to be used by clients
    }

    CONFIG(debug, debug|release) {
        win32-msvc {
            QMAKE_CXXFLAGS += /Od
            QMAKE_CFLAGS += /Od
        }
    } else {
        win32-msvc {
            QMAKE_CXXFLAGS += /Ox
            QMAKE_CFLAGS += /Ox
        }
    }

    contains(QT_ARCH, x86_64) {
        DEFINES += _WIN64
    }
}

BINDIR = $$MODULE_BASE_OUTDIR/bin
LIBDIR = $$MODULE_BASE_OUTDIR/lib
LIBS += -L"$$LIBDIR"
!testcase {
    contains(TEMPLATE, app) {
        DESTDIR = $$BINDIR
    } else {
        DESTDIR = $$LIBDIR
        win32: DLLDESTDIR = $$BINDIR
    }
}