freebsd-ports/audio/hydrogen/Makefile
Tijl Coosemans 1bf487d3e7 Fix Qt5 symbol version scripts to put the catch-all clause first. When
a symbol matches multiple clauses the last one takes precedence.  If the
catch-all is last it captures everything.  In the case of Qt5 libraries
this caused all symbols to have a Qt_5 label while some should have
Qt_5_PRIVATE_API.  This only affects lld because GNU ld always gives the
catch-all lowest priority.

Older versions of Qt5Webengine exported some memory allocation symbols from
the bundled Chromium.  Version 5.9 stopped exporting these [1] but the
symbols were kept as weak wrappers for the standard allocation functions to
maintain binary compatibility. [2][3]  The problem is that the call to the
standard function in these weak wrappers is only resolved to the standard
function if there's a call to this standard function in other parts of
Qt5Webengine, because only then is there a non-weak symbol that takes
precedence over the weak one.  If there's no such non-weak symbol the call
in the weak wrapper resolves to the weak wrapper itself creating an infinite
call loop that overflows the stack and causes a crash.  Some of the
allocation functions are variants of C++ new and delete and it probably
depends on the compiler whether these variants are used in other parts of
Qt5Webengine.

Remove the weak wrappers (make them Linux specific).  This isn't binary
compatible but we are already breaking that with the changes to the symbol
versions.

[1] 5c2cbfccf9
[2] 2ed5054e3a
[3] 009f5ebb4b

Bump all ports that depend on Qt5.

PR:		234070
Exp-run by:	antoine
Approved by:	kde (adridg)
2019-01-16 11:13:44 +00:00

85 lines
2.3 KiB
Makefile

# Created by: Jean-Yves Lefort <jylefort@brutele.be>
# $FreeBSD$
PORTNAME= hydrogen
DISTVERSION= 1.0.0-beta1-325
DISTVERSIONSUFFIX= -g538eaeb9
PORTREVISION= 1
CATEGORIES= audio
MAINTAINER= FreeBSD@ShaneWare.Biz
COMMENT= Advanced drum machine
LICENSE= GPLv2+
LICENSE_FILE= ${WRKSRC}/COPYING
LIB_DEPENDS= libsndfile.so:audio/libsndfile \
liblo.so:audio/liblo
USES= cmake compiler:c++11-lang desktop-file-utils pkgconfig \
localbase qt:5
USE_QT= core gui network widgets xml xmlpatterns buildtools_build \
linguisttools_build qmake_build
USE_LDCONFIG= yes
USE_GITHUB= yes
GH_ACCOUNT= hydrogen-music
OPTIONS_SINGLE= EXPORT
OPTIONS_SINGLE_EXPORT= LIBARCHIVE LIBTAR
OPTIONS_DEFINE= ALSA DEBUG JACK LADSPA LASH OSS PORTAUDIO \
PULSEAUDIO RDF TEST
OPTIONS_DEFAULT= JACK LADSPA LIBARCHIVE OSS RDF
EXPORT_DESC= Export support for drumkit
ALSA_CMAKE_BOOL= WANT_ALSA
ALSA_LIB_DEPENDS= libasound.so:audio/alsa-lib
ALSA_RUN_DEPENDS= alsa-plugins>=0:audio/alsa-plugins
DEBUG_CMAKE_BOOL= WANT_DEBUG
JACK_CMAKE_BOOL= WANT_JACK WANT_JACKSESSION
JACK_LIB_DEPENDS= libjack.so:audio/jack
LADSPA_CMAKE_BOOL= WANT_LADSPA
LADSPA_CMAKE_ON= -DLADSPA_LIBRARIES:STRING=${LOCALBASE}/lib/ladspa
LADSPA_BUILD_DEPENDS= ladspa>=0:audio/ladspa
LADSPA_RUN_DEPENDS= analyseplugin:audio/ladspa
LASH_CMAKE_BOOL= WANT_LASH
LASH_LIB_DEPENDS= liblash.so:audio/lash
LIBARCHIVE_DESC= LibArchive support
LIBARCHIVE_CMAKE_BOOL= WANT_LIBARCHIVE
LIBARCHIVE_USES= libarchive
LIBTAR_DESC= Libtar support
LIBTAR_CMAKE_BOOL= WANT_LIBTAR
LIBTAR_CMAKE_ON= -DCMAKE_REQUIRED_INCLUDES:STRING=${LOCALBASE}/include/
LIBTAR_LIB_DEPENDS= libtar.so:devel/libtar
OSS_CMAKE_BOOL= WANT_OSS
PORTAUDIO_CMAKE_BOOL= WANT_PORTAUDIO
PORTAUDIO_LIB_DEPENDS= libportaudio.so:audio/portaudio
PULSEAUDIO_CMAKE_BOOL= WANT_PULSEAUDIO
PULSEAUDIO_LIB_DEPENDS= libpulse.so:audio/pulseaudio
RDF_DESC= RDF File support
RDF_CMAKE_BOOL= WANT_LRDF
RDF_CMAKE_ON= -DLRDF_INCLUDE_DIR:STRING=${LOCALBASE}/include/raptor2
RDF_LIB_DEPENDS= liblrdf.so:textproc/liblrdf
TEST_CMAKE_BOOL= WANT_CPPUNIT
TEST_BUILD_DEPENDS= ${LOCALBASE}/libdata/pkgconfig/cppunit.pc:devel/cppunit
post-patch:
@${REINPLACE_CMD} 's|EXISTS(tar|EXISTS(${LOCALBASE}/lib/libtar.so|g' \
${WRKSRC}/CMakeLists.txt
do-test-TEST-on:
cd ${WRKSRC} && ./src/tests/tests
.include <bsd.port.mk>