From 5ea8d168f6d165923923cd8a6e7e6b5f5c3834a3 Mon Sep 17 00:00:00 2001 From: deltaoscarmike <37912794+deltaoscarmike@users.noreply.github.com> Date: Mon, 2 Apr 2018 23:30:34 +0200 Subject: [PATCH 1/6] ProjectM-qt automake fix --- src/projectM-qt/Makefile.am | 104 ++++++++++++++++++++---------------- 1 file changed, 59 insertions(+), 45 deletions(-) diff --git a/src/projectM-qt/Makefile.am b/src/projectM-qt/Makefile.am index 8fb7dd15d..3ad56ade2 100644 --- a/src/projectM-qt/Makefile.am +++ b/src/projectM-qt/Makefile.am @@ -1,55 +1,69 @@ +SUFFIXES = .hpp .cpp _moc.cpp _qrc.qrc + projectM_qt_qtheaders = qprojectm_mainwindow.hpp \ -qpresetfiledialog.hpp \ -qplaylistfiledialog.hpp \ -qplaylistmodel.hpp \ -qprojectmconfigdialog.hpp \ -qplaylisttableview.hpp \ -qpresettextedit.hpp \ -qpreseteditordialog.hpp \ -qprojectm.hpp \ -qprojectmwidget.hpp -projectM_qt_moc_sources = $(projectM_qt_qtheaders:.h=_moc.cpp) -.h_moc.cpp: - @MOC@ -o$@ $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(MOC_CPPFLAGS)\ - $(qt_CPPFLAGS) $(qt_LDFLAGS) $(qt_LIBS) $< + qpresetfiledialog.hpp \ + qplaylistfiledialog.hpp \ + qplaylistmodel.hpp \ + qprojectmconfigdialog.hpp \ + qplaylisttableview.hpp \ + qpresettextedit.hpp \ + qpreseteditordialog.hpp \ + qprojectm.hpp \ + qprojectmwidget.hpp -.h_ui.ui: -@UIC@ -o $@ $< +projectM_qt_moc_sources = $(projectM_qt_qtheaders:.hpp=_moc.cpp) -.cpp_qrc.qrc: -@RCC@ -o $@ $< +.hpp_moc.cpp: + @MOC@ -o$@ $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CPPFLAGS) $(MOC_CPPFLAGS)\ + $(qt_CPPFLAGS) $(qt_LDFLAGS) $(qt_LIBS) $< -bin_PROGRAMS = projectM-qt +ui_qprojectm_mainwindow.h: qprojectm_mainwindow.ui + @UIC@ -o $@ $< + +ui_qpreseteditordialog.h: qpreseteditordialog.ui + @UIC@ -o $@ $< + +ui_qprojectmconfigdialog.h: qprojectmconfigdialog.ui + @UIC@ -o $@ $< -projectM_qt_SOURCES = $(projectM_qt_moc_sources) \ -qprojectm_mainwindow.cpp \ -qprojectm_mainwindow.hpp \ -configfile.hpp configfile.cpp \ -qpresetfiledialog.hpp \ -qplaylistfiledialog.cpp \ -qplaylistfiledialog.hpp \ -qplaylistmodel.cpp \ -qplaylistmodel.hpp \ -qxmlplaylisthandler.hpp \ -qprojectmconfigdialog.cpp \ -qprojectmconfigdialog.hpp \ -qplaylisttableview.hpp \ -qpresettextedit.cpp \ -qpresettextedit.hpp \ -qpreseteditordialog.cpp \ -qpreseteditordialog.hpp \ -qprojectm.hpp \ -qprojectmwidget.hpp +application_qrc.cpp: application.qrc + @RCC@ -o $@ $< + + +BUILT_SOURCES = \ + ui_qprojectm_mainwindow.h \ + ui_qpreseteditordialog.h \ + ui_qprojectmconfigdialog.h + +noinst_LIBRARIES = libprojectM_qt.a + +libprojectM_qt_a_SOURCES = \ + $(projectM_qt_moc_sources) \ + qprojectm_mainwindow.cpp \ + configfile.hpp configfile.cpp \ + qplaylistfiledialog.cpp \ + qplaylistmodel.cpp \ + qprojectmconfigdialog.cpp \ + qpresettextedit.cpp \ + qpreseteditordialog.cpp \ + application_qrc.cpp \ + $(test_moc_sources) AM_CPPFLAGS = \ --include $(top_builddir)/config.h \ --DSYSCONFDIR=\""$(sysconfdir)"\" \ --I${top_srcdir}/src/libprojectM \ --I${top_srcdir}/src/libprojectM/Renderer \ -${SDL_CFLAGS} + -include $(top_builddir)/config.h \ + -DSYSCONFDIR=\""$(sysconfdir)"\" \ + -I${top_srcdir}/src/libprojectM \ + -I${top_srcdir}/src/libprojectM/Renderer \ + ${QT_CFLAGS} \ + -fPIC AM_CFLAGS = ${my_CFLAGS} \ --fvisibility=hidden \ --ffunction-sections \ --fdata-sections + -fvisibility=hidden \ + -ffunction-sections \ + -fdata-sections + +CLEANFILES = \ + application_qrc.cpp \ + ${BUILT_SOURCES} \ + ${projectM_qt_moc_sources} From 62b41b545078e42bb385ff120269d94e3254d871 Mon Sep 17 00:00:00 2001 From: deltaoscarmike <37912794+deltaoscarmike@users.noreply.github.com> Date: Mon, 2 Apr 2018 23:32:54 +0200 Subject: [PATCH 2/6] ProjectM-qt force Qt ressources to be loaded due to library mode --- src/projectM-qt/qprojectm_mainwindow.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/projectM-qt/qprojectm_mainwindow.cpp b/src/projectM-qt/qprojectm_mainwindow.cpp index 773659699..407776164 100644 --- a/src/projectM-qt/qprojectm_mainwindow.cpp +++ b/src/projectM-qt/qprojectm_mainwindow.cpp @@ -38,6 +38,8 @@ #include "nullable.hpp" #include "qprojectmwidget.hpp" +extern int qInitResources(); + class PlaylistWriteFunctor { public: PlaylistWriteFunctor(const QVector::iterator & begin, @@ -77,7 +79,7 @@ QProjectM_MainWindow::QProjectM_MainWindow ( const std::string & config_file, QM configDialog(0), hHeader(0), vHeader(0), _menuVisible(true), _menuAndStatusBarsVisible(true), activePresetIndex(new Nullable), playlistItemCounter(0), m_QPresetEditorDialog(0) { - + qInitResources(); ui = new Ui::QProjectM_MainWindow(); ui->setupUi ( this ); From ce3b18abb9464a6c9e13056308d2c4b498deae11 Mon Sep 17 00:00:00 2001 From: deltaoscarmike <37912794+deltaoscarmike@users.noreply.github.com> Date: Mon, 2 Apr 2018 23:35:56 +0200 Subject: [PATCH 3/6] Fix automake files (1/3): Qt and pulseaudio are interdependent thus "enable_qt" compile flag builds both --- configure.ac | 60 +++++++++++++++++++++++++++++----------------------- 1 file changed, 34 insertions(+), 26 deletions(-) diff --git a/configure.ac b/configure.ac index 41cece73b..07292b451 100644 --- a/configure.ac +++ b/configure.ac @@ -11,6 +11,16 @@ AX_CHECK_GL AC_CHECK_LIB(c, dlopen, LIBDL="", AC_CHECK_LIB(dl, dlopen, LIBDL="-ldl")) +AC_CONFIG_HEADERS([config.h]) +AC_CONFIG_FILES([ + Makefile + src/Makefile + src/libprojectM/Makefile + src/libprojectM/Renderer/Makefile + src/libprojectM/NativePresetFactory/Makefile + src/libprojectM/MilkdropPresetFactory/Makefile +]) + dnl SDL AC_ARG_ENABLE([sdl], AS_HELP_STRING([--enable-sdl], [Build SDL2 app]), @@ -20,18 +30,9 @@ AS_IF([test "x$enable_sdl" = "xyes"], [ SDL_VERSION=2.0.5 AS_IF([test "$TRAVIS"], [SDL_VERSION=2.0.2]) # travis has old SDL, we don't care AM_PATH_SDL2($SDL_VERSION, :, AC_MSG_ERROR([*** SDL version $SDL_VERSION not found!])) + AC_CONFIG_FILES([src/projectM-sdl/Makefile]) ]) -AC_CONFIG_HEADERS([config.h]) -AC_CONFIG_FILES([ - Makefile - src/Makefile - src/libprojectM/Makefile - src/libprojectM/Renderer/Makefile - src/libprojectM/NativePresetFactory/Makefile - src/libprojectM/MilkdropPresetFactory/Makefile - src/projectM-sdl/Makefile -]) dnl FIXME AC_CONFIG_FILES([src/libprojectM/config.inp], [sed -i -e"s/\${prefix}/$prefix/" src/libprojectM/config.inp]) @@ -44,24 +45,31 @@ AC_ARG_ENABLE([qt], AS_HELP_STRING([--enable-qt], [Build Qt]), [], [enable_qt=no]) AS_IF([test "x$enable_qt" = "xyes"], [ -PKG_CHECK_MODULES(QT, [Qt5Core, Qt5Gui], [], [AC_MSG_ERROR([Qt libraries are required.])]) -qt_CPPFLAGS="`$PKG_CONFIG --cflags-only-I Qt5Core Qt5Gui` $CPPFLAGS" -qt_LDFLAGS="`$PKG_CONFIG --libs-only-L Qt5Core Qt5Gui` $LDFLAGS" -qt_LIBS="`$PKG_CONFIG --libs-only-l Qt5Core Qt5Gui` $LIBS" - -if ! `$PKG_CONFIG --atleast-version=5.0.0 Qt5Core`; then -AC_MSG_ERROR([Qt >= 5.0.0 is required. Try installing qtdeclarative5-dev]) -fi - -AC_CHECK_PROGS(MOC, [moc-qt5 moc]) -AC_CHECK_PROGS(UIC, [uic-qt5 uic]) -AC_CHECK_PROGS(RCC, [rcc]) -if test -z "$MOC" || test -z "$UIC" || test -z "$RCC"; then -AC_MSG_ERROR([Qt utility programs moc, uic, and rcc are required.]) -fi -AC_CONFIG_FILES([src/projectM-qt/Makefile]) + PKG_CHECK_MODULES(QT, [Qt5Core, Qt5Gui, Qt5Widgets Qt5OpenGL], [], [AC_MSG_ERROR([Qt libraries are required.])]) + qt_CPPFLAGS="`$PKG_CONFIG --cflags-only-I Qt5Core Qt5Gui Qt5Widgets Qt5OpenGL` $CPPFLAGS" + qt_LDFLAGS="`$PKG_CONFIG --libs-only-L Qt5Core Qt5Gui Qt5Widgets Qt5OpenGL` $LDFLAGS" + qt_LIBS="`$PKG_CONFIG --libs-only-l Qt5Core Qt5Gui Qt5Widgets Qt5OpenGL` $LIBS" + + if ! `$PKG_CONFIG --atleast-version=5.0.0 Qt5Core`; then + AC_MSG_ERROR([Qt >= 5.0.0 is required. Try installing qtdeclarative5-dev]) + fi + + AC_CHECK_PROGS(MOC, [moc-qt5 moc]) + AC_CHECK_PROGS(UIC, [uic-qt5 uic]) + AC_CHECK_PROGS(RCC, [rcc]) + if test -z "$MOC" || test -z "$UIC" || test -z "$RCC"; then + AC_MSG_ERROR([Qt utility programs moc, uic, and rcc are required.]) + fi + AC_CONFIG_FILES([src/projectM-qt/Makefile]) + AC_CONFIG_FILES([src/projectM-pulseaudio/Makefile]) + + PKG_CHECK_MODULES(LIBPULSE, [libpulse], [], [AC_MSG_ERROR([Pulseaudio library libpulse is required.])]) ]) +AM_CONDITIONAL([ENABLE_SDL], [test "$enable_sdl" = yes]) +AM_CONDITIONAL([ENABLE_QT], [test "$enable_qt" = yes]) + + my_CFLAGS="-Wall -Wchar-subscripts -Wformat-security -Wmissing-declarations -Wpointer-arith -Wshadow -Wsign-compare -Wtype-limits " AC_SUBST([my_CFLAGS]) From 1dfe9daa484e306ac138db6ecd4314230c21e62a Mon Sep 17 00:00:00 2001 From: deltaoscarmike <37912794+deltaoscarmike@users.noreply.github.com> Date: Mon, 2 Apr 2018 23:36:42 +0200 Subject: [PATCH 4/6] Fix automake files (2/3): Fix "enable_qt" and "enable_sdl" compile flags conditionals --- src/Makefile.am | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/Makefile.am b/src/Makefile.am index 701e040df..e8da1ea7f 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -1 +1,9 @@ -SUBDIRS=libprojectM projectM-sdl +if ENABLE_SDL + PROJECTM_SDL_SUBDIR = projectM-sdl +endif + +if ENABLE_QT + PROJECTM_QT_SUBDIR = projectM-qt projectM-pulseaudio +endif + +SUBDIRS=libprojectM ${PROJECTM_SDL_SUBDIR} ${PROJECTM_QT_SUBDIR} From a706f73a558db68b837f841f03760b13bd49964f Mon Sep 17 00:00:00 2001 From: deltaoscarmike <37912794+deltaoscarmike@users.noreply.github.com> Date: Mon, 2 Apr 2018 23:37:33 +0200 Subject: [PATCH 5/6] Fix automake files (3/3): pulseaudio automake file created --- src/projectM-pulseaudio/Makefile.am | 62 +++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 src/projectM-pulseaudio/Makefile.am diff --git a/src/projectM-pulseaudio/Makefile.am b/src/projectM-pulseaudio/Makefile.am new file mode 100644 index 000000000..b11f34ad4 --- /dev/null +++ b/src/projectM-pulseaudio/Makefile.am @@ -0,0 +1,62 @@ +SUFFIXES = .hpp .cpp _moc.cpp _qrc.qrc + +projectM_pulseaudio_qtheaders = \ + QPulseAudioDeviceChooser.hpp \ + QPulseAudioDeviceModel.hpp \ + QPulseAudioThread.hpp + +projectM_pulseaudio_moc_sources = $(projectM_pulseaudio_qtheaders:.hpp=_moc.cpp) + +.hpp_moc.cpp: + @MOC@ -o$@ $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CPPFLAGS) $(MOC_CPPFLAGS)\ + $(qt_CPPFLAGS) $(qt_LDFLAGS) $(qt_LIBS) $< + +ui_PulseDeviceChooserDialog.h: PulseDeviceChooserDialog.ui + @UIC@ -o $@ $< + +AM_CPPFLAGS = \ + -include $(top_builddir)/config.h \ + -DSYSCONFDIR=\""$(sysconfdir)"\" \ + -DPROJECTM_PREFIX=\""${prefix}"\" \ + -I${top_srcdir}/src/libprojectM \ + -I${top_srcdir}/src/libprojectM/Renderer \ + -I${top_srcdir}/src/projectM-qt \ + ${QT_CFLAGS} \ + ${LIBPULSE_CFLAGS} \ + -fPIC + +AM_CFLAGS = ${my_CFLAGS} \ + -fvisibility=hidden \ + -ffunction-sections \ + -fdata-sections + +bin_PROGRAMS = projectM-pulseaudio + +projectM_pulseaudio_SOURCES = \ + $(projectM_pulseaudio_moc_sources) \ + qprojectM-pulseaudio.cpp \ + QPulseAudioDeviceChooser.cpp \ + QPulseAudioDeviceModel.cpp \ + QPulseAudioThread.cpp + +projectM_pulseaudio_LDADD = \ + ${QT_LIBS} \ + ${LIBPULSE_LIBS} \ + ${top_srcdir}/src/projectM-qt/libprojectM_qt.a \ + ${top_srcdir}/src/libprojectM/libprojectM.la + +projectM_pulseaudio_LDFLAGS = -static + +projectM_pulseaudio_PROGRAM = projectM-pulseaudio + +BUILT_SOURCES = \ + ui_PulseDeviceChooserDialog.h + +CLEANFILES = \ + ${BUILT_SOURCES} \ + ${projectM_pulseaudio_moc_sources} + +desktopdir = $(datadir)/applications +dist_desktop_DATA = projectM-pulseaudio.desktop + +dist_man_MANS = projectM-pulseaudio.1 From 4e873efb5ff2e23c12db27d5c1326c2f62ca30e7 Mon Sep 17 00:00:00 2001 From: deltaoscarmike <37912794+deltaoscarmike@users.noreply.github.com> Date: Mon, 2 Apr 2018 23:37:47 +0200 Subject: [PATCH 6/6] Remove useless files --- src/projectM-qt/libprojectM-qt.pc.in | 13 ------------- src/projectM-qt/src.pro | 12 ------------ 2 files changed, 25 deletions(-) delete mode 100644 src/projectM-qt/libprojectM-qt.pc.in delete mode 100644 src/projectM-qt/src.pro diff --git a/src/projectM-qt/libprojectM-qt.pc.in b/src/projectM-qt/libprojectM-qt.pc.in deleted file mode 100644 index 067733181..000000000 --- a/src/projectM-qt/libprojectM-qt.pc.in +++ /dev/null @@ -1,13 +0,0 @@ -prefix=@CMAKE_INSTALL_PREFIX@ -exec_prefix=@CMAKE_INSTALL_PREFIX@ -libdir=@LIB_INSTALL_DIR@ -includedir=@CMAKE_INSTALL_PREFIX@/include -pkgdatadir=@CMAKE_INSTALL_PREFIX@/share/projectM-qt -sysconfdir=@CMAKE_INSTALL_PREFIX@/share/projectM-qt - -Name: libprojectM-qt -Version: 1.2.0 -Description: projectM-qt provides a full featured Qt4 graphical user interface to projectM -Requires: libprojectM QtCore QtGui QtXml QtOpenGL -+Libs: -L${libdir} -lprojectM-qt -+Cflags: -I${includedir} diff --git a/src/projectM-qt/src.pro b/src/projectM-qt/src.pro deleted file mode 100644 index 0ce8244c4..000000000 --- a/src/projectM-qt/src.pro +++ /dev/null @@ -1,12 +0,0 @@ -SOURCES += qgltest.cpp \ - main.cpp -HEADERS += qgltest.h \ - QProjectMFileDialog.hpp -TEMPLATE = app -CONFIG += warn_on \ - thread \ - qt -TARGET = ../bin/qgltest -RESOURCES = application.qrc -DISTFILES += ../CMakeLists.txt \ -CMakeLists.txt