From aa5e138c68d2090fd0a812a976a07184bc860ec5 Mon Sep 17 00:00:00 2001 From: Mischa Spiegelmock Date: Sat, 25 Jul 2020 10:53:41 +0300 Subject: [PATCH 01/12] testing bionic on travis --- .travis.yml | 19 ++++++++++++++++++- BUILDING.md | 19 ++++++++++++------- configure.ac | 2 +- 3 files changed, 31 insertions(+), 9 deletions(-) diff --git a/.travis.yml b/.travis.yml index 2546720968..18aeb35a64 100644 --- a/.travis.yml +++ b/.travis.yml @@ -36,8 +36,25 @@ script: # test on GCC and Clang matrix: include: - # pulseaudio/qt/jack + # qt/pulseaudio/jack/sdl - os: linux + dist: bionic + addons: + apt: + packages: + - libglm-dev + - qt5-default + - qtdeclarative5-dev + - libqt5opengl5-dev + - libjack-dev + - libpulse-dev + - libc++-dev + - libsdl-dev # for jack + - libsdl2-dev # for tests + env: + - MATRIX_EVAL="PM_OPTS=\"--enable-qt --enable-jack --enable-pulseaudio --enable-sdl\"" + - os: linux + dist: xenial addons: apt: packages: diff --git a/BUILDING.md b/BUILDING.md index 9b02b866db..6fef6edd5b 100644 --- a/BUILDING.md +++ b/BUILDING.md @@ -6,19 +6,18 @@ Relevant for Linux distributions, FreeBSD, macOS: * `autotools` `autoconf` * `libtool`, or at least `pkg-config` * `which` - * `libglm-dev` Main build options & their requirements: | Configure flag | Required dependency | Produced binary | |-----------------|-------------------------------------------------------------------- |----------------------- | -| `--enable-sdl` | `libsdl2-dev` | `projectMSDL` | -| `--enable-qt` | `qt5-default` `qtdeclarative5-dev` `libpulse-dev` `libqt5opengl5` | `projectM-pulseaudio` | +| `--enable-sdl` | `libsdl2-dev` `libglm-dev` | `projectMSDL` | +| `--enable-pulseaudio` | `qt5-default` `qtdeclarative5-dev` `libpulse-dev` `libqt5opengl5` | `projectM-pulseaudio` | | `--enable-jack` | `libjack2-dev`OR`libjack1-dev`; `qt5-default` `qtdeclarative5-dev` `libqt5opengl5`| `projectM-jack` | #### Additional information on dependencies -* `libglm` (headers only) for matrix math is required. +* `libglm` (headers only) for matrix math is required. * A modified version of `hlslparser` is included in Renderer and used to transpile HLSL shaders to GLSL * OpenGL 3+ or OpenGLES is required * `libsdl >= 2.0.5` is required for the SDL and emscripten apps. `src/projectM-sdl` is the current reference application implementation. maybe try getting that to build and run as your testbench. @@ -27,15 +26,18 @@ If extra information needed - you can refere to `configure.ac` and the assorted ### Building process under *nix systems ```sh -autoreconf --install # only needed if this is a git clone -# For macOS automation there is ./autogen.sh provided for autoreconf - +./autogen.sh ./configure --enable-sdl # supply additional options here, info in Dependencies make sudo make install ``` +### Debian/Ubuntu/Mint +```sh +sudo apt install clang libsdl1.2-dev libsdl2-dev libglm-dev libgl1-mesa-dev qt5-default qtdeclarative5-dev libqt5opengl5-dev libjack-dev libpulse-dev +``` + ### OpenGL ES projectM supports OpenGL ES 3 for embedded systems. Be sure to configure with the `--enable--gles` flag. @@ -60,6 +62,9 @@ make && make install-strip Now you should be able to copy ./src/libprojectM/.libs/libprojectM.so and appropriate headers to projectm-android, and build it using Android Studio +### LLVM JIT +There are some optmizations for parsing preset equations that leverage the LLVM JIT. You can try `./compile --enable--llvm` to enable them. They may not work with newer version of LLVM (https://github.com/projectM-visualizer/projectm/pull/360) + ## libprojectM diff --git a/configure.ac b/configure.ac index 01d6ae8309..f6becaf5e6 100644 --- a/configure.ac +++ b/configure.ac @@ -1,4 +1,4 @@ -AC_INIT([projectM], [3.1.5], [mischa@mvstg.biz], [projectM], [https://github.com/projectM-visualizer/projectm/]) +AC_INIT([projectM],[3.1.5],[mischa@mvstg.biz],[projectM],[https://github.com/projectM-visualizer/projectm/]) AM_INIT_AUTOMAKE([-Wall -Werror foreign subdir-objects tar-pax]) m4_ifdef([AM_PROG_AR], [AM_PROG_AR]) From de9781681a3aea0bf357017b1873a527a5966acc Mon Sep 17 00:00:00 2001 From: Mischa Spiegelmock Date: Sat, 25 Jul 2020 10:58:40 +0300 Subject: [PATCH 02/12] table cleanup --- BUILDING.md | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/BUILDING.md b/BUILDING.md index 6fef6edd5b..b92ca0beab 100644 --- a/BUILDING.md +++ b/BUILDING.md @@ -10,11 +10,12 @@ Relevant for Linux distributions, FreeBSD, macOS: Main build options & their requirements: -| Configure flag | Required dependency | Produced binary | -|-----------------|-------------------------------------------------------------------- |----------------------- | -| `--enable-sdl` | `libsdl2-dev` `libglm-dev` | `projectMSDL` | -| `--enable-pulseaudio` | `qt5-default` `qtdeclarative5-dev` `libpulse-dev` `libqt5opengl5` | `projectM-pulseaudio` | -| `--enable-jack` | `libjack2-dev`OR`libjack1-dev`; `qt5-default` `qtdeclarative5-dev` `libqt5opengl5`| `projectM-jack` | +| Configure flag | Required dependency | Produced binary | +|-----------------------|----------------------------------------------------------------------------------------|-----------------------| +| `*` | `libglm-dev` | | +| `--enable-sdl` | `libsdl2-dev` | `projectMSDL` | +| `--enable-pulseaudio` | `qt5-default` `qtdeclarative5-dev` `libpulse-dev` `libqt5opengl5-dev` | `projectM-pulseaudio` | +| `--enable-jack` | `libjack2-dev`OR`libjack1-dev`; `qt5-default` `qtdeclarative5-dev` `libqt5opengl5-dev` | `projectM-jack` | #### Additional information on dependencies * `libglm` (headers only) for matrix math is required. @@ -36,6 +37,7 @@ sudo make install ### Debian/Ubuntu/Mint ```sh sudo apt install clang libsdl1.2-dev libsdl2-dev libglm-dev libgl1-mesa-dev qt5-default qtdeclarative5-dev libqt5opengl5-dev libjack-dev libpulse-dev +./configure && make -j4 && sudo make install ``` ### OpenGL ES From e5774714370f8263954ed71d7196056a53480ed6 Mon Sep 17 00:00:00 2001 From: Mischa Spiegelmock Date: Sat, 25 Jul 2020 11:01:24 +0300 Subject: [PATCH 03/12] Test building on travis without libsdl1 --- .travis.yml | 6 ++---- BUILDING.md | 2 +- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/.travis.yml b/.travis.yml index 18aeb35a64..7aca889e8a 100644 --- a/.travis.yml +++ b/.travis.yml @@ -49,8 +49,7 @@ matrix: - libjack-dev - libpulse-dev - libc++-dev - - libsdl-dev # for jack - - libsdl2-dev # for tests + - libsdl2-dev env: - MATRIX_EVAL="PM_OPTS=\"--enable-qt --enable-jack --enable-pulseaudio --enable-sdl\"" - os: linux @@ -65,8 +64,7 @@ matrix: - libjack-dev - libpulse-dev - libc++-dev - - libsdl-dev # for jack - - libsdl2-dev # for tests + - libsdl2-dev env: - MATRIX_EVAL="PM_OPTS=\"--enable-qt --enable-jack --enable-pulseaudio --enable-sdl\"" diff --git a/BUILDING.md b/BUILDING.md index b92ca0beab..e7120fa221 100644 --- a/BUILDING.md +++ b/BUILDING.md @@ -36,7 +36,7 @@ sudo make install ### Debian/Ubuntu/Mint ```sh -sudo apt install clang libsdl1.2-dev libsdl2-dev libglm-dev libgl1-mesa-dev qt5-default qtdeclarative5-dev libqt5opengl5-dev libjack-dev libpulse-dev +sudo apt install clang libsdl2-dev libglm-dev libgl1-mesa-dev qt5-default qtdeclarative5-dev libqt5opengl5-dev libjack-dev libpulse-dev ./configure && make -j4 && sudo make install ``` From eb068461dce35672f5e516266a093a17c1d014f9 Mon Sep 17 00:00:00 2001 From: Mischa Spiegelmock Date: Sat, 25 Jul 2020 11:05:00 +0300 Subject: [PATCH 04/12] test --- .travis.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index 7aca889e8a..baad646dd2 100644 --- a/.travis.yml +++ b/.travis.yml @@ -42,7 +42,6 @@ matrix: addons: apt: packages: - - libglm-dev - qt5-default - qtdeclarative5-dev - libqt5opengl5-dev @@ -57,7 +56,6 @@ matrix: addons: apt: packages: - - libglm-dev - qt5-default - qtdeclarative5-dev - libqt5opengl5-dev From ad1bdc7d32348f2bdc95123cd80198d7776efb35 Mon Sep 17 00:00:00 2001 From: Mischa Spiegelmock Date: Sat, 25 Jul 2020 11:21:38 +0300 Subject: [PATCH 05/12] Try to parse version for travis script --- .travis.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index baad646dd2..5def613a65 100644 --- a/.travis.yml +++ b/.travis.yml @@ -20,7 +20,8 @@ addons: script: - ./configure $PM_OPTS --prefix=$PWD/local && make -j6 && make install # build from checkout - - make dist && tar -zxf projectM-*.tar.gz && cd projectM-* && ./configure $PM_OPTS --prefix=$PWD/dist_install && make -j6 && make install # build from dist + - export PMVER=$(./configure --version | grep -P '([\d\.]+){3}' -m 1 -o) # get pM version + - make dist && tar -zxf projectM-${PMVER}.tar.gz && cd projectM-${PMVER} && ./configure $PM_OPTS --prefix=$PWD/dist_install && make -j6 && make install # build from dist - echo "PWD=$PWD" - ls . - test -e src/projectM-sdl/projectMSDL From 8e9bae9fe637e7316026811c8280a898f3ed6d38 Mon Sep 17 00:00:00 2001 From: Mischa Spiegelmock Date: Sat, 25 Jul 2020 11:23:26 +0300 Subject: [PATCH 06/12] disable addons/apt --- .travis.yml | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/.travis.yml b/.travis.yml index 5def613a65..93e5ebca44 100644 --- a/.travis.yml +++ b/.travis.yml @@ -10,13 +10,13 @@ before_install: - eval "${MATRIX_EVAL}" - if [ $TRAVIS_OS_NAME == "osx" ]; then sudo sntp -sS time.apple.com; fi -addons: - apt: - packages: - - libc++-dev - - libsdl2-dev - - libglm-dev - - libgl1-mesa-dev +# addons: +# apt: +# packages: +# - libc++-dev +# - libsdl2-dev +# - libglm-dev +# - libgl1-mesa-dev script: - ./configure $PM_OPTS --prefix=$PWD/local && make -j6 && make install # build from checkout @@ -43,6 +43,7 @@ matrix: addons: apt: packages: + - libglm-dev - qt5-default - qtdeclarative5-dev - libqt5opengl5-dev @@ -57,6 +58,7 @@ matrix: addons: apt: packages: + - libglm-dev - qt5-default - qtdeclarative5-dev - libqt5opengl5-dev From 515fb16eb31507035493a2b51a0355bba93a84f8 Mon Sep 17 00:00:00 2001 From: Mischa Spiegelmock Date: Sat, 25 Jul 2020 11:26:45 +0300 Subject: [PATCH 07/12] gl1-mesa-dev --- .travis.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.travis.yml b/.travis.yml index 93e5ebca44..5ee73c68f1 100644 --- a/.travis.yml +++ b/.travis.yml @@ -44,6 +44,7 @@ matrix: apt: packages: - libglm-dev + - libgl1-mesa-dev - qt5-default - qtdeclarative5-dev - libqt5opengl5-dev @@ -59,6 +60,7 @@ matrix: apt: packages: - libglm-dev + - libgl1-mesa-dev - qt5-default - qtdeclarative5-dev - libqt5opengl5-dev From dc3cea96bef9b380c7e61dc1579272ada95fd373 Mon Sep 17 00:00:00 2001 From: Mischa Spiegelmock Date: Sat, 25 Jul 2020 11:29:32 +0300 Subject: [PATCH 08/12] bleh --- .travis.yml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/.travis.yml b/.travis.yml index 5ee73c68f1..f2182efbac 100644 --- a/.travis.yml +++ b/.travis.yml @@ -10,13 +10,13 @@ before_install: - eval "${MATRIX_EVAL}" - if [ $TRAVIS_OS_NAME == "osx" ]; then sudo sntp -sS time.apple.com; fi -# addons: -# apt: -# packages: -# - libc++-dev -# - libsdl2-dev -# - libglm-dev -# - libgl1-mesa-dev +addons: + apt: + packages: + - libc++-dev + - libsdl2-dev + - libglm-dev + - libgl1-mesa-dev script: - ./configure $PM_OPTS --prefix=$PWD/local && make -j6 && make install # build from checkout From a7e932db7beb7d13fa0ba585d06fa3512a573a3a Mon Sep 17 00:00:00 2001 From: Mischa Spiegelmock Date: Sat, 25 Jul 2020 19:43:07 +0300 Subject: [PATCH 09/12] revert --- configure.ac | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configure.ac b/configure.ac index f6becaf5e6..01d6ae8309 100644 --- a/configure.ac +++ b/configure.ac @@ -1,4 +1,4 @@ -AC_INIT([projectM],[3.1.5],[mischa@mvstg.biz],[projectM],[https://github.com/projectM-visualizer/projectm/]) +AC_INIT([projectM], [3.1.5], [mischa@mvstg.biz], [projectM], [https://github.com/projectM-visualizer/projectm/]) AM_INIT_AUTOMAKE([-Wall -Werror foreign subdir-objects tar-pax]) m4_ifdef([AM_PROG_AR], [AM_PROG_AR]) From 141bec7769aece6e50721534b7f9ab6afc56e2f6 Mon Sep 17 00:00:00 2001 From: Mischa Spiegelmock Date: Sat, 25 Jul 2020 20:55:31 +0300 Subject: [PATCH 10/12] hopefully more portable hack --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index f2182efbac..54d929f378 100644 --- a/.travis.yml +++ b/.travis.yml @@ -20,7 +20,7 @@ addons: script: - ./configure $PM_OPTS --prefix=$PWD/local && make -j6 && make install # build from checkout - - export PMVER=$(./configure --version | grep -P '([\d\.]+){3}' -m 1 -o) # get pM version + - export PMVER=$(./configure --version | cut -d ' ' -f 3 | grep -m 1 .) # get pM version - make dist && tar -zxf projectM-${PMVER}.tar.gz && cd projectM-${PMVER} && ./configure $PM_OPTS --prefix=$PWD/dist_install && make -j6 && make install # build from dist - echo "PWD=$PWD" - ls . From 953e4cc5b99efbb0a822def90899bac36fb60ca9 Mon Sep 17 00:00:00 2001 From: Mischa Spiegelmock Date: Sun, 26 Jul 2020 21:34:00 +0300 Subject: [PATCH 11/12] Don't require user to provide libglm --- .travis.yml | 4 +--- BUILDING.md | 6 ++---- configure.ac | 16 ++++++++-------- 3 files changed, 11 insertions(+), 15 deletions(-) diff --git a/.travis.yml b/.travis.yml index 2546720968..89acf77971 100644 --- a/.travis.yml +++ b/.travis.yml @@ -15,7 +15,6 @@ addons: packages: - libc++-dev - libsdl2-dev - - libglm-dev - libgl1-mesa-dev script: @@ -41,7 +40,6 @@ matrix: addons: apt: packages: - - libglm-dev - qt5-default - qtdeclarative5-dev - libqt5opengl5-dev @@ -57,7 +55,7 @@ matrix: - os: osx osx_image: xcode10 env: - - MATRIX_EVAL="brew update && brew install sdl2 glm" + - MATRIX_EVAL="brew update && brew install sdl2" notifications: email: diff --git a/BUILDING.md b/BUILDING.md index 9b02b866db..8de9b7a18e 100644 --- a/BUILDING.md +++ b/BUILDING.md @@ -7,8 +7,6 @@ Relevant for Linux distributions, FreeBSD, macOS: * `libtool`, or at least `pkg-config` * `which` -* `libglm-dev` - Main build options & their requirements: | Configure flag | Required dependency | Produced binary | @@ -18,7 +16,7 @@ Main build options & their requirements: | `--enable-jack` | `libjack2-dev`OR`libjack1-dev`; `qt5-default` `qtdeclarative5-dev` `libqt5opengl5`| `projectM-jack` | #### Additional information on dependencies -* `libglm` (headers only) for matrix math is required. +* `libglm` (headers only) for matrix math is required. lives in `vendor/glm`. * A modified version of `hlslparser` is included in Renderer and used to transpile HLSL shaders to GLSL * OpenGL 3+ or OpenGLES is required * `libsdl >= 2.0.5` is required for the SDL and emscripten apps. `src/projectM-sdl` is the current reference application implementation. maybe try getting that to build and run as your testbench. @@ -46,7 +44,7 @@ projectM supports OpenGL ES 3 for embedded systems. Be sure to configure with th ### Building on Windows Windows build bypasses the autogen/configure pipeline and uses the Visual Studio/MSVC files in `msvc/`. See `.appveyor.yml` for command line building. -Some dependencies are included verbatim (glew), while others leverage the NuGet ecosystem and are downloaded automatically (glm, sdl2). +Some dependencies are included verbatim (glew), while others leverage the NuGet ecosystem and are downloaded automatically (sdl2). ### Build using NDK for Android Install Android Studio, launch SDK Manager and install NDK diff --git a/configure.ac b/configure.ac index 42c51119f8..341d261032 100644 --- a/configure.ac +++ b/configure.ac @@ -1,4 +1,4 @@ -AC_INIT([projectM], [3.1.6], [me@mish.dev], [projectM], [https://github.com/projectM-visualizer/projectm/]) +AC_INIT([projectM], [3.1.7], [me@mish.dev], [projectM], [https://github.com/projectM-visualizer/projectm/]) AM_INIT_AUTOMAKE([-Wall -Werror foreign subdir-objects tar-pax]) m4_ifdef([AM_PROG_AR], [AM_PROG_AR]) @@ -103,12 +103,6 @@ AS_IF([test "$enable_sdl" != "no"], [ ]) -# glm -AS_IF([test "x$enable_emscripten" != "xyes"], [ - AC_CHECK_HEADER([glm/glm.hpp],, AC_MSG_ERROR(libglm is required.)) -]) - - # Threading AC_ARG_ENABLE([threading], AS_HELP_STRING([--enable-threading], [multhreading]), @@ -240,11 +234,17 @@ AM_CONDITIONAL([ENABLE_PRESET_SUBDIRS], [test "x$enable_preset_subdirs" = "xyes" my_CFLAGS="-Wall -Wchar-subscripts -Wformat-security -Wpointer-arith -Wshadow -Wsign-compare -Wtype-limits" #my_CFLAGS+="-fsanitize=address -fno-omit-frame-pointer " my_CFLAGS="${my_CFLAGS} -DDATADIR_PATH=\\\"\"\$(pkgdatadir)\\\"\"" -my_CFLAGS="${my_CFLAGS} -I\$(top_srcdir)/vendor" +my_CFLAGS="${my_CFLAGS} -I\"\$(top_srcdir)/vendor\"" # provides glm headers my_CFLAGS="${my_CFLAGS} -DGL_SILENCE_DEPRECATION" AC_SUBST([my_CFLAGS]) +# glm (vendored, this should never fail; headers are in vendor/glm) +AC_SUBST(CPPFLAGS, "$CPPFLAGS -I${srcdir}/vendor") +AS_IF([test "x$enable_emscripten" != "xyes"], [ + AC_CHECK_HEADER([glm/glm.hpp],, AC_MSG_ERROR(vendored libglm not found.)) +]) + AC_OUTPUT From eff67de91ab5648cdac55b0b0c39308221d307ec Mon Sep 17 00:00:00 2001 From: Mischa Spiegelmock Date: Sun, 26 Jul 2020 23:33:05 +0300 Subject: [PATCH 12/12] dist vendor --- Makefile.am | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile.am b/Makefile.am index 856ef93cd5..be8efb1acf 100644 --- a/Makefile.am +++ b/Makefile.am @@ -2,7 +2,7 @@ ACLOCAL_AMFLAGS=-I m4 AM_CPPFLAGS=-DDATADIR_PATH='"${pkgdatadir}"' SUBDIRS=src PRESETSDIR=presets -EXTRA_DIST=README.md AUTHORS.txt presets fonts $(PRESETSDIR) +EXTRA_DIST=README.md AUTHORS.txt presets fonts vendor $(PRESETSDIR) CLEANFILES=dist # stick apps in bin