Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
66 changes: 58 additions & 8 deletions .github/workflows/build.yaml → .github/workflows/buildcheck.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -15,21 +15,35 @@ jobs:
- name: Install Build Dependencies
run: |
sudo apt update
sudo apt install build-essential libgl1-mesa-dev mesa-common-dev libsdl2-dev libpoco-dev ninja-build libssl-dev
sudo apt install build-essential libgl1-mesa-dev mesa-common-dev libsdl2-dev libpoco-dev ninja-build libssl-dev libfreetype6-dev

# We need to build/link Poco ourselves as static libraries, because Ubuntu Jammy ships with a broken Poco 1.11.0
- name: Checkout Poco Sources
uses: actions/checkout@v4
with:
repository: pocoproject/poco
path: poco
ref: 'poco-1.12.2'
ref: 'poco-1.14.1'
submodules: recursive

- name: Build Poco
run: |
mkdir cmake-build-poco
cmake -G Ninja -S poco -B cmake-build-poco -DBUILD_SHARED_LIBS=OFF -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=${{ github.workspace }}/install-poco -DENABLE_MONGODB=OFF -DENABLE_REDIS=OFF -DENABLE_PAGECOMPILER=OFF -DENABLE_PAGECOMPILER_FILE2PAGE=OFF -DENABLE_ACTIVERECORD=OFF -DENABLE_ACTIVERECORD_COMPILER=OFF -DENABLE_DATA_ODBC=OFF -DENABLE_DATA_POSTGRESQL=OFF -DENABLE_DATA_MYSQL=OFF -DENABLE_JWT=OFF -DENABLE_PROMETHEUS=OFF
cmake -G Ninja -S poco -B cmake-build-poco \
-DBUILD_SHARED_LIBS=OFF \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX=${{ github.workspace }}/install-poco \
-DENABLE_MONGODB=OFF \
-DENABLE_REDIS=OFF \
-DENABLE_PAGECOMPILER=OFF \
-DENABLE_PAGECOMPILER_FILE2PAGE=OFF \
-DENABLE_ACTIVERECORD=OFF \
-DENABLE_ACTIVERECORD_COMPILER=OFF \
-DENABLE_DATA_ODBC=OFF \
-DENABLE_DATA_POSTGRESQL=OFF \
-DENABLE_DATA_MYSQL=OFF \
-DENABLE_JWT=OFF \
-DENABLE_PROMETHEUS=OFF
cmake --build cmake-build-poco --parallel
cmake --install "${{ github.workspace }}/cmake-build-poco"

Expand All @@ -43,7 +57,10 @@ jobs:
- name: Build/Install libprojectM
run: |
mkdir cmake-build-libprojectm
cmake -G Ninja -S projectm -B cmake-build-libprojectm -DBUILD_SHARED_LIBS=OFF -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=${{ github.workspace }}/install-libprojectm
cmake -G Ninja -S projectm -B cmake-build-libprojectm \
-DBUILD_SHARED_LIBS=OFF \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX=${{ github.workspace }}/install-libprojectm
cmake --build cmake-build-libprojectm --parallel
cmake --install "${{ github.workspace }}/cmake-build-libprojectm"

Expand All @@ -56,9 +73,22 @@ jobs:
- name: Build frontend-sdl2
run: |
mkdir cmake-build-frontend-sdl2
cmake -G Ninja -S frontend-sdl2 -B cmake-build-frontend-sdl2 -DCMAKE_BUILD_TYPE=Release "-DCMAKE_PREFIX_PATH=${GITHUB_WORKSPACE}/install-libprojectm;${GITHUB_WORKSPACE}/install-poco" "-DCMAKE_INSTALL_PREFIX=${{ github.workspace }}/install-frontend-sdl2"
cmake -G Ninja -S frontend-sdl2 -B cmake-build-frontend-sdl2 \
-DCMAKE_BUILD_TYPE=Release \
"-DCMAKE_PREFIX_PATH=${GITHUB_WORKSPACE}/install-libprojectm;${GITHUB_WORKSPACE}/install-poco" \
"-DCMAKE_INSTALL_PREFIX=${{ github.workspace }}/install-frontend-sdl2"
cmake --build cmake-build-frontend-sdl2 --parallel
# cmake --install "${{ github.workspace }}/cmake-build-frontend-sdl2"

- name: Package projectMSDL
run: |
cd cmake-build-frontend-sdl2
cpack -G DEB

- name: Upload Artifact
uses: actions/upload-artifact@v4
with:
name: projectMSDL-buildcheck-linux
path: cmake-build-frontend-sdl2/*.deb

build-windows:
name: Windows, x64
Expand Down Expand Up @@ -121,7 +151,17 @@ jobs:
mkdir cmake-build-frontend-sdl2
cmake -G "Visual Studio 17 2022" -A "X64" -S "${{ github.workspace }}/frontend-sdl2" -B "${{ github.workspace }}/cmake-build-frontend-sdl2" -DCMAKE_TOOLCHAIN_FILE="${{ github.workspace }}/vcpkg/scripts/buildsystems/vcpkg.cmake" -DVCPKG_TARGET_TRIPLET=x64-windows-static -DCMAKE_PREFIX_PATH="${{ github.workspace }}/install-libprojectm" -DCMAKE_INSTALL_PREFIX="${{ github.workspace }}/install-frontend-sdl2" -DCMAKE_MSVC_RUNTIME_LIBRARY="MultiThreaded$<$<CONFIG:Debug>:Debug>" -DCMAKE_VERBOSE_MAKEFILE=YES -DSDL2_LINKAGE=static -DBUILD_TESTING=YES
cmake --build "${{ github.workspace }}/cmake-build-frontend-sdl2" --parallel --config Release
# cmake --install "${{ github.workspace }}/cmake-build-frontend-sdl2" --config Release

- name: Package projectMSDL
run: |
cd cmake-build-frontend-sdl2
cpack -G ZIP

- name: Upload Artifact
uses: actions/upload-artifact@v4
with:
name: projectMSDL-buildcheck-windows
path: cmake-build-frontend-sdl2/*.zip

build-darwin:
name: macOS, x86_64
Expand Down Expand Up @@ -156,4 +196,14 @@ jobs:
mkdir cmake-build-frontend-sdl2
cmake -G Ninja -S "${{ github.workspace }}/frontend-sdl2" -B "${{ github.workspace }}/cmake-build-frontend-sdl2" -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="${{ github.workspace }}/install-libprojectm" -DCMAKE_INSTALL_PREFIX="${{ github.workspace }}/install-frontend-sdl2"
cmake --build "${{ github.workspace }}/cmake-build-frontend-sdl2" --parallel
# cmake --install "${{ github.workspace }}/cmake-build-frontend-sdl2"

- name: Package projectMSDL
run: |
cd cmake-build-frontend-sdl2
cpack -G TGZ

- name: Upload Artifact
uses: actions/upload-artifact@v4
with:
name: projectMSDL-buildcheck-macos
path: cmake-build-frontend-sdl2/*.tar.gz
213 changes: 213 additions & 0 deletions .github/workflows/release-linux.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,213 @@
# Release workflow for Linux
# Builds a 64-bit binary on Ubuntu 22.04, which should ideally run on most other Linux distros as well.
# To reduce issues with audio drivers and font rendering, the SDL2 and freetype libraries will be linked as a shared library
# while POCO will be linked statically.
name: Build Release Package for Linux

on: workflow_dispatch

jobs:
build-deb:
name: DEB Package, Ubuntu Linux 22.04 x86_64
runs-on: ubuntu-22.04

steps:

- name: Install Build Dependencies
run: |
sudo apt update
sudo apt install build-essential libgl1-mesa-dev mesa-common-dev libsdl2-dev ninja-build libssl-dev libfreetype6-dev

# We need to build/link Poco ourselves as static libraries, because Ubuntu Jammy ships with a broken Poco 1.11.0
# and other distros may ship different versions as well. POCO as a C++ library has no stable ABI, so each minor
# release increments the SO version by one.
- name: Checkout Poco Sources
uses: actions/checkout@v4
with:
repository: pocoproject/poco
path: poco
ref: 'poco-1.14.1'
submodules: recursive

- name: Build Poco
run: |
mkdir cmake-build-poco
cmake -G Ninja -S poco -B cmake-build-poco \
-DBUILD_SHARED_LIBS=OFF \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX=${{ github.workspace }}/install-poco \
-DENABLE_MONGODB=OFF \
-DENABLE_REDIS=OFF \
-DENABLE_PAGECOMPILER=OFF \
-DENABLE_PAGECOMPILER_FILE2PAGE=OFF \
-DENABLE_ACTIVERECORD=OFF \
-DENABLE_ACTIVERECORD_COMPILER=OFF \
-DENABLE_DATA_ODBC=OFF \
-DENABLE_DATA_POSTGRESQL=OFF \
-DENABLE_DATA_MYSQL=OFF \
-DENABLE_JWT=OFF \
-DENABLE_PROMETHEUS=OFF
cmake --build cmake-build-poco --parallel
cmake --install "${{ github.workspace }}/cmake-build-poco"

- name: Checkout libprojectM Sources
uses: actions/checkout@v4
with:
repository: projectM-visualizer/projectm
path: projectm
submodules: recursive

- name: Build/Install libprojectM
run: |
mkdir cmake-build-libprojectm
cmake -G Ninja -S projectm -B cmake-build-libprojectm \
-DBUILD_SHARED_LIBS=OFF \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX=${{ github.workspace }}/install-libprojectm
cmake --build cmake-build-libprojectm --parallel
cmake --install "${{ github.workspace }}/cmake-build-libprojectm"

- name: Checkout frontend-sdl2 Sources
uses: actions/checkout@v4
with:
path: frontend-sdl2
submodules: recursive

- name: Checkout Cream of the Crop preset pack
uses: actions/checkout@v4
with:
repository: projectM-visualizer/presets-cream-of-the-crop
path: presets-cream-of-the-crop

- name: Checkout Milkdrop Texture Pack
uses: actions/checkout@v4
with:
repository: projectM-visualizer/presets-milkdrop-texture-pack
path: presets-milkdrop-texture-pack

- name: Build frontend-sdl2
run: |
mkdir cmake-build-frontend-sdl2
cmake -G Ninja -S frontend-sdl2 -B cmake-build-frontend-sdl2 \
-DCMAKE_BUILD_TYPE=Release \
"-DCMAKE_PREFIX_PATH=${GITHUB_WORKSPACE}/install-libprojectm;${GITHUB_WORKSPACE}/install-poco" \
"-DPRESET_DIRS=${{ github.workspace }}/presets-cream-of-the-crop" \
"-DTEXTURE_DIRS=${{ github.workspace }}/presets-milkdrop-texture-pack/textures" \
'-DDEFAULT_CONFIG_PATH=${application.dir}/../share/projectMSDL/' \
'-DDEFAULT_PRESETS_PATH=${application.dir}/../share/projectMSDL/presets/' \
'-DDEFAULT_TEXTURES_PATH=${application.dir}/../share/projectMSDL/textures/'
cmake --build cmake-build-frontend-sdl2 --parallel

- name: Package projectMSDL
run: |
cd cmake-build-frontend-sdl2
cpack -G DEB

- name: Upload Artifact
uses: actions/upload-artifact@v4
with:
name: projectMSDL-Linux-DEB-x86_64
path: cmake-build-frontend-sdl2/*.deb

build-tgz:
name: Portable, Ubuntu Linux 22.04 x86_64
runs-on: ubuntu-22.04

steps:

- name: Install Build Dependencies
run: |
sudo apt update
sudo apt install build-essential libgl1-mesa-dev mesa-common-dev libsdl2-dev ninja-build libssl-dev libfreetype6-dev

# We need to build/link Poco ourselves as static libraries, because Ubuntu Jammy ships with a broken Poco 1.11.0
# and other distros may ship different versions as well. POCO as a C++ library has no stable ABI, so each minor
# release increments the SO version by one.
- name: Checkout Poco Sources
uses: actions/checkout@v4
with:
repository: pocoproject/poco
path: poco
ref: 'poco-1.14.1'
submodules: recursive

- name: Build Poco
run: |
mkdir cmake-build-poco
cmake -G Ninja -S poco -B cmake-build-poco \
-DBUILD_SHARED_LIBS=OFF \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX=${{ github.workspace }}/install-poco \
-DENABLE_MONGODB=OFF \
-DENABLE_REDIS=OFF \
-DENABLE_PAGECOMPILER=OFF \
-DENABLE_PAGECOMPILER_FILE2PAGE=OFF \
-DENABLE_ACTIVERECORD=OFF \
-DENABLE_ACTIVERECORD_COMPILER=OFF \
-DENABLE_DATA_ODBC=OFF \
-DENABLE_DATA_POSTGRESQL=OFF \
-DENABLE_DATA_MYSQL=OFF \
-DENABLE_JWT=OFF \
-DENABLE_PROMETHEUS=OFF
cmake --build cmake-build-poco --parallel
cmake --install "${{ github.workspace }}/cmake-build-poco"

- name: Checkout libprojectM Sources
uses: actions/checkout@v4
with:
repository: projectM-visualizer/projectm
path: projectm
submodules: recursive

- name: Build/Install libprojectM
run: |
mkdir cmake-build-libprojectm
cmake -G Ninja -S projectm -B cmake-build-libprojectm \
-DBUILD_SHARED_LIBS=OFF \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX=${{ github.workspace }}/install-libprojectm
cmake --build cmake-build-libprojectm --parallel
cmake --install "${{ github.workspace }}/cmake-build-libprojectm"

- name: Checkout frontend-sdl2 Sources
uses: actions/checkout@v4
with:
path: frontend-sdl2
submodules: recursive

- name: Checkout Cream of the Crop preset pack
uses: actions/checkout@v4
with:
repository: projectM-visualizer/presets-cream-of-the-crop
path: presets-cream-of-the-crop

- name: Checkout Milkdrop Texture Pack
uses: actions/checkout@v4
with:
repository: projectM-visualizer/presets-milkdrop-texture-pack
path: presets-milkdrop-texture-pack

- name: Build frontend-sdl2
run: |
mkdir cmake-build-frontend-sdl2
cmake -G Ninja -S frontend-sdl2 -B cmake-build-frontend-sdl2 \
-DCMAKE_BUILD_TYPE=Release \
"-DCMAKE_PREFIX_PATH=${GITHUB_WORKSPACE}/install-libprojectm;${GITHUB_WORKSPACE}/install-poco" \
"-DPRESET_DIRS=${{ github.workspace }}/presets-cream-of-the-crop" \
"-DTEXTURE_DIRS=${{ github.workspace }}/presets-milkdrop-texture-pack/textures" \
'-DDEFAULT_CONFIG_PATH=${application.dir}/' \
'-DDEFAULT_PRESETS_PATH=${application.dir}/presets/' \
'-DDEFAULT_TEXTURES_PATH=${application.dir}/textures/' \
-DENABLE_FLAT_PACKAGE=ON
cmake --build cmake-build-frontend-sdl2 --parallel

- name: Package projectMSDL
run: |
cd cmake-build-frontend-sdl2
cpack -G TGZ

- name: Upload Artifact
uses: actions/upload-artifact@v4
with:
name: projectMSDL-Linux-Portable-x86_64
path: cmake-build-frontend-sdl2/*.tar.gz
Loading
Loading