maintainer-feedback requested: [Bug 209722] multimedia/vlc multimedia/vlc-qt4: Problems building with libc++ 3.8.0

bugzilla-noreply at freebsd.org bugzilla-noreply at freebsd.org
Mon May 23 20:10:19 UTC 2016


Dimitry Andric <dim at FreeBSD.org> has reassigned Bugzilla Automation
<bugzilla at FreeBSD.org>'s request for maintainer-feedback to
multimedia at FreeBSD.org:
Bug 209722: multimedia/vlc multimedia/vlc-qt4: Problems building with libc++
3.8.0
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=209722



--- Description ---
During the exp-run in bug 208158, it was found that multimedia/vlc [1] and
multimedia/vlc-qt4 [2] give errors with libc++ 3.8.0:

In file included from meta_engine/taglib.cpp:53:
In file included from /usr/local/include/taglib/taglib.h:47:
In file included from /usr/include/c++/v1/string:439:
In file included from /usr/include/c++/v1/algorithm:628:
In file included from /usr/include/c++/v1/memory:616:
/usr/include/c++/v1/atomic:823:1: error: expected unqualified-id
kill_dependency(_Tp __y) _NOEXCEPT
^
../include/vlc_atomic.h:45:7: note: expanded from macro 'kill_dependency'
    ((void)0)
      ^

And many more such errors.  These are caused by include/vlc_atomic.h, which
defines a whole bunch of atomic macros, conflicting with the ones in the C++
standard <atomic> header.  Unfortunately there seems to be no easy workaround,
as vlc_atomic.h starts with:

    29	# if !defined (__cplusplus) && (__STDC_VERSION__ >= 201112L) \
    30	  && !defined (__STDC_NO_ATOMICS__)
    31
    32	/*** Native C11 atomics ***/
    33	#  include <stdatomic.h>
    34
    35	# else

and in the following part the macros are defined.  I attempted to use
<stdatomic.h> even for C++ mode, but it isn't compatible with C++.  Also, we
cannot unconditionally include <atomic> for C++, since a few types are not
defined in there, e.g.:

../include/vlc_atomic.h:407:9: error: unknown type name
'atomic_uint_least32_t'; did you mean 'std::atomic_uint_least32_t'?
typedef atomic_uint_least32_t vlc_atomic_float;
	^~~~~~~~~~~~~~~~~~~~~
	std::atomic_uint_least32_t

Also, <atomic> is only available when using libc++, not when using the version
of libstdc++ in base.

I don't have any ready-made solution for this issue yet, but if anybody has
good suggestions, please post them here. :)

[1]
http://package18.nyi.freebsd.org/data/headamd64PR208158-default/2016-05-01_10h2
9m48s/logs/errors/vlc-2.2.1_8,4.log
[2]
http://package18.nyi.freebsd.org/data/headamd64PR208158-default/2016-05-01_10h2
9m48s/logs/errors/vlc-qt4-2.2.1_8,4.log


More information about the freebsd-multimedia mailing list