Introduce USES=qt to the Porter's Handbook

Approved by:	mat, tcberner
Differential Revision:	https://reviews.freebsd.org/D17429
This commit is contained in:
Tobias Kortkamp 2018-10-11 06:30:19 +00:00
parent faf811abe2
commit c1e97e8f23
Notes: svn2git 2020-12-08 03:00:23 +00:00
svn path=/head/; revision=52352
2 changed files with 113 additions and 58 deletions

View file

@ -2548,14 +2548,13 @@ GLIB_SCHEMAS= org.regexxer.gschema.xml
<para>The Ports Collection provides support for Qt 4 and Qt 5
frameworks with
<varname>USE_QT<replaceable>x</replaceable></varname>,
<varname>USES+=qt:<replaceable>x</replaceable></varname>,
where <replaceable>x</replaceable> is
<literal>4</literal> or <literal>5</literal>.
Set <varname>USE_QT<replaceable>x</replaceable></varname>
to the list of required Qt components (libraries,
tools, plugins). The Qt 4 and Qt 5 frameworks are quite
similar. The main difference is the set of supported
components.</para>
Set <varname>USE_QT</varname> to the list of required
Qt components (libraries, tools, plugins). The Qt 4
and Qt 5 frameworks are quite similar. The main
difference is the set of supported components.</para>
<para>The Qt framework exports a number of variables which can
be used by ports, some of them listed below:</para>
@ -2565,12 +2564,6 @@ GLIB_SCHEMAS= org.regexxer.gschema.xml
<tgroup cols="2">
<tbody>
<row>
<entry><varname>QT_PREFIX</varname></entry>
<entry>Set to the path where Qt was installed
(<literal>&dollar;{LOCALBASE}</literal>).</entry>
</row>
<row>
<entry><varname>QMAKE</varname></entry>
<entry>Full path to <command>qmake</command>
@ -2616,34 +2609,13 @@ GLIB_SCHEMAS= org.regexxer.gschema.xml
</tgroup>
</table>
<para>When using the Qt framework, these
settings are deployed:</para>
<programlisting>CONFIGURE_ARGS+= --with-qt-includes=${QT_INCDIR} \
--with-qt-libraries=${QT_LIBDIR} \
--with-extra-libs=${LOCALBASE}/lib \
--with-extra-includes=${LOCALBASE}/include
CONFIGURE_ENV+= QTDIR="${QT_PREFIX}" QMAKE="${QMAKE}" \
MOC="${MOC}" RCC="${RCC}" UIC="${UIC}" \
QMAKESPEC="${QMAKESPEC}"
PLIST_SUB+= QT_INCDIR=${QT_INCDIR_REL} \
QT_LIBDIR=${QT_LIBDIR_REL} \
QT_PLUGINDIR=${QT_PLUGINDIR_REL}</programlisting>
<para>Some configure scripts do not support the arguments above.
To suppress modification of<varname>CONFIGURE_ENV</varname>
and <varname>CONFIGURE_ARGS</varname>, set
<varname>QT_NONSTANDARD</varname>.</para>
</sect2>
<sect2 xml:id="qt-components">
<title>Component Selection</title>
<para>Individual Qt tool and library dependencies must be
specified in
<varname>USE_QT<replaceable>x</replaceable></varname>.
specified in <varname>USE_QT</varname>.
Every component can be suffixed with
<literal>_build</literal> or <literal>_run</literal>, the
suffix indicating whether the dependency on the component is
@ -2657,7 +2629,7 @@ PLIST_SUB+= QT_INCDIR=${QT_INCDIR_REL} \
listed in <varname>_USE_QT_ALL</varname>,
<varname>_USE_QT4_ONLY</varname>, and
<varname>_USE_QT5_ONLY</varname> in
<filename>/usr/ports/Mk/bsd.qt.mk</filename>):</para>
<filename>/usr/ports/Mk/Uses/qt.mk</filename>):</para>
<table frame="none" xml:id="using-qt-library-list">
<title>Available Qt Library Components</title>
@ -2835,30 +2807,78 @@ PLIST_SUB+= QT_INCDIR=${QT_INCDIR_REL} \
only needed at buildtime, thus they are specified with the
<literal>_build</literal> suffix:</para>
<programlisting>USE_QT4= gui moc_build qmake_build rcc_build uic_build</programlisting>
<programlisting>USES= qt:4
USE_QT= gui moc_build qmake_build rcc_build uic_build</programlisting>
</example>
</sect2>
<sect2 xml:id="using-qmake">
<title>Using <command>qmake</command></title>
<para>If the application provides a
<application>qmake</application> project file
(<filename>*.pro</filename>), define
<literal>USES= qmake</literal> along with
<literal>USE_QT<replaceable>x</replaceable></literal>. Note
that <literal>USES= qmake</literal> already implies a build
dependency on qmake, therefore the qmake component can be
omitted from
<literal>USE_QT<replaceable>x</replaceable></literal>.
Similar to <link
<literal>USE_QT</literal>. <literal>USES= qmake</literal>
already implies a build dependency on qmake, therefore the
qmake component can be omitted from
<literal>USE_QT</literal>. Similar to <link
linkend="using-cmake"><application>CMake</application></link>,
<application>qmake</application> supports out-of-source
builds, which can be enabled by specifying the
<literal>outsource</literal> argument (see <link
linkend="using-qmake-example"><literal>USES= qmake</literal>
example</link>).</para>
example</link>). Also see <xref
linkend="using-qmake-arguments" />.</para>
<table frame="none" xml:id="using-qmake-arguments">
<title>Possible Arguments for
<literal>USES= qmake</literal></title>
<tgroup cols="2">
<thead>
<row>
<entry>Variable</entry>
<entry>Description</entry>
</row>
</thead>
<tbody>
<row>
<entry><literal>no_configure</literal></entry>
<entry>Do not add the configure target. This is
implied by <literal>HAS_CONFIGURE=yes</literal>
and <literal>GNU_CONFIGURE=yes</literal>.
It is required when the build only needs the
environment setup from
<literal>USES= qmake</literal>, but otherwise runs
<command>qmake</command> on its own.</entry>
</row>
<row>
<entry><literal>no_env</literal></entry>
<entry>Suppress modification of the configure and make
environments. It is only required when
<command>qmake</command> is used to configure the
software and the build fails to understand the
environment setup by
<literal>USES= qmake</literal>.</entry>
</row>
<row>
<entry><literal>norecursive</literal></entry>
<entry>Do not pass the <literal>-recursive</literal>
argument to <command>qmake</command>.</entry>
</row>
<row>
<entry><literal>outsource</literal></entry>
<entry>Perform an out-of-source build.</entry>
</row>
</tbody>
</tgroup>
</table>
<table frame="none" xml:id="using-qmake-variables">
<title>Variables for Ports That Use
@ -2868,7 +2888,7 @@ PLIST_SUB+= QT_INCDIR=${QT_INCDIR_REL} \
<thead>
<row>
<entry>Variable</entry>
<entry>Means</entry>
<entry>Description</entry>
</row>
</thead>
@ -2900,18 +2920,39 @@ PLIST_SUB+= QT_INCDIR=${QT_INCDIR_REL} \
</tgroup>
</table>
<para>When using <literal>USES= qmake</literal>, these
settings are deployed:</para>
<programlisting>CONFIGURE_ARGS+= --with-qt-includes=${QT_INCDIR} \
--with-qt-libraries=${QT_LIBDIR} \
--with-extra-libs=${LOCALBASE}/lib \
--with-extra-includes=${LOCALBASE}/include
CONFIGURE_ENV+= QTDIR="${QT_PREFIX}" QMAKE="${QMAKE}" \
MOC="${MOC}" RCC="${RCC}" UIC="${UIC}" \
QMAKESPEC="${QMAKESPEC}"
PLIST_SUB+= QT_INCDIR=${QT_INCDIR_REL} \
QT_LIBDIR=${QT_LIBDIR_REL} \
QT_PLUGINDIR=${QT_PLUGINDIR_REL}</programlisting>
<para>Some configure scripts do not support the arguments above.
To suppress modification of <varname>CONFIGURE_ENV</varname>
and <varname>CONFIGURE_ARGS</varname>, set
<literal>USES= qmake:no_env</literal>.</para>
<example xml:id="using-qmake-example">
<title><literal>USES= qmake</literal> Example</title>
<para>This snippet demonstrates the use of
<application>qmake</application> for a Qt 4 port:</para>
<programlisting>USES= qmake:outsource
USE_QT4= moc_build</programlisting>
<programlisting>USES= qmake:outsource qt:4
USE_QT= moc_build</programlisting>
<para>For a Qt 5 port:</para>
<programlisting>USES= qmake:outsource
USE_QT5= buildtools_build</programlisting>
<programlisting>USES= qmake:outsource qt:5
USE_QT= buildtools_build</programlisting>
</example>
<para>Qt applications are often written to be cross-platform
@ -3135,13 +3176,13 @@ USE_QT5= buildtools_build</programlisting>
Required KDE components and other dependencies can be
determined through configure log.
<varname>USE_KDE</varname> does not imply
<varname>USE_QT4</varname>. If a port requires some
<varname>USE_QT</varname>. If a port requires some
Qt 4 components, specify them in
<varname>USE_QT4</varname>.</para>
<varname>USE_QT</varname>.</para>
<programlisting>USES= cmake:outsource kde:4
<programlisting>USES= cmake:outsource kde:4 qt:4
USE_KDE= kdelibs kdeprefix automoc4
USE_QT4= moc_build qmake_build rcc_build uic_build</programlisting>
USE_QT= moc_build qmake_build rcc_build uic_build</programlisting>
</example>
</sect2>
</sect1>
@ -3198,9 +3239,9 @@ USE_QT4= moc_build qmake_build rcc_build uic_build</programlisting>
LXQt libraries. Required LXQt components and
other dependencies can be determined from the
configure log.</para>
<programlisting>USES= cmake:outsource lxqt tar:xz
USE_QT5= buildtools_build qmake_build core dbus widgets
USE_LXQT= buildtools libfmqt</programlisting>
<programlisting>USES= cmake:outsource lxqt qt:5 tar:xz
USE_QT= core dbus widgets buildtools_build qmake_build
USE_LXQT= buildtools libfmqt</programlisting>
</example>
</sect1>

View file

@ -1381,7 +1381,8 @@ GSSAPI_NONE_CONFIGURE_ON= --without-gssapi</programlisting>
<sect1 xml:id="uses-kde">
<title><literal>kde</literal></title>
<para>Possible arguments: <literal>4</literal></para>
<para>Possible arguments: <literal>4</literal>,
<literal>5</literal></para>
<para>Add dependency on <application>KDE</application> components.
See <xref linkend="using-kde"/> for more information.</para>
@ -2658,12 +2659,25 @@ USE_PYQT= core doc_build designer_run</programlisting>
<title><literal>qmake</literal></title>
<para>Possible arguments: (none), <literal>norecursive</literal>,
<literal>outsource</literal></para>
<literal>outsource</literal>, <literal>no_env</literal>,
<literal>no_configure</literal></para>
<para>Uses <application>QMake</application> for configuring. For
more information see <xref linkend="using-qmake"/>.</para>
</sect1>
<sect1 xml:id="uses-qt">
<title><literal>qt</literal></title>
<para>Possible arguments: <literal>4</literal>,
<literal>5</literal>, <literal>no_env</literal></para>
<para>Add dependency on <application>Qt</application> components.
<literal>no_env</literal> is passed directly to
<literal>USES= qmake</literal>. See <xref linkend="using-qt"/>
for more information.</para>
</sect1>
<sect1 xml:id="uses-readline">
<title><literal>readline</literal></title>