Commit graph

18 commits

Author SHA1 Message Date
Rene Ladan
d2eb50ab00 Clean up final leftovers from Qt4.
Submitted by:	rene
Reviewed by:	mat, tcberner
Differential Revision:	https://reviews.freebsd.org/D20725
2019-06-26 11:52:23 +00:00
Tobias C. Berner
b1a1d38bf9 Replace bsd.qt.mk by Uses/qt.mk and Uses/qt-dist.mk
From now on, ports that depend on Qt4 will have to set
	USES=		qt:4
	USE_QT=		foo bar
ports depending on Qt5 will use
	USES=		qt:5
	USE_QT=		foo bar

PR:		229225
Exp-run by:	antoine
Reviewed by:	mat
Approved by:	portmgr (antoine)
Differential Revision:	→https://reviews.freebsd.org/D15540
2018-06-28 17:39:53 +00:00
Raphael Kubo da Costa
f6ceca6350 Update Qt5 ports to 5.9.3.
This took quite a lot of time because Qt's own build system underwent
several changes in 5.8.0 that took a while to adapt to.

And, of course, qt5-webengine is a behemoth that we need to patch like crazy
due to its bundling of Chromium. In fact, most of the Chromium patches in
qt5-webengine have been imported with no changes from www/chromium@433510
("www/chromium: update to 56.0.2924.87").

New port: accessibility/qt5-speech

Bigger changes to Qt5 ports we had to make:
- Qt now allows using a configure.json file to define configuration options
  and specify configuration checks that can be done when qmake is invoked.
  However, configure.json checks done in a subdirectory only propagates to
  subdirectories, and checks elsewhere will fail if all .pro files are being
  parsed at once (i.e. qmake -recursive), so several ports had to switch to
  USES=qmake:norecursive along with manual additional qmake invocations in
  subdirectories in order to work. It's been mentioned in a few places such
  as Qt's bug tracker that qmake's recursive mode is pretty much deprecated,
  so we might switch to non-recursive mode by default in the future.

- Uses/qmake.mk: Introduce QMAKE_CONFIGURE_ARGS. qmake now accepts
  arbitrary options such as '-foo' and '-no-bar' at the end of the
  command-line. They can be specified in QMAKE_CONFIGURE_ARGS.

- graphics/qt5-wayland: The port can only be built if graphics/mesa-libs is
  built with the WAYLAND option, so a corresponding option (off by default)
  was added to the port.

- misc/qt5-doc: Switch to a pre-built documentation tarball. The existing
  port was not working with Qt 5.9. Instead of trying to fix it, switch to
  what Gentoo does and fetch a tarball that already contains all
  documentation so that we do not have to build anything at all. The
  tarball's name and location in download.qt.io look a bit weird, but it
  seems to work fine.

- www/qt5-webengine: Use binutils from ports, Chromium's GN build system
  generates a build.ninja that uses ar(1) with the @file syntax that is not
  supported by BSD ar, so we need to use GNU ar from binutils.

- x11-toolkits/qt5-declarative-render2d: This port was merged into the main
  Qt Declarative repository upstream, and into x11-toolkits/qt5-quick in the
  ports tree.

Changes to other ports we had to make:
- biology/ugene: Drop a '#define point "."' that is not present in more
  recent versions of the port. Defining a macro with such a common name
  causes build issues with Qt 5.9, which uses |point| as an argument name in
  methods.

- cad/qelectrotech: Fix plist with Qt 5.9. Directories are no longer
  installed with `cp -f -R', but rather `qmake install qinstall', which does
  not install

    %%DATADIR%%/elements/10_electric/20_manufacturers_articles/bosch_rexroth/.directory

  That's a local file that should not even have been part of the tarball
  anyway.

- chinese/gcin-qt5: Add additional private Qt directories (which should not
  be used in the first place) to get the port to build with Qt 5.9.

- devel/qtcreator: Fix plist with Qt 5.9. Something changed in qdoc and some
  test classes no longer generate documentation files.

- security/keepassx-devel: Import a patch sent upstream almost a year ago to
  fix the build with Qt 5.9.

Thanks to antoine for the exp-run, and tcberner and Laurent Cimon
<laurent@nuxi.ca> for landing changes in our qt-5.9 branch.

PR:		224849
2018-01-06 21:30:31 +00:00
Jan Beich
e67dc162af Adjust TEST_WRKSRC for USES=[cq]make:outsource
Approved by:	rakuco
Differential Revision:	https://reviews.freebsd.org/D8274
2016-10-18 11:20:01 +00:00
Kurt Jaeger
d021ee8031 Mk/Uses/qmake.mk: revert latest change
PR:		209326
Requested by:	mat
2016-05-28 20:01:16 +00:00
Kurt Jaeger
2abc9f5f89 Mk/Uses/qmake.mk: add empty do-configure target
PR:		209326
Submitted by:	rakuco, T.C.Berner <tcberner@gmail.com>, Ralf Nolden <nolden@kde.org>
2016-05-28 17:19:43 +00:00
Mathieu Arnold
d5e588bc6e Make all the targets in USES use the _USES_* helpers.
It is left as an exercise to the reader to reorder some of those targets
to fix some small problems, and to add a comment about why each target
is ran when it is ran.

Sponsored by:	Absolight
Differential Revision:	https://reviews.freebsd.org/D5717
2016-04-22 09:24:34 +00:00
Raphael Kubo da Costa
8ceb79f0fe Make sure ${WRKSRC}/lib is passed before /usr/local/lib when linking.
This is another shot at fixing the linkage problems that have plagued our
users particularly when upgrading from Qt 5.x to 5.(x+1). Quick recap: in
Qt5, qmake will by default pass QMAKE_LIBDIR to the linker before other
directories such as ${WRKSRC}/lib, which is where the port's libraries are
built. When a user is upgrading Qt, we can end up with the following linker
line:
  c++ -o SomeBinary -lfoo1 -L/usr/local/lib -L${WRKSRC}/lib -lfoo2 -lfoo3
If libfoo2.so is being built by the port and an older version is currently
installed on the system, /usr/local/lib/libfoo2.so will be picked up instead
of the newly-built ${WRKSRC}/lib/libfoo2.so. At best things just work, at
worst SomeBinary needs some new symbol that is not present in the old
libfoo2.so and linking fails. Case in point: bug 198720.

The previous approach, adopted when fixing bug 194088, was to stop setting
QMAKE_{INC,LIB}DIR in the FreeBSD mkspecs and set the CPATH and LIBRARY_PATH
environment variables in Uses/qmake.mk. This way we just did not pass
-L/usr/local/lib to the linker at all and things mostly worked. However,
people using Qt to build their own software without the ports tree were out
of luck, as they would then need need to deal with passing
/usr/local/{include,lib} to the compiler/linker themselves (bug 195105). Not
only that, but if a dependency mentioned /usr/local/lib we would still have
problems anyway (in bug 198720, the GStreamer pkg-config files contain
-L/usr/local/lib, for example).

We now solve the issue by setting the QMAKE_LIBDIR_FLAGS variable in
.qmake.cache to ${WRKSRC}/lib instead. qmake appends the value of
QMAKE_LIBDIR to QMAKE_LIBDIR_FLAGS, so we are always sure -L${WRKSRC}/lib
will come before -L/usr/local/lib in the linker options. Moreover, qmake is
smart enough to automatically call sed(1) and remove references to
${WRKSRC}/lib from .prl and .pc files when installing them.

PR:		194088
PR:		195105
PR:		198720
MFH:		2015Q4
2015-12-28 18:51:41 +00:00
Raphael Kubo da Costa
39ced03cc1 Update the Qt4 ports to 4.8.7.
According to upstream, this is the last planned Qt4 release.
A list of changes since 4.8.6 can be found here:
<http://download.qt.io/official_releases/qt/4.8/4.8.7/changes-4.8.7>

Porting notes and changes:
- Remove several patches that have been upstreamed.
- Make Uses/qmake.mk pass the contents of LIBS to the qmake environment. [1]
- Repurpose devel/qt4/files/extrapatch-src-corelib-global-qglobal.h now the
  original patch is part of the release (curiously enough, the original
  patch was never actually used, as the ?= assignment in r362837 after
  r362770 was never possible).

  This works around the way compiler support for C++11 features is detected
  in Qt 4.8.7: while it originally only uses the compiler to determine if
  something is supported or not, the initializer lists feature also depends
  on the C++ standard library being used. It's a problem in FreeBSD 9.x,
  where USES=compiler:c++0x or USES=compiler:c++11-lang means we will use
  clang to build a port but use libstdc++ from base (GCC 4.2). The latter
  obviously does not support initializer lists, and the build fails because
  Qt tries to include headers that do not exist (<initializer_list>).

  Since detecting libstdc++'s version is not trivial (we need to include a
  non-lightweight header like cstdio and then check for __GLIBCXX__), we
  just enable Q_COMPILER_INITIALIZER_LISTS support only when libc++ is used
  (there should be no reason for someone to be using clang with GCC 4.8's
  libstdc++, for example).

  x11/kdelibs4's FindQt4.cmake had to include a backported change from the
  upstream FindQt4.cmake in CMake itself to use a C++ compiler to detect
  flags like Q_WS_X11, otherwise the inclusion of <ciso646> in qglobal.h
  makes the build fail.

This patch contains changes by me, makc@ and alonso@.

PR:             202552 [1]
PR:             202808 [exp-run]
Submitted by:	pawel@ [1]
2015-09-16 08:55:04 +00:00
Raphael Kubo da Costa
a9662ed949 Update Qt5 ports to 5.3.2.
Proudly presented by the KDE on FreeBSD team, with several guest stars.

This update took way longer than initially expected due to us previously
accumulating assumptions and changes to Qt's build system that finally bit
us back with the 5.3 release series, so we had to do a fair amount of
cleanup.

New ports:
- comms/qt5-serialport: Qt functions to access serial ports, originally
                        based on work by Fernando Apesteguia. [1]
- devel/qt5-qdoc: Qt documentation generator, the Qt5 equivalent of
                  devel/qt4-qdoc3. Originally worked on by Tobias Berner.
                  It had already been half-split from devel/qt5-buildtools,
                  we just needed to finish the work.

Dead ports:
- devel/qt5-qmldevtools: Merged into lang/qt5-qml.

Minor changes:
- devel/qt5: Add x11/qt5-x11extras and the new ports to the dependency list.
- graphics/qt5-imageformats: The port now supports the JPEG2000, WEBP,
                             Direct Draw Surface and ICNS formats.
- multimedia/qt5-multimedia: The ALSA and PULSEAUDIO options are now
                             mutually exclusive due to changes introduced in
                             Qt 5.3.0 (the ALSA code is now a proper plugin
                             that is only built if PulseAudio is not used).
- x11/qt5-x11extras: Add USE_LDCONFIG since the port installs a shared
                     library.

The big changes:
- bsd.qt.mk: Set QMAKESPEC instead of QMAKEPATH. [3]
  QMAKEPATH does much more than we want now that we call qmake from the top
  of ${WRKSRC}. qmake uses QMAKEPATH when evaluating the QMAKE_MKSPECS
  property, which is in turn used by qt_config.pri to load the .pri files in
  mkspecs/modules.

  In practice, this means that if people have an older Qt installation those
  files will be used and QT_CONFIG will have values such as "gui" even if
  one is building a port like textproc/qt5-xml, which passes -no-gui to the
  configure script. Consequently, unintended code paths may be enabled or
  the configuration step can just fail if the .pro files expect values that
  are not present in the system-wide, older .pri files.

  We avoid all those problems if we use QMAKESPEC, as qmake does not take
  its value into account when evaluating the QMAKE_MKSPECS property and will
  only parse the files in the mkspec's directory (mkspecs/freebsd-clang, for
  example, instead of all the files in mkspecs).

- Stop explicitly passing ${LOCALBASE} to the compiler. [3]
  qmake's behavior has changed in Qt 5, and the paths set in QMAKE_INCDIR
  and QMAKE_LIBDIR in the mkspecs are passed before any others, such as the
  ones in the build directory themselves.

  In practice, this means that we end up with linker calls like this:

  c++ -o libfoo.so foo.o bar.o -L/usr/local/lib -L/wrkdir/build/lib
      -lQt5Gui -lQt5Core

  So if one already has Qt installed in the system, the older, already
  present version of the libraries in /usr/local/lib will be used instead of
  the newly-built ones in /wrkdir/build/lib.

  QTBUG-40825 discusses this behavior upstream, but there has been no
  agreement on a solution yet.

  For now, the solution adopted is to make the compiler and the linker aware
  of those paths but only try them last after all others, and this is
  achieved by setting the CPATH and LIBRARY_PATH environment variables when
  qmake is being used.

  In addition to setting them in CONFIGURE_ENV and MAKE_ENV, we also need to
  stop changing QMAKE_INCDIR and QMAKE_LIBDIR as well as filter those paths
  from the pkg-config calls qtbase's configure script makes.

- Call qmake from the root of the ${WRKSRC}.

  In Qt 5.3, Qt's build infrastructure has undergone some changes that make
  our previous approach of calling qmake from the directories we want to
  build stop working. Things would break even more in Qt 5.4, in which
  qtbase's configure script does not accept the -process, -fully-process and
  -dont-process arguments anymore (it always behaves as if -process had been
  used).

  Bite the bullet and start calling qmake from ${WRKSRC}. The largest part of
  this change involves changing lines in Makefiles from
    WRKSRC_SUBDIR=	foo/bar
  to
    BUILD_WRKSRC=		${WRKSRC}/foo/bar
    INSTALL_WRKSRC=		${WRKSRC}/foo/bar
  as well as adding patches to .pro files to avoid entering other
  subdirectories and removing post-configure targets that are not necessary
  anymore.

  Since qmake needs to be called from the top of ${WRKSRC} anyway, we can
  also simplify the configuration process for the qtbase ports a little.
  Looking at r10019 it is not clear why we started calling qmake in the
  pre-configure target in addition to the post-configure one (while also
  skipping it in do-configure), but we can now drop this call since letting
  configure behave as if -process had been passed means it will call qmake
  on its own and overwrite the files generated by the pre-configure call. We
  still need to call qmake in post-configure though, as the configure script
  does not pass -recursive when calling qmake and we need to be able to call
  make from any subdirectory when building.

PR:		194762 [1]
PR:		194566 # exp-run with base GCC and clang
PR:		194088 [3]
2014-11-05 09:39:21 +00:00
Tijl Coosemans
fe837ee6c6 Change the way USES is handled:
- Loop over USES twice, once to define all *_ARGS variables and once to
  include Uses/*.mk.  This allows all Uses/*.mk to examine arguments given
  to other USES entries.
- Always define *_ARGS (possibly empty) and replace commas with spaces.

Similar for _USES_POST.

Adjust all Uses/*.mk:
- defined(u_ARGS) becomes !empty(u_ARGS)
- Eliminate helper variables like _*_ARGS=${*_ARGS:C/,/ /g}
- Some Uses/*.mk used ":" as argument separator instead of ",", but no port
  used this form
- Uses/cran.mk: remove unused variable VALID_ARGS and USES+=fortran which
  has no effect
- Uses/twisted.mk: simplify handling of the case where neither "build" nor
  "run" arguments have been specified

PR:		193931
Exp-run by:	antoine
Approved by:	portmgr (antoine)
2014-09-28 16:36:31 +00:00
Baptiste Daroussin
8527bc1d3a Remove support for NO_STAGE
Mark all current non staged ports as BROKEN

Reviewed by:	antoine
Exp-run:	antoine
Differential Revision:	https://reviews.freebsd.org/D693
2014-09-01 05:43:02 +00:00
Pawel Pekala
cc754660a3 Reset default qmake flags so that they don't taint our
globally set CFLAGS, CXXFLAGS

PR:		ports/188287
Submitted by:	myself
Approved by:	kde (makc)
2014-04-09 19:00:49 +00:00
Gerald Pfeifer
5b4f2ad658 Move MAINTAINER lines to the end of the initial comment block and
make things a bit more consistent.

Approved by:	portmgr (bapt)
2014-03-15 10:31:54 +00:00
Max Brazhnikov
7d5e6b666c 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 :)
2014-01-06 16:16:52 +00:00
Max Brazhnikov
fb38a1f687 In preparation for Qt 5 ports:
bsd.qt.mk:
 - Deprecate QMAKEFLAGS, QMAKE_ARGS should be used instead
 - define LRELEASE/LUPDATE commands for general use
 Uses/qmake.mk:
 - USES=qmake now implies build dependency on qmake
 - Deprecate QMAKE_PRO (QMAKE_SOURCE_PATH should be used if required)
 - move QMAKE_ARGS definition to bsd.qt.mk
2013-11-21 14:15:53 +00:00
Max Brazhnikov
d2562e58b7 Pass CONFIGURE_ENV to qmake 2013-10-09 09:40:41 +00:00
Max Brazhnikov
364f20a0c0 - Add new USES= qmake (with staging support)
Approved by:	portmgr (bapt)
2013-10-08 16:02:21 +00:00