[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


            Bug ID: 209722
           Summary: multimedia/vlc multimedia/vlc-qt4: Problems building
                    with libc++ 3.8.0
           Product: Ports & Packages
           Version: Latest
          Hardware: Any
                OS: Any
            Status: New
          Severity: Affects Some People
          Priority: ---
         Component: Individual Port(s)
          Assignee: multimedia at FreeBSD.org
          Reporter: dim at FreeBSD.org
          Assignee: multimedia at FreeBSD.org
             Flags: maintainer-feedback?(multimedia at FreeBSD.org)

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'

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__)
    32  /*** Native C11 atomics ***/
    33  #  include <stdatomic.h>
    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;

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. :)


You are receiving this mail because:
You are the assignee for the bug.

More information about the freebsd-multimedia mailing list