1 # $FreeBSD: Mk/bsd.qt.mk 331179 2013-10-21 19:47:02Z makc $
4 # QT_NONSTANDARD - Suppress modification of configure and make environment.
5 # QT_DIST - Package being built is part of the Qt distribution.
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).
14 .if !defined(_POSTMKINCLUDED) && !defined(Qt_Pre_Include)
15 Qt_Include_MAINTAINER= kde@FreeBSD.org
16 Qt_Pre_Include= bsd.qt.mk
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)
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}
35 #CONFLICTS+= Currently there are no conflicts \o/
39 DESTDIRNAME= INSTALL_ROOT
41 # rene: can go after a while
42 CONFLICTS_BUILD= qt-3.* qt-copy-3.*
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=""
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 \
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
68 PLIST_SUB+= SHLIB_VER=${QT4_VERSION:C/-.*//} \
69 SHLIB_SHVER=${QT4_VERSION:R}
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)
77 # .if defined(PORTNAME) && ${PORTNAME} != "xmlpatterns"
78 # CONFIGURE_ARGS+=-no-exceptions
81 .if defined(WANT_QT_DEBUG) || defined(WITH_DEBUG)
82 CONFIGURE_ARGS+=-debug -separate-debug-info
85 CONFIGURE_ARGS+=-release -no-separate-debug-info
86 PLIST_SUB+= DEBUG="@comment "
89 .if defined(WANT_QT_VERBOSE_CONFIGURE)
90 CONFIGURE_ARGS+=-verbose
92 .endif #defined(QT_DIST)
94 QT_INCDIR_REL= include/qt4
95 QT_LIBDIR_REL= lib/qt4
96 QT_PLUGINDIR_REL= lib/qt4/plugins
98 PLIST_SUB+= QT_INCDIR_REL=${QT_INCDIR_REL} \
99 QT_LIBDIR_REL=${QT_LIBDIR_REL} \
100 QT_PLUGINDIR_REL=${QT_PLUGINDIR_REL}
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}"
118 .endif # !defined(_POSTMKINCLUDED) && !defined(Qt_Pre_Include)
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
137 accessible_PORT= accessibility/qt4-accessible
138 accessible_DEPENDS= ${QT_PLUGINDIR}/accessible/libqtaccessiblewidgets.so
140 assistant_PORT= devel/qt4-assistant
141 assistant_DEPENDS= ${QT_PREFIX}/bin/assistant-qt4
143 assistant-adp_PORT= devel/qt4-assistant-adp
144 assistant-adp_DEPENDS= ${QT_PREFIX}/bin/assistant_adp
146 assistantclient_PORT= devel/qt4-libqtassistantclient
147 assistantclient_DEPENDS= ${QT_LIBDIR}/libQtAssistantClient.so
149 clucene_PORT= textproc/qt4-clucene
150 clucene_DEPENDS= ${QT_LIBDIR}/libQtCLucene.so
152 codecs-cn_PORT= chinese/qt4-codecs-cn
153 codecs-cn_DEPENDS= ${QT_PLUGINDIR}/codecs/libqcncodecs.so
155 codecs-jp_PORT= japanese/qt4-codecs-jp
156 codecs-jp_DEPENDS= ${QT_PLUGINDIR}/codecs/libqjpcodecs.so
158 codecs-kr_PORT= korean/qt4-codecs-kr
159 codecs-kr_DEPENDS= ${QT_PLUGINDIR}/codecs/libqkrcodecs.so
161 codecs-tw_PORT= chinese/qt4-codecs-tw
162 codecs-tw_DEPENDS= ${QT_PLUGINDIR}/codecs/libqtwcodecs.so
164 corelib_PORT= devel/qt4-corelib
165 corelib_DEPENDS= ${QT_LIBDIR}/libQtCore.so
167 dbus_PORT= devel/dbus-qt4
168 dbus_DEPENDS= ${QT_LIBDIR}/libQtDBus.so
170 declarative_PORT= devel/qt4-declarative
171 declarative_DEPENDS= ${QT_LIBDIR}/libQtDeclarative.so
173 demo_PORT= misc/qt4-qtdemo
174 demo_DEPENDS= ${QT_PREFIX}/bin/qtdemo
176 designer_PORT= devel/qt4-designer
177 designer_DEPENDS= ${QT_PREFIX}/bin/designer-qt4
179 doc_PORT= misc/qt4-doc
180 doc_DEPENDS= qt4-doc>=4
182 graphicssystems-opengl_PORT= x11/qt4-graphicssystems-opengl
183 graphicssystems-opengl_DEPENDS= ${QT_PLUGINDIR}/graphicssystems/libqglgraphicssystem.so
185 gui_PORT= x11-toolkits/qt4-gui
186 gui_DEPENDS= ${QT_LIBDIR}/libQtGui.so
188 help_PORT= devel/qt4-help
189 help_DEPENDS= ${QT_LIBDIR}/libQtHelp.so
191 help-tools_PORT= devel/qt4-help-tools
192 help-tools_DEPENDS= ${QT_PREFIX}/bin/qhelpgenerator
194 iconengines_PORT= graphics/qt4-iconengines
195 iconengines_DEPENDS= ${QT_PLUGINDIR}/iconengines/libqsvgicon.so
197 imageformats_PORT= graphics/qt4-imageformats
198 imageformats_DEPENDS= ${QT_PLUGINDIR}/imageformats/libqjpeg.so
200 inputmethods_PORT= x11/qt4-inputmethods
201 inputmethods_DEPENDS= ${QT_PLUGINDIR}/inputmethods/libqimsw-multi.so
203 linguist_PORT= devel/qt4-linguist
204 linguist_DEPENDS= ${QT_PREFIX}/bin/linguist-qt4
206 l10n_PORT= misc/qt4-l10n
207 l10n_DEPENDS= qt4-l10n>=4
209 makeqpf_PORT= devel/qt4-makeqpf
210 makeqpf_DEPENDS= ${QT_PREFIX}/bin/makeqpf-qt4
212 moc_PORT= devel/qt4-moc
215 multimedia_PORT= multimedia/qt4-multimedia
216 multimedia_DEPENDS= ${QT_LIBDIR}/libQtMultimedia.so
218 network_PORT= net/qt4-network
219 network_DEPENDS= ${QT_LIBDIR}/libQtNetwork.so
221 opengl_PORT= x11/qt4-opengl
222 opengl_DEPENDS= ${QT_LIBDIR}/libQtOpenGL.so
224 pixeltool_PORT= graphics/qt4-pixeltool
225 pixeltool_DEPENDS= ${QT_PREFIX}/bin/pixeltool
227 phonon_PORT= multimedia/phonon
228 phonon_DEPENDS= ${QT_LIBDIR}/libphonon.so
230 phonon-gst_PORT= multimedia/phonon-gstreamer
231 phonon-gst_DEPENDS= ${QT_PLUGINDIR}/phonon_backend/libphonon_gstreamer.so
233 porting_PORT= devel/qt4-porting
234 porting_DEPENDS= ${QT_PREFIX}/bin/qt3to4
236 qdbusviewer_PORT= devel/qt4-qdbusviewer
237 qdbusviewer_DEPENDS= ${QT_PREFIX}/bin/qdbusviewer
239 qmlviewer_PORT= devel/qt4-qmlviewer
240 qmlviewer_DEPENDS= ${QT_PREFIX}/bin/qmlviewer
242 qdoc3_PORT= devel/qt4-qdoc3
243 qdoc3_DEPENDS= ${QT_PREFIX}/bin/qdoc3
245 qmake_PORT= devel/qmake4
246 qmake_DEPENDS= ${QMAKE}
248 qt3support_PORT= devel/qt4-qt3support
249 qt3support_DEPENDS= ${QT_LIBDIR}/libQt3Support.so
251 qtconfig_PORT= misc/qt4-qtconfig
252 qtconfig_DEPENDS= ${QT_PREFIX}/bin/qtconfig-qt4
254 qtestlib_PORT= devel/qt4-qtestlib
255 qtestlib_DEPENDS= ${QT_LIBDIR}/libQtTest.so
257 qvfb_PORT= devel/qt4-qvfb
258 qvfb_DEPENDS= ${QT_PREFIX}/bin/qvfb-qt4
260 rcc_PORT= devel/qt4-rcc
263 script_PORT= devel/qt4-script
264 script_DEPENDS= ${QT_LIBDIR}/libQtScript.so
266 scripttools_PORT= devel/qt4-scripttools
267 scripttools_DEPENDS= ${QT_LIBDIR}/libQtScriptTools.so
269 sql_PORT= databases/qt4-sql
270 sql_DEPENDS= ${QT_LIBDIR}/libQtSql.so
272 sql-ibase_PORT= databases/qt4-ibase-plugin
273 sql-ibase_DEPENDS= ${QT_PLUGINDIR}/sqldrivers/libqsqlibase.so
275 sql-mysql_PORT= databases/qt4-mysql-plugin
276 sql-mysql_DEPENDS= ${QT_PLUGINDIR}/sqldrivers/libqsqlmysql.so
278 sql-odbc_PORT= databases/qt4-odbc-plugin
279 sql-odbc_DEPENDS= ${QT_PLUGINDIR}/sqldrivers/libqsqlodbc.so
281 sql-pgsql_PORT= databases/qt4-pgsql-plugin
282 sql-pgsql_DEPENDS= ${QT_PLUGINDIR}/sqldrivers/libqsqlpsql.so
284 sql-sqlite2_PORT= databases/qt4-sqlite-plugin
285 sql-sqlite2_DEPENDS= ${QT_PLUGINDIR}/sqldrivers/libqsqlite2.so
287 sql-sqlite3_PORT= databases/qt4-sqlite3-plugin
288 sql-sqlite3_DEPENDS= ${QT_PLUGINDIR}/sqldrivers/libqsqlite.so
290 svg_PORT= graphics/qt4-svg
291 svg_DEPENDS= ${QT_LIBDIR}/libQtSvg.so
293 uic_PORT= devel/qt4-uic
296 uic3_PORT= devel/qt4-uic3
297 uic3_DEPENDS= ${QT_PREFIX}/bin/uic3
299 webkit_PORT= www/qt4-webkit
300 webkit_DEPENDS= ${QT_LIBDIR}/libQtWebKit.so
302 xml_PORT= textproc/qt4-xml
303 xml_DEPENDS= ${QT_LIBDIR}/libQtXml.so
305 xmlpatterns_PORT= textproc/qt4-xmlpatterns
306 xmlpatterns_DEPENDS= ${QT_LIBDIR}/libQtXmlPatterns.so
308 xmlpatterns-tool_PORT= textproc/qt4-xmlpatterns-tool
309 xmlpatterns-tool_DEPENDS= ${QT_PREFIX}/bin/xmlpatterns
311 .if defined(_POSTMKINCLUDED) && !defined(Qt_Post_Include)
312 Qt_Post_Include= bsd.qt.mk
315 # Translate `c++` to its real name and select the appropriate mkspec.
317 QMAKE_BASE_COMPILER= g++
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++"
326 .elif ${CXX:T} == "icpc"
329 # Handle all the other cases (mainly g++*).
330 QMAKE_COMPILER= ${CXX:C/c\+\+/g++/:T}
332 .if exists(${QT_PREFIX}/share/qt4/mkspecs/freebsd-${QMAKE_COMPILER})
333 QMAKESPEC?= ${QT_PREFIX}/share/qt4/mkspecs/freebsd-${QMAKE_COMPILER}
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}"
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}
346 ${component}_build_BUILD_DEPENDS?= ${${component}_BUILD_DEPENDS}
347 ${component}_run_RUN_DEPENDS?= ${${component}_RUN_DEPENDS}
349 _USE_QT4_ALL_SUFFIXED+= ${component} ${component}_build ${component}_run
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}
358 IGNORE= can't be installed: unknown USE_QT4 component '${component}'