Skip to content

Commit 5598b83

Browse files
author
Mischa Spiegelmock
authored
Makefile: qt / jack / pulseaudio (#163)
Major updates to Makefiles, please report any build time issues! Adding/updating makefiles for Qt, Jack, and Pulseadio implementations * detect if we have libpulseaudio, libsdl2, and qt5 and if so just enable them automatically without the user having to. * jack support, travis build with pa/jack/qt * pass config opts * test * test * test * don't always enable sdl * better libsdl2 detection * hopefully fixed qt/pulse/jack makefiles * oops * travis * fix jack subdir * jack fixup * jack makefile * libsdl 1 for jack * jack builds yay (qt version) * testqt * readme * let's always build test * let's always build test * sdl2 for travis build test * qt is required for jack/pulse
1 parent df86fd1 commit 5598b83

File tree

12 files changed

+194
-66
lines changed

12 files changed

+194
-66
lines changed

.travis.yml

Lines changed: 25 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,11 @@ before_install:
66

77
# TODO: test different combinations of flags, --enable-sdl, --enable-qt, etc
88
script:
9-
- ./configure --enable-sdl --prefix=$PWD/local && make -j8 && make install # build from checkout
10-
- make dist && tar -zxf projectM-*.tar.gz && cd projectM-* && ./configure --enable-sdl --prefix=$PWD/dist_install && make -j8 && make install # build from dist
11-
- echo "PWD $PWD"
9+
- ./configure $PM_OPTS --prefix=$PWD/local && make -j6 && make install # build from checkout
10+
- make dist && tar -zxf projectM-*.tar.gz && cd projectM-* && ./configure $PM_OPTS --prefix=$PWD/dist_install && make -j6 && make install # build from dist
11+
- echo "PWD=$PWD"
1212
- ls .
13-
- test -e src/projectM-sdl/projectMSDL
13+
# - test -e src/projectM-sdl/projectMSDL
1414
- test -e src/libprojectM/libprojectM.la
1515
- test -e dist_install/share/projectM/fonts/Vera.ttf
1616
- test -d dist_install/share/projectM/presets
@@ -23,7 +23,7 @@ script:
2323
# test on GCC and Clang
2424
matrix:
2525
include:
26-
# linux/clang
26+
# linux/clang with SDL
2727
- os: linux
2828
addons:
2929
apt:
@@ -35,8 +35,26 @@ matrix:
3535
- libglm-dev
3636
- libc++-dev
3737
env:
38-
- MATRIX_EVAL="CC=clang-5.0 && CXX=clang++-5.0"
39-
# linux/gcc
38+
- MATRIX_EVAL="CC=clang-5.0 CXX=clang++-5.0 PM_OPTS=\"--enable-sdl\""
39+
# linux/clang with pulseaudio/qt/jack
40+
- os: linux
41+
addons:
42+
apt:
43+
sources:
44+
- llvm-toolchain-trusty-5.0
45+
packages:
46+
- libsdl2-dev
47+
- clang-5.0
48+
- libglm-dev
49+
- libc++-dev
50+
- qtdeclarative5-dev
51+
- libqt5opengl5-dev
52+
- libjack-dev
53+
- libpulse-dev
54+
- libsdl-dev # for jack
55+
env:
56+
- MATRIX_EVAL="CC=clang-5.0 CXX=clang++-5.0 PM_OPTS=\"--enable-qt --enable-jack --enable-pulseaudio\""
57+
# linux/gcc
4058
- os: linux
4159
addons:
4260
apt:

Makefile.am

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,9 @@ PRESETSDIR = presets
55
EXTRA_DIST=README.md AUTHORS.txt presets fonts $(PRESETSDIR)
66
CLEANFILES=
77

8+
# stick apps in bin
9+
# bin_PROGRAMS = $(top_builddir)/bin
10+
811
# aka /usr/local/share/projectM
912
pm_data_dir = $(pkgdatadir)
1013
pm_font_dir = $(pm_data_dir)/fonts

README.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[![Build Status](https://travis-ci.org/projectM-visualizer/projectm.svg?branch=master)](https://travis-ci.org/projectM-visualizer/projectm)
22
[![Backers on Open Collective](https://opencollective.com/projectm/backers/badge.svg)](#backers)
3-
[![Sponsors on Open Collective](https://opencollective.com/projectm/sponsors/badge.svg)](#sponsors)
3+
[![Sponsors on Open Collective](https://opencollective.com/projectm/sponsors/badge.svg)](#sponsors)
44

55
![Logo](https://github.com/projectM-visualizer/projectm/raw/master/web/logo.png)
66

@@ -71,7 +71,7 @@ Silverjuke (FOSS Jukebox)
7171
```
7272

7373
## Linux (debian/ubuntu)
74-
* `sudo apt-get install autoconf libtool libsdl2-dev libglm-dev`
74+
* `sudo apt install autoconf libtool libsdl2-dev libglm-dev qtdeclarative5-dev libqt5opengl5-dev libjack-dev libpulse-dev libsdl-dev`
7575

7676
## FreeBSD
7777
* `pkg install gcc autoconf automake libtool mesa-libs libGLU sdl2 glm`
@@ -130,7 +130,7 @@ If you maintain packages of libprojectM, we are happy to work with you! Please n
130130

131131
## Contributors
132132

133-
This project exists thanks to all the people who contribute.
133+
This project exists thanks to all the people who contribute.
134134
<a href="https://github.com/projectM-visualizer/projectm/graphs/contributors"><img src="https://opencollective.com/projectm/contributors.svg?width=890&button=false" /></a>
135135

136136

configure.ac

Lines changed: 106 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
AC_INIT([projectM], [3.1.0], [[email protected]], [projectM], [https://github.com/revmischa/projectm])
1+
AC_INIT([projectM], [3.1.1], [[email protected]], [projectM], [https://github.com/projectM-visualizer/projectm/])
22
AM_INIT_AUTOMAKE([-Wall -Werror foreign subdir-objects tar-pax])
33

44
m4_ifdef([AM_PROG_AR], [AM_PROG_AR])
@@ -72,27 +72,40 @@ AC_CONFIG_FILES([
7272
src/projectM-emscripten/Makefile
7373
src/projectM-qt/Makefile
7474
src/projectM-pulseaudio/Makefile
75+
src/projectM-jack/Makefile
7576
src/projectM-test/Makefile
76-
])
77+
])
7778

78-
dnl SDL
79-
AC_ARG_ENABLE([sdl],
80-
AS_HELP_STRING([--enable-sdl], [Build SDL2 app]),
81-
[], [enable_sdl=no])
82-
AS_IF([test "x$enable_sdl" = "xyes"], [
83-
m4_include([m4/sdl2.m4])
84-
SDL_VERSION=2.0.5
85-
AS_IF([test "$TRAVIS"], [SDL_VERSION=2.0.2]) # travis has old SDL, we don't care
86-
AS_IF([test "EMSCRIPTEN"], [SDL_VERSION=2.0.0]) # emscripten has old SDL, we don't care
87-
AM_PATH_SDL2($SDL_VERSION, :, AC_MSG_ERROR([*** SDL version $SDL_VERSION not found!]))
79+
80+
# SDL
81+
AC_ARG_ENABLE([sdl], AS_HELP_STRING([--enable-sdl], [Build SDL2 application]), [], [enable_sdl=check])
82+
AS_IF([test "$enable_sdl" != "no"], [
83+
PKG_CHECK_MODULES([SDL], [sdl2], [
84+
m4_include([m4/sdl2.m4])
85+
SDL_VERSION="2.0.5"
86+
AS_IF([test "$TRAVIS"], [SDL_VERSION=2.0.2]) # travis has old SDL, we don't care
87+
AS_IF([test "$EMSCRIPTEN"], [SDL_VERSION=2.0.0]) # emscripten has old SDL, we don't care
88+
89+
# Check for libSDL >= $SDL_VERSION
90+
AM_PATH_SDL2($SDL_VERSION,
91+
[enable_sdl=yes],
92+
[AS_IF([test "$enable_sdl" = "yes"], AC_MSG_ERROR([*** SDL version >= $SDL_VERSION not found!])); enable_sdl=no])
93+
],
94+
[
95+
# not found
96+
AS_IF([test "$enable_sdl" = "yes"], AC_MSG_ERROR([*** libsdl2 not found!]))
97+
enable_sdl=no
98+
])
8899
])
89100

90-
dnl glm
101+
102+
# glm
91103
AS_IF([test "x$enable_emscripten" != "xyes"], [
92104
AC_CHECK_HEADER([glm/glm.hpp],, AC_MSG_ERROR(libglm is required.))
93105
])
94106

95-
dnl Threading
107+
108+
# Threading
96109
AC_ARG_ENABLE([threading],
97110
AS_HELP_STRING([--enable-threading], [multhreading]),
98111
[], [enable_threading=yes])
@@ -133,32 +146,82 @@ AX_CHECK_COMPILE_FLAG([-std=c++11], [
133146
CXXFLAGS="$CXXFLAGS -std=c++11"])
134147

135148
dnl Qt
136-
AC_ARG_ENABLE([qt],
137-
AS_HELP_STRING([--enable-qt], [Build Qt]),
138-
[], [enable_qt=no])
139-
AS_IF([test "x$enable_qt" = "xyes"], [
140-
PKG_CHECK_MODULES(QT, [Qt5Core, Qt5Gui, Qt5Widgets Qt5OpenGL], [], [AC_MSG_ERROR([Qt libraries are required.])])
141-
qt_CPPFLAGS="`$PKG_CONFIG --cflags-only-I Qt5Core Qt5Gui Qt5Widgets Qt5OpenGL` $CPPFLAGS"
142-
qt_LDFLAGS="`$PKG_CONFIG --libs-only-L Qt5Core Qt5Gui Qt5Widgets Qt5OpenGL` $LDFLAGS"
143-
qt_LIBS="`$PKG_CONFIG --libs-only-l Qt5Core Qt5Gui Qt5Widgets Qt5OpenGL` $LIBS"
144-
145-
if ! `$PKG_CONFIG --atleast-version=5.0.0 Qt5Core`; then
146-
AC_MSG_ERROR([Qt >= 5.0.0 is required. Try installing qtdeclarative5-dev])
147-
fi
148-
149-
AC_CHECK_PROGS(MOC, [moc-qt5 moc])
150-
AC_CHECK_PROGS(UIC, [uic-qt5 uic])
151-
AC_CHECK_PROGS(RCC, [rcc-qt5 rcc])
152-
if test -z "$MOC" || test -z "$UIC" || test -z "$RCC"; then
153-
AC_MSG_ERROR([Qt utility programs moc, uic, and rcc are required.])
154-
fi
155-
156-
PKG_CHECK_MODULES(LIBPULSE, [libpulse], [], [AC_MSG_ERROR([Pulseaudio library libpulse is required.])])
157-
])
158-
159-
AM_CONDITIONAL([ENABLE_SDL], [test "$enable_sdl" = yes])
160-
AM_CONDITIONAL([ENABLE_QT], [test "$enable_qt" = yes])
161-
AM_CONDITIONAL([ENABLE_EMSCRIPTEN], [test "$enable_emscripten" = yes])
149+
AC_ARG_ENABLE([qt], AS_HELP_STRING([--enable-qt], [Enable Qt: needed for pulseaudio and jack GUIs]), [], [enable_qt=check])
150+
AS_IF([test "$enable_qt" != "no"],
151+
[PKG_CHECK_MODULES([qt],
152+
[Qt5Core, Qt5Gui, Qt5Widgets Qt5OpenGL],
153+
[
154+
enable_qt=yes
155+
156+
# do more checks for Qt version and tools
157+
qt_CPPFLAGS="`$PKG_CONFIG --cflags-only-I Qt5Core Qt5Gui Qt5Widgets Qt5OpenGL` $CPPFLAGS"
158+
qt_LDFLAGS="`$PKG_CONFIG --libs-only-L Qt5Core Qt5Gui Qt5Widgets Qt5OpenGL` $LDFLAGS"
159+
qt_LIBS="`$PKG_CONFIG --libs-only-l Qt5Core Qt5Gui Qt5Widgets Qt5OpenGL` $LIBS"
160+
AC_SUBST(qt_CPPFLAGS)
161+
AC_SUBST(qt_LDFLAGS)
162+
AC_SUBST(qt_LIBS)
163+
164+
if ! `$PKG_CONFIG --atleast-version=5.0.0 Qt5Core`; then
165+
AC_MSG_WARN([Qt >= 5.0.0 is required. Try installing libqt5opengl5-dev qtdeclarative5-dev])
166+
enable_qt=no
167+
fi
168+
169+
AC_CHECK_PROGS(MOC, [moc-qt5 moc])
170+
AC_CHECK_PROGS(UIC, [uic-qt5 uic])
171+
AC_CHECK_PROGS(RCC, [rcc-qt5 rcc])
172+
if test -z "$MOC" || test -z "$UIC" || test -z "$RCC"; then
173+
AC_MSG_WARN([Qt utility programs moc, uic, and rcc are required.])
174+
enable_qt=no
175+
fi
176+
MOC="$MOC -qt=5"
177+
UIC="$UIC -qt=5"
178+
RCC="$RCC -qt=5"
179+
180+
export QT_SELECT=qt5
181+
],
182+
[AS_IF([test "$enable_qt" = "yes"],
183+
[AC_MSG_ERROR(["Qt5 not found"])],
184+
[enable_qt=no])]
185+
)])
186+
187+
188+
# Pulseaudio
189+
AC_ARG_ENABLE([pulseaudio], AS_HELP_STRING([--enable-pulseaudio], [Build Pulseaudio]), [], [enable_pulseaudio=check])
190+
AS_IF([test "$enable_pulseaudio" != "no"],
191+
[PKG_CHECK_MODULES([libpulse],
192+
[libpulse],
193+
[
194+
# still need qt
195+
AS_IF([test "$enable_qt" = "yes"],
196+
[enable_pulseaudio=yes],
197+
[enable_pulseaudio="Qt required"])
198+
],
199+
[AS_IF([test "$enable_pulseaudio" = "yes"],
200+
[AC_MSG_ERROR([libpulse required, but not found.])],
201+
[enable_pulseaudio=no])])])
202+
203+
204+
# Jack
205+
AC_ARG_ENABLE([jack], AS_HELP_STRING([--enable-jack], [Build Jack]), [], [enable_jack=check])
206+
AS_IF([test "$enable_jack" != "no"],
207+
[PKG_CHECK_MODULES([jack],
208+
[jack],
209+
[
210+
# still need qt
211+
AS_IF([test "$enable_qt" = "yes"],
212+
[enable_jack=yes],
213+
[enable_jack="Qt required"])
214+
],
215+
[AS_IF([test "$enable_jack" = "yes"],
216+
[AC_MSG_ERROR([jack required, but not found.])],
217+
[enable_jack=no])])])
218+
219+
220+
AM_CONDITIONAL([ENABLE_SDL], [test "x$enable_sdl" = "xyes"])
221+
AM_CONDITIONAL([ENABLE_QT], [test "x$enable_qt" = "xyes"])
222+
AM_CONDITIONAL([ENABLE_JACK], [test "x$enable_jack" = "xyes"])
223+
AM_CONDITIONAL([ENABLE_PULSEAUDIO], [test "x$enable_pulseaudio" = "xyes"])
224+
AM_CONDITIONAL([ENABLE_EMSCRIPTEN], [test "x$enable_emscripten" = "xyes"])
162225

163226

164227
my_CFLAGS="-Wall -Wchar-subscripts -Wformat-security -Wpointer-arith -Wshadow -Wsign-compare -Wtype-limits "
@@ -192,7 +255,9 @@ Applications:
192255
libprojectM: yes
193256
Threading: ${enable_threading}
194257
SDL: ${enable_sdl}
195-
Qt & Pulseaudio: ${enable_qt}
258+
Qt: ${enable_qt}
259+
Pulseaudio: ${enable_pulseaudio}
260+
Jack: ${enable_jack}
196261
OpenGLES: ${enable_gles}
197262
Emscripten: ${enable_emscripten}
198263
])

src/Makefile.am

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,25 @@
11
if ENABLE_SDL
2-
PROJECTM_SDL_SUBDIR = projectM-sdl projectM-test
2+
PROJECTM_SDL_SUBDIR = projectM-test projectM-sdl
33
endif
44

55
if ENABLE_QT
6-
PROJECTM_QT_SUBDIR = projectM-qt projectM-pulseaudio
6+
PROJECTM_QT_SUBDIR = projectM-qt
7+
endif
8+
9+
if ENABLE_PULSEAUDIO
10+
PROJECTM_PULSEAUDIO_SUBDIR = projectM-qt projectM-pulseaudio
11+
endif
12+
13+
if ENABLE_JACK
14+
PROJECTM_JACK_SUBDIR = projectM-qt projectM-jack
715
endif
816

917
if ENABLE_EMSCRIPTEN
1018
PROJECTM_EMSCRIPTEN_SUBDIR = projectM-emscripten
1119
endif
1220

13-
SUBDIRS=libprojectM NativePresets ${PROJECTM_SDL_SUBDIR} ${PROJECTM_QT_SUBDIR} ${PROJECTM_EMSCRIPTEN_SUBDIR}
14-
1521
# system headers/libraries/data to install
1622
# for compatibility reasons here as nobase_include
1723
nobase_include_HEADERS = libprojectM/projectM.hpp libprojectM/Common.hpp libprojectM/dlldefs.h libprojectM/event.h libprojectM/fatal.h libprojectM/PCM.hpp
24+
25+
SUBDIRS = libprojectM NativePresets ${PROJECTM_SDL_SUBDIR} ${PROJECTM_QT_SUBDIR} ${PROJECTM_EMSCRIPTEN_SUBDIR} ${PROJECTM_JACK_SUBDIR} ${PROJECTM_PULSEAUDIO_SUBDIR}

src/projectM-jack/Makefile.am

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
AM_CPPFLAGS = \
2+
${my_CFLAGS} \
3+
-include $(top_builddir)/config.h \
4+
-DSYSCONFDIR=\""$(sysconfdir)"\" \
5+
-DPROJECTM_PREFIX=\""${prefix}"\" \
6+
-DRESOURCE_PREFIX=\""share/projectM"\" \
7+
-I${top_srcdir}/src/libprojectM \
8+
-I${top_srcdir}/src/libprojectM/Renderer \
9+
-I${top_srcdir}/src/projectM-qt \
10+
${jack_CFLAGS} \
11+
${qt_CPPFLAGS} \
12+
-fPIC \
13+
${qt_CFLAGS}
14+
15+
# TODO: add remote control if we have qxt network lib
16+
# if QT_NETWORK_ENABLED
17+
# EXTRA_SRCS = HTTPRemoteControl.cpp
18+
# endif
19+
20+
21+
# TODO: build qprojectM-jack and projectM-jack as separate programs
22+
23+
bin_PROGRAMS = projectM_jack
24+
projectM_jack_SOURCES = qprojectM-jack.cpp ConfigFile.cpp ${EXTRA_SRCS}
25+
projectM_jack_LDADD = \
26+
../projectM-qt/libprojectM_qt.a \
27+
${jack_LIBS} \
28+
${qt_LIBS} \
29+
../libprojectM/libprojectM.la \
30+
-lSDL
31+
projectM_jack_LDFLAGS = -static -fPIC ${qt_LDFLAGS}
32+
projectM_jack_PROGRAM = projectM-jack
33+
34+
dist_man_MANS = projectM-jack.1

src/projectM-jack/make_bundle.sh

100644100755
File mode changed.

src/projectM-jack/projectM-jack.cpp

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
#include <iostream>
3232
#include <stdio.h>
3333
#include <unistd.h>
34+
#include <sys/stat.h>
3435

3536
#include <jack/jack.h>
3637

@@ -384,5 +385,3 @@ int main( int argc, char **argv ) {
384385

385386
return 1;
386387
}
387-
388-

src/projectM-jack/video_init.cpp

100755100644
File mode changed.

src/projectM-jack/video_init.h

100755100644
File mode changed.

0 commit comments

Comments
 (0)