Skip to content
Permalink
Branch: master
Find file Copy path
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
1899 lines (1681 sloc) 68.2 KB
# -*- 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
PortSystem 1.0
name qt57
categories aqua
platforms macosx
maintainers {mcalhoun @MarcusCalhoun-Lopez} openmaintainer
# for OpenSSLException, see source and header files in src/network/ssl of qtbase
license {LGPL-3 GPL-3 OpenSSLException}
homepage https://www.qt.io
version 5.7.1
set just_want_qt5_variables yes
PortGroup qt5 1.0
unset just_want_qt5_variables
# get Qt's version numbers
set branch [join [lrange [split ${version} .] 0 1] .]
set qt_major [lindex [split ${version} .] 0]
# see https://wiki.qt.io/New_Features_in_Qt_5.7
PortGroup cxx11 1.1
master_sites \
https://download.qt.io/official_releases/qt/${branch}/${version}/submodules \
https://download.qt.io/community_releases/${branch}/${version}
# see https://trac.macports.org/ticket/53952
dist_subdir qt5
# file sizes are significantly smaller using xz
if { ${subport} ne ${name} && ${subport} ne "${name}-docs" } {
use_xz yes
}
conflicts qt3 qt3-mac
# conflict with all other version of qt5
foreach {qt_test_name qt_test_info} [array get available_qt_versions] {
if {${name} ne ${qt_test_name}} {
conflicts-append [lindex ${qt_test_info} 0]
}
}
# qt57-qtbase replaces qt5-qtbase, so can not conflict
if { ${os.major} == 12 } {
conflicts-delete qt5-qtbase
}
############################################################################### Modules Not Considered
#
# No qtactiveqt (Windows Only)
# No qtandroidextras (Android Only)
# No qtwayland (Linux Only)
# No qtx11extras (X11 Only)
# No qtwinextras (Windows Only)
#
###############################################################################
############################################################################### Finding Dependencies
#
# grep -r "%dependencies" *
# find ./ -name sync.profile
#
# grep -r qtCompileTest *
#
# find ./ -name config.tests
#
# find ./ -name Find\*.cmake
#
# grep -r qtHaveModule *
#
# grep -r packagesExist *
#
# port provides `find ./ -name \*.dylib -exec otool -L {} \; | grep /opt/local/libexec/qt5 | cut -d ' ' -f1` | cut -d : -f2 | sort -u
# port provides `find ./ -name \*.dylib -exec otool -L {} \; | grep /opt/local/lib/ | cut -d ' ' -f1` | cut -d : -f2 | sort -u
#
# https://code.qt.io/cgit/qt/qt5.git/tree/.gitmodules?h=5.7.1
#
###############################################################################
############################################################################### Notes
#
# qtconnectivity checks for bluetooth libraries
# bluez and bluez_le (Linux Only)
#
# qtconnectivity depends on
# qtandroidextras (Android Only)
#
# qtserialport depends on
# ntddmodm (Windows Only)
#
# qttools depends on
# qtactiveqt (Windows Only)
#
# qtwebkit has tests for libraries in:
# Tools/qmake/mkspecs/features/configure.prf
# Tools/qmake/config.tests/
#
###############################################################################
############################################################################### TODO
#
# TODO: possible to trim dependencies of qtbase?
#
###############################################################################
############################################################################### Module Format
#
# "Qt Module Name" {
# {
# checksum, rmd160
# checksum, sha256
# checksum, size
# }
# checksum, rmd160
# checksum, sha256
# dependencies, build
# dependencies, lib
# dependencies, Qt module name
# Qt components provided
# included in "standard" installation of Qt (empty string is no, explanation string is yes)
# variant overrides
# revision number
# license replacement
# }
#
# module info found at https://doc.qt.io/archives/qt-5.7/qtmodules.html
#
###############################################################################
array set modules {
qt3d {
{
6d3028b51ef3009c2dae79698400d9671a0ab087
1d74cf431777b8086d771ab0d4d2c01f9c28eb14cc2d73d7f838a665d1f707ea
19474848
}
""
"port:assimp"
"qtdeclarative qtimageformats qtgamepad"
{"Qt 3D"}
""
"variant overrides: "
"revision 1"
"License: "
}
qtbase {
{
b26efab64209d4fe5b0532690c9d3902e7a70102
edcdf549d94d98aff08e201dcb3ca25bc3628a37b1309e320d5f556b6b66557e
44992616
}
""
"port:zlib port:libpng port:jpeg port:freetype path:bin/dbus-daemon:dbus port:tiff port:libmng path:lib/pkgconfig/glib-2.0.pc:glib2 port:icu port:pcre port:harfbuzz"
""
{"Qt Core" "Qt GUI" "Qt Network" "Qt SQL" "Qt Test" "Qt Widgets" "Qt Concurrent" "Qt D-Bus" "Qt OpenGL" "Qt Platform Headers" "Qt Print Support" "Qt XML"}
""
"variant overrides: "
"revision 6"
"License: "
}
qtcanvas3d {
{
add50851a85a4ea7716b327d50ac17aab3ad5966
a887083817b77710f6b5401cec4713a03147ed16fa5cf5fb8de4495807bebdb4
10851540
}
""
""
"qtdeclarative"
{"Qt Canvas 3D"}
""
"variant overrides: "
"revision 0"
"License: "
}
qtcharts {
{
ca932d8c263b79b1ded26db3454a3c887093649e
85feee6992cdef1ab42947a83cbf806a29224d704ee5dc97ee5038c75b633fe3
4086256
}
""
""
"qtbase qtdeclarative qtmultimedia"
{"Qt Charts"}
"GPLv3 license only"
"variant overrides: "
"revision 0"
"License: {GPL-3 OpenSSLException}"
}
qtconnectivity {
{
c0ab063f114d1e68085165fecc8414407266b4f2
b3e8b9068304dc5605a8fdf0695102032fd1a216f2c2d4d53a7e4d4dda3ab966
2690688
}
""
""
"qtbase qtdeclarative"
{"Qt Bluetooth" "Qt NFC"}
""
"variant overrides: "
"revision 0"
"License: "
}
qtdatavis3d {
{
1fbcf4eacc25fc559f3d6cb92754e52dc85407e8
1bff85dcdeed98ad8f0e191f77e7c0e9d57af719c51791044b9c15e939b800f8
5155740
}
""
""
"qtbase qtdeclarative qtmultimedia"
{"Qt Data Visualization"}
"GPLv3 license only"
"variant overrides: "
"revision 0"
"License: {GPL-3 OpenSSLException}"
}
qtdeclarative {
{
5b775aa0fee5cbbf540c85ea42a6f832f588e7e4
fd13dd3059d20694a857ed30ee56a2ade908c0cb93246f9804a65f7a2d775d56
18976920
}
"port:python27"
""
"qtbase qtsvg qtxmlpatterns"
{"Qt QML" "Qt Quick" "Qt Quick Layouts" "Qt Quick Widgets"}
""
"variant overrides: "
"revision 0"
"License: "
}
qtdeclarative-render2d {
{
2ff009c9755d49e2b08250f001465ef860fa4397
831913488bb887993ae8701e5966f53875667a774c0230fc5dc39d6077828c7f
74340
}
""
""
"qtbase qtdeclarative"
{"Qt Quick 2D Renderer"}
"GPLv3 license only"
"variant overrides: "
"revision 0"
"License: {GPL-3 OpenSSLException}"
}
qtdoc {
{
441b718a9e038a0ece9fcf452a71ad12ac0a14e7
55fb0134d7bb26e261bbb30f674e4a88fbcc6bc17e8bb030134aa236b87bd9db
2543740
}
""
""
"qtdeclarative qttools sqlite-plugin"
{"Qt Reference Documentation"}
"requires all documentation"
"variant overrides: ~examples ~tests ~debug noarch ~docs"
"revision 1"
"License: "
}
qtgamepad {
{
b999fea16af38585e7a9f21b902e7b5d1b2001df
bb2b2165e3bcbf37a7e03c3e1cac4fe9771b087dad7ab9566ba5f7f4f4929182
360940
}
""
"port:libsdl2"
"qtbase qtdeclarative"
{"Qt Gamepad"}
"technology preview module"
"variant overrides: "
"revision 0"
"License: "
}
qtgraphicaleffects {
{
0602426e52d16ae24c8d75bd4f4d465f8ea120f7
2c68fabe599fa2f318562dc22003df6797e91d00761dbf1f337cdc7fbacd4dc8
14486948
}
""
""
"qtdeclarative"
{"Qt Graphical Effects"}
""
"variant overrides: "
"revision 0"
"License: "
}
qtimageformats {
{
a4b2191f0c5831ae651da0105665e5595af52610
4f97a2a2b269f8a45576256ad9f452320c9c9de6d9c7cc1751fdeac36b0f77f4
2004376
}
""
"port:jasper port:libmng port:tiff port:webp"
"qtbase"
{"Qt Image Formats"}
""
"variant overrides: "
"revision 0"
"License: "
}
qtlocation {
{
1c4d23ad85295eb0b2a18a98cf55cfb80586b570
f9e9e64e757008c2341504a1916a219ee0cf2b1b42bfa72156e62dfe9dfbf39f
3194112
}
""
""
"qtdeclarative qtquickcontrols qtserialport"
{"Qt Location" "Qt Positioning"}
""
"variant overrides: "
"revision 0"
"License: "
}
qtmacextras {
{
667211d10808f45bf05e863c2457fa7eeb9d6870
1dcad3d9b5ffeece985afc595b95f6b8b1a1aac7fa1f84193d042f2303b52667
48232
}
""
""
"qtbase"
{"Qt Mac Extras"}
""
"variant overrides: "
"revision 0"
"License: "
}
qtmultimedia {
{
47e2e0ea325c93fadb3e6a460952ae6bbd4b437d
a52b177fbf02600a0c8bd995ce7c2041c673bc1332c02b60e0e95bb9ebab7def
3563676
}
""
""
"qtbase qtdeclarative"
{"Qt Multimedia" "Qt Multimedia Widgets"}
""
"variant overrides: "
"revision 0"
"License: "
}
qtpurchasing {
{
2ae0d16152b4d55fa1ea0ae5b2753b9079f869b8
f694757929cefa31643daab4bde1fbda8d76c79eda0ee6094e1d86efd4cb7b42
175160
}
""
""
"qtbase qtdeclarative"
{"Qt Purchasing"}
"in-app purchases is of limited value on desktop"
"variant overrides: "
"revision 0"
"License: {GPL-3 OpenSSLException}"
}
qtquickcontrols {
{
78ed13596d62342447f3086483a331fdaf388d21
6feb1a736bf93af98c40d04cde6b36c113e4cdf84ccb9b306ca92ef9b1779e9d
5943024
}
""
""
"qtdeclarative qtgraphicaleffects"
{"Qt Quick Controls" "Qt Quick Dialogs" "Qt Quick Extras"}
""
"variant overrides: "
"revision 0"
"License: "
}
qtquickcontrols2 {
{
75c7942e4b6fa60b555fd9c9858f4cf41cf861f6
f2e8acd0badbf604f28258b063c94ba71e28147c53c435ae9eb484497cf3e7ec
2212812
}
""
""
"qtgraphicaleffects"
{"Qt Quick Controls 2"}
""
"variant overrides: "
"revision 0"
"License: "
}
qtscript {
{
b449e5954caaa493b0163506a58e3ea7e49751a1
5bf91a1c53020d91d454d4bb0f930ada98c5fc008fda78f2d7171152920da426
2608180
}
""
""
"qtbase qttools"
{"Qt Script" "Qt Script Tools"}
"deprecated in favor QJS* in Qt QML"
"variant overrides: "
"revision 1"
"License: "
}
qtscxml {
{
e389198b8023e0c478f2d9c9b01e39dcff76daa7
9dad4ab220a715b6a63df1d4a196bfa963a1ce7e6e57e7b36462c5dab09db38c
346948
}
""
""
"qtbase qtdeclarative"
{"Qt SCXML"}
"technology preview module"
"variant overrides: "
"revision 0"
"License: "
}
qtsensors {
{
8d2871b427c14d943c79f8918214f09e5adfdc27
ccb3942edb5e615e9a43c147d87a09f19690eafbc56be0cdf4f73b7e510f3b10
1987144
}
""
""
"qtbase qtdeclarative"
{"Qt Sensors"}
""
"variant overrides: "
"revision 0"
"License: "
}
qtserialbus {
{
fc9b652c1bfac92cb1c884d51d89b4198d198dda
727edbe0f29659119cfcfbc9ce7c7063af319ec441bc9a5156ebda28e820b157
239676
}
""
""
"qtserialport"
{"Qt Serial Bus"}
"technology preview module"
"variant overrides: "
"revision 0"
"License: "
}
qtserialport {
{
28d52ddb120bc260668c51e24d0f84ea0ff14fcd
76d5e19bd392b72602ba3bfe3c0d03c10962674604cf814efa2c910f98cf5a26
265616
}
""
""
"qtbase"
{"Qt Serial Port"}
""
"variant overrides: "
"revision 0"
"License: "
}
qtsvg {
{
bdfe992b16536caf05fe49b5b26e9dbca16afbaa
b0f017db8cf18e655e8a6635bc4ddbdbad6f8ef839857451b78942630a4c3947
1751536
}
""
""
"qtbase"
{"Qt SVG"}
""
"variant overrides: "
"revision 0"
"License: "
}
qttools {
{
e882f6e43708305242aba7502554b6be5f9ff12e
64197022686c3d8b11a8639f102e2caf03cc325a30e7a32ba66881648ac2dfac
10011108
}
""
""
"qtbase qtdeclarative"
{"Qt Designer" "Qt Help" "Qt UI Tools"}
""
"variant overrides: "
"revision 0"
"License: "
}
qttranslations {
{
f1e1040035310813b94ce32b251d6cd4a0ae1585
16ecdb09532724e80fa6202e5604d80877923b652b771b6020cea36bee0258e7
1206116
}
""
""
"qttools"
{"translation files"}
""
"variant overrides: ~examples ~tests ~debug noarch ~docs"
"revision 0"
"License: "
}
qtvirtualkeyboard {
{
bbfb719ec76ee67fb89d38e4956be70f88c25b61
b28b8b937ed15d794c5ebc93e9556d08a0c9761a434864ebf2b454554e652add
10014088
}
""
"port:hunspell"
"qtbase qtdeclarative qtsvg qtmultimedia qtquickcontrols"
{"Qt Virtual Keyboard"}
"GPLv3 license only"
"variant overrides: "
"revision 0"
"License: {GPL-3 OpenSSLException}"
}
qtwebchannel {
{
edbff4aea7ddd25ed0404511760ddc5cfefd99c3
63ab3ac76ff993009cfa978162a764e05b763cacb70d1a862893f8de4492319b
122436
}
""
""
"qtbase qtdeclarative qtwebsockets"
{"Qt WebChannel"}
""
"variant overrides: "
"revision 0"
"License: "
}
qtwebengine {
{
07bf263f775ac2a72f8db18ef53862b62be873a0
2101883e3d632b50133a14e3bbdc1d4d649e405c9618f2eef1b72a7b821ccc2b
163782564
}
"port:python27 port:py27-ply"
""
"qtquickcontrols qtwebchannel qtlocation"
{"Qt WebEngine"}
"very large and relatively new; requires newer version of OS X"
"variant overrides: ~universal"
"revision 0"
"License: "
}
qtwebkit {
{
45d764449491dc875838fb8b2e79c90cf3b0653a
a46cf7c89339645f94a5777e8ae5baccf75c5fc87ab52c9dafc25da3327b5f03
35298736
}
"port:python27"
"port:fontconfig port:icu port:leveldb port:webp port:libxml2 port:libxslt port:zlib port:sqlite3"
"qtbase qtdeclarative qtlocation qtmultimedia qtsensors qtwebchannel qtxmlpatterns"
{"Qt WebKit" "Qt WebKit Widgets"}
"community support only (use Qt WebEngine)"
"variant overrides: "
"revision 1"
"License: "
}
qtwebkit-examples {
{
3ae9792c712254622060fa09a878d8e5eff19a75
d50d0151b56cb5578ddab6591ee27e12e99fa85a17fae403d76d1f6747b48225
3426792
}
""
""
"qtbase qtwebkit qtscript qtsvg qtxmlpatterns qtdeclarative qttools"
{"examples for Qt WebKit"}
"community support only (use Qt WebEngine)"
"variant overrides: ++examples ~docs"
"revision 0"
"License: "
}
qtwebsockets {
{
4f3d6eea1cd01b961f7914160afe3ad5ac964285
5c2a75b68e7f2e98530659b33bb08edee83013832dbf99cc5b40afc8a90652d1
193204
}
""
""
"qtbase qtdeclarative"
{"Qt WebSockets"}
""
"variant overrides: "
"revision 0"
"License: "
}
qtwebview {
{
17993359df0685eec533610ae81926a6c4795c62
b3bcf9693e0205263f5d227f2204cf12c3a3d1e200b3114723511ee3bdf2159f
107388
}
""
""
"qtdeclarative qtwebengine"
{"Qt WebView"}
"new in 5.6.0; requires qtwebengine"
"variant overrides: ~universal"
"revision 0"
"License: "
}
qtxmlpatterns {
{
5891531cab954807cc32a289df3511637d5cf101
a805938c2ab1379d7dc83dcec606edd7950b5155c073b9eb53c53e62deb5f8e5
1352472
}
""
""
"qtbase"
{"Qt XML Patterns"}
""
"variant overrides: "
"revision 0"
"License: "
}
}
############################################################################### SQL Plugin Format
#
# {
# variant name
# dependency, library
# include path
# link requirement
# obsolete? (empty string is no)
# }
#
###############################################################################
array set sql_plugins {
{sqlite SQLite "revision 0"} {
{
"sqlite3"
"port:sqlite3"
"${prefix}/include"
"-L${prefix}/lib -lsqlite3"
""
}
}
{psql PostgreSQL "revision 0"} {
{
"postgresql96"
"port:postgresql96"
"${prefix}/include/postgresql96"
"-L${prefix}/lib/postgresql96 -lpq"
""
}
{
"postgresql95"
"port:postgresql95"
"${prefix}/include/postgresql95"
"-L${prefix}/lib/postgresql95 -lpq"
""
}
{
"postgresql94"
"port:postgresql94"
"${prefix}/include/postgresql94"
"-L${prefix}/lib/postgresql94 -lpq"
""
}
{
"postgresql84"
"port:postgresql84"
"${prefix}/include/postgresql84"
"-L${prefix}/lib/postgresql84 -lpq"
""
}
}
{mysql MySQL "revision 0"} {
{
"mariadb55"
"port:mariadb"
"${prefix}/include/mariadb/mysql"
"-L${prefix}/lib/mariadb/mysql -lmysqlclient_r"
""
}
{
"mysql57"
"port:mysql57"
"${prefix}/include/mysql57/mysql"
"-L${prefix}/lib/mysql57/mysql -lmysqlclient_r"
""
}
{
"mysql56"
"port:mysql56"
"${prefix}/include/mysql56/mysql"
"-L${prefix}/lib/mysql56/mysql -lmysqlclient_r"
""
}
}
}
# because CPATH is set, pkgconfig does not include ${prefix}/lib and ${prefix}/include even when requested
# this means that files in ${prefix}/lib and ${prefix}/include are the *last* to be found
# this causes problems when there are files in ${worksrpath} that are unintentionally found instead
configure.env-append \
PKG_CONFIG_ALLOW_SYSTEM_CFLAGS=1 \
PKG_CONFIG_ALLOW_SYSTEM_LIBS=1
build.env-append \
PKG_CONFIG_ALLOW_SYSTEM_CFLAGS=1 \
PKG_CONFIG_ALLOW_SYSTEM_LIBS=1
# the Qt 5.7 class QUuid requires NSUUID, which was introduced in OS X 10.8
# see https://developer.apple.com/reference/foundation/nsuuid?language=objc
if { ${os.major} < 12 } {
pre-fetch {
ui_error "${subport} requires OS X 10.8 or later"
return -code error "incompatible OS version"
}
}
foreach {module module_info} [array get modules] {
set revision_string [string trim [lindex ${module_info} 7]]
set revision_string [string range ${revision_string} 1+[string last " " ${revision_string}] end]
subport ${name}-${module} {
distname ${module}-opensource-src-${version}
if { ${revision_string} ne "0" } {
revision ${revision_string}
}
# see https://bugreports.qt.io/browse/QTBUG-35514
build.target
checksums \
rmd160 [lindex [lindex ${module_info} 0] 0] \
sha256 [lindex [lindex ${module_info} 0] 1] \
size [lindex [lindex ${module_info} 0] 2]
set license_string [lindex ${module_info} 8]
set license_string [string range ${license_string} 1+[string first ":" ${license_string}] end]
set license_string [string trim ${license_string}]
if { ${license_string} ne "" } {
license {*}${license_string}
}
foreach deps [lindex ${module_info} 1] {
depends_build-append [subst ${deps}]
}
foreach deps [lindex ${module_info} 2] {
depends_lib-append [subst ${deps}]
}
foreach qtdeps [lindex ${module_info} 3] {
if { ${qtdeps} ne "qtbase" } {
depends_lib-append port:${name}-${qtdeps}
}
}
description Tools and Module(s) for Qt Tool Kit ${qt_major}
set modules_provided_list [lindex ${module_info} 4]
if { [llength ${modules_provided_list}] == 1 } {
set modules_provided_join [lindex ${modules_provided_list} 0]
} elseif { [llength ${modules_provided_list}] == 2 } {
set modules_provided_join [join ${modules_provided_list} " and "]
} else {
set modules_provided_join [join [list [join [lrange ${modules_provided_list} 0 end-1] ", "] [lindex ${modules_provided_list} end]] ", and "]
}
long_description "Tools and Module(s) for Qt Tool Kit ${qt_major}: ${modules_provided_join}"
if { ${module} eq "qtbase" } {
# this subport uses configure script (NOT qmake)
PortGroup qt5 1.0
if { ${os.platform} ne "darwin" } {
pre-fetch {
ui_warn "${subport} is untested on \"${os.platform}\"."
}
}
if { [variant_isset universal] } {
pre-fetch {
ui_warn "Multiple architectures is not a Reference Configuration for Qt."
ui_warn "See https://doc.qt.io/qt-5/supported-platforms.html#reference-configurations"
}
} else {
if { ${configure.build_arch} eq "i386" } {
pre-fetch {
ui_warn "32-bit mode is not a Reference Configuration for Qt."
ui_warn "See https://doc.qt.io/qt-5/supported-platforms.html#reference-configurations"
}
}
}
# https://codereview.qt-project.org/#/c/141654/
patchfiles-append patch-add_sdk.diff
# allow system freetype to satisfy freetype dependency
patchfiles-append patch-freetype.diff
post-patch {
reinplace "s|__MACPORTS_PREFIX__|${prefix}|g" ${worksrcpath}/src/3rdparty/freetype_dependency.pri
}
# the build system uses pkgconfig to look for an OpenGL installation (gl.pc)
# the build system automatically uses OpenGL frameworks (-framework OpenGL -framework AGL)
# if mesa is installed, the build system will try to use both OpenGL systems
# when building qtmultimedia, this will cause problems
# Undefined symbols: "_CGLGetCurrentContext"
patchfiles-append patch-opengl.diff
# undo part of https://codereview.qt-project.org/#/c/140954/
# .pc files still needed by some ports
# see https://github.com/Homebrew/homebrew-core/blob/master/Formula/qt5.rb
patchfiles-append patch-pc_files.diff
# see https://stackoverflow.com/questions/14506151/invalid-symbol-redefinition-in-inline-asm-on-llvm
# only runs test code on 32-bit systems
patchfiles-append patch-tst_benchlibcallgrind.diff
# this test might still cause problems, but with 5.4.2->5.5.0, it is no longer run
# tests/auto/corelib/plugin/qpluginloader/qpluginloader.pro:
# -macx-*: SUBDIRS += machtest
# +macx-*: contains(QT_CONFIG, private_tests): SUBDIRS += machtest
#
# When testing, ensure that a universal object file is not inadvertently created.
patchfiles-append patch-machtest.diff
# Support direct linker flags. Newer glib versions seem to use -Wl,framework,...
# or -Wl,framework -Wl,...
patchfiles-append patch-config.tests_unix_compile.test-support-linker-flags-in-LDFLAGS.diff
# see https://bugreports.qt.io/browse/QTBUG-62266
patchfiles-append patch-sdk10_13.diff
# avoid non-standard C++ that Xcode Clang accepts but other compilers do not
# see https://lists.llvm.org/pipermail/llvm-bugs/2017-January/053481.html
# see https://gcc.gnu.org/bugzilla/show_bug.cgi?id=11764
patchfiles-append patch-qualified_reference.diff
# find the Rez program
patchfiles-append patch-find_rez.diff
post-patch {
reinplace \
"s|__MACPORTS_Rez__|[exec xcrun --find Rez]|g" \
mkspecs/common/mac.conf \
mkspecs/features/mac/rez.prf
}
#-----------------------------------------------------------------------------
# qtbase is used for:
# 1) building qtbase
# 2) building MacPorts projects via qmake
# 3) building end-user projects
#
# 1 & 2 require consistency with the MacPorts environment
# 3 requires consistency with the default Qt installation
#
# 2 can be achieved via environment variables
# (e.g. QMAKE_MACOSX_DEPLOYMENT_TARGET=${macosx_deployment_target})
#
# the only way 3 can be achieved is if no changes are made to the build system
#
# the following is an attempt to achieve 1 without destroying 3
#-----------------------------------------------------------------------------
# save default spec files
post-extract {
copy ${worksrcpath}/mkspecs ${worksrcpath}/mkspecs-save
}
# respect MacPorts build variables
patchfiles-append patch-mkspecs.diff
# respect configure.compiler
if { ${configure.compiler} eq "clang" } {
# let xargs find correct compiler (default behaviour)
post-patch {
# let xargs find correct compiler
reinplace \
"s|__MACPORTS_CC__|clang|g" \
${worksrcpath}/mkspecs/common/clang.conf
reinplace \
"s|__MACPORTS_CXX__|clang++|g" \
${worksrcpath}/mkspecs/common/clang.conf
}
} else {
post-patch {
reinplace \
"s|__MACPORTS_CC__|${configure.cc}|g" \
${worksrcpath}/mkspecs/common/clang.conf
reinplace \
"s|__MACPORTS_CXX__|${configure.cxx}|g" \
${worksrcpath}/mkspecs/common/clang.conf
}
}
if { [string match macports-clang-* ${configure.compiler}] && [vercmp ${xcodeversion} "7.0"] >= 0 } {
# non-Xcode clang does not seem to be able to understand tbd files
# for an explanation of tbd files, see
# https://stackoverflow.com/questions/31450690/why-xcode-7-shows-tbd-instead-of-dylib
# see https://trac.macports.org/ticket/53151
pre-fetch {
ui_error "This configuration is known to fail"
ui_error "See https://trac.macports.org/ticket/53151"
ui_error "As a workaround, do not set configure.compiler manually"
return -code error "incompatible configuration"
}
}
post-patch {
if {${configure.cxx_stdlib} eq "macports-libstdc++" && ${os.major} < 13} {
set cxx_abi " -D_GLIBCXX_USE_CXX11_ABI=0"
} else {
set cxx_abi ""
}
# respect configure.cxx_stdlib
reinplace \
"s|__MACPORTS_CXX_STDLIB__|${configure.cxx_stdlib}${cxx_abi}|g" \
${worksrcpath}/mkspecs/common/clang-mac.conf
# respect macosx_deployment_target
foreach spec {macx-clang macx-clang-32 macx-g++ macx-g++-32 macx-g++40 macx-g++42 macx-icc macx-llvm} {
reinplace \
"s|__MACPORTS_DEPLOYMENT_TARGET__|${macosx_deployment_target}|g" \
${worksrcpath}/mkspecs/${spec}/qmake.conf
}
#respect configure.optflags
reinplace \
"s|__MACPORTS_OPTFLAGS__|${configure.optflags}|g" \
${worksrcpath}/mkspecs/common/gcc-base.conf
}
if { [vercmp ${xcodeversion} "7.0"] >= 0 } {
# starting with Xcode 7.0, the SDK for build OS version might not be available
# see https://trac.macports.org/ticket/53597
set sdks_dir ${developer_dir}/Platforms/MacOSX.platform/Developer/SDKs
if { ![file exists ${sdks_dir}/MacOSX${configure.sdk_version}.sdk] } {
configure.sdk_version
}
}
# respect configure.sdk_version
post-patch {
reinplace \
"s|__MACPORTS_MAC_SDK__|macosx${configure.sdk_version}|g" \
${worksrcpath}/mkspecs/common/macx.conf
}
# return modified spec files to the default values
post-build {
if { [variant_exists universal] && [variant_isset universal] } {
foreach arch ${universal_archs_to_use} {
foreach conf {clang.conf macx.conf clang-mac.conf gcc-base.conf} {
move -force ${worksrcpath}-${arch}/mkspecs-save/common/${conf} ${worksrcpath}-${arch}/mkspecs/common/${conf}
}
foreach spec {macx-clang macx-clang-32 macx-g++ macx-g++-32 macx-g++40 macx-g++42 macx-icc macx-llvm} {
move -force ${worksrcpath}-${arch}/mkspecs-save/${spec}/qmake.conf ${worksrcpath}-${arch}/mkspecs/${spec}/qmake.conf
}
}
} else {
foreach conf {clang.conf macx.conf clang-mac.conf gcc-base.conf} {
move -force ${worksrcpath}/mkspecs-save/common/${conf} ${worksrcpath}/mkspecs/common/${conf}
}
foreach spec {macx-clang macx-clang-32 macx-g++ macx-g++-32 macx-g++40 macx-g++42 macx-icc macx-llvm} {
move -force ${worksrcpath}/mkspecs-save/${spec}/qmake.conf ${worksrcpath}/mkspecs/${spec}/qmake.conf
}
}
}
# --prefix is not recognized.
configure.pre_args-delete --prefix=${prefix}
# --disable-dependency-tracking is not recognized.
configure.universal_args-delete --disable-dependency-tracking
# Installation options:
#-extprefix SYSROOT/PREFIX
#-hostprefix EXTPREFIX
#-libexecdir ARCHDATADIR/libexec
#-hostbindir HOSTPREFIX/bin
#-hostlibdir HOSTPREFIX/lib
configure.args-append \
-prefix ${qt_dir} \
-bindir ${qt_bins_dir} \
-headerdir ${qt_includes_dir} \
-libdir ${qt_libs_dir} \
-archdatadir ${qt_archdata_dir} \
-plugindir ${qt_plugins_dir} \
-importdir ${qt_imports_dir} \
-qmldir ${qt_qml_dir} \
-datadir ${qt_data_dir} \
-docdir ${qt_docs_dir} \
-translationdir ${qt_translations_dir} \
-sysconfdir ${qt_sysconf_dir} \
-examplesdir ${qt_examples_dir} \
-testsdir ${qt_tests_dir} \
-hostdatadir ${qt_host_data_dir}
# Configure options:
configure.args-append \
-release \
-opensource \
-confirm-license \
-shared \
-largefile \
-accessibility
foreach driver { db2 ibase mysql oci odbc psql sqlite sqlite2 tds } {
configure.args-append -no-sql-${driver}
}
if { ![variant_isset universal] } {
configure.args-append "-platform ${qt_qmake_spec}"
} else {
set merger_configure_args(i386) "-platform ${qt_qmake_spec_32}"
set merger_configure_args(x86_64) "-platform ${qt_qmake_spec_64}"
}
configure.args-append \
-no-testcocoon \
-no-gcov \
-force-pkg-config
# turn off CFG_CLOEXEC if gnulib is installed
# Third Party Libraries:
configure.args-append \
-system-zlib \
-no-mtdev \
-no-journald \
-no-syslog \
-system-libpng \
-system-libjpeg \
-system-freetype \
-system-harfbuzz \
-no-openssl \
-no-libproxy \
-system-pcre \
--disable-xcb \
-no-xkbcommon-x11 \
-no-xkbcommon-evdev \
-no-xinput2 \
-no-xcb-xlib \
-glib \
-no-pulseaudio \
-no-alsa \
-no-gtk
# from the configure script:
# NOTE: -optimized-tools is not useful in -release mode.
# http://lists.qt-project.org/pipermail/development/2017-January/028392.html
# Prefer ICU over iconv
# Additional options:
configure.args-append \
{-make libs} \
{-make tools} \
{-nomake examples} \
{-nomake tests} \
-gui \
-widgets \
-no-rpath \
-verbose \
-cups \
-no-iconv \
-no-evdev \
-no-tslib \
-icu \
-no-fontconfig \
-strip \
-no-pch \
-no-ltcg \
-dbus-linked \
-no-use-gold-linker \
-no-separate-debug-info \
-no-xcb \
-no-eglfs \
-no-gbm \
-no-directfb \
-no-linuxfb \
-no-kms \
-no-mirclient \
-no-libinput \
-no-gstreamer \
-no-system-proxies
# MacOS/iOS options:
configure.args-append \
-framework \
-securetransport
# do not use ${configure.sdk_version}
# SDK is recorded in ${qt_mkspecs_dir}/qdevice.pri
# SDK may then be removed if Xcode is updated
# see https://trac.macports.org/ticket/54044
# see https://trac.macports.org/ticket/55195
configure.args-append \
-sdk macosx
# configure options that don't show up in configure --help
configure.args-append \
-no-libudev \
-no-egl \
-no-openvg
# Qt builds part of the system using environment provided my MacPorts.
# It builds the rest using its own internal environment.
# For consistency, clear MacPorts environment.
#configure.cxx_stdlib
proc portconfigure::should_add_stdlib {} {return false}
proc cxx11.add_dependencies {} {}
configure.sdkroot
configure.cc_archflags
configure.cxx_archflags
configure.objc_archflags
configure.objcxx_archflags
configure.ld_archflags
configure.cppflags
configure.cflags
configure.cxxflags
configure.objcflags
configure.objcxxflags
configure.ldflags
configure.pipe no
if { [variant_isset universal] } {
set merger_arch_flag no
}
configure.march
configure.mtune
configure.universal_ldflags
configure.universal_cflags
configure.universal_cxxflags
configure.universal_cppflags
# cofigure script looks for perl but doesn't seem to use it for our configuration
# configure script uses gawk if it can find it,
# so require it for consistency
depends_build-append port:gawk
# unless overridden, configure script uses gmake if it can find it
configure.env-append MAKE=${build.cmd}
post-configure {
# remove any QMAKE_* entries from mkspecs/qmodule.pri
# This file is created by the configure script, and
# will overwrite these variables when set in earlier
# mkspecs scripts, which is not what it should be doing.
reinplace "/^QMAKE/d" ${worksrcpath}/mkspecs/qmodule.pri
}
if { [variant_isset universal] } {
post-destroot {
# delete preprocessor comments surrounding QT_CPU_FEATURES.i386 and QT_CPU_FEATURES.x86_64
reinplace "/^#ifndef.*$/d" ${destroot}${qt_mkspecs_dir}/qmodule.pri
reinplace "/^#else.*$/d" ${destroot}${qt_mkspecs_dir}/qmodule.pri
reinplace "/^#endif.*$/d" ${destroot}${qt_mkspecs_dir}/qmodule.pri
}
# The file ${qt_mkspecs_dir}/qconfig.pri is still not properly merged
# A workaround is to set QT_ARCH and QT_TARGET_ARCH manually (see e.g. the qmake5 PortGroup)
}
variant tests description {Enable tests} {
configure.args-replace {-nomake tests} {-make tests}
}
variant examples description {Build examples} {
configure.args-replace {-nomake examples} {-make examples}
}
variant debug description {Build both release and debug libraries} {
configure.args-replace -release -debug-and-release
}
variant pulseaudio description {Compile PulseAudio support} {
depends_lib-append port:pulseaudio
configure.args-replace -no-pulseaudio -pulseaudio
}
variant gstreamer description {Compile GStreamer support} {
depends_lib-append port:gstreamer1 port:gstreamer1-gst-plugins-base
configure.args-replace -no-gstreamer {-gstreamer 1.0}
}
variant openssl description {Use OpenSSL instead of Secure Transport} {
configure.args-delete -securetransport -no-openssl
configure.args-append -openssl-linked
# see https://trac.macports.org/ticket/58204
depends_lib-append port:openssl10
configure.args-append -I${prefix}/include/openssl-1.0 \
-L${prefix}/lib/openssl-1.0
}
default_variants-append +openssl
} else {
# these subports use qmake
PortGroup qmake5 1.0
# detremint which variants are to be turned off
set request_examples true
set request_tests true
set def_var ""
if { [lsearch -exact [lindex ${module_info} 6] "~universal"] != -1 } {
universal_variant no
}
if { [lsearch -exact [lindex ${module_info} 6] "noarch"] != -1 } {
supported_archs noarch
universal_variant no
}
if { [lsearch -exact [lindex ${module_info} 6] "~debug"] != -1 } {
qt5.debug_variant no
}
if { [lsearch -exact [lindex ${module_info} 6] "~examples"] != -1 } {
set request_examples false
}
if { [lsearch -exact [lindex ${module_info} 6] "~tests"] != -1 } {
set request_tests false
}
if { [lsearch -exact [lindex ${module_info} 6] "++examples"] != -1 } {
set request_examples true
lappend def_var "+examples"
}
if { ${request_examples} } {
variant examples description {Build examples} {}
}
if { ${request_tests} } {
variant tests description {Enable tests} {}
}
if { ${def_var} ne "" } {
default_variants-append ${def_var}
}
# accommodating variant request varies depending on how qtbase was built
pre-configure {
# determine if qmake builds examples by default (set via variants)
if {[active_variants ${name}-qtbase examples ""]} {
set base_examples true
} else {
set base_examples false
}
# determine if qmake runs tests by default (set via varians)
if {[active_variants ${name}-qtbase tests ""]} {
set base_tests true
} else {
set base_tests false
}
# determine if the user wants to build examples
if { [variant_exists examples] && [variant_isset examples] } {
set this_examples true
} else {
set this_examples false
}
# determine if the user wants to run tests
if { [variant_exists tests] && [variant_isset tests] } {
set this_tests true
} else {
set this_tests false
}
# determine of qmake's default and user requests are compatible; override qmake if necessary
if { ${this_examples} && !${base_examples} } {
configure.args-append "QT_BUILD_PARTS+=\"examples\""
}
if { !${this_examples} && ${base_examples} } {
configure.args-append "QT_BUILD_PARTS-=\"examples\""
}
if { ${this_tests} && !${base_tests} } {
configure.args-append "QT_BUILD_PARTS+=\"tests\""
}
if { !${this_tests} && ${base_tests} } {
configure.args-append "QT_BUILD_PARTS-=\"tests\""
}
}
###############################################################################
# Special Cases
###############################################################################
# special case
if { ${module} eq "qtdoc" } {
build.target docs
destroot.target install_docs
# in the process of building the html files, qtdoc looks for all installed modules
# with no clear way to select only a subset
# unless a way is found, ReproducibleBuilds (https://trac.macports.org/wiki/ReproducibleBuilds)
# requires qtdoc depend on all the documentation modules
foreach {module_doc module_doc_info} [array get modules] {
if { [lsearch -exact [lindex ${module_doc_info} 6] "~docs"] == -1 } {
if { ${os.major} >= 13 || (${module_doc} ne "qtwebengine" && ${module_doc} ne "qtwebview") } {
depends_lib-append port:${name}-${module_doc}-docs
}
}
}
}
# special case
if { ${module} eq "qtlocation" } {
# qtlocation uses
# Gypsy (https://gypsy.freedesktop.org/wiki/)
# if they can be found
# Ensure that test fails even if software is installed
post-patch {
foreach test { gypsy } {
reinplace "s|return 0;|return 0;\\\n#error turn off test|g" ${worksrcpath}/config.tests/${test}/main.cpp
}
}
}
# special case
if { ${module} eq "qtwebkit" } {
# use MacPorts icu
#
# qmake uses pkgconfig to look for icu
# this feature does not work without "CONFIG += link_pkgconfig"
patchfiles-append patch-icu.diff
# qtwebkit uses
# glx
# libXcomposite
# libXrender
# if they can be found
# Ensure that test fails even if software is installed
post-patch {
foreach test { glx libXcomposite libXrender } {
reinplace "s|return 0;|return 0;\\\n#error turn off test|g" ${worksrcpath}/Tools/qmake/config.tests/${test}/${test}.cpp
}
}
}
# special case
if { ${module} eq "qttools" } {
# prevent qttools from opportunistically using qtwebkit if it can be found
patchfiles-append patch-no_qtwebkit.diff
variant qtwebkit description {build with QtWebkit support} {
patchfiles-delete patch-no_qtwebkit.diff
depends_lib-append port:${name}-qtwebkit
}
post-extract {
# these folders are installed and conflict with ${name}-qttools-docs
delete ${worksrcpath}/examples/assistant/simpletextviewer/documentation
delete ${worksrcpath}/examples/help/contextsensitivehelp/docs
}
# see #44934 (and #35067 for the qt4-mac version)
set framework_list [split ${qt_frameworks_dir} '/']
set qt_list [split ${qt_dir} '/']
while {[llength ${qt_list}] && [llength ${framework_list}]} {
set var_qt [lindex $qt_list 0]
set var_framework [lindex $framework_list 0]
if { ${var_qt} ne ${var_framework} } {
break
}
# remove first element from list
set qt_list [lreplace ${qt_list} 0 0]
set framework_list [lreplace ${framework_list} 0 0]
}
set libreplace [string repeat ../ [llength ${qt_list}]][join ${framework_list} /]
if { ${libreplace} ne "lib" } {
patchfiles-append patch-shared.diff
post-patch {
reinplace "s|__MACPORTS_FRAMWORK_DIR__|${libreplace}|g" ${worksrcpath}/src/macdeployqt/shared/shared.cpp
}
}
}
# special case
if { ${module} eq "qtwebengine" } {
# see https://doc.qt.io/qt-5/qtwebengine-platform-notes.html
PortGroup xcodeversion 1.0
minimum_xcodeversions {13 5.1}
if { ${os.major} < 13 } {
pre-fetch {
ui_error "${subport} requires OS X 10.9 or later"
return -code error "incompatible OS version"
}
} elseif { ${os.major} == 13 } {
# see https://bugreports.qt.io/browse/QTBUG-54486
configure.sdk_version 10.10
}
# see http://lists.qt-project.org/pipermail/interest/2016-February/thread.html#20946
# see https://googleappsupdates.blogspot.co.uk/2014/09/google-chrome-64-bit-for-mac-and-windows.html
# see https://doc.qt.io/qt-5/qtwebengine-platform-notes.html
supported_archs x86_64
# UsingTheRightCompiler (https://trac.macports.org/wiki/UsingTheRightCompiler)
build.env-append CXX=${configure.cxx}
build.env-append CC=${configure.cc}
configure.args-append QMAKE_LINK=${configure.cxx}
# see https://trac.macports.org/ticket/56829
patchfiles-append patch-qtwebengine_xcode10.diff
}
# special case
if { ${module} eq "qtsensors" && [variant_isset examples] } {
if { [variant_isset debug] } {
set debug "_debug"
} else {
set debug ""
}
# fix library path names or MacPorts will try to reinstall
post-destroot {
foreach dylib "grue/Grue/libdeclarative_grue${debug}.dylib grue/libgruesensor.1.dylib grue/sensors/libqtsensors_grue${debug}.dylib sensor_explorer/Explorer/libdeclarative_explorer${debug}.dylib" {
system "/usr/bin/install_name_tool -id ${qt_examples_dir}/sensors/${dylib} ${destroot}${qt_examples_dir}/sensors/${dylib}"
}
foreach dylib "grue/Grue/libdeclarative_grue${debug}.dylib grue/sensors/libqtsensors_grue${debug}.dylib" {
system "/usr/bin/install_name_tool -change libgruesensor.1.dylib ${qt_examples_dir}/sensors/grue/libgruesensor.1.dylib ${destroot}${qt_examples_dir}/sensors/${dylib}"
}
}
}
# special case
if { ${module} eq "qtconnectivity" } {
# see https://bugreports.qt.io/browse/QTBUG-62658
patchfiles-append patch-qtconnectivity-sdk10_13.diff
}
# special case
if { ${module} eq "qtmultimedia" } {
if { ${os.major} < 13 } {
# see https://trac.macports.org/ticket/52922
# see https://trac.macports.org/ticket/53949
patchfiles-append patch-firstObject.diff
}
}
# special case
if { ${module} eq "qtwebkit-examples" && ![variant_isset examples] } {
# create a dummy file so the port can be successfully activated
post-destroot {
xinstall -d -m 0755 ${destroot}${prefix}/share/doc/${subport}
set docfile [open ${destroot}${prefix}/share/doc/${subport}/README.txt "w"]
puts ${docfile} "Without the examples variant, no examples are installed"
puts ${docfile} "${long_description}"
close ${docfile}
}
}
# special case
if { ${module} eq "qtscript" } {
# see https://trac.macports.org/ticket/54453
patchfiles-append patch-qtscript_ceil.diff
}
# special case
if { ${module} eq "qtwebview" } {
# dependents of qtwebengine
supported_archs x86_64
}
}
}
if { [lsearch -exact [lindex ${module_info} 6] "~docs"] == -1 } {
subport ${name}-${module}-docs {
supported_archs noarch
installs_libs no
universal_variant no
distname ${module}-opensource-src-${version}
if { ${revision_string} ne "0" } {
revision ${revision_string}
}
description Documentation for the port ${name}-${module}
long_description ${description}
build.target docs
destroot.target install_docs
checksums \
rmd160 [lindex [lindex ${module_info} 0] 0] \
sha256 [lindex [lindex ${module_info} 0] 1] \
size [lindex [lindex ${module_info} 0] 2]
depends_build-append \
port:${name}-qttools \
port:${name}-sqlite-plugin
# depend on the modules for which this subport provides documentation
# also have the same build dependencies
depends_build-append port:${name}-${module}
foreach deps [lindex ${module_info} 1] {
depends_build-append [subst ${deps}]
}
PortGroup qmake5 1.0
qt5.debug_variant no
# special cases
if { ${module} eq "qttools" } {
post-extract {
# generated makefiles assume full Qt was built locally
xinstall -d -m 0755 ${worksrcpath}/bin/
foreach bin {qdoc qhelpgenerator} {
ln -s ${qt_bins_dir}/${bin} ${worksrcpath}/bin/
}
}
} elseif { ${module} eq "qtwebengine" } {
# UsingTheRightCompiler (https://trac.macports.org/wiki/UsingTheRightCompiler)
build.env-append CXX=${configure.cxx}
} elseif { ${module} eq "qtwebkit" } {
post-extract {
# without this file, the makefile ${worksrcpath}/qtwebkit/Source/WebCore/Makefile.WebCore.Target
# keeps generating itself over and over again
# this file is only created when the library is being built, however
xinstall -d -m 0755 ${worksrcpath}/Source/WebCore/generated
touch ${worksrcpath}/Source/WebCore/generated/InspectorBackendCommands.qrc
}
}
}
}
}
# see https://doc.qt.io/qt-5/sql-driver.html for info on building SQL Database Drivers
foreach {sql_names sql_info} [array get sql_plugins] {
set driver [lindex ${sql_names} 0]
set dbms [lindex ${sql_names} 1]
set revision_string [lindex ${sql_names} 2]
set revision_string [string range ${revision_string} 1+[string last " " ${revision_string}] end]
subport ${name}-${driver}-plugin {
PortGroup qmake5 1.0
distname qtbase-opensource-src-${version}
if { ${revision_string} ne "0" } {
revision ${revision_string}
}
checksums \
rmd160 [lindex [lindex $modules(qtbase) 0] 0] \
sha256 [lindex [lindex $modules(qtbase) 0] 1] \
size [lindex [lindex $modules(qtbase) 0] 2]
description ${dbms} Database Driver for Qt Tool Kit ${qt_major}
long_description ${dbms} Database Driver for Qt Tool Kit ${qt_major}
# if there is more than one version of the database system, create variants for each version
if { [llength ${sql_info}] > 1 } {
set any_variant_set false
foreach variant_info ${sql_info} {
set varName [lindex ${variant_info} 0]
# find every other variant so it can be marked as conflicting
set conflicts_list ""
foreach variant_info2 ${sql_info} {
set varName2 [lindex ${variant_info2} 0]
if { ${varName} ne ${varName2} } {
lappend conflicts_list ${varName2}
}
}
# get only the numbers from the name
regexp {[0-9].} ${varName} varVer
variant ${varName} conflicts ${conflicts_list} description "use version ${varVer} of ${dbms}" {}
# check if any variant has been set
if { [variant_isset ${varName}] } {
set any_variant_set true
}
}
# ensure at least one variant is set
if { !${any_variant_set} } {
default_variants-append +[lindex [lindex ${sql_info} 0] 0]
}
}
foreach variant_info ${sql_info} {
set varName [lindex ${variant_info} 0]
if { ( [variant_exists ${varName}] && [variant_isset ${varName}] ) || [llength ${sql_info}]==1 } {
depends_lib-append [lindex ${variant_info} 1]
configure.args-append \
[subst INCLUDEPATH+=\"[lindex ${variant_info} 2]\"] \
[subst LIBS+=\"[lindex ${variant_info} 3]\"]
}
}
# for single architecture, easier to use
# worksrcdir ${worksrcdir}/qtbase/src/plugins/sqldrivers/${driver},
# but doesn't work for universal build
configure.dir ${worksrcpath}/src/plugins/sqldrivers/${driver}
build.dir ${configure.dir}
destroot.dir ${configure.dir}
# see https://trac.macports.org/ticket/53248
qt5.top_level ${worksrcpath}
}
}
subport ${name}-docs {
# meta-port to install documentation for various modules
revision 1
description Documentation for Qt Tool Kit ${qt_major}
long_description Documentation for Qt Tool Kit ${qt_major}
master_sites
distfiles
use_configure no
supported_archs noarch
installs_libs no
universal_variant no
build {}
# create a dummy file so the port can be successfully activated
destroot {
xinstall -d -m 0755 ${destroot}${prefix}/share/doc/${subport}
set docfile [open ${destroot}${prefix}/share/doc/${subport}/README.txt "w"]
puts ${docfile} "Meta-port for ${name}"
puts ${docfile} "${long_description}"
close ${docfile}
}
foreach {module module_info} [array get modules] {
if { [lindex ${module_info} 5] eq "" } {
if { [lsearch -exact [lindex ${module_info} 6] "~docs"] == -1 } {
depends_run-append port:${name}-${module}-docs
}
}
}
}
if { ${subport} eq ${name} } {
# the main port is Meta-port to install various modules
revision 1
description Qt Tool Kit ${qt_major}
long_description Qt Tool Kit: A cross-platform framework \
(headers, data, and libraries) for writing \
cross-platform GUI-based applications.
master_sites
distfiles
use_configure no
supported_archs noarch
installs_libs no
universal_variant no
build {}
# create a dummy file so the port can be successfully activated
destroot {
xinstall -d -m 0755 ${destroot}${prefix}/share/doc/${subport}
set docfile [open ${destroot}${prefix}/share/doc/${subport}/README.txt "w"]
puts ${docfile} "Meta-port for ${name}"
puts ${docfile} "${long_description}"
close ${docfile}
}
foreach {module module_info} [array get modules] {
if { [lindex ${module_info} 5] eq "" } {
depends_run-append port:${name}-${module}
}
}
depends_run-append port:${name}-sqlite-plugin
}
set python_framework ""
set depends_check ""
if { [info exists depends_build] } {
set depends_check "${depends_check} ${depends_build}"
}
if { [info exists depends_lib] } {
set depends_check "${depends_check} ${depends_lib}"
}
foreach deps ${depends_check} {
if { [string first ":python27" ${deps}] >= 0 } {
# If Qt components use Python, ensure that MacPorts python27 is used
#
# a better solution would be to force components to use a specific python program
# how to accomplish such a thing is not entirely clear
#
# see #49838
#
# version 5.5.1 (at least) of qtwebengine must find a python version in the interval [2.7, 3)
# (see tools/qmake/mkspecs/features/functions.prf)
# versions 5.5.1 of qtdeclarative and qtwebkit also use python with no way of specifying which one
#
set python_framework ${frameworks_dir}/Python.framework/Versions/2.7
}
}
if { ${python_framework} ne "" } {
configure.env-append PATH=${python_framework}/bin:$env(PATH)
build.env-append PATH=${python_framework}/bin:$env(PATH)
}
unset python_framework
if { ![exists universal_variant] || [option universal_variant] } {
PortGroup muniversal 1.0
}
if { [variant_exists universal] && [variant_isset universal] } {
merger-post-destroot {
foreach arch ${universal_archs_to_use} {
set dir ${destroot}-${arch}
foreach prlfl [glob -nocomplain ${dir}${qt_libs_dir}/*.framework/*.prl] {
reinplace -q "s|${worksrcpath}-${arch}|${worksrcpath}|g" ${prlfl}
}
foreach prlfl [glob -nocomplain ${dir}${qt_libs_dir}/*.prl] {
reinplace -q "s|${worksrcpath}-${arch}|${worksrcpath}|g" ${prlfl}
}
foreach prlfl [glob -nocomplain ${dir}${qt_examples_dir}/widgets/tools/plugandpaint/plugins/*.prl] {
reinplace -q "s|${worksrcpath}-${arch}|${worksrcpath}|g" ${prlfl}
}
if { [file exists ${dir}${qt_libs_dir}/cmake/Qt5Core/Qt5CoreConfigExtrasMkspecDir.cmake] } {
reinplace "s|macx-clang-32|macx-clang|g" ${dir}${qt_libs_dir}/cmake/Qt5Core/Qt5CoreConfigExtrasMkspecDir.cmake
}
# Libs.private contains the value of ${worksrcpath}-${arch}, which prevents merging
if { [file exists ${dir}${qt_libs_dir}/pkgconfig/Qt5WebKit.pc] } {
reinplace "s|${worksrcpath}-${arch}|${worksrcpath}|g" ${dir}${qt_libs_dir}/pkgconfig/Qt5WebKit.pc
}
if { [file exists ${dir}${qt_libs_dir}/pkgconfig/Qt5WebEngineCore.pc] } {
reinplace "s|${worksrcpath}-${arch}|${worksrcpath}|g" ${dir}${qt_libs_dir}/pkgconfig/Qt5WebEngineCore.pc
}
if { [file exists ${dir}${qt_examples_dir}/declarative/tutorials/gettingStarted/parts/part5/filedialog/Makefile] } {
reinplace "s|${worksrcpath}-${arch}|${worksrcpath}|g" ${dir}${qt_examples_dir}/declarative/tutorials/gettingStarted/parts/part5/filedialog/Makefile
reinplace -E "/\\w*-arch \\\\/d" ${dir}${qt_examples_dir}/declarative/tutorials/gettingStarted/parts/part5/filedialog/Makefile
reinplace -E "/\\w*${arch} \\\\/d" ${dir}${qt_examples_dir}/declarative/tutorials/gettingStarted/parts/part5/filedialog/Makefile
reinplace -E {s:-arch +[^ ]+::g} ${dir}${qt_examples_dir}/declarative/tutorials/gettingStarted/parts/part5/filedialog/Makefile
reinplace "s|macx-clang-32|macx-clang|g" ${dir}${qt_examples_dir}/declarative/tutorials/gettingStarted/parts/part5/filedialog/Makefile
}
if { [file exists ${dir}${qt_examples_dir}/multimedia/spectrum/fftreal.framework/fftreal.prl] } {
reinplace "s|${worksrcpath}-${arch}|${worksrcpath}|g" ${dir}${qt_examples_dir}/multimedia/spectrum/fftreal.framework/fftreal.prl
}
if { [file exists ${dir}${qt_examples_dir}/multimedia/spectrum/spectrum.app/Contents/Frameworks/fftreal.framework/fftreal.prl] } {
reinplace "s|${worksrcpath}-${arch}|${worksrcpath}|g" ${dir}${qt_examples_dir}/multimedia/spectrum/spectrum.app/Contents/Frameworks/fftreal.framework/fftreal.prl
}
if { [file exists ${dir}${qt_examples_dir}/sensors/grue/libgruesensor.prl] } {
reinplace "s|${worksrcpath}-${arch}|${worksrcpath}|g" ${dir}${qt_examples_dir}/sensors/grue/libgruesensor.prl
}
}
}
}
post-destroot {
# see #44204
foreach f [glob -nocomplain -tails -directory ${destroot}${qt_libs_dir} *.framework] {
set framework [file rootname ${f}]
set include_list [split ${qt_includes_dir} '/']
set framework_list [split ${qt_libs_dir} '/']
while {[llength ${include_list}] && [llength ${framework_list}]} {
set var_include [lindex $include_list 0]
set var_framework [lindex $framework_list 0]
if { ${var_include} ne ${var_framework} } {
break
}
# remove first element from list
set include_list [lreplace ${include_list} 0 0]
set framework_list [lreplace ${framework_list} 0 0]
}
xinstall -d -m 0755 ${destroot}${qt_includes_dir}
ln -s [string repeat ../ [llength ${include_list}]][join ${framework_list} /]/${f}/Headers ${destroot}${qt_includes_dir}/${framework}
}
# .app and non-.app programs are both put in qt_bins_dir
# put a link of any .app programs in the ${qt_apps_dir}
if { ${qt_bins_dir} ne ${qt_apps_dir} } {
xinstall -d -m 0755 ${destroot}${qt_apps_dir}
foreach app [glob -nocomplain -tails -directory ${destroot}${qt_bins_dir} *.app] {
ln -s ${qt_bins_dir}/${app} ${destroot}${qt_apps_dir}
}
}
# put configuration files in places they will be found automatically
if { ${qt_libs_dir} ne "${prefix}/lib" } {
# put link to pkgconfig files in place where pkgconfig will find it
# most Qt 5 pkgconfig files begin with Qt5, so link should not conflict with any other Qt installations
# exceptions: Enginio (new in Qt 5.3, removed in Qt 5.7)
xinstall -d -m 0755 ${destroot}${prefix}/lib/pkgconfig
foreach pcfile [glob -nocomplain -tails -directory ${destroot}${qt_libs_dir}/pkgconfig *.pc] {
ln -s ${qt_libs_dir}/pkgconfig/${pcfile} ${destroot}${prefix}/lib/pkgconfig
}
# put link to cmake files in place where cmake will find it
# most Qt 5 cmake directories begin with Qt5, so link should not conflict with any other Qt installations
# exceptions: Enginio (new in Qt 5.3, removed in Qt 5.7)
xinstall -d -m 0755 ${destroot}${prefix}/lib/cmake
foreach cmakedir [glob -type d -nocomplain -tails -directory ${destroot}${qt_libs_dir}/cmake *] {
xinstall -d -m 0755 ${destroot}${prefix}/lib/cmake/${cmakedir}
foreach cmakefile [glob -tails -directory ${destroot}${qt_libs_dir}/cmake/${cmakedir} *.cmake] {
ln -s ${qt_libs_dir}/cmake/${cmakedir}/${cmakefile} ${destroot}${prefix}/lib/cmake/${cmakedir}/
}
}
# if cmake finds configuration files in ${prefix}/lib/cmake, CMAKE_CURRENT_LIST_DIR expands to ${prefix}/lib/cmake/xxx
# cmake configuration files actually installed in ${qt_cmake_module_dir}/xxx
foreach cmakedir [glob -type d -nocomplain -tails -directory ${destroot}${qt_libs_dir}/cmake *] {
foreach cmakefile [glob -nocomplain -directory ${destroot}${qt_libs_dir}/cmake/${cmakedir} *.cmake] {
reinplace -q "s|\\\${CMAKE_CURRENT_LIST_DIR}|${qt_cmake_module_dir}/${cmakedir}|g" ${cmakefile}
}
}
}
}
if {${subport} eq ${name}} {
livecheck.type regex
livecheck.url https://download.qt.io/archive/qt/${branch}/
livecheck.regex (\\d+(\\.\\d+)+)
} else {
livecheck.type none
}
You can’t perform that action at this time.