Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 6 Jan 2014 16:16:53 +0000 (UTC)
From:      Max Brazhnikov <makc@FreeBSD.org>
To:        ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-head@freebsd.org
Subject:   svn commit: r338902 - in head: . Mk Mk/Uses accessibility/qt4-accessible chinese/qt4-codecs-cn chinese/qt4-codecs-tw databases/qt4-ibase-plugin databases/qt4-mysql-plugin databases/qt4-mysql-plugin...
Message-ID:  <201401061616.s06GGraW029366@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: makc
Date: Mon Jan  6 16:16:52 2014
New Revision: 338902
URL: http://svnweb.freebsd.org/changeset/ports/338902

Log:
  In preparation for Qt 5 ports:
  
  Mk/Uses/qmake.mk:
  - Add support for out-of-source builds
  - Add support for Qt 5 ports
  - Respect WITH_DEBUG
  
  Mk/bsd.qt.mk:
  - Massive rework for Qt 5 ports
  - Remove '-phonon' from global configure args, thus allow qt4-designer and
    qt4-qtconfig to be built without Phonon support [1]
  
  devel/qmake4:
  - Improve mkspecs for gcc (mainly sync with linux version) and clang
  
  devel/qt4-corelib:
  - Convert to USES=iconv
  - Remove ancient patch
  
  devel/qt4-designer:
  - Remove reference to WRKSRC from installed pkgconfig files [2]
  - Don't build Qt Designer plugin for Phonon from outdated Qt sources.
    Separate port for plugin will be committed later
  
  devel/qt4-assistant-adp, devel/qt4-libqtassistantclient:
  - Convert to USES=qmake
  
  Clean up Qt4 ports:
  - Update comments
  - Update description; use common description
  - Consistently use QT_INCDIR, QT_LIBDIR, etc.
  - Use options helpers
  - Convert to new LIB_DEPENDS syntax
  - Update DESKTOP_ENTRIES to avoid conflicts with Qt 5 ports
  - Rename/move several ports for unification with Qt 5 ports
  
  PR:		ports/184620 [1]
  Reported by:	Kevin Zheng <kevinz5000@gmail.com>
  
  PR:		ports/181141 [2]
  Reported by:	thierry
  
  PR:		ports/185101
  Exp-run by:	bdrewery
  
  This is mostly solely avilla's work in area51, kudos to him! And a couple
  commits from myself, so you know who's collecting pointyhats :)

Added:
  head/devel/qmake4/files/patch-mkspecs__common__clang-unix.conf   (contents, props changed)
  head/devel/qmake4/files/patch-mkspecs__common__freebsd.conf   (contents, props changed)
  head/devel/qmake4/files/patch-mkspecs__freebsd-g++__qmake.conf   (contents, props changed)
  head/devel/qmake4/files/qconfig.cpp.in   (contents, props changed)
     - copied, changed from r338900, head/devel/qmake4/files/qconfig.cpp
  head/devel/qt4-script/files/patch-src__3rdparty__javascriptcore__JavaScriptCore__jit__JITStubs.cpp   (contents, props changed)
  head/devel/qt4-script/files/patch-src__3rdparty__javascriptcore__JavaScriptCore__runtime__JSValue.h   (contents, props changed)
  head/devel/qt4-testlib/
     - copied from r337204, head/devel/qt4-qtestlib/
  head/devel/qt4/files/extrapatch-configure   (contents, props changed)
     - copied, changed from r338848, head/devel/qt4/files/patch-configure
  head/graphics/qt4-opengl/
     - copied from r337204, head/x11/qt4-opengl/
  head/textproc/clucene-qt4/
     - copied from r337204, head/textproc/qt4-clucene/
  head/www/webkit-qt4/
     - copied from r337204, head/www/qt4-webkit/
  head/x11-toolkits/qt4-declarative/
     - copied from r337204, head/devel/qt4-declarative/
Deleted:
  head/accessibility/qt4-accessible/pkg-descr
  head/chinese/qt4-codecs-cn/pkg-descr
  head/chinese/qt4-codecs-tw/pkg-descr
  head/databases/qt4-ibase-plugin/pkg-descr
  head/databases/qt4-mysql-plugin/pkg-descr
  head/databases/qt4-odbc-plugin/pkg-descr
  head/databases/qt4-pgsql-plugin/pkg-descr
  head/databases/qt4-sql/pkg-descr
  head/databases/qt4-sqlite-plugin/pkg-descr
  head/databases/qt4-sqlite3-plugin/pkg-descr
  head/devel/dbus-qt4/pkg-descr
  head/devel/qmake4/files/patch-qt4-before-ports-in-mkspecs.diff
  head/devel/qmake4/files/qconfig.cpp
  head/devel/qmake4/pkg-descr
  head/devel/qt4-assistant-adp/pkg-descr
  head/devel/qt4-assistant/pkg-descr
  head/devel/qt4-corelib/files/patch-0185-fix-format-strings.diff
  head/devel/qt4-corelib/pkg-descr
  head/devel/qt4-declarative/
  head/devel/qt4-designer/files/
  head/devel/qt4-designer/pkg-descr
  head/devel/qt4-help-tools/pkg-descr
  head/devel/qt4-help/pkg-descr
  head/devel/qt4-libqtassistantclient/pkg-descr
  head/devel/qt4-linguist/pkg-descr
  head/devel/qt4-makeqpf/pkg-descr
  head/devel/qt4-moc/pkg-descr
  head/devel/qt4-porting/pkg-descr
  head/devel/qt4-qdbusviewer/pkg-descr
  head/devel/qt4-qdoc3/pkg-descr
  head/devel/qt4-qmlviewer/pkg-descr
  head/devel/qt4-qt3support/pkg-descr
  head/devel/qt4-qtestlib/
  head/devel/qt4-qvfb/pkg-descr
  head/devel/qt4-rcc/pkg-descr
  head/devel/qt4-script/pkg-descr
  head/devel/qt4-scripttools/pkg-descr
  head/devel/qt4-testlib/files/
  head/devel/qt4-testlib/pkg-descr
  head/devel/qt4-uic/pkg-descr
  head/devel/qt4-uic3/pkg-descr
  head/devel/qt4/files/patch-configure
  head/graphics/qt4-iconengines/pkg-descr
  head/graphics/qt4-imageformats/pkg-descr
  head/graphics/qt4-opengl/pkg-descr
  head/graphics/qt4-pixeltool/pkg-descr
  head/graphics/qt4-svg/pkg-descr
  head/japanese/qt4-codecs-jp/pkg-descr
  head/korean/qt4-codecs-kr/pkg-descr
  head/misc/qt4-doc/pkg-descr
  head/misc/qt4-l10n/pkg-descr
  head/misc/qt4-qtconfig/pkg-descr
  head/misc/qt4-qtdemo/pkg-descr
  head/multimedia/qt4-multimedia/pkg-descr
  head/net/qt4-network/pkg-descr
  head/textproc/clucene-qt4/pkg-descr
  head/textproc/qt4-clucene/
  head/textproc/qt4-xml/pkg-descr
  head/textproc/qt4-xmlpatterns-tool/pkg-descr
  head/textproc/qt4-xmlpatterns/pkg-descr
  head/www/qt4-webkit/
  head/www/webkit-qt4/pkg-descr
  head/x11-toolkits/qt4-declarative/pkg-descr
  head/x11-toolkits/qt4-gui/pkg-descr
  head/x11/qt4-inputmethods/pkg-descr
  head/x11/qt4-opengl/
Modified:
  head/MOVED
  head/Mk/Uses/qmake.mk
  head/Mk/bsd.qt.mk
  head/accessibility/qt4-accessible/Makefile
  head/chinese/qt4-codecs-cn/Makefile
  head/chinese/qt4-codecs-tw/Makefile
  head/databases/qt4-ibase-plugin/Makefile
  head/databases/qt4-mysql-plugin/Makefile
  head/databases/qt4-mysql-plugin/files/Makefile.bsd   (contents, props changed)
  head/databases/qt4-odbc-plugin/Makefile
  head/databases/qt4-pgsql-plugin/Makefile
  head/databases/qt4-sql/Makefile
  head/databases/qt4-sql/pkg-message   (contents, props changed)
  head/databases/qt4-sql/pkg-plist   (contents, props changed)
  head/databases/qt4-sqlite-plugin/Makefile
  head/databases/qt4-sqlite3-plugin/Makefile
  head/devel/Makefile
  head/devel/dbus-qt4/Makefile
  head/devel/dbus-qt4/pkg-plist   (contents, props changed)
  head/devel/qmake4/Makefile
  head/devel/qmake4/files/Makefile.bsd   (contents, props changed)
  head/devel/qmake4/pkg-plist
  head/devel/qt4-assistant-adp/Makefile
  head/devel/qt4-assistant/Makefile
  head/devel/qt4-assistant/pkg-plist   (contents, props changed)
  head/devel/qt4-corelib/Makefile
  head/devel/qt4-corelib/pkg-plist
  head/devel/qt4-designer/Makefile
  head/devel/qt4-designer/pkg-plist
  head/devel/qt4-help-tools/Makefile
  head/devel/qt4-help-tools/pkg-plist   (contents, props changed)
  head/devel/qt4-help/Makefile
  head/devel/qt4-help/pkg-plist   (contents, props changed)
  head/devel/qt4-libqtassistantclient/Makefile
  head/devel/qt4-libqtassistantclient/files/patch-lib__lib.pro   (contents, props changed)
  head/devel/qt4-libqtassistantclient/pkg-plist   (contents, props changed)
  head/devel/qt4-linguist/Makefile
  head/devel/qt4-linguist/pkg-plist   (contents, props changed)
  head/devel/qt4-makeqpf/Makefile
  head/devel/qt4-makeqpf/pkg-plist   (contents, props changed)
  head/devel/qt4-moc/Makefile
  head/devel/qt4-moc/pkg-plist   (contents, props changed)
  head/devel/qt4-porting/Makefile
  head/devel/qt4-porting/pkg-plist   (contents, props changed)
  head/devel/qt4-qdbusviewer/Makefile
  head/devel/qt4-qdbusviewer/pkg-plist
  head/devel/qt4-qdoc3/Makefile
  head/devel/qt4-qdoc3/pkg-plist   (contents, props changed)
  head/devel/qt4-qmlviewer/Makefile
  head/devel/qt4-qmlviewer/pkg-plist   (contents, props changed)
  head/devel/qt4-qt3support/Makefile
  head/devel/qt4-qt3support/pkg-plist   (contents, props changed)
  head/devel/qt4-qvfb/Makefile
  head/devel/qt4-qvfb/pkg-plist
  head/devel/qt4-rcc/Makefile
  head/devel/qt4-rcc/pkg-plist   (contents, props changed)
  head/devel/qt4-script/Makefile
  head/devel/qt4-script/pkg-plist   (contents, props changed)
  head/devel/qt4-scripttools/Makefile
  head/devel/qt4-scripttools/pkg-plist   (contents, props changed)
  head/devel/qt4-testlib/Makefile
  head/devel/qt4-testlib/pkg-plist   (contents, props changed)
  head/devel/qt4-uic/Makefile
  head/devel/qt4-uic/pkg-plist   (contents, props changed)
  head/devel/qt4-uic3/Makefile
  head/devel/qt4-uic3/pkg-plist   (contents, props changed)
  head/devel/qt4/Makefile
  head/devel/qt4/pkg-descr   (contents, props changed)
  head/graphics/Makefile
  head/graphics/qt4-iconengines/Makefile
  head/graphics/qt4-imageformats/Makefile
  head/graphics/qt4-opengl/Makefile
  head/graphics/qt4-opengl/pkg-plist   (contents, props changed)
  head/graphics/qt4-pixeltool/Makefile
  head/graphics/qt4-pixeltool/pkg-plist   (contents, props changed)
  head/graphics/qt4-svg/Makefile
  head/graphics/qt4-svg/pkg-plist   (contents, props changed)
  head/japanese/qt4-codecs-jp/Makefile
  head/korean/qt4-codecs-kr/Makefile
  head/misc/qt4-doc/Makefile
  head/misc/qt4-l10n/Makefile
  head/misc/qt4-l10n/pkg-plist   (contents, props changed)
  head/misc/qt4-qtconfig/Makefile
  head/misc/qt4-qtconfig/pkg-plist
  head/misc/qt4-qtdemo/Makefile
  head/misc/qt4-qtdemo/pkg-plist
  head/multimedia/qt4-multimedia/Makefile
  head/multimedia/qt4-multimedia/pkg-plist   (contents, props changed)
  head/net/qt4-network/Makefile
  head/net/qt4-network/pkg-plist   (contents, props changed)
  head/textproc/Makefile
  head/textproc/clucene-qt4/Makefile
  head/textproc/clucene-qt4/pkg-plist   (contents, props changed)
  head/textproc/qt4-xml/Makefile
  head/textproc/qt4-xml/pkg-plist   (contents, props changed)
  head/textproc/qt4-xmlpatterns-tool/Makefile
  head/textproc/qt4-xmlpatterns-tool/pkg-plist   (contents, props changed)
  head/textproc/qt4-xmlpatterns/Makefile
  head/textproc/qt4-xmlpatterns/pkg-plist   (contents, props changed)
  head/www/Makefile
  head/www/webkit-qt4/Makefile
  head/www/webkit-qt4/pkg-plist
  head/x11-toolkits/Makefile
  head/x11-toolkits/qt4-declarative/Makefile
  head/x11-toolkits/qt4-declarative/pkg-plist   (contents, props changed)
  head/x11-toolkits/qt4-gui/Makefile
  head/x11-toolkits/qt4-gui/pkg-plist
  head/x11/Makefile
  head/x11/qt4-graphicssystems-opengl/Makefile
  head/x11/qt4-graphicssystems-opengl/pkg-descr   (contents, props changed)
  head/x11/qt4-inputmethods/Makefile

Modified: head/MOVED
==============================================================================
--- head/MOVED	Mon Jan  6 16:14:33 2014	(r338901)
+++ head/MOVED	Mon Jan  6 16:16:52 2014	(r338902)
@@ -5360,3 +5360,8 @@ net-im/xfce4-messenger-plugin||2014-01-0
 multimedia/xfce4-media|multimedia/xfce4-parole|2014-01-04|Has expired: Upstream development dead, use multimedia/xfce4-parole instead
 devel/py-gevent-zeromq|devel/py-pyzmq|2014-01-06|Has expired: devel/py-pyzmq has gevent support built in
 net/erlyvideo||2014-01-06|Has expired: Development of erlyvideo is abandoned upstream. Use flussonic instead
+devel/qt4-declarative|x11-toolkits/qt4-declarative|2014-01-06|Moved to unify with Qt 5
+devel/qt4-qtestlib|devel/qt4-testlib|2014-01-06|Renamed to unify with Qt 5
+textproc/qt4-clucene|textproc/clucene-qt4|2014-01-06|Renamed to unify with Qt 5
+www/qt4-webkit|www/webkit-qt4||2014-01-06|Renamed to unify with Qt 5
+x11/qt4-opengl|graphics/qt4-opengl|2014-01-06|Moved to unify with Qt 5

Modified: head/Mk/Uses/qmake.mk
==============================================================================
--- head/Mk/Uses/qmake.mk	Mon Jan  6 16:14:33 2014	(r338901)
+++ head/Mk/Uses/qmake.mk	Mon Jan  6 16:16:52 2014	(r338902)
@@ -1,15 +1,16 @@
 # $FreeBSD$
 #
-# Provide support for qmake based projects
+# Provide support for qmake-based projects
 #
 # MAINTAINER: kde@FreeBSD.org
 #
 # Feature:		qmake
 # Usage:		USES=qmake or USES=qmake:ARGS
-#			Must be used along with	'USE_QT4='
-# Valid ARGS:		norecursive
+#			Must be used along with	'USE_QT*=#'
+# Valid ARGS:		norecursive outsource
 # ARGS description:
 # norecursive		Don't pass -recursive argument to qmake binary
+# outsource		Perform an out-of-source build
 #
 #
 # Variables for ports:
@@ -18,7 +19,8 @@
 # QMAKE_ARGS		- Arguments passed to qmake.
 #			Default: see below
 # QMAKE_SOURCE_PATH	- Path to qmake project files.
-#			Default: empty (autodetect)
+#			Default: ${WRKSRC} if out-of-source build is
+#			requested, empty otherwise.
 #
 # User defined variables:
 # QMAKE_VERBOSE		- Enable verbose configure output.
@@ -27,25 +29,51 @@
 .if !defined(_INCLUDE_USES_QMAKE_MK)
 _INCLUDE_USES_QMAKE_MK=	yes
 
-.if !defined(NO_STAGE)
-DESTDIRNAME=	INSTALL_ROOT
+# _QT_VERSION is defined in bsd.qt.mk, only if a correct Qt version was selected
+# via USE_QT*.
+.if empty(_QT_VERSION)
+IGNORE=	'USES+= qmake' must be accompanied with 'USE_QT[${_QT_SUPPORTED:S/ //g}]= #'
 .endif
 
-.if defined(qmake_ARGS)
-. if ${qmake_ARGS} == "norecursive"
-QMAKE_NORECURSIVE=	yes
-. else
-IGNORE=	Incorrect 'USES+= qmake' usage: argument '${qmake_ARGS}' is not recognized
-. endif
-.endif
-
-.if !defined(USE_QT4)
-IGNORE=	'USES+= qmake' must be accompanied with 'USE_QT4= #'
-.endif
+# _env is a private argument used only by bsd.qt.mk to get variables and custom
+# targets (currently, only qmake-configure), without qmake being added to the
+# configure stage.
+_VALID_ARGS=	norecursive outsource _env
+_qmake_ARGS=	${qmake_ARGS:S/\:/ /g}
 
-USE_QT4+=	qmake_build
+.if defined(qmake_ARGS)
+. for arg in ${_qmake_ARGS}
+.  if empty(_VALID_ARGS:M${arg})
+IGNORE=	Incorrect 'USES+= qmake' usage: argument '${arg}' is not recognized
+.  endif
+. endfor
+.endif
+
+.if ! ${_qmake_ARGS:M_env}
+USE_QT${_QT_VERSION:R:R}+=	qmake_build
+.endif
+
+# QMAKESPEC belongs to bsd.qt.mk.
+QMAKE_ENV?=	${CONFIGURE_ENV}
+QMAKE_ARGS+=	-spec ${QMAKESPEC} \
+		QMAKE_CC="${CC}" QMAKE_CXX="${CXX}" \
+		QMAKE_LINK_C="${CC}" QMAKE_LINK_C_SHLIB="${CC}" \
+		QMAKE_LINK="${CXX}" QMAKE_LINK_SHLIB="${CXX}" \
+		QMAKE_CFLAGS="${CFLAGS}" \
+		QMAKE_CXXFLAGS="${CXXFLAGS}" \
+		QMAKE_LFLAGS="${LDFLAGS}" \
+		PREFIX="${PREFIX}"
+
+.if defined(WITH_DEBUG)
+QMAKE_ARGS+=	CONFIG+="debug" \
+		CONFIG-="release"
+.else
+QMAKE_ARGS+=	CONFIG+="release" \
+		CONFIG-="debug separate_debug_info"
+.endif # defined(WITH_DEBUG)
 
-.if !defined(QMAKE_NORECURSIVE)
+# We set -recursive by default to keep qmake from running in the build stage.
+.if ! ${_qmake_ARGS:Mnorecursive}
 QMAKE_ARGS+=	-recursive
 .endif
 
@@ -53,11 +81,33 @@ QMAKE_ARGS+=	-recursive
 QMAKE_ARGS+=	-d
 .endif
 
-QMAKE_SOURCE_PATH?=	${QMAKE_PRO}
+# _QMAKE_WRKSRC (and _QMAKE, below) are needed to abstract the qmake target and
+# use it for both qtbase and USES=qmake ports. They are private, not supposed to
+# be used anywhere else.
+_QMAKE_WRKSRC?=	${CONFIGURE_WRKSRC}
+.if ${_qmake_ARGS:Moutsource}
+CONFIGURE_WRKSRC=	${WRKDIR}/.build
+BUILD_WRKSRC=		${CONFIGURE_WRKSRC}
+INSTALL_WRKSRC=		${BUILD_WRKSRC}
+QMAKE_SOURCE_PATH?=	${WRKSRC}
+.else
+QMAKE_SOURCE_PATH?=	# empty
+.endif
+
+.if !defined(NO_STAGE) && ! ${_qmake_ARGS:M_env}
+DESTDIRNAME=	INSTALL_ROOT
+.endif
 
-.if !target(do-configure)
-do-configure:
-	@cd ${CONFIGURE_WRKSRC} && ${SETENV} ${QMAKE_ENV} ${QMAKE} ${QMAKE_ARGS} ${QMAKE_SOURCE_PATH}
+# Define a custom target to make it usable by bsd.qt.mk for internal Qt
+# configuration.
+qmake-configure:
+	@${MKDIR} ${_QMAKE_WRKSRC}
+	@cd ${_QMAKE_WRKSRC} && \
+		${SETENV} ${QMAKE_ENV} ${_QMAKE} ${QMAKE_ARGS} ${QMAKE_SOURCE_PATH}
+
+.if !target(do-configure) && ! ${_qmake_ARGS:M_env}
+do-configure: qmake-configure
+	@${DO_NADA}
 .endif
 
-.endif #!defined(_INCLUDE_USES_QMAKE_MK)
+.endif # !defined(_INCLUDE_USES_QMAKE_MK)

Modified: head/Mk/bsd.qt.mk
==============================================================================
--- head/Mk/bsd.qt.mk	Mon Jan  6 16:14:33 2014	(r338901)
+++ head/Mk/bsd.qt.mk	Mon Jan  6 16:16:52 2014	(r338902)
@@ -1,373 +1,624 @@
+#-*- tab-width: 4; -*-
+# ex:ts=4
+#
 # $FreeBSD$
 #
-# Variables:
+# Port variables:
+# USE_QT*			- List of Qt modules to depend on, with optional '_build'
+#					  and '_run' suffixes. Define it empty to include this file
+#					  without depending on Qt ports.
+# QT_DIST			- The port belongs to the Qt distribution. Set to 'yes' for
+#					  Qt 4, or to the distribution name(s) for newer versions.
 # QT_NONSTANDARD	- Suppress modification of configure and make environment.
-# QT_DIST		- Package being built is part of the Qt distribution.
 #
-# Global switches (add this to /etc/make.conf):
-# QT4_OPTIONS		- A list of options, can be CUPS, NAS and/or QGTKSTYLE.
-#				If set, Qt will be built with support for:
-#				- Common UNIX Printing System (CUPS);
-#				- Network Audio System (NAS);
-#				- Qt style that renders using GTK (QGTKSTYLE).
+# Global switches (for inclusion into /etc/make.conf):
+# QT4_OPTIONS		- A list of (Qt 4-only) global options; can be CUPS, NAS
+#					  and/or QGTKSTYLE. If set, Qt will be built with support
+#					  for:
+#					   * Common UNIX Printing System (CUPS);
+#					   * Network Audio System (NAS);
+#					   * GTK+-based Qt theme (QGTKSTYLE).
 
 .if !defined(_POSTMKINCLUDED) && !defined(Qt_Pre_Include)
+
 Qt_Include_MAINTAINER=	kde@FreeBSD.org
-Qt_Pre_Include=		bsd.qt.mk
+Qt_Pre_Include=	bsd.qt.mk
 
-.if !defined(QT_NONSTANDARD)
-CONFIGURE_ARGS+=--with-qt-includes=${QT_INCDIR} \
-		--with-qt-libraries=${QT_LIBDIR} \
-		--with-extra-libs=${LOCALBASE}/lib \
-		--with-extra-includes=${LOCALBASE}/include
-CONFIGURE_ENV+=	MOC="${MOC}" UIC="${UIC}" LIBS="${QTCFGLIBS}" \
-		QMAKE="${QMAKE}" QMAKESPEC="${QMAKESPEC}" QTDIR="${QT_PREFIX}"
-CPPFLAGS+=	${QTCPPFLAGS}
-MAKE_ENV+=	QMAKESPEC="${QMAKESPEC}"
-.endif # !defined(QT_NONSTANDARD)
+# Qt versions currently supported by the framework.
+_QT_SUPPORTED?=	4 5
+QT4_VERSION?=	4.8.5
+QT5_VERSION?=	5.2.0-beta1
+
+QT_PREFIX?=		${LOCALBASE}
+
+_QT_RELNAME=	qt${_QT_VERSION:R:R}
+_QT_VERSION=	# empty
+.for ver in ${_QT_SUPPORTED}
+. if defined(USE_QT${ver})
+.  if empty(_QT_VERSION)
+_QT_VERSION=	${QT${ver}_VERSION}
+.  else
+# Reject different USE_QT*.
+IGNORE?=		can't be installed: different Qt versions specified via USE_QT[${_QT_SUPPORTED:S/ //g}] #'
+.  endif
+. endif
+.endfor
+
+.if empty(_QT_VERSION)
+# The file was included without USE_QT*.
+IGNORE?=		can't be installed: bsd.qt.mk may only be included via USE_QT[${_QT_SUPPORTED:S/ //g}] #'
+.endif
 
 .if defined(QT_DIST)
-DISTINFO_FILE=	${PORTSDIR}/devel/qt4/distinfo
+QT_NONSTANDARD=	yes
+
+. if ! ${.MAKEFLAGS:MPREFIX=*}
+PREFIX=			${QT_PREFIX}
+. endif
+
 MASTER_SITES=	${MASTER_SITE_QT}
-MASTER_SITE_SUBDIR=	official_releases/qt/${QT4_VERSION:R}/${QT4_VERSION}
-DISTNAME=	qt-everywhere-opensource-src-${QT4_VERSION}
+# Useless, as it must be defined before including bsd.port.pre.mk (at least
+# because of bsd.options.mk).
+#PKGNAMEPREFIX?=	${_QT_RELNAME}-
 DIST_SUBDIR=	KDE
-#CONFLICTS+=	Currently there are no conflicts \o/
+DISTINFO_FILE=	${.CURDIR:H:H}/devel/${_QT_RELNAME}/distinfo
+
+# Can go after a while.
+CONFLICTS_BUILD=qt-3.* qt-copy-3.*
+
+LICENSE?=		LGPL21
 
+. if !exists(${PKGDIR}/pkg-descr)
+DESCR?=			${.CURDIR:H:H}/devel/${_QT_RELNAME}/pkg-descr
+. endif
 
-# Stage support
+# Stage support.
 DESTDIRNAME=	INSTALL_ROOT
 
-# rene: can go after a while
-CONFLICTS_BUILD=	qt-3.* qt-copy-3.*
+. if ${_QT_VERSION:M4*}
+MASTER_SITE_SUBDIR=	official_releases/qt/${_QT_VERSION:R}/${_QT_VERSION}/
+DISTNAME=		qt-everywhere-opensource-src-${_QT_VERSION}
+. else
+.  if ${_QT_VERSION:M*-*}
+# Pre-releases.
+MASTER_SITE_SUBDIR=	development_releases/qt/${_QT_VERSION:R}/${_QT_VERSION}/submodules/
+.  else
+MASTER_SITE_SUBDIR=	official_releases/qt/${_QT_VERSION:R}/${_QT_VERSION}/submodules/
+.  endif
+DISTNAME=		${QT_DIST:S,^,qt,:S,$,-opensource-src-${_QT_VERSION},}
+DISTFILES=		${DISTNAME:S,$,${EXTRACT_SUFX},}
+USE_XZ=			yes
+
+.  if ${.TARGETS:Mmakesum} || ${.TARGETS:Mfetch} && \
+	defined(DISABLE_SIZE) && defined(NO_CHECKSUM)
+# Ensure that the "makesum" target (with its inner "fetch" one) uses
+# devel/qt*/distinfo for every port.
+QT_DIST=		base declarative doc graphicaleffects imageformats \
+				multimedia quick1 quickcontrols script serialport svg tools \
+				translations webkit webkit-examples x11extras xmlpatterns
+.  endif
 
-# Let configure handle its well known compilers defined in the mkspecs
-# (i.e. `cc` and `c++` are not supported by configure tests).
-CONFIGURE_ENV+=	CC="" CXX=""
-
-# Keep in sync with devel/qmake4/files/qconfig.cpp
-CONFIGURE_ARGS+=-fast -platform ${QMAKESPEC} \
-		-system-libjpeg -system-libpng \
-		-system-libmng -system-libtiff -system-zlib \
-		-opensource -confirm-license \
-		-no-pch \
-		-prefix ${PREFIX} \
-		-bindir ${PREFIX}/bin \
-		-libdir ${PREFIX}/${QT_LIBDIR_REL} \
-		-docdir ${PREFIX}/share/doc/qt4 \
-		-headerdir ${PREFIX}/${QT_INCDIR_REL} \
-		-plugindir ${PREFIX}/${QT_PLUGINDIR_REL} \
-		-importdir ${PREFIX}/${QT_LIBDIR_REL}/imports \
-		-datadir ${PREFIX}/share/qt4 \
-		-translationdir ${PREFIX}/share/qt4/translations \
-		-sysconfdir ${PREFIX}/etc/xdg \
-		-examplesdir ${PREFIX}/share/examples/qt4/examples \
-		-demosdir ${PREFIX}/share/examples/qt4/demos \
-		-phonon -no-phonon-backend
-
-PLIST_SUB+=	SHLIB_VER=${QT4_VERSION:C/-.*//} \
-		SHLIB_SHVER=${QT4_VERSION:R}
-
-# SIMD support is detected on runtime, no need to disable on build.
-#.if defined(PACKAGE_BUILDING)
-#CONFIGURE_ARGS+=-no-mmx -no-3dnow -no-sse -no-sse2 -no-sse3 \
-#		-no-ssse3 -no-sse4.1 -no-sse4.2
-#.endif #defined(PACKAGE_BUILDING)
-
-# .if defined(PORTNAME) && ${PORTNAME} != "xmlpatterns"
-# CONFIGURE_ARGS+=-no-exceptions
-# .endif
+.  if ${QT_DIST} == "base" && ${PORTNAME} != "qmake"
+# Qt configure requires pkg-config to detect dependencies.
+USES+=			pkgconfig
+
+# Use mkspecs installed in QMAKEPATH/mkspecs when building qtbase.
+CONFIGURE_ENV+=	QMAKEPATH="${QT_MKSPECDIR:H}"
+MAKE_ENV+=		QMAKEPATH="${QT_MKSPECDIR:H}"
+.  endif
 
-.if defined(WANT_QT_DEBUG) || defined(WITH_DEBUG)
+# -nomake flags aren't enough.
+EXTRACT_AFTER_ARGS?=	${DISTNAME:S,$,/examples,:S,^,--exclude ,} \
+				${DISTNAME:S,$,/tests,:S,^,--exclude ,}
+. endif # ! ${_QT_VERSION:M4*}
+
+CONFIGURE_ENV+=	MAKE="${MAKE:T}"
+
+CONFIGURE_ARGS+=-opensource -confirm-license \
+				-platform ${QMAKESPEC} \
+				-no-pch \
+				-prefix ${PREFIX} \
+				-bindir ${PREFIX}/${QT_BINDIR_REL} \
+				-headerdir ${PREFIX}/${QT_INCDIR_REL} \
+				-libdir ${PREFIX}/${QT_LIBDIR_REL} \
+				-plugindir ${PREFIX}/${QT_PLUGINDIR_REL} \
+				-importdir ${PREFIX}/${QT_IMPORTDIR_REL} \
+				-datadir ${PREFIX}/${QT_DATADIR_REL} \
+				-docdir ${PREFIX}/${QT_DOCDIR_REL} \
+				-translationdir ${PREFIX}/${QT_L10NDIR_REL} \
+				-sysconfdir ${PREFIX}/${QT_ETCDIR_REL}
+
+. if ${_QT_VERSION:M4*}
+CONFIGURE_ARGS+=-fast \
+				-system-libjpeg -system-libpng \
+				-system-libmng -system-libtiff -system-zlib \
+				-no-phonon-backend \
+				-examplesdir ${PREFIX}/${QT_EXAMPLEDIR_REL}/examples \
+				-demosdir ${PREFIX}/${QT_EXAMPLEDIR_REL}/demos
+. else
+CONFIGURE_ARGS+=-dont-process \
+				-nomake examples -nomake tests \
+				-archdatadir ${PREFIX}/${QT_ARCHDIR_REL} \
+				-libexecdir ${PREFIX}/${QT_LIBEXECDIR_REL} \
+				-qmldir ${PREFIX}/${QT_QMLDIR_REL} \
+				-examplesdir ${PREFIX}/${QT_EXAMPLEDIR_REL} \
+				-testsdir ${PREFIX}/${QT_TESTDIR_REL}
+. endif
+
+. if defined(WANT_QT_DEBUG) || defined(WITH_DEBUG)
+WITH_DEBUG=		yes
+STRIP=			# It's done prior to bsd.qt.mk inclusion.
 CONFIGURE_ARGS+=-debug -separate-debug-info
-PLIST_SUB+=	DEBUG=""
-.else
+# Override configuration in global qconfig.pri.
+QMAKE_ARGS+=	QT_CONFIG+="debug separate_debug_info" \
+				QT_CONFIG-="release"
+PLIST_SUB+=		DEBUG=""
+. else
 CONFIGURE_ARGS+=-release -no-separate-debug-info
-PLIST_SUB+=	DEBUG="@comment "
-.endif
+QMAKE_ARGS+=	QT_CONFIG+="release" \
+				QT_CONFIG-="debug separate_debug_info"
+PLIST_SUB+=		DEBUG="@comment "
+. endif
 
-.if defined(WANT_QT_VERBOSE_CONFIGURE)
+. if defined(WANT_QT_VERBOSE_CONFIGURE)
 CONFIGURE_ARGS+=-verbose
+. endif
+
+. if ${QT_DIST} == "base" || ${_QT_VERSION:M4*}
+EXTRA_PATCHES?=	${.CURDIR:H:H}/devel/${_QT_RELNAME}/files/extrapatch-configure
+.  if ${_QT_VERSION:M5*}
+EXTRA_PATCHES+=	${.CURDIR:H:H}/devel/qt5-core/files/extrapatch-src__corelib__tools__qdatetime.cpp
+.  endif
+. endif
+
+# Override settings installed in qconfig.h and *.pri files. The flags will be
+# installed along with the port, but have to be passed as arguments while
+# building the port itself. Flags prefixed with "-" (e.g., "-CUPS" and "-cups")
+# are needed to disable some features.
+. if !defined(${QT_MODNAME}) || empty(${QT_MODNAME})
+# Used for both qconfig-*.h and qt_config_*.pri; it can't be empty.
+QT_MODNAME=		${PORTNAME}
+. endif
+QT_DEFINES?=	# For qconfig.h flags (without "QT_" prefix).
+QT_CONFIG?=		# For *.pri files QT_CONFIG flags.
+. if ${QT_DEFINES}
+QMAKE_ARGS+=	DEFINES+="${QT_DEFINES:O:u:C/^([^-])/QT_\1/:C/^-/QT_NO_/:O}"
+.  if ${QT_DEFINES:N-*}
+# Use a script to cleanup qconfig-modules.h (see qt-post-install).
+PKGDEINSTALL=	${WRKDIR}/pkg-deinstall
+.  endif
+. endif
+. if ${QT_CONFIG:N-*}
+QMAKE_ARGS+=	QT_CONFIG+="${QT_CONFIG:N-*:O:u}"
+. endif
+. if ${QT_CONFIG:M-*}
+QMAKE_ARGS+=	QT_CONFIG-="${QT_CONFIG:M-*:O:u:C/^-//}"
+. endif
+
+PLIST_SUB+=		SHORTVER=${_QT_VERSION:R} \
+				FULLVER=${_QT_VERSION:C/-.*//}
+.endif # defined(QT_DIST)
+
+.if !defined(QT_NONSTANDARD)
+CONFIGURE_ENV+=	QTDIR="${QT_PREFIX}" QMAKE="${QMAKE}" \
+				MOC="${MOC}" RCC="${RCC}" UIC="${UIC}" \
+				QMAKESPEC="${QMAKESPEC}"
+CONFIGURE_ARGS+=--with-qt-includes=${QT_INCDIR} \
+				--with-qt-libraries=${QT_LIBDIR} \
+				--with-extra-includes=${LOCALBASE}/include \
+				--with-extra-libs=${LOCALBASE}/lib
+.endif # !defined(QT_NONSTANDARD)
+
+.if ${_QT_VERSION:M4*}
+QT_BINDIR_REL?=	bin
+QT_LIBDIR_REL?=	lib/${_QT_RELNAME}
+QT_PLUGINDIR_REL?=	${QT_LIBDIR_REL}/plugins
+QT_IMPORTDIR_REL?=	${QT_LIBDIR_REL}/imports
 .endif
-.endif #defined(QT_DIST)
 
-QT_INCDIR_REL=	include/qt4
-QT_LIBDIR_REL=	lib/qt4
-QT_PLUGINDIR_REL=	lib/qt4/plugins
-
-PLIST_SUB+=	QT_INCDIR=${QT_INCDIR_REL} \
-		QT_LIBDIR=${QT_LIBDIR_REL} \
-		QT_PLUGINDIR=${QT_PLUGINDIR_REL}
-
-QT_PREFIX?=	${LOCALBASE}
-QT_INCDIR?=	${QT_PREFIX}/${QT_INCDIR_REL}
-QT_LIBDIR?=	${QT_PREFIX}/${QT_LIBDIR_REL}
-QT_PLUGINDIR?=	${QT_PREFIX}/${QT_PLUGINDIR_REL}
-LRELEASE?=	${QT_PREFIX}/bin/lrelease-qt4
-LUPDATE?=	${QT_PREFIX}/bin/lupdate-qt4
-MOC?=		${QT_PREFIX}/bin/moc-qt4
-UIC?=		${QT_PREFIX}/bin/uic-qt4
-RCC?=		${QT_PREFIX}/bin/rcc
-QMAKE?=		${QT_PREFIX}/bin/qmake-qt4
-# QMAKEFLAGS will be superseded by QMAKE_ARGS
-QMAKEFLAGS+=	QMAKE_CC="${CC}" QMAKE_CXX="${CXX}" \
-		QMAKE_LINK="${CXX}" QMAKE_LINK_SHLIB="${CXX}" \
-		QMAKE_LINK_C="${CC}" QMAKE_LINK_C_SHLIB="${CC}" \
-		QMAKE_CFLAGS="${CFLAGS}" QMAKE_CXXFLAGS="${CXXFLAGS}"
-QMAKE_ENV?=	${CONFIGURE_ENV}
-QMAKE_ARGS+=	-spec ${QMAKESPEC} \
-		QMAKE_CC="${CC}" QMAKE_CXX="${CXX}" \
-		QMAKE_LINK="${CXX}" QMAKE_LINK_SHLIB="${CXX}" \
-		QMAKE_LINK_C="${CC}" QMAKE_LINK_C_SHLIB="${CC}" \
-		QMAKE_CFLAGS="${CFLAGS}" QMAKE_CXXFLAGS="${CXXFLAGS}" \
-		QMAKE_LFLAGS="${LDFLAGS}" PREFIX="${PREFIX}"
+# A wrapper (qtchooser) is used to invoke binaries.
+QT_BINDIR_REL?=	${QT_ARCHDIR_REL}/bin
+QT_INCDIR_REL?=	include/${_QT_RELNAME}
+QT_LIBDIR_REL?=	lib
+QT_ARCHDIR_REL?=${QT_LIBDIR_REL}/${_QT_RELNAME}
+QT_PLUGINDIR_REL?=	${QT_ARCHDIR_REL}/plugins
+QT_LIBEXECDIR_REL?=	libexec/${_QT_RELNAME}
+QT_IMPORTDIR_REL?=	${QT_ARCHDIR_REL}/imports
+QT_QMLDIR_REL?=	${QT_ARCHDIR_REL}/qml
+QT_DATADIR_REL?=share/${_QT_RELNAME}
+QT_DOCDIR_REL?=	share/doc/${_QT_RELNAME}
+QT_L10NDIR_REL?=${QT_DATADIR_REL}/translations
+QT_ETCDIR_REL?=	etc/xdg
+QT_EXAMPLEDIR_REL?=	share/examples/${_QT_RELNAME}
+QT_TESTDIR_REL?=${QT_DATADIR_REL}/tests
+
+# Not customizable.
+.if ${_QT_VERSION:M4*}
+QT_MKSPECDIR_REL=	${QT_DATADIR_REL}/mkspecs
+
+_QT_LIBVER=		# empty
+_QT_BINSUFX=	-${_QT_RELNAME}
+.else
+QT_MKSPECDIR_REL=	${QT_ARCHDIR_REL}/mkspecs
+
+_QT_LIBVER=		${_QT_VERSION:R:R}
+_QT_BINSUFX=	# empty
+.endif
 
-QTCPPFLAGS?=
-QTCGFLIBS?=
+LRELEASE?=		${QT_BINDIR}/lrelease${_QT_BINSUFX}
+LUPDATE?=		${QT_BINDIR}/lupdate${_QT_BINSUFX}
+MOC?=			${QT_BINDIR}/moc${_QT_BINSUFX}
+RCC?=			${QT_BINDIR}/rcc
+UIC?=			${QT_BINDIR}/uic${_QT_BINSUFX}
+QMAKE?=			${QT_BINDIR}/qmake${_QT_BINSUFX}
+# Needed to redefine the qmake target for internal Qt configuration.
+_QMAKE?=		${QMAKE}
+QMAKESPEC?=		${QT_MKSPECDIR}/freebsd-${QMAKE_COMPILER}
+
+# The whole Qt distribution should be built with the same compiler, but it's
+# better to support custom settings. Dereferencing the detection allows to
+# avoid forking a shell on each inclusion of this file, and to catch any CXX
+# customization (via USE_GCC, etc.).
+QMAKE_COMPILER=	$$(ccver="$$(${CXX} --version)"; case "$$ccver" in *clang*) echo clang ;; *) echo g++ ;; esac)
+
+# Import QMAKE_ENV and QMAKE_ARGS definitions.
+USES+=			qmake:_env
+
+PLIST_SUB+=		QT_PREFIX="${QT_PREFIX}"
+
+.for dir in BIN INC LIB ARCH PLUGIN LIBEXEC IMPORT \
+	QML DATA DOC L10N ETC EXAMPLE TEST MKSPEC
+QT_${dir}DIR=	${QT_PREFIX}/${QT_${dir}DIR_REL}
+PLIST_SUB+=		QT_${dir}DIR="${QT_${dir}DIR_REL}"
+.endfor
 
 .endif # !defined(_POSTMKINCLUDED) && !defined(Qt_Pre_Include)
 
-#
-# QT4 version
-#
-QT4_VERSION?=		4.8.5
+.if defined(_POSTMKINCLUDED) && !defined(Qt_Post_Include)
 
-_USE_QT4_ALL=	accessible assistant assistant-adp assistantclient \
-			clucene codecs-cn codecs-jp codecs-kr codecs-tw corelib \
-			dbus declarative demo designer doc \
-			graphicssystems-opengl gui help help-tools \
-			iconengines imageformats inputmethods \
-			linguist l10n makeqpf moc multimedia network opengl \
-			pixeltool porting phonon phonon-gst \
-			qdbusviewer qmlviewer qdoc3 qmake qt3support qtconfig qtestlib \
-			qvfb rcc script scripttools sql sql-ibase sql-mysql \
-			sql-odbc sql-pgsql sql-sqlite2 sql-sqlite3 svg uic uic3 \
-			webkit xml xmlpatterns xmlpatterns-tool
+Qt_Post_Include=	bsd.qt.mk
 
-accessible_PORT=	accessibility/qt4-accessible
-accessible_DEPENDS=	${QT_PLUGINDIR}/accessible/libqtaccessiblewidgets.so
+_USE_QT_ALL=	assistant clucene dbus declarative designer gui help \
+				imageformats linguist multimedia network opengl pixeltool \
+				qdbusviewer qmake script scripttools sql sql-ibase sql-mysql \
+				sql-odbc sql-pgsql sql-sqlite2 sql-sqlite3 svg testlib webkit \
+				xml xmlpatterns
 
-assistant_PORT=		devel/qt4-assistant
-assistant_DEPENDS=	${QT_PREFIX}/bin/assistant-qt4
+_USE_QT4_ONLY=	accessible assistant-adp assistantclient codecs-cn codecs-jp \
+				codecs-kr codecs-tw corelib demo doc graphicssystems-opengl \
+				help-tools iconengines inputmethods l10n makeqpf moc phonon \
+				phonon-gst porting qdoc3 qmlviewer qt3support qtconfig \
+				qtestlib qvfb rcc uic uic3 xmlpatterns-tool
 
-assistant-adp_PORT=	devel/qt4-assistant-adp
-assistant-adp_DEPENDS=	${QT_PREFIX}/bin/assistant_adp
+_USE_QT5_ONLY=	buildtools concurrent core graphicaleffects linguisttools \
+				printsupport qdbus qdoc qev qml qmldevtools quick uitools \
+				widgets
 
-assistantclient_PORT=		devel/qt4-libqtassistantclient
-assistantclient_DEPENDS=	${QT_LIBDIR}/libQtAssistantClient.so
+accessible_PORT=	accessibility/${_QT_RELNAME}-accessible
+accessible_PATH=	${QT_PLUGINDIR}/accessible/libqtaccessiblewidgets.so
 
-clucene_PORT=		textproc/qt4-clucene
-clucene_DEPENDS=	${QT_LIBDIR}/libQtCLucene.so
+assistant_PORT=		devel/${_QT_RELNAME}-assistant
+assistant_PATH=		${QT_BINDIR}/assistant${_QT_BINSUFX}
 
-codecs-cn_PORT=		chinese/qt4-codecs-cn
-codecs-cn_DEPENDS=	${QT_PLUGINDIR}/codecs/libqcncodecs.so
+assistant-adp_PORT=	devel/${_QT_RELNAME}-assistant-adp
+assistant-adp_PATH=	${QT_BINDIR}/assistant_adp
 
-codecs-jp_PORT=		japanese/qt4-codecs-jp
-codecs-jp_DEPENDS=	${QT_PLUGINDIR}/codecs/libqjpcodecs.so
+assistantclient_PORT=	devel/${_QT_RELNAME}-libqtassistantclient
+assistantclient_PATH=	${QT_LIBDIR}/libQt${_QT_LIBVER}AssistantClient.so
 
-codecs-kr_PORT=		korean/qt4-codecs-kr
-codecs-kr_DEPENDS=	${QT_PLUGINDIR}/codecs/libqkrcodecs.so
+buildtools_PORT=	devel/${_QT_RELNAME}-buildtools
+buildtools_PATH=	${MOC}
 
-codecs-tw_PORT=		chinese/qt4-codecs-tw
-codecs-tw_DEPENDS=	${QT_PLUGINDIR}/codecs/libqtwcodecs.so
+clucene_PORT=		textproc/clucene-${_QT_RELNAME}
+clucene_PATH=		${QT_LIBDIR}/libQt${_QT_LIBVER}CLucene.so
 
-corelib_PORT=		devel/qt4-corelib
-corelib_DEPENDS=	${QT_LIBDIR}/libQtCore.so
+codecs-cn_PORT=		chinese/${_QT_RELNAME}-codecs-cn
+codecs-cn_PATH=		${QT_PLUGINDIR}/codecs/libqcncodecs.so
 
-dbus_PORT=	devel/dbus-qt4
-dbus_DEPENDS=	${QT_LIBDIR}/libQtDBus.so
+codecs-jp_PORT=		japanese/${_QT_RELNAME}-codecs-jp
+codecs-jp_PATH=		${QT_PLUGINDIR}/codecs/libqjpcodecs.so
 
-declarative_PORT=	devel/qt4-declarative
-declarative_DEPENDS=	${QT_LIBDIR}/libQtDeclarative.so
+codecs-kr_PORT=		korean/${_QT_RELNAME}-codecs-kr
+codecs-kr_PATH=		${QT_PLUGINDIR}/codecs/libqkrcodecs.so
 
-demo_PORT=	misc/qt4-qtdemo
-demo_DEPENDS=	${QT_PREFIX}/bin/qtdemo
+codecs-tw_PORT=		chinese/${_QT_RELNAME}-codecs-tw
+codecs-tw_PATH=		${QT_PLUGINDIR}/codecs/libqtwcodecs.so
 
-designer_PORT=		devel/qt4-designer
-designer_DEPENDS=	${QT_PREFIX}/bin/designer-qt4
+concurrent_PORT=	devel/${_QT_RELNAME}-concurrent
+concurrent_PATH=	${QT_LIBDIR}/libQt${_QT_LIBVER}Concurrent.so
 
-doc_PORT=	misc/qt4-doc
-doc_DEPENDS=	qt4-doc>=4
+core_PORT=			devel/${_QT_RELNAME}-core
+core_PATH=			${QT_LIBDIR}/libQt${_QT_LIBVER}Core.so
 
-graphicssystems-opengl_PORT=	x11/qt4-graphicssystems-opengl
-graphicssystems-opengl_DEPENDS=	${QT_PLUGINDIR}/graphicssystems/libqglgraphicssystem.so
+corelib_PORT=		devel/${_QT_RELNAME}-corelib
+corelib_PATH=		${core_PATH}
 
-gui_PORT=	x11-toolkits/qt4-gui
-gui_DEPENDS=	${QT_LIBDIR}/libQtGui.so
+dbus_PORT=			devel/dbus-${_QT_RELNAME}
+dbus_PATH=			${QT_LIBDIR}/libQt${_QT_LIBVER}DBus.so
 
-help_PORT=	devel/qt4-help
-help_DEPENDS=	${QT_LIBDIR}/libQtHelp.so
+declarative_PORT=	x11-toolkits/${_QT_RELNAME}-declarative
+declarative_PATH=	${QT_LIBDIR}/libQt${_QT_LIBVER}Declarative.so
 
-help-tools_PORT=	devel/qt4-help-tools
-help-tools_DEPENDS=	${QT_PREFIX}/bin/qhelpgenerator
+demo_PORT=			misc/${_QT_RELNAME}-qtdemo
+demo_PATH=			${QT_BINDIR}/qtdemo
 
-iconengines_PORT=	graphics/qt4-iconengines
-iconengines_DEPENDS=	${QT_PLUGINDIR}/iconengines/libqsvgicon.so
+designer_PORT=		devel/${_QT_RELNAME}-designer
+designer_PATH=		${QT_BINDIR}/designer${_QT_BINSUFX}
 
-imageformats_PORT=	graphics/qt4-imageformats
-imageformats_DEPENDS=	${QT_PLUGINDIR}/imageformats/libqjpeg.so
+doc_PORT=			misc/${_QT_RELNAME}-doc
+doc_PATH=			${_QT_RELNAME}-doc>=${_QT_VERSION:R:R}
 
-inputmethods_PORT=	x11/qt4-inputmethods
-inputmethods_DEPENDS=	${QT_PLUGINDIR}/inputmethods/libqimsw-multi.so
+graphicaleffects_PORT=	graphics/${_QT_RELNAME}-graphicaleffects
+graphicaleffects_PATH=	${QT_QMLDIR}/QtGraphicalEffects/qmldir
 
-linguist_PORT=		devel/qt4-linguist
-linguist_DEPENDS=	${QT_PREFIX}/bin/linguist-qt4
+graphicssystems-opengl_PORT=	x11/${_QT_RELNAME}-graphicssystems-opengl
+graphicssystems-opengl_PATH=	${QT_PLUGINDIR}/graphicssystems/libqglgraphicssystem.so
 
-l10n_PORT=	misc/qt4-l10n
-l10n_DEPENDS=	qt4-l10n>=4
+gui_PORT=			x11-toolkits/${_QT_RELNAME}-gui
+gui_PATH=			${QT_LIBDIR}/libQt${_QT_LIBVER}Gui.so
 
-makeqpf_PORT=		devel/qt4-makeqpf
-makeqpf_DEPENDS=	${QT_PREFIX}/bin/makeqpf-qt4
+help_PORT=			devel/${_QT_RELNAME}-help
+help_PATH=			${QT_LIBDIR}/libQt${_QT_LIBVER}Help.so
 
-moc_PORT=	devel/qt4-moc
-moc_DEPENDS=	${MOC}
+help-tools_PORT=	devel/${_QT_RELNAME}-help-tools
+help-tools_PATH=	${QT_BINDIR}/qhelpgenerator
 
-multimedia_PORT=	multimedia/qt4-multimedia
-multimedia_DEPENDS=	${QT_LIBDIR}/libQtMultimedia.so
+iconengines_PORT=	graphics/${_QT_RELNAME}-iconengines
+iconengines_PATH=	${QT_PLUGINDIR}/iconengines/libqsvgicon.so
 
-network_PORT=		net/qt4-network
-network_DEPENDS=	${QT_LIBDIR}/libQtNetwork.so
+imageformats_PORT=	graphics/${_QT_RELNAME}-imageformats
+imageformats_PATH=	${QT_PLUGINDIR}/imageformats/libqtiff.so
 
-opengl_PORT=	x11/qt4-opengl
-opengl_DEPENDS=	${QT_LIBDIR}/libQtOpenGL.so
+inputmethods_PORT=	x11/${_QT_RELNAME}-inputmethods
+inputmethods_PATH=	${QT_PLUGINDIR}/inputmethods/libqimsw-multi.so
 
-pixeltool_PORT=		graphics/qt4-pixeltool
-pixeltool_DEPENDS=	${QT_PREFIX}/bin/pixeltool
+linguist_PORT=		devel/${_QT_RELNAME}-linguist
+linguist_PATH=		${QT_BINDIR}/linguist${_QT_BINSUFX}
 
-phonon_PORT=	multimedia/phonon
-phonon_DEPENDS=	${QT_LIBDIR}/libphonon.so
+linguisttools_PORT=	devel/${_QT_RELNAME}-linguisttools
+linguisttools_PATH=	${LRELEASE}
 
-phonon-gst_PORT=	multimedia/phonon-gstreamer
-phonon-gst_DEPENDS=	${QT_PLUGINDIR}/phonon_backend/libphonon_gstreamer.so
+l10n_PORT=			misc/${_QT_RELNAME}-l10n
+l10n_PATH=			${_QT_RELNAME}-l10n>=${_QT_VERSION:R:R}
 
-porting_PORT=		devel/qt4-porting
-porting_DEPENDS=	${QT_PREFIX}/bin/qt3to4
+makeqpf_PORT=		devel/${_QT_RELNAME}-makeqpf
+makeqpf_PATH=		${QT_BINDIR}/makeqpf${_QT_BINSUFX}
 
-qdbusviewer_PORT=	devel/qt4-qdbusviewer
-qdbusviewer_DEPENDS=	${QT_PREFIX}/bin/qdbusviewer
+moc_PORT=			devel/${_QT_RELNAME}-moc
+moc_PATH=			${MOC}
 
-qmlviewer_PORT=		devel/qt4-qmlviewer
-qmlviewer_DEPENDS=	${QT_PREFIX}/bin/qmlviewer
+multimedia_PORT=	multimedia/${_QT_RELNAME}-multimedia
+multimedia_PATH=	${QT_LIBDIR}/libQt${_QT_LIBVER}Multimedia.so
 
-qdoc3_PORT=	devel/qt4-qdoc3
-qdoc3_DEPENDS=	${QT_PREFIX}/bin/qdoc3
+network_PORT=		net/${_QT_RELNAME}-network
+network_PATH=		${QT_LIBDIR}/libQt${_QT_LIBVER}Network.so
 
-qmake_PORT=	devel/qmake4
-qmake_DEPENDS=	${QMAKE}
+opengl_PORT=		graphics/${_QT_RELNAME}-opengl
+opengl_PATH=		${QT_LIBDIR}/libQt${_QT_LIBVER}OpenGL.so
 
-qt3support_PORT=	devel/qt4-qt3support
-qt3support_DEPENDS=	${QT_LIBDIR}/libQt3Support.so
+pixeltool_PORT=		graphics/${_QT_RELNAME}-pixeltool
+pixeltool_PATH=		${QT_BINDIR}/pixeltool
 
-qtconfig_PORT=		misc/qt4-qtconfig
-qtconfig_DEPENDS=	${QT_PREFIX}/bin/qtconfig-qt4
+phonon_PORT=		multimedia/phonon
+phonon_PATH=		${QT_LIBDIR}/libphonon.so
 
-qtestlib_PORT=		devel/qt4-qtestlib
-qtestlib_DEPENDS=	${QT_LIBDIR}/libQtTest.so
+phonon-gst_PORT=	multimedia/phonon-gstreamer
+phonon-gst_PATH=	${QT_PLUGINDIR}/phonon_backend/libphonon_gstreamer.so
 
-qvfb_PORT=	devel/qt4-qvfb
-qvfb_DEPENDS=	${QT_PREFIX}/bin/qvfb-qt4
+porting_PORT=		devel/${_QT_RELNAME}-porting
+porting_PATH=		${QT_BINDIR}/qt3to4
 
-rcc_PORT=		devel/qt4-rcc
-rcc_DEPENDS=		${RCC}
+printsupport_PORT=	print/${_QT_RELNAME}-printsupport
+printsupport_PATH=	${QT_LIBDIR}/libQt${_QT_LIBVER}PrintSupport.so
 
-script_PORT=		devel/qt4-script
-script_DEPENDS=		${QT_LIBDIR}/libQtScript.so
+qdbus_PORT=			devel/${_QT_RELNAME}-qdbus
+qdbus_PATH=			${QT_BINDIR}/qdbus
 
-scripttools_PORT=	devel/qt4-scripttools
-scripttools_DEPENDS=	${QT_LIBDIR}/libQtScriptTools.so
+qdbusviewer_PORT=	devel/${_QT_RELNAME}-qdbusviewer
+qdbusviewer_PATH=	${QT_BINDIR}/qdbusviewer
 
-sql_PORT=	databases/qt4-sql
-sql_DEPENDS=	${QT_LIBDIR}/libQtSql.so
+qdoc_PORT=			devel/${_QT_RELNAME}-qdoc
+qdoc_PATH=			${QT_BINDIR}/qdoc
 
-sql-ibase_PORT=		databases/qt4-ibase-plugin
-sql-ibase_DEPENDS=	${QT_PLUGINDIR}/sqldrivers/libqsqlibase.so
+qdoc3_PORT=			devel/${_QT_RELNAME}-qdoc3
+qdoc3_PATH=			${QT_BINDIR}/qdoc3
 
-sql-mysql_PORT=		databases/qt4-mysql-plugin
-sql-mysql_DEPENDS=	${QT_PLUGINDIR}/sqldrivers/libqsqlmysql.so
+qev_PORT=			x11/${_QT_RELNAME}-qev
+qev_PATH=			${QT_BINDIR}/qev
 
-sql-odbc_PORT=		databases/qt4-odbc-plugin
-sql-odbc_DEPENDS=	${QT_PLUGINDIR}/sqldrivers/libqsqlodbc.so
+qmake_PORT=			devel/qmake${_QT_VERSION:R:R}
+qmake_PATH=			${QMAKE}
 
-sql-pgsql_PORT=		databases/qt4-pgsql-plugin
-sql-pgsql_DEPENDS=	${QT_PLUGINDIR}/sqldrivers/libqsqlpsql.so
+qml_PORT=			lang/${_QT_RELNAME}-qml
+qml_PATH=			${QT_LIBDIR}/libQt${_QT_LIBVER}Qml.so
 
-sql-sqlite2_PORT=	databases/qt4-sqlite-plugin
-sql-sqlite2_DEPENDS=	${QT_PLUGINDIR}/sqldrivers/libqsqlite2.so
+qmldevtools_PORT=	devel/${_QT_RELNAME}-qmldevtools
+qmldevtools_PATH=	${QT_LIBDIR}/libQt${_QT_LIBVER}QmlDevTools.a
 
-sql-sqlite3_PORT=	databases/qt4-sqlite3-plugin
-sql-sqlite3_DEPENDS=	${QT_PLUGINDIR}/sqldrivers/libqsqlite.so
+qmlviewer_PORT=		devel/${_QT_RELNAME}-qmlviewer
+qmlviewer_PATH=		${QT_BINDIR}/qmlviewer
 
-svg_PORT=	graphics/qt4-svg
-svg_DEPENDS=	${QT_LIBDIR}/libQtSvg.so
+qt3support_PORT=	devel/${_QT_RELNAME}-qt3support
+qt3support_PATH=	${QT_LIBDIR}/libQt${_QT_LIBVER}3Support.so
 
-uic_PORT=	devel/qt4-uic
-uic_DEPENDS=	${UIC}
+qtconfig_PORT=		misc/${_QT_RELNAME}-qtconfig
+qtconfig_PATH=		${QT_BINDIR}/qtconfig${_QT_BINSUFX}
 
-uic3_PORT=	devel/qt4-uic3
-uic3_DEPENDS=	${QT_PREFIX}/bin/uic3
+qtestlib_PORT=		${testlib_PORT}
+qtestlib_PATH=		${testlib_PATH}
 
-webkit_PORT=	www/qt4-webkit
-webkit_DEPENDS=	${QT_LIBDIR}/libQtWebKit.so
+quick_PORT=			x11-toolkits/${_QT_RELNAME}-quick
+quick_PATH=			${QT_LIBDIR}/libQt${_QT_LIBVER}Quick.so
 
-xml_PORT=	textproc/qt4-xml
-xml_DEPENDS=	${QT_LIBDIR}/libQtXml.so
+qvfb_PORT=			devel/${_QT_RELNAME}-qvfb
+qvfb_PATH=			${QT_BINDIR}/qvfb${_QT_BINSUFX}
 
-xmlpatterns_PORT=	textproc/qt4-xmlpatterns
-xmlpatterns_DEPENDS=	${QT_LIBDIR}/libQtXmlPatterns.so
+rcc_PORT=			devel/${_QT_RELNAME}-rcc
+rcc_PATH=			${RCC}
 
-xmlpatterns-tool_PORT=		textproc/qt4-xmlpatterns-tool
-xmlpatterns-tool_DEPENDS=	${QT_PREFIX}/bin/xmlpatterns
+script_PORT=		devel/${_QT_RELNAME}-script
+script_PATH=		${QT_LIBDIR}/libQt${_QT_LIBVER}Script.so
 
-.if defined(_POSTMKINCLUDED) && !defined(Qt_Post_Include)
-Qt_Post_Include= bsd.qt.mk
+scripttools_PORT=	devel/${_QT_RELNAME}-scripttools
+scripttools_PATH=	${QT_LIBDIR}/libQt${_QT_LIBVER}ScriptTools.so
 
-#
-# Translate `c++` to its real name and select the appropriate mkspec.
-#
-QMAKE_BASE_COMPILER!=	(cc --version 2> /dev/null | ${AWK} 'NR == 1 { gsub(/[()]/, "", $$2); print $$2 }') || ${ECHO_CMD} "gcc"
-.if ${QMAKE_BASE_COMPILER:L} == "gcc"
-QMAKE_BASE_COMPILER=	g++
-.endif
-.if ${CXX} == "c++"
-# Why CXX instead of CXX:T? Because if you're setting the full path of
-# `c++` you probably want to define QMAKESPEC by hand too.
-QMAKE_COMPILER=	${QMAKE_BASE_COMPILER}
-.elif ${CXX:T} == "clang++"
-QMAKE_COMPILER=	clang
-.elif ${CXX:C/c\+\+/g++/:T} == "llvm-g++"
-QMAKE_COMPILER=	llvm
-.elif ${CXX:T} == "icpc"
-QMAKE_COMPILER=	icc
-.else
-# Handle all the other cases (mainly g++*).
-QMAKE_COMPILER=	${CXX:C/c\+\+/g++/:T}
+sql_PORT=			databases/${_QT_RELNAME}-sql
+sql_PATH=			${QT_LIBDIR}/libQt${_QT_LIBVER}Sql.so
+
+sql-pgsql_PATH=		${QT_PLUGINDIR}/sqldrivers/libqsqlpsql.so
+
+.if ${_QT_VERSION:M4*}
+sql-sqlite2_PORT=	databases/${_QT_RELNAME}-sqlite-plugin
 .endif
-.if exists(${QT_PREFIX}/share/qt4/mkspecs/freebsd-${QMAKE_COMPILER})
-QMAKESPEC?=	${QT_PREFIX}/share/qt4/mkspecs/freebsd-${QMAKE_COMPILER}
+
+sql-sqlite3_PATH=	${QT_PLUGINDIR}/sqldrivers/libqsqlite.so
+
+.for db in ibase mysql odbc pgsql sqlite2 sqlite3
+.if ${_QT_VERSION:M4*}
+sql-${db}_PORT?=	databases/${_QT_RELNAME}-${db}-plugin
 .else
-# If something went wrong, default to the base configuration.
-QMAKESPEC?=	${QT_PREFIX}/share/qt4/mkspecs/freebsd-${QMAKE_BASE_COMPILER}
+sql-${db}_PORT?=	databases/${_QT_RELNAME}-sqldrivers-${db}
 .endif
+sql-${db}_PATH?=	${QT_PLUGINDIR}/sqldrivers/libqsql${db:C/^sql//}.so
+.endfor
+
+svg_PORT=			graphics/${_QT_RELNAME}-svg
+svg_PATH=			${QT_LIBDIR}/libQt${_QT_LIBVER}Svg.so
+
+testlib_PORT=		devel/${_QT_RELNAME}-testlib
+testlib_PATH=		${QT_LIBDIR}/libQt${_QT_LIBVER}Test.so
+
+uic_PORT=			devel/${_QT_RELNAME}-uic
+uic_PATH=			${UIC}
+
+uic3_PORT=			devel/${_QT_RELNAME}-uic3
+uic3_PATH=			${QT_BINDIR}/uic3
 
-.for component in ${_USE_QT4_ALL}
-${component}_BUILD_DEPENDS?=	${${component}_DEPENDS}:${PORTSDIR}/${${component}_PORT}
-${component}_RUN_DEPENDS?=	${${component}_DEPENDS}:${PORTSDIR}/${${component}_PORT}
+uitools_PORT=		devel/${_QT_RELNAME}-uitools
+uitools_PATH=		${QT_LIBDIR}/libQt${_QT_LIBVER}UiTools.a
 
-${component}_build_BUILD_DEPENDS?=	${${component}_BUILD_DEPENDS}
-${component}_run_RUN_DEPENDS?=		${${component}_RUN_DEPENDS}
+webkit_PORT=		www/webkit-${_QT_RELNAME}
+webkit_PATH=		${QT_LIBDIR}/libQt${_QT_LIBVER}WebKit.so
 
-_USE_QT4_ALL_SUFFIXED+=	${component} ${component}_build ${component}_run
+widgets_PORT=		x11-toolkits/${_QT_RELNAME}-widgets
+widgets_PATH=		${QT_LIBDIR}/libQt${_QT_LIBVER}Widgets.so
+
+xml_PORT=			textproc/${_QT_RELNAME}-xml
+xml_PATH=			${QT_LIBDIR}/libQt${_QT_LIBVER}Xml.so
+
+xmlpatterns_PORT=	textproc/${_QT_RELNAME}-xmlpatterns
+xmlpatterns_PATH=	${QT_LIBDIR}/libQt${_QT_LIBVER}XmlPatterns.so
+
+xmlpatterns-tool_PORT=	textproc/${_QT_RELNAME}-xmlpatterns-tool
+xmlpatterns-tool_PATH=	${QT_BINDIR}/xmlpatterns
+
+_USE_QT_ALL+=	${_USE_QT${_QT_VERSION:R:R}_ONLY}
+.for comp in ${_USE_QT_ALL}
+${comp}_BUILD_DEPENDS?=	${${comp}_PATH}:${PORTSDIR}/${${comp}_PORT}
+${comp}_RUN_DEPENDS?=	${${comp}_PATH}:${PORTSDIR}/${${comp}_PORT}
+${comp}_build_BUILD_DEPENDS?=	${${comp}_BUILD_DEPENDS}
+${comp}_run_RUN_DEPENDS?=	${${comp}_RUN_DEPENDS}
+_USE_QT_ALL_SUFFIXED+=	${comp} ${comp}_build ${comp}_run
 .endfor
 
-.if defined(USE_QT4)
-. for component in ${USE_QT4:O:u}
-.  if ${_USE_QT4_ALL_SUFFIXED:M${component}}!= ""
-BUILD_DEPENDS+=	${${component}_BUILD_DEPENDS}
-RUN_DEPENDS+=	${${component}_RUN_DEPENDS}
-.  else
-IGNORE=	can't be installed: unknown USE_QT4 component '${component}'
+_USE_QT=		${USE_QT${_QT_VERSION:R:R}}
+.for comp in ${_USE_QT:O:u}
+. if ${_USE_QT_ALL_SUFFIXED:M${comp}}
+BUILD_DEPENDS+=	${${comp}_BUILD_DEPENDS}
+RUN_DEPENDS+=	${${comp}_RUN_DEPENDS}
+. else
+IGNORE?=		can't be installed: unknown USE_QT${_QT_VERSION:R:R} component '${comp}' #'
+. endif
+.endfor
+
+.if defined(QT_DIST) && ! ${_QT_VERSION:M4*}
+. if ${QT_DIST} == "base"
+# qtbase requires some tools to be symlinked to the build directory.
+_QT_TOOLS=		# empty
+.  if ${PORTNAME} != "qmake"
+_QT_TOOLS+=		${QMAKE}
+.  endif
+.  if ${PORTNAME} != "buildtools"
+_QT_TOOLS+=		${MOC} qdoc ${RCC}
+.  endif
+.  if ${PORTNAME} != "dbus"
+_QT_TOOLS+=		qdbuscpp2xml qdbusxml2cpp
+.  endif
+.  if ${PORTNAME} != "widgets"
+_QT_TOOLS+=		${UIC}
 .  endif
-. endfor
-.endif
 
-.endif
+pre-configure: qtbase-pre-configure
+qtbase-pre-configure:
+.  if ${PORTNAME} != "qmake"
+	@${RM} -rf ${CONFIGURE_WRKSRC}/mkspecs
+	@${MKDIR} ${CONFIGURE_WRKSRC}/mkspecs
+.  endif
+.  for tool in ${_QT_TOOLS}
+	@${TEST} -e ${QT_BINDIR}/${tool:T} && \
+		${LN} -sf ${QT_BINDIR}/${tool:T} ${CONFIGURE_WRKSRC}/bin/${tool:T} || \
+		${TRUE}
+.  endfor
+
+.  if ${PORTNAME} != "qmake"
+_QMAKE_WRKSRC=	${BUILD_WRKSRC}
+QMAKE_SOURCE_PATH=	${_QMAKE_WRKSRC}
+_QMAKE=			${CONFIGURE_WRKSRC}/bin/qmake
+
+post-configure: qmake-configure
+.  endif
+. endif # ${QT_DIST} == "base"
+
+pre-install: qt-pre-install
+qt-pre-install:
+# Search both in CONFIGURE_WRKSRC and WRKSRC, as the former is not

*** DIFF OUTPUT TRUNCATED AT 1000 LINES ***



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201401061616.s06GGraW029366>