mirror of
https://github.com/projectM-visualizer/projectm.git
synced 2026-02-05 01:25:28 +00:00
Add GitHub Action to build with CMake on Windows, Linux and macOS.
This commit is contained in:
24
.github/workflows/build.cmake
vendored
Normal file
24
.github/workflows/build.cmake
vendored
Normal file
@ -0,0 +1,24 @@
|
||||
if("${CMAKE_HOST_SYSTEM_NAME}" STREQUAL "Windows")
|
||||
execute_process(COMMAND "${CMAKE_COMMAND}" --build "$ENV{GITHUB_WORKSPACE}/cmake-build"
|
||||
--config $ENV{BUILD_TYPE}
|
||||
|
||||
RESULT_VARIABLE result
|
||||
)
|
||||
elseif("${CMAKE_HOST_SYSTEM_NAME}" STREQUAL "Linux")
|
||||
execute_process(COMMAND "${CMAKE_COMMAND}" --build "$ENV{GITHUB_WORKSPACE}/cmake-build"
|
||||
-- -j 3
|
||||
|
||||
RESULT_VARIABLE result
|
||||
)
|
||||
elseif("${CMAKE_HOST_SYSTEM_NAME}" STREQUAL "Darwin")
|
||||
execute_process(COMMAND "${CMAKE_COMMAND}" --build "$ENV{GITHUB_WORKSPACE}/cmake-build"
|
||||
--config $ENV{BUILD_TYPE}
|
||||
-- -j 5
|
||||
|
||||
RESULT_VARIABLE result
|
||||
)
|
||||
endif()
|
||||
|
||||
if(NOT result EQUAL 0)
|
||||
message(FATAL_ERROR "CMake returned bad exit status")
|
||||
endif()
|
||||
37
.github/workflows/build_cmake.yml
vendored
Normal file
37
.github/workflows/build_cmake.yml
vendored
Normal file
@ -0,0 +1,37 @@
|
||||
name: CMake Build
|
||||
|
||||
on: [ push, pull_request ]
|
||||
|
||||
env:
|
||||
# Customize the CMake build type here (Release, Debug, RelWithDebInfo, etc.)
|
||||
BUILD_TYPE: Release
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ${{ matrix.os }}
|
||||
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
os: [ windows-latest, ubuntu-latest, macos-latest ]
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
|
||||
- name: Install Prerequisites
|
||||
run: cmake -P ${{ github.workspace }}/.github/workflows/install_prerequisites.cmake
|
||||
|
||||
- name: Configure CMake
|
||||
run: cmake -P ${{ github.workspace }}/.github/workflows/configure.cmake
|
||||
|
||||
- name: Build
|
||||
run: cmake -P ${{ github.workspace }}/.github/workflows/build.cmake
|
||||
|
||||
- name: Package
|
||||
run: cmake -P ${{ github.workspace }}/.github/workflows/package.cmake
|
||||
|
||||
- name: Upload Artifact
|
||||
uses: actions/upload-artifact@v2
|
||||
with:
|
||||
name: ${{ matrix.os }}
|
||||
path: package/projectM-*
|
||||
39
.github/workflows/configure.cmake
vendored
Normal file
39
.github/workflows/configure.cmake
vendored
Normal file
@ -0,0 +1,39 @@
|
||||
if("${CMAKE_HOST_SYSTEM_NAME}" STREQUAL "Windows")
|
||||
execute_process(COMMAND "${CMAKE_COMMAND}"
|
||||
-G "Visual Studio 16 2019"
|
||||
-A "X64"
|
||||
-S "$ENV{GITHUB_WORKSPACE}"
|
||||
-B "$ENV{GITHUB_WORKSPACE}/cmake-build"
|
||||
-DTARGET_TRIPLET=x64-windows
|
||||
-DCMAKE_VERBOSE_MAKEFILE=YES
|
||||
"-DCMAKE_INSTALL_PREFIX=$ENV{GITHUB_WORKSPACE}/cmake-install"
|
||||
"-DCMAKE_TOOLCHAIN_FILE=$ENV{VCPKG_INSTALLATION_ROOT}/scripts/buildsystems/vcpkg.cmake"
|
||||
|
||||
RESULT_VARIABLE result
|
||||
)
|
||||
elseif("${CMAKE_HOST_SYSTEM_NAME}" STREQUAL "Linux")
|
||||
execute_process(COMMAND "${CMAKE_COMMAND}"
|
||||
-G "Unix Makefiles"
|
||||
-S "$ENV{GITHUB_WORKSPACE}"
|
||||
-B "$ENV{GITHUB_WORKSPACE}/cmake-build"
|
||||
-DCMAKE_VERBOSE_MAKEFILE=YES
|
||||
-DCMAKE_BUILD_TYPE=$ENV{BUILD_TYPE}
|
||||
"-DCMAKE_INSTALL_PREFIX=$ENV{GITHUB_WORKSPACE}/cmake-install"
|
||||
|
||||
RESULT_VARIABLE result
|
||||
)
|
||||
elseif("${CMAKE_HOST_SYSTEM_NAME}" STREQUAL "Darwin")
|
||||
execute_process(COMMAND "${CMAKE_COMMAND}"
|
||||
-G "Unix Makefiles"
|
||||
-S "$ENV{GITHUB_WORKSPACE}"
|
||||
-B "$ENV{GITHUB_WORKSPACE}/cmake-build"
|
||||
-DCMAKE_VERBOSE_MAKEFILE=YES
|
||||
"-DCMAKE_INSTALL_PREFIX=$ENV{GITHUB_WORKSPACE}/cmake-install"
|
||||
|
||||
RESULT_VARIABLE result
|
||||
)
|
||||
endif()
|
||||
|
||||
if(NOT result EQUAL 0)
|
||||
message(FATAL_ERROR "CMake returned bad exit status")
|
||||
endif()
|
||||
47
.github/workflows/install_prerequisites.cmake
vendored
Normal file
47
.github/workflows/install_prerequisites.cmake
vendored
Normal file
@ -0,0 +1,47 @@
|
||||
message(STATUS "Using host CMake version: ${CMAKE_VERSION}")
|
||||
|
||||
if("${CMAKE_HOST_SYSTEM_NAME}" STREQUAL "Windows")
|
||||
# On Windows, using vcpkg to install and build is the best practice.
|
||||
set(VCPKG "$ENV{VCPKG_INSTALLATION_ROOT}/vcpkg.exe")
|
||||
execute_process(COMMAND "${VCPKG}" --triplet=x64-windows install glew sdl2
|
||||
|
||||
RESULT_VARIABLE result
|
||||
)
|
||||
elseif("${CMAKE_HOST_SYSTEM_NAME}" STREQUAL "Linux")
|
||||
# On Ubuntu, installing the required dev packages is sufficient
|
||||
message(STATUS "Updating apt package sources")
|
||||
execute_process(COMMAND sudo apt-get update
|
||||
COMMAND sudo apt-get -f install
|
||||
|
||||
RESULT_VARIABLE result
|
||||
)
|
||||
|
||||
if(NOT result EQUAL 0)
|
||||
message(FATAL_ERROR "Could not update apt package lists")
|
||||
endif()
|
||||
|
||||
execute_process(COMMAND sudo apt-get install
|
||||
libgl1-mesa-dev
|
||||
mesa-common-dev
|
||||
libsdl2-dev
|
||||
libglm-dev
|
||||
qtbase5-dev
|
||||
llvm-dev
|
||||
libvisual-0.4-dev
|
||||
libjack-jackd2-dev
|
||||
|
||||
RESULT_VARIABLE result
|
||||
)
|
||||
|
||||
elseif("${CMAKE_HOST_SYSTEM_NAME}" STREQUAL "Darwin")
|
||||
# macOS uses Homebrew to install additional software packages.
|
||||
execute_process(COMMAND brew update
|
||||
COMMAND brew install sdl2
|
||||
|
||||
RESULT_VARIABLE result
|
||||
)
|
||||
endif()
|
||||
|
||||
if(NOT result EQUAL 0)
|
||||
message(FATAL_ERROR "A command returned bad exit status")
|
||||
endif()
|
||||
21
.github/workflows/package.cmake
vendored
Normal file
21
.github/workflows/package.cmake
vendored
Normal file
@ -0,0 +1,21 @@
|
||||
if("${CMAKE_HOST_SYSTEM_NAME}" STREQUAL "Windows")
|
||||
execute_process(COMMAND "${CMAKE_CPACK_COMMAND}"
|
||||
-G ZIP
|
||||
--config "$ENV{GITHUB_WORKSPACE}/cmake-build/CPackConfig.cmake"
|
||||
-B "$ENV{GITHUB_WORKSPACE}/package"
|
||||
|
||||
RESULT_VARIABLE result
|
||||
)
|
||||
else("${CMAKE_HOST_SYSTEM_NAME}" STREQUAL "Linux")
|
||||
execute_process(COMMAND "${CMAKE_CPACK_COMMAND}"
|
||||
-G TGZ
|
||||
--config "$ENV{GITHUB_WORKSPACE}/cmake-build/CPackConfig.cmake"
|
||||
-B "$ENV{GITHUB_WORKSPACE}/package"
|
||||
|
||||
RESULT_VARIABLE result
|
||||
)
|
||||
endif()
|
||||
|
||||
if(NOT result EQUAL 0)
|
||||
message(FATAL_ERROR "CPack returned bad exit status")
|
||||
endif()
|
||||
Reference in New Issue
Block a user