1 | # -*- coding: utf-8; mode: tcl; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- vim:fenc=utf-8:ft=tcl:et:sw=4:ts=4:sts=4 |
---|
2 | # $Id: port=qt5 1 2014-12-08 18:51:13Z rjvbertin@gmail.com, mcalhoun@macports.org $ |
---|
3 | |
---|
4 | # set building_qt5 immediately! |
---|
5 | set building_qt5 1 |
---|
6 | |
---|
7 | PortGroup qt5 1.0 |
---|
8 | set branch [join [lrange [split ${version} .] 0 1] .] |
---|
9 | |
---|
10 | categories aqua |
---|
11 | platforms macosx |
---|
12 | maintainers mcalhoun openmaintainer |
---|
13 | license {LGPL-2.1 GPL-3} |
---|
14 | |
---|
15 | homepage http://qt-project.org |
---|
16 | description Qt Tool Kit 5.3 |
---|
17 | long_description Qt Tool Kit: A cross-platform framework \ |
---|
18 | (headers, data, and libraries) for writing \ |
---|
19 | cross-platform GUI-based applications. \ |
---|
20 | Installs to ${qt_dir} |
---|
21 | |
---|
22 | distname qt-everywhere-opensource-src-${version} |
---|
23 | |
---|
24 | master_sites http://download.qt-project.org/official_releases/qt/${branch}/${version}/single/ |
---|
25 | |
---|
26 | checksums rmd160 5cd61acc2fbfba2597a386a09d83710ed2fdf483 \ |
---|
27 | sha256 c8d3fd2ead30705c6673c5e4af6c6f3973346b4fb2bd6079c7be0943a5b0282d |
---|
28 | |
---|
29 | if { ${os.major} < 10 } { |
---|
30 | pre-fetch { |
---|
31 | ui_error "OS X prior to 10.7 (Lion) is not a Reference Configuration for Qt." |
---|
32 | ui_error "OS X prior to 10.6 (Snow Leopard) is not even tested." |
---|
33 | ui_error "See http://qt-project.org/doc/qt-5/supported-platforms.html#reference-configurations" |
---|
34 | return -code error "unsupported OS" |
---|
35 | } |
---|
36 | } elseif { ${os.major} == 10 } { |
---|
37 | pre-fetch { |
---|
38 | ui_warn "OS X prior to 10.7 (Lion) is not a Reference Configuration for Qt." |
---|
39 | if { [variant_isset universal] } { |
---|
40 | ui_warn "OS X 10.6 (Snow Leopard) is \"occasionally tested\" but ONLY in 32-bit mode." |
---|
41 | ui_warn "OS X 10.6 (Snow Leopard) is deprecated and scheduled for removal in Qt 5.4." |
---|
42 | } else { |
---|
43 | if { ${build_arch} eq "i386" } { |
---|
44 | ui_warn "OS X 10.6 (Snow Leopard) is \"occasionally tested\"." |
---|
45 | ui_warn "OS X 10.6 (Snow Leopard) is deprecated and scheduled for removal in Qt 5.4." |
---|
46 | } else { |
---|
47 | ui_warn "OS X 10.6 (Snow Leopard) is \"occasionally tested\" but ONLY in 32-bit mode." |
---|
48 | ui_warn "OS X 10.6 (Snow Leopard) is deprecated and scheduled for removal in Qt 5.4." |
---|
49 | } |
---|
50 | } |
---|
51 | ui_warn "See http://qt-project.org/doc/qt-5/supported-platforms.html#reference-configurations" |
---|
52 | } |
---|
53 | } elseif { ${os.major} > 13 } { |
---|
54 | pre-fetch { |
---|
55 | ui_warn "OS X subsequent to 10.9 (Mavericks) is not a Reference Configuration for Qt." |
---|
56 | ui_warn "See http://qt-project.org/doc/qt-5/supported-platforms.html#reference-configurations" |
---|
57 | } |
---|
58 | } else { |
---|
59 | # 11 <= ${os.major} <= 13 |
---|
60 | if { [variant_isset universal] } { |
---|
61 | pre-fetch { |
---|
62 | ui_warn "Multiple architectures is not a Reference Configuration for Qt." |
---|
63 | ui_warn "See http://qt-project.org/doc/qt-5/supported-platforms.html#reference-configurations" |
---|
64 | } |
---|
65 | } else { |
---|
66 | if { ${build_arch} eq "i386" } { |
---|
67 | pre-fetch { |
---|
68 | ui_warn "32-bit mode is not a Reference Configuration for Qt." |
---|
69 | ui_warn "See http://qt-project.org/doc/qt-5/supported-platforms.html#reference-configurations" |
---|
70 | } |
---|
71 | } |
---|
72 | } |
---|
73 | } |
---|
74 | |
---|
75 | if { ${subport} eq "${name}-docs" } { |
---|
76 | universal_variant no |
---|
77 | } |
---|
78 | |
---|
79 | if {[info exists env(QTDIR)]} { |
---|
80 | ui_msg "unsetting \$QTDIR" |
---|
81 | unset env(QTDIR) |
---|
82 | } |
---|
83 | |
---|
84 | if { ${subport} eq ${name} || ${subport} eq "${name}-docs" } { |
---|
85 | # use the qt5 group; set 'building_qt5' so that the portgroup |
---|
86 | # does not include certain parts |
---|
87 | PortGroup conflicts_build 1.0 |
---|
88 | conflicts qt3 qt3-mac |
---|
89 | #PortGroup xcodeversion 1.0 |
---|
90 | |
---|
91 | |
---|
92 | #minimum_xcodeversions {10 3.2} |
---|
93 | |
---|
94 | if {[variant_isset exclusive]} { |
---|
95 | conflicts-append qt4-mac |
---|
96 | # See https://bugreports.qt-project.org/browse/QTBUG-34902 |
---|
97 | conflicts_build-append qt4-mac |
---|
98 | } |
---|
99 | # else: the concurrent qt5-mac version ought to be able to co-exist with any qt4-mac version. |
---|
100 | |
---|
101 | # Kuba states in https://trac.macports.org/ticket/44207#comment:7 |
---|
102 | # "There's no reason to have parallel building disabled. Really." |
---|
103 | #use_parallel_build no |
---|
104 | |
---|
105 | # header file QtCore/private/qmachparser_p.h is included only if "defined(QT_BUILD_INTERNAL) && defined(Q_OF_MACH_O)" |
---|
106 | # code from header is used only "ifdef Q_OF_MACH_O" |
---|
107 | # the two must be consistent |
---|
108 | # assume the header include code is correct |
---|
109 | patchfiles-append patch-tst_qpluginloader.diff |
---|
110 | |
---|
111 | # When testing, ensure that a universal object file is not inadvertently created. |
---|
112 | patchfiles-append patch-machtest.diff |
---|
113 | |
---|
114 | # On testing of 32-bit systems, |
---|
115 | # Pre-patch: QCOMPARE(unsigned long const&, unsigned int const& |
---|
116 | # Post-patch: QCOMPARE(unsigned int const&, unsigned int const& |
---|
117 | # Function template is only instantiated for same first and second arguments. |
---|
118 | patchfiles-append patch-tst_qarraydata.diff |
---|
119 | |
---|
120 | # see http://stackoverflow.com/questions/14506151/invalid-symbol-redefinition-in-inline-asm-on-llvm |
---|
121 | patchfiles-append patch-tst_benchlibcallgrind.diff |
---|
122 | |
---|
123 | # During testing, NSStringFromRect requires NSRect. |
---|
124 | patchfiles-append patch-tst_qaccessibilitymac_helpers.diff |
---|
125 | |
---|
126 | # see #44934 (and #35067 for the qt4-mac version) |
---|
127 | patchfiles-append patch-shared.diff |
---|
128 | |
---|
129 | # see https://bugreports.qt-project.org/browse/QTBUG-41136 |
---|
130 | patchfiles-append patch-avfmediaplayersession.diff |
---|
131 | |
---|
132 | # see https://bugreports.qt-project.org/browse/QTBUG-41367 |
---|
133 | patchfiles-append patch-qmacstyle_mac.diff |
---|
134 | |
---|
135 | # avoid leaving zombies when starting an inexisting executable through QProcess |
---|
136 | patchfiles-append qprocess-nozombies.patch |
---|
137 | |
---|
138 | # add (prepend) ${prefix}/share to the standard search paths so they become XDG-compliant |
---|
139 | patchfiles-append fix-qstandardpaths.patch |
---|
140 | |
---|
141 | variant KDE description {Include a number of patches tailoring Qt5 for use with KDE, and enable useful backtraces into Qt code for debugging} { |
---|
142 | patchfiles-append correct-systraymenu-iconhandling.patch \ |
---|
143 | deactivate-menurole-heuristics.patch \ |
---|
144 | debug-negative-qtimerint.patch |
---|
145 | configure.args-append -force-debug-info -no-strip -no-separate-debug-info |
---|
146 | } |
---|
147 | |
---|
148 | # patches from Ubuntu 5.3.2+dfsg-4ubuntu8 (from Vivid Velvet) |
---|
149 | # TODO : check Report-the-system-error-on-why-chmod-2-failed-in-XDG.patch and Don-t-always-chmod-the-XDG_RUNTIME_DIR.patch |
---|
150 | # for relevance for qstandard_mac.? |
---|
151 | patchfiles-append remove_icon_from_example.patch \ |
---|
152 | gnukfreebsd.diff \ |
---|
153 | fix_bug_in_internal_comparison_operator.patch \ |
---|
154 | fix_sparc_atomics.patch \ |
---|
155 | remove_google_adsense.patch \ |
---|
156 | load_testability_from_env_var.patch \ |
---|
157 | Add-workaround-for-GL-on-Android-emulator.patch \ |
---|
158 | dbus_correct_signal_name_disconnect.patch \ |
---|
159 | Fix-crash-in-QNetworkAccessCacheBackend-closeDownstr.patch \ |
---|
160 | Don-t-always-chmod-the-XDG_RUNTIME_DIR.patch \ |
---|
161 | Report-the-system-error-on-why-chmod-2-failed-in-XDG.patch \ |
---|
162 | disable-generic-plugin-when-others-available.patch \ |
---|
163 | update-QtBearer-NetworkManager-backend-API.patch \ |
---|
164 | Reset-QNAM-s-NetworkConfiguration-when-state-changes.patch \ |
---|
165 | Use-a-property-cache-to-cut-down-on-blocking-calls.patch \ |
---|
166 | QtBearer-networkmanager-make-sure-to-set-flag-Active.patch \ |
---|
167 | Always-lock-the-DBus-dispatcher-before-dbus_connecti.patch \ |
---|
168 | QDBusConnection-Merge-the-dispatch-and-the-watch-and.patch \ |
---|
169 | Partially-revert-Fix-a-deadlock-introduced-by-the-ra.patch \ |
---|
170 | Break-after-handling-the-read-write.patch |
---|
171 | |
---|
172 | # --prefix is not recognised. |
---|
173 | configure.pre_args-delete --prefix=${prefix} |
---|
174 | |
---|
175 | # --disable-dependency-tracking is not recognised. |
---|
176 | configure.universal_args-delete --disable-dependency-tracking |
---|
177 | |
---|
178 | if {${configure.sdkroot} ne ""} { |
---|
179 | configure.args-append \ |
---|
180 | -sdk [string tolower [join [lrange [split [lindex [split ${configure.sdkroot} "/"] end] "."] 0 end-1] "."]] |
---|
181 | } |
---|
182 | |
---|
183 | # NB: -prefix->${prefix} ! |
---|
184 | configure.args-append \ |
---|
185 | -prefix ${prefix} \ |
---|
186 | -archdatadir ${qt_dir} \ |
---|
187 | -docdir ${qt_docs_dir} \ |
---|
188 | -headerdir ${qt_includes_dir} \ |
---|
189 | -plugindir ${qt_plugins_dir} \ |
---|
190 | -importdir ${qt_imports_dir} \ |
---|
191 | -qmldir ${qt_qml_dir} \ |
---|
192 | -datadir ${qt_data_dir} \ |
---|
193 | -libdir ${qt_frameworks_dir} \ |
---|
194 | -bindir ${qt_bins_dir} \ |
---|
195 | -libexecdir ${qt_dir}/libexec \ |
---|
196 | -translationdir ${qt_translations_dir} \ |
---|
197 | -sysconfdir ${qt_sysconf_dir} \ |
---|
198 | -examplesdir ${qt_examples_dir} \ |
---|
199 | -testsdir ${qt_tests_dir} \ |
---|
200 | -hostbindir ${qt_bins_dir} \ |
---|
201 | -hostlibdir ${qt_frameworks_dir} \ |
---|
202 | -hostdatadir ${qt_host_data_dir} |
---|
203 | |
---|
204 | # Configure options: |
---|
205 | configure.args-append \ |
---|
206 | -v \ |
---|
207 | -release \ |
---|
208 | -opensource \ |
---|
209 | -confirm-license \ |
---|
210 | -shared \ |
---|
211 | -process |
---|
212 | |
---|
213 | # Third Party Libraries: |
---|
214 | configure.args-append \ |
---|
215 | -no-mtdev \ |
---|
216 | -no-harfbuzz \ |
---|
217 | -openssl-linked \ |
---|
218 | -no-xinput2 \ |
---|
219 | -no-xcb-xlib |
---|
220 | |
---|
221 | # configure options that don't show up in configure --help |
---|
222 | configure.args-append \ |
---|
223 | -no-libudev \ |
---|
224 | -no-egl |
---|
225 | |
---|
226 | # Additional options: |
---|
227 | configure.args-append \ |
---|
228 | {-make libs} \ |
---|
229 | {-make tools} \ |
---|
230 | {-nomake examples} \ |
---|
231 | {-nomake tests} \ |
---|
232 | -verbose \ |
---|
233 | -nis \ |
---|
234 | -cups \ |
---|
235 | -iconv \ |
---|
236 | -no-evdev \ |
---|
237 | -icu \ |
---|
238 | -fontconfig \ |
---|
239 | -no-pch \ |
---|
240 | -dbus-linked \ |
---|
241 | -no-xcb \ |
---|
242 | -glib \ |
---|
243 | -directfb \ |
---|
244 | -no-linuxfb \ |
---|
245 | -no-kms \ |
---|
246 | -framework |
---|
247 | |
---|
248 | if {[variant_isset exclusive]} { |
---|
249 | configure.args-append -no-optimized-qmake |
---|
250 | } else { |
---|
251 | configure.args-append -optimized-qmake |
---|
252 | } |
---|
253 | |
---|
254 | foreach driver { db2 ibase mysql oci odbc psql sqlite sqlite2 tds } { |
---|
255 | configure.args-append -no-sql-${driver} |
---|
256 | } |
---|
257 | |
---|
258 | if { ![variant_isset universal] } { |
---|
259 | configure.args-append "-platform ${qt_qmake_spec}" |
---|
260 | } else { |
---|
261 | set merger_configure_args(i386) "-platform ${qt_qmake_spec_32}" |
---|
262 | set merger_configure_args(x86_64) "-platform ${qt_qmake_spec_64}" |
---|
263 | } |
---|
264 | |
---|
265 | # configure options that don't show up in configure --help |
---|
266 | # openvg makes sense only when using X11 ... |
---|
267 | configure.args-append -no-openvg |
---|
268 | |
---|
269 | # Qt builds part of the system using environment provided by MacPorts. |
---|
270 | # It builds the rest using its own internal environment. |
---|
271 | # For consistency, clear MacPorts environment. |
---|
272 | configure.cxx_stdlib |
---|
273 | configure.sdkroot |
---|
274 | configure.cc_archflags |
---|
275 | configure.cxx_archflags |
---|
276 | configure.objc_archflags |
---|
277 | configure.objcxx_archflags |
---|
278 | configure.ld_archflags |
---|
279 | configure.cppflags |
---|
280 | if {[variant_isset exclusive]} { |
---|
281 | configure.cflags |
---|
282 | configure.cxxflags |
---|
283 | configure.objcflags |
---|
284 | configure.objcxxflags |
---|
285 | configure.ldflags |
---|
286 | } else { |
---|
287 | configure.objcflags-append "-g" |
---|
288 | configure.objcxxflags-append "-g" |
---|
289 | } |
---|
290 | configure.pipe no |
---|
291 | if { [variant_isset universal] } { |
---|
292 | set merger_arch_flag no |
---|
293 | } |
---|
294 | configure.march |
---|
295 | configure.mtune |
---|
296 | configure.universal_ldflags |
---|
297 | configure.universal_cflags |
---|
298 | configure.universal_cxxflags |
---|
299 | configure.universal_cppflags |
---|
300 | } |
---|
301 | |
---|
302 | if { ${subport} eq ${name} } { |
---|
303 | depends_lib \ |
---|
304 | port:zlib \ |
---|
305 | port:libpng \ |
---|
306 | port:jpeg \ |
---|
307 | port:freetype \ |
---|
308 | path:bin/dbus-daemon:dbus \ |
---|
309 | port:openssl \ |
---|
310 | port:tiff \ |
---|
311 | port:libmng \ |
---|
312 | path:lib/pkgconfig/glib-2.0.pc:glib2 \ |
---|
313 | port:icu \ |
---|
314 | port:pcre \ |
---|
315 | port:libiconv |
---|
316 | |
---|
317 | # see https://bugreports.qt-project.org/browse/QTBUG-35514 |
---|
318 | build.target |
---|
319 | |
---|
320 | post-patch { |
---|
321 | #reinplace "s|//opt//local//|${prefix}/|g" ${worksrcpath}/qtbase/src/corelib/io/qstandardpaths_mac.cpp |
---|
322 | } |
---|
323 | |
---|
324 | if { [variant_isset universal] } { |
---|
325 | merger-post-destroot { |
---|
326 | foreach arch ${universal_archs_to_use} { |
---|
327 | set dir ${destroot}-${arch} |
---|
328 | |
---|
329 | reinplace "s|${worksrcpath}-${arch}|${worksrcpath}|g" ${dir}${qt_frameworks_dir}/pkgconfig/Qt5WebKit.pc |
---|
330 | |
---|
331 | foreach prlfl [glob ${dir}${qt_frameworks_dir}/*.framework/*.prl] { |
---|
332 | reinplace "s|${worksrcpath}-${arch}|${worksrcpath}|g" ${prlfl} |
---|
333 | } |
---|
334 | |
---|
335 | foreach prlfl [glob ${dir}${qt_frameworks_dir}/*.prl] { |
---|
336 | reinplace "s|${worksrcpath}-${arch}|${worksrcpath}|g" ${prlfl} |
---|
337 | } |
---|
338 | |
---|
339 | foreach prlfl [glob ${dir}${qt_frameworks_dir}/*.framework/*.prl] { |
---|
340 | reinplace "s|${worksrcpath}-${arch}|${worksrcpath}|g" ${prlfl} |
---|
341 | } |
---|
342 | |
---|
343 | reinplace "s|${worksrcpath}-${arch}|${worksrcpath}|g" ${dir}${qt_mkspecs_dir}/modules/qt_lib_bootstrap_private.pri |
---|
344 | |
---|
345 | reinplace \ |
---|
346 | "s|^set(_qt5_corelib_extra_includes \"\${_qt5Core_install_prefix}/share/qt5//mkspecs/macx-clang.*\")$|set(_qt5_corelib_extra_includes \"\${_qt5Core_install_prefix}/share/qt5//mkspecs/macx-clang-32\" \"\${_qt5Core_install_prefix}/share/qt5//mkspecs/macx-clang\")|" \ |
---|
347 | ${dir}${qt_frameworks_dir}/cmake/Qt5Core/Qt5CoreConfigExtrasMkspecDir.cmake |
---|
348 | } |
---|
349 | } |
---|
350 | |
---|
351 | post-destroot { |
---|
352 | # delete preprocessor comments surrounding QT_CPU_FEATURES.i386 and QT_CPU_FEATURES.x86_64 |
---|
353 | reinplace "/^#ifndef.*$/d" ${destroot}${qt_mkspecs_dir}/qmodule.pri |
---|
354 | reinplace "/^#else.*$/d" ${destroot}${qt_mkspecs_dir}/qmodule.pri |
---|
355 | reinplace "/^#endif.*$/d" ${destroot}${qt_mkspecs_dir}/qmodule.pri |
---|
356 | } |
---|
357 | |
---|
358 | # The file ${prefix}/share/qt5/mkspecs/qconfig.pri is still not properly merged |
---|
359 | # The solution is ???. |
---|
360 | } |
---|
361 | |
---|
362 | post-destroot { |
---|
363 | |
---|
364 | # see #44204 |
---|
365 | foreach f [glob -nocomplain -directory ${destroot}${qt_frameworks_dir}/pkgconfig *.pc] { |
---|
366 | set framework [file rootname [file tail ${f}]] |
---|
367 | set incname [string map {Qt5 Qt} ${framework}] |
---|
368 | reinplace "s|-I\${includedir}/${incname}|-I\${includedir}|g" ${f} |
---|
369 | reinplace "s|includedir=\${prefix}/include|includedir=\${libdir}/${framework}/Headers|g" ${f} |
---|
370 | } |
---|
371 | |
---|
372 | # move items out of the Frameworks directory that are more appropriate to lib directory |
---|
373 | xinstall -m 775 -d ${destroot}${qt_cmake_module_dir} |
---|
374 | foreach d [glob -tails -nocomplain -directory ${destroot}${qt_frameworks_dir}/cmake *] { |
---|
375 | xinstall -m 775 -d ${destroot}${qt_cmake_module_dir}/${d} |
---|
376 | foreach f [glob -nocomplain -directory ${destroot}${qt_frameworks_dir}/cmake/${d} *.cmake] { |
---|
377 | # ${qt_frameworks_dir} is ${qt_dir}/Library/Frameworks while |
---|
378 | # ${qt_libs_dir} is ${qt_dir}/lib |
---|
379 | # unless modified, cmake files will point to a directory that is too high in the directory hierarchy |
---|
380 | reinplace "s|/../../../../|/../../../${qt_dir_rel}/|g" ${f} |
---|
381 | file rename ${f} ${destroot}${qt_cmake_module_dir}/${d}/ |
---|
382 | } |
---|
383 | } |
---|
384 | |
---|
385 | if {![variant_isset exclusive]} { |
---|
386 | # get Qt's version numbers |
---|
387 | |
---|
388 | set qt_vers [split ${version} "."] |
---|
389 | set qt_major [lindex ${qt_vers} 0] |
---|
390 | set qt_minor [lindex ${qt_vers} 1] |
---|
391 | set qt_patch [lindex ${qt_vers} 2] |
---|
392 | |
---|
393 | # link includes and libraries for each actual installed framework |
---|
394 | |
---|
395 | # make sure that the target directories exist |
---|
396 | exec mkdir -p ${destroot}${qt_includes_dir} ${destroot}${qt_libs_dir} |
---|
397 | foreach fixfile [exec find ${destroot}${qt_frameworks_dir} \ |
---|
398 | -name "*.framework" | \ |
---|
399 | sed -e "s@${destroot}@@g"] { |
---|
400 | |
---|
401 | set tf_full [strsed ${fixfile} {s@\\.framework@@}] |
---|
402 | set tf [strsed ${tf_full} {g@.*\/@@}] |
---|
403 | |
---|
404 | # special for QtWebKit entries |
---|
405 | |
---|
406 | set t_minor ${qt_minor} |
---|
407 | set is_QtWebKit 0 |
---|
408 | if {[string compare ${tf} QtWebKit] == 0} { |
---|
409 | set t_minor 9 |
---|
410 | set is_QtWebKit 1 |
---|
411 | } |
---|
412 | |
---|
413 | # link headers into ${qt_includes_dir}, removing directories |
---|
414 | # if they are already there first |
---|
415 | |
---|
416 | set inc_file ${destroot}${qt_includes_dir}/${tf} |
---|
417 | if {[file exists ${inc_file}]} { |
---|
418 | file delete -force ${inc_file} |
---|
419 | } |
---|
420 | ln -s ${tf_full}.framework/Headers ${inc_file} |
---|
421 | |
---|
422 | # link libraries into ${qt_libs_dir}, all 4 number variants |
---|
423 | |
---|
424 | set dr_qt_libs_dir ${destroot}${qt_libs_dir} |
---|
425 | |
---|
426 | ln -s ${tf_full}.framework/${tf} ${dr_qt_libs_dir}/lib${tf}.dylib |
---|
427 | ln -s ${tf_full}.framework/${tf} ${dr_qt_libs_dir}/lib${tf}.${qt_major}.dylib |
---|
428 | ln -s ${tf_full}.framework/${tf} ${dr_qt_libs_dir}/lib${tf}.${qt_major}.${t_minor}.dylib |
---|
429 | ln -s ${tf_full}.framework/${tf} ${dr_qt_libs_dir}/lib${tf}.${qt_major}.${t_minor}.${qt_patch}.dylib |
---|
430 | |
---|
431 | # copy .prl file, then correct it for library usage |
---|
432 | |
---|
433 | copy ${destroot}${tf_full}.framework/${tf}.prl ${dr_qt_libs_dir}/lib${tf}.prl |
---|
434 | |
---|
435 | # fix TARGET in .prl file |
---|
436 | |
---|
437 | reinplace "/QMAKE_PRL_TARGET/s|Qt\\(\[^ \]*\\)|libQt\\1.${qt_major}.${t_minor}.${qt_patch}.dylib|" ${dr_qt_libs_dir}/lib${tf}.prl |
---|
438 | |
---|
439 | # fix PRL_LIBS -F -> -L in .prl file |
---|
440 | |
---|
441 | reinplace "/QMAKE_PRL_LIBS/s|-F${qt_frameworks_dir}|-L${qt_libs_dir}|" ${dr_qt_libs_dir}/lib${tf}.prl |
---|
442 | |
---|
443 | # fix "-framework Qt*" -> "-lQt*" in .prl file |
---|
444 | |
---|
445 | reinplace "/QMAKE_PRL_LIBS/s|-framework Qt|-lQt|g" \ |
---|
446 | ${dr_qt_libs_dir}/lib${tf}.prl |
---|
447 | |
---|
448 | # remove the QMAKE_PRL_BUILD_DIR line from the .prl file |
---|
449 | reinplace "/QMAKE_PRL_BUILD_DIR/d" ${dr_qt_libs_dir}/lib${tf}.prl |
---|
450 | |
---|
451 | # deal with debug files |
---|
452 | |
---|
453 | # RJVB: I have *not* tested the block below! |
---|
454 | if {[variant_isset debug]} { |
---|
455 | |
---|
456 | # but not if QtWebKit and +universal, since that one does |
---|
457 | # not exist (the 32-bit version of the debug library is |
---|
458 | # larger than fits into the 32-bit filespace). |
---|
459 | |
---|
460 | if {[variant_isset debug] && ${is_QtWebKit}} { |
---|
461 | continue |
---|
462 | } |
---|
463 | |
---|
464 | # link libraries into ${qt_libs_dir}, all 4 number variants |
---|
465 | |
---|
466 | ln -s ${tf_full}.framework/${tf}_debug ${dr_qt_libs_dir}/lib${tf}_debug.dylib |
---|
467 | ln -s ${tf_full}.framework/${tf}_debug ${dr_qt_libs_dir}/lib${tf}_debug.${qt_major}.dylib |
---|
468 | ln -s ${tf_full}.framework/${tf}_debug ${dr_qt_libs_dir}/lib${tf}_debug.${qt_major}.${t_minor}.dylib |
---|
469 | ln -s ${tf_full}.framework/${tf}_debug ${dr_qt_libs_dir}/lib${tf}_debug.${qt_major}.${t_minor}.${qt_patch}.dylib |
---|
470 | |
---|
471 | # copy .prl file, then correct it for library usage |
---|
472 | |
---|
473 | copy ${destroot}${tf_full}.framework/${tf}_debug.prl ${dr_qt_libs_dir}/lib${tf}_debug.prl |
---|
474 | |
---|
475 | # fix TARGET in .prl file |
---|
476 | |
---|
477 | reinplace "/QMAKE_PRL_TARGET/s|Qt\\(\[^ \]*\\)|libQt\\1.${qt_major}.${t_minor}.${qt_patch}.dylib|" ${dr_qt_libs_dir}/lib${tf}_debug.prl |
---|
478 | |
---|
479 | # fix PRL_LIBS -F -> -L in .prl file |
---|
480 | |
---|
481 | reinplace "/QMAKE_PRL_LIBS/s|-F${qt_frameworks_dir}|-L${qt_libs_dir}|" ${dr_qt_libs_dir}/lib${tf}_debug.prl |
---|
482 | |
---|
483 | # fix "-framework Qt*" -> "-lQt*_debug" in .prl file |
---|
484 | |
---|
485 | reinplace "/QMAKE_PRL_LIBS/s|-framework Qt\\(\[^ \]*\\)|-lQt\\1_debug|g" ${dr_qt_libs_dir}/lib${tf}_debug.prl |
---|
486 | } |
---|
487 | } |
---|
488 | |
---|
489 | ln -s ${qt_qmake_cmd} ${destroot}/${prefix}/bin/qmake${qt_major}.${qt_minor} |
---|
490 | ln -s ${qt_moc_cmd} ${destroot}/${prefix}/bin/moc${qt_major}.${qt_minor} |
---|
491 | ln -s ${qt_uic_cmd} ${destroot}/${prefix}/bin/uic${qt_major}.${qt_minor} |
---|
492 | ln -s ${qt_lrelease_cmd} ${destroot}/${prefix}/bin/lrelease${qt_major}.${qt_minor} |
---|
493 | } |
---|
494 | |
---|
495 | xinstall -m 775 -d ${destroot}${qt_pkg_config_dir} |
---|
496 | foreach f [glob -nocomplain -directory ${destroot}${qt_frameworks_dir}/pkgconfig *.pc] { |
---|
497 | file rename ${f} ${destroot}${qt_pkg_config_dir} |
---|
498 | } |
---|
499 | xinstall -m 775 -d ${destroot}${qt_libs_dir}/ |
---|
500 | foreach f [glob -nocomplain -directory ${destroot}${qt_frameworks_dir} *.{a,prl,la}] { |
---|
501 | file rename ${f} ${destroot}${qt_libs_dir}/ |
---|
502 | } |
---|
503 | |
---|
504 | # move items out of the bin directory that are more appropriate to the Applications directory |
---|
505 | xinstall -m 775 -d ${destroot}${qt_apps_dir} |
---|
506 | foreach f [glob -nocomplain -directory ${destroot}${qt_bins_dir} *.app] { |
---|
507 | file rename ${f} ${destroot}${qt_apps_dir}/ |
---|
508 | } |
---|
509 | |
---|
510 | if {[variant_isset KDE]} { |
---|
511 | # expose KF5 styles to Qt5 ... once we know where those styles are stored and if it's still required. |
---|
512 | #ln -s ${prefix}/lib/kf5??/plugins/styles ${destroot}${qt_plugins_dir}/ |
---|
513 | } |
---|
514 | } |
---|
515 | |
---|
516 | variant harfbuzz description {(experimental) Use HarfBuzz-NG to do text shaping} { |
---|
517 | depends_lib-append port:harfbuzz |
---|
518 | configure.args-replace \ |
---|
519 | -no-harfbuzz \ |
---|
520 | -system-harfbuzz |
---|
521 | } |
---|
522 | |
---|
523 | variant tests description {Enable tests} { |
---|
524 | configure.args-replace {-nomake tests} {-make tests} |
---|
525 | } |
---|
526 | |
---|
527 | variant examples description {Build examples} { |
---|
528 | configure.args-replace {-nomake examples} {-make examples} |
---|
529 | } |
---|
530 | |
---|
531 | variant debug description {Build both release and debug library} { |
---|
532 | configure.args-replace -release -debug-and-release |
---|
533 | } |
---|
534 | } |
---|
535 | |
---|
536 | subport ${name}-docs { |
---|
537 | depends_lib-append \ |
---|
538 | path:${prefix}/bin/qdoc:${name} \ |
---|
539 | path:${qt_plugins_dir}/sqldrivers/libqsqlite.dylib:${name}-sqlite3-plugin |
---|
540 | |
---|
541 | supported_archs noarch |
---|
542 | |
---|
543 | build.target docs |
---|
544 | destroot.target install_docs |
---|
545 | |
---|
546 | post-extract { |
---|
547 | # For the most part, generated makefiles use ${prefix}/bin/qdoc. |
---|
548 | # There are a couple of places that look in ${worksrcpath}/qtbase/src/tools/qdoc/. |
---|
549 | ln -s ${prefix}/bin/qdoc ${worksrcpath}/qtbase/src/tools/qdoc/ |
---|
550 | ln -s ${prefix}/bin/qdoc ${worksrcpath}/qtbase/bin |
---|
551 | |
---|
552 | # Similarly, location of qhelpgenerator is expected in ${worksrcpath} |
---|
553 | xinstall -d -m 755 ${worksrcpath}/qttools/bin/ |
---|
554 | ln -s ${prefix}/bin/qhelpgenerator ${worksrcpath}/qttools/bin/ |
---|
555 | |
---|
556 | # Without this file, the makefile ${worksrcpath}/qtwebkit/Source/WebCore/Makefile.WebCore.Target |
---|
557 | # keeps generating itself over and over again. |
---|
558 | # This file is only created when the library is being built, however. |
---|
559 | xinstall -d -m 755 ${worksrcpath}/qtwebkit/Source/WebCore/generated |
---|
560 | touch ${worksrcpath}/qtwebkit/Source/WebCore/generated/InspectorBackendCommands.qrc |
---|
561 | } |
---|
562 | } |
---|
563 | |
---|
564 | # See http://qt-project.org/doc/qt-5/sql-driver.html for info on building SQL Database Drivers |
---|
565 | |
---|
566 | subport ${name}-sqlite3-plugin { |
---|
567 | PortGroup qmake5 1.0 |
---|
568 | |
---|
569 | depends_lib-append port:sqlite3 |
---|
570 | |
---|
571 | # for single architecture, easier to use |
---|
572 | # worksrcdir ${worksrcdir}/qtbase/src/plugins/sqldrivers/sqlite, |
---|
573 | # but doesn't work for universal build |
---|
574 | configure.dir ${worksrcpath}/qtbase/src/plugins/sqldrivers/sqlite |
---|
575 | build.dir ${configure.dir} |
---|
576 | destroot.dir ${configure.dir} |
---|
577 | |
---|
578 | configure.args-append "INCLUDEPATH+=${prefix}/include" "LIBS+=\"-L${prefix}/lib -lsqlite3\"" |
---|
579 | } |
---|
580 | |
---|
581 | subport ${name}-psql84-plugin { |
---|
582 | PortGroup qmake5 1.0 |
---|
583 | |
---|
584 | depends_lib-append port:postgresql84 |
---|
585 | |
---|
586 | # for single architecture, easier to use |
---|
587 | # worksrcdir ${worksrcdir}/qtbase/src/plugins/sqldrivers/psql, |
---|
588 | # but doesn't work for universal build |
---|
589 | configure.dir ${worksrcpath}/qtbase/src/plugins/sqldrivers/psql |
---|
590 | build.dir ${configure.dir} |
---|
591 | destroot.dir ${configure.dir} |
---|
592 | |
---|
593 | configure.args-append "INCLUDEPATH+=${prefix}/include/postgresql84" "LIBS+=\"-L${prefix}/lib/postgresql84 -lpq\"" |
---|
594 | } |
---|
595 | |
---|
596 | subport ${name}-mysql56-plugin { |
---|
597 | PortGroup qmake5 1.0 |
---|
598 | |
---|
599 | depends_lib-append port:mysql56 |
---|
600 | |
---|
601 | # for single architecture, easier to use |
---|
602 | # worksrcdir ${worksrcdir}/qtbase/src/plugins/sqldrivers/mysql, |
---|
603 | # but doesn't work for universal build |
---|
604 | configure.dir ${worksrcpath}/qtbase/src/plugins/sqldrivers/mysql |
---|
605 | build.dir ${configure.dir} |
---|
606 | destroot.dir ${configure.dir} |
---|
607 | |
---|
608 | configure.args-append "INCLUDEPATH+=${prefix}/include/mysql56/mysql" "LIBS+=\"-L${prefix}/lib/mysql56/mysql -lmysqlclient_r\"" |
---|
609 | } |
---|
610 | |
---|
611 | livecheck.type regex |
---|
612 | livecheck.url http://qt-project.org/downloads |
---|
613 | livecheck.regex "Qt (5(?:\\.\\d+)*) for Mac" |
---|