media-video/vlc: Fix build with Qt 5.7.0
authorAndreas Sturmlechner <andreas.sturmlechner@gmail.com>
Sat, 22 Oct 2016 11:18:31 +0000 (13:18 +0200)
committerMichael Palimaka <kensington@gentoo.org>
Sat, 26 Nov 2016 18:00:09 +0000 (05:00 +1100)
Gentoo-bug: 589396

Package-Manager: portage-2.3.0

media-video/vlc/files/vlc-2.2.4-cxx0x.patch [new file with mode: 0644]
media-video/vlc/files/vlc-2.2.4-qt57.patch [new file with mode: 0644]
media-video/vlc/vlc-2.2.4.ebuild
media-video/vlc/vlc-2.2.9999.ebuild

diff --git a/media-video/vlc/files/vlc-2.2.4-cxx0x.patch b/media-video/vlc/files/vlc-2.2.4-cxx0x.patch
new file mode 100644 (file)
index 0000000..cb3d635
--- /dev/null
@@ -0,0 +1,11 @@
+--- a/configure.ac     2016-09-21 07:10:58.885508665 +0200
++++ b/configure.ac     2016-09-21 07:19:17.835725004 +0200
+@@ -3746,7 +3746,7 @@
+     PKG_CHECK_MODULES([QT], [Qt5Core >= 5.1.0 Qt5Widgets Qt5Gui], [
+       PKG_CHECK_MODULES([QTX11], [Qt5X11Extras], [
+           VLC_ADD_LIBS([qt4],[${QTX11_LIBS}])
+-          VLC_ADD_CXXFLAGS([qt4],[${QTX11_CFLAGS} -DQT5_HAS_X11])
++          VLC_ADD_CXXFLAGS([qt4],[${QTX11_CFLAGS} -DQT5_HAS_X11 -std=c++0x])
+           PKG_CHECK_MODULES([XI], [xi], [
+             VLC_ADD_LIBS([qt4], [${XI_LIBS}])
+             VLC_ADD_CXXFLAGS([qt4], [${XI_CFLAGS} -DHAVE_XI])
diff --git a/media-video/vlc/files/vlc-2.2.4-qt57.patch b/media-video/vlc/files/vlc-2.2.4-qt57.patch
new file mode 100644 (file)
index 0000000..97472a6
--- /dev/null
@@ -0,0 +1,284 @@
+As the 2.2 headers are still using vlc_atomics (picture)
+we cannot have a way to avoid collisions with early
+or late <atomic> inclusion when using GCC >= 4.7
+
+Conditionals in vlc_atomic won't work.
+
+Happens in ProjectM and Qt5.
+---
+ modules/gui/qt4/actions_manager.cpp                |  2 ++
+ modules/gui/qt4/adapters/seekpoints.cpp            |  4 +--
+ modules/gui/qt4/adapters/seekpoints.hpp            |  4 +--
+ modules/gui/qt4/components/controller.cpp          |  2 ++
+ .../gui/qt4/components/playlist/playlist_model.hpp |  4 +--
+ modules/gui/qt4/components/playlist/views.cpp      |  6 ++++
+ modules/gui/qt4/dialogs/messages.cpp               |  2 ++
+ modules/gui/qt4/dialogs/vlm.cpp                    |  4 ---
+ modules/gui/qt4/dialogs/vlm.hpp                    |  4 ++-
+ modules/gui/qt4/input_manager.cpp                  |  2 ++
+ modules/gui/qt4/input_manager.hpp                  |  3 +-
+ modules/gui/qt4/menus.cpp                          |  2 ++
+ modules/gui/qt4/qt4.hpp                            | 32 ++++++++++++++++++----
+ modules/gui/qt4/util/pictureflow.cpp               |  2 ++
+ modules/visualization/projectm.cpp                 |  4 +++
+ 15 files changed, 56 insertions(+), 21 deletions(-)
+
+diff --git a/modules/gui/qt4/actions_manager.cpp b/modules/gui/qt4/actions_manager.cpp
+index eff40d9..b7ca967 100644
+--- a/modules/gui/qt4/actions_manager.cpp
++++ b/modules/gui/qt4/actions_manager.cpp
+@@ -25,6 +25,8 @@
+ # include "config.h"
+ #endif
+ 
++#include "qt4.hpp"
++
+ #include <vlc_vout.h>
+ #include <vlc_keys.h>
+ 
+diff --git a/modules/gui/qt4/adapters/seekpoints.cpp b/modules/gui/qt4/adapters/seekpoints.cpp
+index fbf2957..a3564bb 100644
+--- a/modules/gui/qt4/adapters/seekpoints.cpp
++++ b/modules/gui/qt4/adapters/seekpoints.cpp
+@@ -19,14 +19,12 @@
+  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
+  *****************************************************************************/
+ 
++#include "seekpoints.hpp"
+ 
+ #include "recents.hpp"
+ #include "dialogs_provider.hpp"
+ #include "menus.hpp"
+ 
+-#include "seekpoints.hpp"
+-
+-#include "qt4.hpp"
+ #include "input_manager.hpp"
+ 
+ SeekPoints::SeekPoints( QObject *parent, intf_thread_t *p_intf_ ) :
+diff --git a/modules/gui/qt4/adapters/seekpoints.hpp b/modules/gui/qt4/adapters/seekpoints.hpp
+index 0083989..bbb9214 100644
+--- a/modules/gui/qt4/adapters/seekpoints.hpp
++++ b/modules/gui/qt4/adapters/seekpoints.hpp
+@@ -22,9 +22,7 @@
+ #ifndef SEEKPOINTS_HPP
+ #define SEEKPOINTS_HPP
+ 
+-#ifdef HAVE_CONFIG_H
+-#include "config.h"
+-#endif
++#include "qt4.hpp"
+ 
+ #include <vlc_common.h>
+ #include <vlc_interface.h>
+diff --git a/modules/gui/qt4/components/controller.cpp b/modules/gui/qt4/components/controller.cpp
+index d93e0db..c43d929 100644
+--- a/modules/gui/qt4/components/controller.cpp
++++ b/modules/gui/qt4/components/controller.cpp
+@@ -26,6 +26,8 @@
+ # include "config.h"
+ #endif
+ 
++#include "qt4.hpp"
++
+ #include <vlc_vout.h>                       /* vout_thread_t for FSC */
+ 
+ /* Widgets */
+diff --git a/modules/gui/qt4/components/playlist/playlist_model.hpp b/modules/gui/qt4/components/playlist/playlist_model.hpp
+index f9d1d0c..1f71ac9 100644
+--- a/modules/gui/qt4/components/playlist/playlist_model.hpp
++++ b/modules/gui/qt4/components/playlist/playlist_model.hpp
+@@ -25,9 +25,7 @@
+ #ifndef _PLAYLIST_MODEL_H_
+ #define _PLAYLIST_MODEL_H_
+ 
+-#ifdef HAVE_CONFIG_H
+-# include "config.h"
+-#endif
++#include "qt4.hpp"
+ 
+ #include <vlc_input.h>
+ #include <vlc_playlist.h>
+diff --git a/modules/gui/qt4/components/playlist/views.cpp b/modules/gui/qt4/components/playlist/views.cpp
+index 59f6535..0066205 100644
+--- a/modules/gui/qt4/components/playlist/views.cpp
++++ b/modules/gui/qt4/components/playlist/views.cpp
+@@ -21,6 +21,12 @@
+  * 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
+  *****************************************************************************/
+ 
++#ifdef HAVE_CONFIG_H
++#include "config.h"
++#endif
++
++#include "qt4.hpp"
++
+ #include "components/playlist/views.hpp"
+ #include "components/playlist/vlc_model.hpp"      /* VLCModel */
+ #include "components/playlist/sorting.h"          /* Columns List */
+diff --git a/modules/gui/qt4/dialogs/messages.cpp b/modules/gui/qt4/dialogs/messages.cpp
+index 30793a2..9c79c99 100644
+--- a/modules/gui/qt4/dialogs/messages.cpp
++++ b/modules/gui/qt4/dialogs/messages.cpp
+@@ -24,6 +24,8 @@
+ # include "config.h"
+ #endif
+ 
++#include "qt4.hpp"
++
+ #include "dialogs/messages.hpp"
+ 
+ #include <QPlainTextEdit>
+diff --git a/modules/gui/qt4/dialogs/vlm.cpp b/modules/gui/qt4/dialogs/vlm.cpp
+index 0da88cc..595f015 100644
+--- a/modules/gui/qt4/dialogs/vlm.cpp
++++ b/modules/gui/qt4/dialogs/vlm.cpp
+@@ -23,10 +23,6 @@
+  * Foundation, Inc., 51 Franklin street, Fifth Floor, Boston MA 02110-1301, USA.
+  *****************************************************************************/
+ 
+-#ifdef HAVE_CONFIG_H
+-# include "config.h"
+-#endif
+-
+ #include "dialogs/vlm.hpp"
+ 
+ #ifdef ENABLE_VLM
+diff --git a/modules/gui/qt4/dialogs/vlm.hpp b/modules/gui/qt4/dialogs/vlm.hpp
+index a3c6e5d..dcf7110 100644
+--- a/modules/gui/qt4/dialogs/vlm.hpp
++++ b/modules/gui/qt4/dialogs/vlm.hpp
+@@ -25,8 +25,10 @@
+ #ifndef QVLC_VLM_DIALOG_H_
+ #define QVLC_VLM_DIALOG_H_ 1
+ 
++#include "qt4.hpp"
++
+ #ifdef HAVE_CONFIG_H
+-# include "config.h"
++#include "config.h"
+ #endif
+ 
+ #ifdef ENABLE_VLM
+diff --git a/modules/gui/qt4/input_manager.cpp b/modules/gui/qt4/input_manager.cpp
+index fd45f4a..c50cb6c 100644
+--- a/modules/gui/qt4/input_manager.cpp
++++ b/modules/gui/qt4/input_manager.cpp
+@@ -30,6 +30,8 @@
+ # include "config.h"
+ #endif
+ 
++#include "qt4.hpp"
++
+ #include "input_manager.hpp"
+ #include "recents.hpp"
+ 
+diff --git a/modules/gui/qt4/input_manager.hpp b/modules/gui/qt4/input_manager.hpp
+index 7d3b76a..4fbecbb 100644
+--- a/modules/gui/qt4/input_manager.hpp
++++ b/modules/gui/qt4/input_manager.hpp
+@@ -29,9 +29,10 @@
+ # include "config.h"
+ #endif
+ 
++#include "qt4.hpp"
++
+ #include <vlc_input.h>
+ 
+-#include "qt4.hpp"
+ #include "util/singleton.hpp"
+ #include "adapters/variables.hpp"
+ 
+diff --git a/modules/gui/qt4/menus.cpp b/modules/gui/qt4/menus.cpp
+index 116e98c..46240b0 100644
+--- a/modules/gui/qt4/menus.cpp
++++ b/modules/gui/qt4/menus.cpp
+@@ -34,6 +34,8 @@
+ # include "config.h"
+ #endif
+ 
++#include "qt4.hpp"
++
+ #include <vlc_common.h>
+ #include <vlc_intf_strings.h>
+ #include <vlc_vout.h>                             /* vout_thread_t */
+diff --git a/modules/gui/qt4/qt4.hpp b/modules/gui/qt4/qt4.hpp
+index 44d7db6..5aec957 100644
+--- a/modules/gui/qt4/qt4.hpp
++++ b/modules/gui/qt4/qt4.hpp
+@@ -29,12 +29,7 @@
+ # include "config.h"
+ #endif
+ 
+-#include <vlc_common.h>    /* VLC_COMMON_MEMBERS for vlc_interface.h */
+-#include <vlc_interface.h> /* intf_thread_t */
+-#include <vlc_playlist.h>  /* playlist_t */
+-
+-#define QT_NO_CAST_TO_ASCII
+-#include <QString>
++#include <QtGlobal>
+ 
+ #if ( QT_VERSION < 0x040600 )
+ # error Update your Qt version to at least 4.6.0
+@@ -43,6 +38,31 @@
+ #define HAS_QT47 ( QT_VERSION >= 0x040700 )
+ #define HAS_QT5  ( QT_VERSION >= 0x050000 )
+ 
++#if HAS_QT5
++  #include <QtCore/qcompilerdetection.h>
++  #if defined(Q_COMPILER_ATOMICS) && \
++             ( __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7 ) )
++   #define VLC_ATOMIC_H
++   #include <atomic>
++   using namespace std;
++   #  define atomic_store(object,desired) \
++      do { \
++          *(object) = (desired); \
++          __sync_synchronize(); \
++      } while (0)
++
++   #  define atomic_load(object) \
++       (__sync_synchronize(), *(object))
++  #endif
++#endif
++
++#include <vlc_common.h>    /* VLC_COMMON_MEMBERS for vlc_interface.h */
++#include <vlc_interface.h> /* intf_thread_t */
++#include <vlc_playlist.h>  /* playlist_t */
++
++#define QT_NO_CAST_TO_ASCII
++#include <QString>
++
+ enum {
+     DialogEventTypeOffset = 0,
+     IMEventTypeOffset     = 100,
+diff --git a/modules/gui/qt4/util/pictureflow.cpp b/modules/gui/qt4/util/pictureflow.cpp
+index 9318953..a7e6a01 100644
+--- a/modules/gui/qt4/util/pictureflow.cpp
++++ b/modules/gui/qt4/util/pictureflow.cpp
+@@ -29,6 +29,8 @@
+   THE SOFTWARE.
+ */
+ 
++#include "qt4.hpp"
++
+ #include "pictureflow.hpp"
+ 
+ #include <QApplication>
+diff --git a/modules/visualization/projectm.cpp b/modules/visualization/projectm.cpp
+index e80fbf4..96d532d 100644
+--- a/modules/visualization/projectm.cpp
++++ b/modules/visualization/projectm.cpp
+@@ -30,6 +30,10 @@
+ #endif
+ 
+ #include <assert.h>
++#if defined(__GNUC__) && \
++           ( __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7 ) )
++  #define VLC_ATOMIC_H /* Ensure C atomics wont collide with old intrinsics */
++#endif
+ 
+ #include <vlc_common.h>
+ #include <vlc_plugin.h>
+-- 
+2.7.4
index 61ac59612e58854c2f24b8d1d1cea3fa1c6986cc..a165e1ddd098d52796b7850424cf6fa78fbd8923 100644 (file)
@@ -230,6 +230,10 @@ PATCHES=(
        # Bug #575072
        "${FILESDIR}"/${PN}-2.2.4-relax_ffmpeg.patch
        "${FILESDIR}"/${PN}-2.2.4-ffmpeg3.patch
+
+       # Bug #589396
+       "${FILESDIR}"/${PN}-2.2.4-qt57.patch
+       "${FILESDIR}"/${PN}-2.2.4-cxx0x.patch
 )
 
 DOCS=( AUTHORS THANKS NEWS README doc/fortunes.txt doc/intf-vcd.txt )
index 004ccdde04c3b643b0aff5c97aa7891d767d1a7b..70477211516cd924e76b8672edbe40878f7b0e1d 100644 (file)
@@ -221,6 +221,9 @@ PATCHES=(
 
        # Allow QT5.5 since Gentoo has a patched QTwidgets
        "${FILESDIR}"/${PN}-2.2.2-qt5widgets.patch
+
+       # Bug #589396
+       "${FILESDIR}"/${PN}-2.2.4-cxx0x.patch
 )
 
 DOCS=( AUTHORS THANKS NEWS README doc/fortunes.txt doc/intf-vcd.txt )