Sync Mk with ports
[dports.git] / Mk / bsd.qt.mk
1 # $FreeBSD: Mk/bsd.qt.mk 334045 2013-11-17 02:12:25Z avilla $
2 #
3 # Variables:
4 # QT_NONSTANDARD        - Suppress modification of configure and make environment.
5 # QT_DIST               - Package being built is part of the Qt distribution.
6 #
7 # Global switches (add this to /etc/make.conf):
8 # QT4_OPTIONS           - A list of options, can be CUPS, NAS and/or QGTKSTYLE.
9 #                               If set, Qt will be built with support for:
10 #                               - Common UNIX Printing System (CUPS);
11 #                               - Network Audio System (NAS);
12 #                               - Qt style that renders using GTK (QGTKSTYLE).
13
14 .if !defined(_POSTMKINCLUDED) && !defined(Qt_Pre_Include)
15 Qt_Include_MAINTAINER=  kde@FreeBSD.org
16 Qt_Pre_Include=         bsd.qt.mk
17
18 .if !defined(QT_NONSTANDARD)
19 CONFIGURE_ARGS+=--with-qt-includes=${QT_INCDIR} \
20                 --with-qt-libraries=${QT_LIBDIR} \
21                 --with-extra-libs=${LOCALBASE}/lib \
22                 --with-extra-includes=${LOCALBASE}/include
23 CONFIGURE_ENV+= MOC="${MOC}" UIC="${UIC}" LIBS="${QTCFGLIBS}" \
24                 QMAKE="${QMAKE}" QMAKESPEC="${QMAKESPEC}" QTDIR="${QT_PREFIX}"
25 CPPFLAGS+=      ${QTCPPFLAGS}
26 MAKE_ENV+=      QMAKESPEC="${QMAKESPEC}"
27 .endif # !defined(QT_NONSTANDARD)
28
29 .if defined(QT_DIST)
30 DISTINFO_FILE=  ${PORTSDIR}/devel/qt4/distinfo
31 MASTER_SITES=   ${MASTER_SITE_QT}
32 MASTER_SITE_SUBDIR=     official_releases/qt/${QT4_VERSION:R}/${QT4_VERSION}
33 DISTNAME=       qt-everywhere-opensource-src-${QT4_VERSION}
34 DIST_SUBDIR=    KDE
35 #CONFLICTS+=    Currently there are no conflicts \o/
36
37
38 # Stage support
39 DESTDIRNAME=    INSTALL_ROOT
40
41 # rene: can go after a while
42 CONFLICTS_BUILD=        qt-3.* qt-copy-3.*
43
44 # Let configure handle its well known compilers defined in the mkspecs
45 # (i.e. `cc` and `c++` are not supported by configure tests).
46 CONFIGURE_ENV+= CC="" CXX=""
47
48 # Keep in sync with devel/qmake4/files/qconfig.cpp
49 CONFIGURE_ARGS+=-fast -platform ${QMAKESPEC} \
50                 -system-libjpeg -system-libpng \
51                 -system-libmng -system-libtiff -system-zlib \
52                 -opensource -confirm-license \
53                 -no-pch \
54                 -prefix ${PREFIX} \
55                 -bindir ${PREFIX}/bin \
56                 -libdir ${PREFIX}/${QT_LIBDIR_REL} \
57                 -docdir ${PREFIX}/share/doc/qt4 \
58                 -headerdir ${PREFIX}/${QT_INCDIR_REL} \
59                 -plugindir ${PREFIX}/${QT_PLUGINDIR_REL} \
60                 -importdir ${PREFIX}/${QT_LIBDIR_REL}/imports \
61                 -datadir ${PREFIX}/share/qt4 \
62                 -translationdir ${PREFIX}/share/qt4/translations \
63                 -sysconfdir ${PREFIX}/etc/xdg \
64                 -examplesdir ${PREFIX}/share/examples/qt4/examples \
65                 -demosdir ${PREFIX}/share/examples/qt4/demos \
66                 -phonon -no-phonon-backend
67
68 PLIST_SUB+=     SHLIB_VER=${QT4_VERSION:C/-.*//} \
69                 SHLIB_SHVER=${QT4_VERSION:R}
70
71 # SIMD support is detected on runtime, no need to disable on build.
72 #.if defined(PACKAGE_BUILDING)
73 #CONFIGURE_ARGS+=-no-mmx -no-3dnow -no-sse -no-sse2 -no-sse3 \
74 #               -no-ssse3 -no-sse4.1 -no-sse4.2
75 #.endif #defined(PACKAGE_BUILDING)
76
77 # .if defined(PORTNAME) && ${PORTNAME} != "xmlpatterns"
78 # CONFIGURE_ARGS+=-no-exceptions
79 # .endif
80
81 .if defined(WANT_QT_DEBUG) || defined(WITH_DEBUG)
82 CONFIGURE_ARGS+=-debug -separate-debug-info
83 PLIST_SUB+=     DEBUG=""
84 .else
85 CONFIGURE_ARGS+=-release -no-separate-debug-info
86 PLIST_SUB+=     DEBUG="@comment "
87 .endif
88
89 .if defined(WANT_QT_VERBOSE_CONFIGURE)
90 CONFIGURE_ARGS+=-verbose
91 .endif
92 .endif #defined(QT_DIST)
93
94 QT_INCDIR_REL=  include/qt4
95 QT_LIBDIR_REL=  lib/qt4
96 QT_PLUGINDIR_REL=       lib/qt4/plugins
97
98 PLIST_SUB+=     QT_INCDIR=${QT_INCDIR_REL} \
99                 QT_LIBDIR=${QT_LIBDIR_REL} \
100                 QT_PLUGINDIR=${QT_PLUGINDIR_REL}
101
102 QT_PREFIX?=     ${LOCALBASE}
103 QT_INCDIR?=     ${QT_PREFIX}/${QT_INCDIR_REL}
104 QT_LIBDIR?=     ${QT_PREFIX}/${QT_LIBDIR_REL}
105 QT_PLUGINDIR?=  ${QT_PREFIX}/${QT_PLUGINDIR_REL}
106 MOC?=           ${QT_PREFIX}/bin/moc-qt4
107 UIC?=           ${QT_PREFIX}/bin/uic-qt4
108 RCC?=           ${QT_PREFIX}/bin/rcc
109 QMAKE?=         ${QT_PREFIX}/bin/qmake-qt4
110 QMAKEFLAGS+=    QMAKE_CC="${CC}" QMAKE_CXX="${CXX}" \
111                 QMAKE_LINK="${CXX}" QMAKE_LINK_SHLIB="${CXX}" \
112                 QMAKE_LINK_C="${CC}" QMAKE_LINK_C_SHLIB="${CC}" \
113                 QMAKE_CFLAGS="${CFLAGS}" QMAKE_CXXFLAGS="${CXXFLAGS}"
114
115 QTCPPFLAGS?=
116 QTCGFLIBS?=
117
118 .endif # !defined(_POSTMKINCLUDED) && !defined(Qt_Pre_Include)
119
120 #
121 # QT4 version
122 #
123 QT4_VERSION?=           4.8.5
124
125 _USE_QT4_ALL=   accessible assistant assistant-adp assistantclient \
126                         clucene codecs-cn codecs-jp codecs-kr codecs-tw corelib \
127                         dbus declarative demo designer doc \
128                         graphicssystems-opengl gui help help-tools \
129                         iconengines imageformats inputmethods \
130                         linguist l10n makeqpf moc multimedia network opengl \
131                         pixeltool porting phonon phonon-gst \
132                         qdbusviewer qmlviewer qdoc3 qmake qt3support qtconfig qtestlib \
133                         qvfb rcc script scripttools sql sql-ibase sql-mysql \
134                         sql-odbc sql-pgsql sql-sqlite2 sql-sqlite3 svg uic uic3 \
135                         webkit xml xmlpatterns xmlpatterns-tool
136
137 accessible_PORT=        accessibility/qt4-accessible
138 accessible_DEPENDS=     ${QT_PLUGINDIR}/accessible/libqtaccessiblewidgets.so
139
140 assistant_PORT=         devel/qt4-assistant
141 assistant_DEPENDS=      ${QT_PREFIX}/bin/assistant-qt4
142
143 assistant-adp_PORT=     devel/qt4-assistant-adp
144 assistant-adp_DEPENDS=  ${QT_PREFIX}/bin/assistant_adp
145
146 assistantclient_PORT=           devel/qt4-libqtassistantclient
147 assistantclient_DEPENDS=        ${QT_LIBDIR}/libQtAssistantClient.so
148
149 clucene_PORT=           textproc/qt4-clucene
150 clucene_DEPENDS=        ${QT_LIBDIR}/libQtCLucene.so
151
152 codecs-cn_PORT=         chinese/qt4-codecs-cn
153 codecs-cn_DEPENDS=      ${QT_PLUGINDIR}/codecs/libqcncodecs.so
154
155 codecs-jp_PORT=         japanese/qt4-codecs-jp
156 codecs-jp_DEPENDS=      ${QT_PLUGINDIR}/codecs/libqjpcodecs.so
157
158 codecs-kr_PORT=         korean/qt4-codecs-kr
159 codecs-kr_DEPENDS=      ${QT_PLUGINDIR}/codecs/libqkrcodecs.so
160
161 codecs-tw_PORT=         chinese/qt4-codecs-tw
162 codecs-tw_DEPENDS=      ${QT_PLUGINDIR}/codecs/libqtwcodecs.so
163
164 corelib_PORT=           devel/qt4-corelib
165 corelib_DEPENDS=        ${QT_LIBDIR}/libQtCore.so
166
167 dbus_PORT=      devel/dbus-qt4
168 dbus_DEPENDS=   ${QT_LIBDIR}/libQtDBus.so
169
170 declarative_PORT=       devel/qt4-declarative
171 declarative_DEPENDS=    ${QT_LIBDIR}/libQtDeclarative.so
172
173 demo_PORT=      misc/qt4-qtdemo
174 demo_DEPENDS=   ${QT_PREFIX}/bin/qtdemo
175
176 designer_PORT=          devel/qt4-designer
177 designer_DEPENDS=       ${QT_PREFIX}/bin/designer-qt4
178
179 doc_PORT=       misc/qt4-doc
180 doc_DEPENDS=    qt4-doc>=4
181
182 graphicssystems-opengl_PORT=    x11/qt4-graphicssystems-opengl
183 graphicssystems-opengl_DEPENDS= ${QT_PLUGINDIR}/graphicssystems/libqglgraphicssystem.so
184
185 gui_PORT=       x11-toolkits/qt4-gui
186 gui_DEPENDS=    ${QT_LIBDIR}/libQtGui.so
187
188 help_PORT=      devel/qt4-help
189 help_DEPENDS=   ${QT_LIBDIR}/libQtHelp.so
190
191 help-tools_PORT=        devel/qt4-help-tools
192 help-tools_DEPENDS=     ${QT_PREFIX}/bin/qhelpgenerator
193
194 iconengines_PORT=       graphics/qt4-iconengines
195 iconengines_DEPENDS=    ${QT_PLUGINDIR}/iconengines/libqsvgicon.so
196
197 imageformats_PORT=      graphics/qt4-imageformats
198 imageformats_DEPENDS=   ${QT_PLUGINDIR}/imageformats/libqjpeg.so
199
200 inputmethods_PORT=      x11/qt4-inputmethods
201 inputmethods_DEPENDS=   ${QT_PLUGINDIR}/inputmethods/libqimsw-multi.so
202
203 linguist_PORT=          devel/qt4-linguist
204 linguist_DEPENDS=       ${QT_PREFIX}/bin/linguist-qt4
205
206 l10n_PORT=      misc/qt4-l10n
207 l10n_DEPENDS=   qt4-l10n>=4
208
209 makeqpf_PORT=           devel/qt4-makeqpf
210 makeqpf_DEPENDS=        ${QT_PREFIX}/bin/makeqpf-qt4
211
212 moc_PORT=       devel/qt4-moc
213 moc_DEPENDS=    ${MOC}
214
215 multimedia_PORT=        multimedia/qt4-multimedia
216 multimedia_DEPENDS=     ${QT_LIBDIR}/libQtMultimedia.so
217
218 network_PORT=           net/qt4-network
219 network_DEPENDS=        ${QT_LIBDIR}/libQtNetwork.so
220
221 opengl_PORT=    x11/qt4-opengl
222 opengl_DEPENDS= ${QT_LIBDIR}/libQtOpenGL.so
223
224 pixeltool_PORT=         graphics/qt4-pixeltool
225 pixeltool_DEPENDS=      ${QT_PREFIX}/bin/pixeltool
226
227 phonon_PORT=    multimedia/phonon
228 phonon_DEPENDS= ${QT_LIBDIR}/libphonon.so
229
230 phonon-gst_PORT=        multimedia/phonon-gstreamer
231 phonon-gst_DEPENDS=     ${QT_PLUGINDIR}/phonon_backend/libphonon_gstreamer.so
232
233 porting_PORT=           devel/qt4-porting
234 porting_DEPENDS=        ${QT_PREFIX}/bin/qt3to4
235
236 qdbusviewer_PORT=       devel/qt4-qdbusviewer
237 qdbusviewer_DEPENDS=    ${QT_PREFIX}/bin/qdbusviewer
238
239 qmlviewer_PORT=         devel/qt4-qmlviewer
240 qmlviewer_DEPENDS=      ${QT_PREFIX}/bin/qmlviewer
241
242 qdoc3_PORT=     devel/qt4-qdoc3
243 qdoc3_DEPENDS=  ${QT_PREFIX}/bin/qdoc3
244
245 qmake_PORT=     devel/qmake4
246 qmake_DEPENDS=  ${QMAKE}
247
248 qt3support_PORT=        devel/qt4-qt3support
249 qt3support_DEPENDS=     ${QT_LIBDIR}/libQt3Support.so
250
251 qtconfig_PORT=          misc/qt4-qtconfig
252 qtconfig_DEPENDS=       ${QT_PREFIX}/bin/qtconfig-qt4
253
254 qtestlib_PORT=          devel/qt4-qtestlib
255 qtestlib_DEPENDS=       ${QT_LIBDIR}/libQtTest.so
256
257 qvfb_PORT=      devel/qt4-qvfb
258 qvfb_DEPENDS=   ${QT_PREFIX}/bin/qvfb-qt4
259
260 rcc_PORT=               devel/qt4-rcc
261 rcc_DEPENDS=            ${RCC}
262
263 script_PORT=            devel/qt4-script
264 script_DEPENDS=         ${QT_LIBDIR}/libQtScript.so
265
266 scripttools_PORT=       devel/qt4-scripttools
267 scripttools_DEPENDS=    ${QT_LIBDIR}/libQtScriptTools.so
268
269 sql_PORT=       databases/qt4-sql
270 sql_DEPENDS=    ${QT_LIBDIR}/libQtSql.so
271
272 sql-ibase_PORT=         databases/qt4-ibase-plugin
273 sql-ibase_DEPENDS=      ${QT_PLUGINDIR}/sqldrivers/libqsqlibase.so
274
275 sql-mysql_PORT=         databases/qt4-mysql-plugin
276 sql-mysql_DEPENDS=      ${QT_PLUGINDIR}/sqldrivers/libqsqlmysql.so
277
278 sql-odbc_PORT=          databases/qt4-odbc-plugin
279 sql-odbc_DEPENDS=       ${QT_PLUGINDIR}/sqldrivers/libqsqlodbc.so
280
281 sql-pgsql_PORT=         databases/qt4-pgsql-plugin
282 sql-pgsql_DEPENDS=      ${QT_PLUGINDIR}/sqldrivers/libqsqlpsql.so
283
284 sql-sqlite2_PORT=       databases/qt4-sqlite-plugin
285 sql-sqlite2_DEPENDS=    ${QT_PLUGINDIR}/sqldrivers/libqsqlite2.so
286
287 sql-sqlite3_PORT=       databases/qt4-sqlite3-plugin
288 sql-sqlite3_DEPENDS=    ${QT_PLUGINDIR}/sqldrivers/libqsqlite.so
289
290 svg_PORT=       graphics/qt4-svg
291 svg_DEPENDS=    ${QT_LIBDIR}/libQtSvg.so
292
293 uic_PORT=       devel/qt4-uic
294 uic_DEPENDS=    ${UIC}
295
296 uic3_PORT=      devel/qt4-uic3
297 uic3_DEPENDS=   ${QT_PREFIX}/bin/uic3
298
299 webkit_PORT=    www/qt4-webkit
300 webkit_DEPENDS= ${QT_LIBDIR}/libQtWebKit.so
301
302 xml_PORT=       textproc/qt4-xml
303 xml_DEPENDS=    ${QT_LIBDIR}/libQtXml.so
304
305 xmlpatterns_PORT=       textproc/qt4-xmlpatterns
306 xmlpatterns_DEPENDS=    ${QT_LIBDIR}/libQtXmlPatterns.so
307
308 xmlpatterns-tool_PORT=          textproc/qt4-xmlpatterns-tool
309 xmlpatterns-tool_DEPENDS=       ${QT_PREFIX}/bin/xmlpatterns
310
311 .if defined(_POSTMKINCLUDED) && !defined(Qt_Post_Include)
312 Qt_Post_Include= bsd.qt.mk
313
314 #
315 # Translate `c++` to its real name and select the appropriate mkspec.
316 #
317 QMAKE_BASE_COMPILER=    g++
318 .if ${CXX} == "c++"
319 # Why CXX instead of CXX:T? Because if you're setting the full path of
320 # `c++` you probably want to define QMAKESPEC by hand too.
321 QMAKE_COMPILER= ${QMAKE_BASE_COMPILER}
322 .elif ${CXX:T} == "clang++"
323 QMAKE_COMPILER= clang
324 .elif ${CXX:C/c\+\+/g++/:T} == "llvm-g++"
325 QMAKE_COMPILER= llvm
326 .elif ${CXX:T} == "icpc"
327 QMAKE_COMPILER= icc
328 .else
329 # Handle all the other cases (mainly g++*).
330 QMAKE_COMPILER= ${CXX:C/c\+\+/g++/:T}
331 .endif
332 .if exists(${QT_PREFIX}/share/qt4/mkspecs/freebsd-${QMAKE_COMPILER})
333 QMAKESPEC?=     ${QT_PREFIX}/share/qt4/mkspecs/freebsd-${QMAKE_COMPILER}
334 .else
335 # If something went wrong, default to the base configuration.
336 QMAKESPEC?=     ${QT_PREFIX}/share/qt4/mkspecs/freebsd-${QMAKE_BASE_COMPILER}
337 QMAKE_ARGS+=    QMAKE_CC="${CC}" QMAKE_CXX="${CXX}" \
338                 QMAKE_LINK="${CXX}" QMAKE_LINK_SHLIB="${CXX}" \
339                 QMAKE_LINK_C="${CC}" QMAKE_LINK_C_SHLIB="${CC}"
340 .endif
341
342 .for component in ${_USE_QT4_ALL}
343 ${component}_BUILD_DEPENDS?=    ${${component}_DEPENDS}:${PORTSDIR}/${${component}_PORT}
344 ${component}_RUN_DEPENDS?=      ${${component}_DEPENDS}:${PORTSDIR}/${${component}_PORT}
345
346 ${component}_build_BUILD_DEPENDS?=      ${${component}_BUILD_DEPENDS}
347 ${component}_run_RUN_DEPENDS?=          ${${component}_RUN_DEPENDS}
348
349 _USE_QT4_ALL_SUFFIXED+= ${component} ${component}_build ${component}_run
350 .endfor
351
352 .if defined(USE_QT4)
353 . for component in ${USE_QT4:O:u}
354 .  if ${_USE_QT4_ALL_SUFFIXED:M${component}}!= ""
355 BUILD_DEPENDS+= ${${component}_BUILD_DEPENDS}
356 RUN_DEPENDS+=   ${${component}_RUN_DEPENDS}
357 .  else
358 IGNORE= can't be installed: unknown USE_QT4 component '${component}'
359 .  endif
360 . endfor
361 .endif
362
363 .endif