Skip to content

Commit

Permalink
Merge branch 'master' of https://github.com/dan-giddins/lmms
Browse files Browse the repository at this point in the history
  • Loading branch information
dan-giddins committed Nov 6, 2023
2 parents d5f90b5 + 798013e commit d2420eb
Show file tree
Hide file tree
Showing 99 changed files with 3,585 additions and 1,579 deletions.
120 changes: 87 additions & 33 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,8 @@ jobs:
-DUSE_WERROR=ON
-DCMAKE_BUILD_TYPE=RelWithDebInfo
-DUSE_COMPILE_CACHE=ON
CCACHE_MAXSIZE: 500M
CCACHE_MAXSIZE: 0
CCACHE_NOCOMPRESS: 1
MAKEFLAGS: -j2
steps:
- name: Update and configure Git
Expand All @@ -38,6 +39,7 @@ jobs:
path: ~/.ccache
- name: Configure
run: |
ccache --zero-stats
source /opt/qt5*/bin/qt5*-env.sh || true
mkdir build && cd build
cmake .. $CMAKE_OPTS -DCMAKE_INSTALL_PREFIX=./install
Expand All @@ -56,29 +58,42 @@ jobs:
with:
name: linux
path: build/lmms-*.AppImage
- name: Print ccache statistics
- name: Trim ccache and print statistics
run: |
ccache --cleanup
echo "[ccache config]"
ccache -p
ccache --print-config
echo "[ccache stats]"
ccache -s
ccache --show-stats
env:
CCACHE_MAXSIZE: 500M
macos:
name: macos
runs-on: macos-11
runs-on: macos-12
env:
CMAKE_OPTS: >-
-DUSE_WERROR=ON
-DCMAKE_BUILD_TYPE=RelWithDebInfo
-DUSE_COMPILE_CACHE=ON
CCACHE_MAXSIZE: 500M
CCACHE_MAXSIZE: 0
CCACHE_NOCOMPRESS: 1
MAKEFLAGS: -j3
DEVELOPER_DIR: /Applications/Xcode_11.7.app/Contents/Developer
DEVELOPER_DIR: /Applications/Xcode_13.1.app/Contents/Developer
steps:
- name: Check out
uses: actions/checkout@v3
with:
fetch-depth: 0
submodules: recursive
- name: Clean up Homebrew download cache
run: rm -rf ~/Library/Caches/Homebrew/downloads
- name: Restore Homebrew download cache
uses: actions/cache/restore@v3
with:
key: n/a - only restore from restore-keys
restore-keys: |
homebrew-
path: ~/Library/Caches/Homebrew/downloads
- name: Cache ccache data
uses: actions/cache@v3
with:
Expand All @@ -89,12 +104,16 @@ jobs:
path: ~/Library/Caches/ccache
- name: Install dependencies
run: |
brew install ccache fftw pkg-config libogg libvorbis lame libsndfile \
libsamplerate jack sdl libgig libsoundio lilv lv2 stk \
fluid-synth portaudio fltk qt@5 carla
brew bundle install --verbose
npm update -g npm
npm install --location=global appdmg
env:
HOMEBREW_NO_AUTO_UPDATE: 1
HOMEBREW_NO_INSTALL_UPGRADE: 1
HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK: 1
- name: Configure
run: |
ccache --zero-stats
mkdir build
cmake -S . \
-B build \
Expand All @@ -117,12 +136,20 @@ jobs:
with:
name: macos
path: build/lmms-*.dmg
- name: Print ccache statistics
- name: Trim ccache and print statistics
run: |
ccache --cleanup
echo "[ccache config]"
ccache -p
ccache --show-config
echo "[ccache stats]"
ccache -s
ccache --show-stats --verbose
env:
CCACHE_MAXSIZE: 500MB
- name: Save Homebrew download cache
uses: actions/cache/save@v3
with:
key: homebrew-${{ hashFiles('Brewfile.lock.json') }}
path: ~/Library/Caches/Homebrew/downloads
mingw:
strategy:
fail-fast: false
Expand All @@ -136,7 +163,8 @@ jobs:
-DUSE_WERROR=ON
-DCMAKE_BUILD_TYPE=RelWithDebInfo
-DUSE_COMPILE_CACHE=ON
CCACHE_MAXSIZE: 500M
CCACHE_MAXSIZE: 0
CCACHE_NOCOMPRESS: 1
MAKEFLAGS: -j2
steps:
- name: Update and configure Git
Expand All @@ -161,6 +189,7 @@ jobs:
path: ~/.ccache
- name: Configure
run: |
ccache --zero-stats
mkdir build && cd build
../cmake/build_win${{ matrix.arch }}.sh
- name: Build
Expand All @@ -174,12 +203,15 @@ jobs:
with:
name: mingw${{ matrix.arch }}
path: build/lmms-*.exe
- name: Print ccache statistics
- name: Trim ccache and print statistics
run: |
ccache --cleanup
echo "[ccache config]"
ccache -p
ccache --print-config
echo "[ccache stats]"
ccache -s
ccache --show-stats
env:
CCACHE_MAXSIZE: 500M
msvc:
strategy:
fail-fast: false
Expand All @@ -189,56 +221,69 @@ jobs:
runs-on: windows-2019
env:
qt-version: '5.15.2'
CCACHE_MAXSIZE: 0
CCACHE_NOCOMPRESS: 1
steps:
- name: Check out
uses: actions/checkout@v3
with:
fetch-depth: 0
submodules: recursive
- name: Cache vcpkg dependencies
id: cache-deps
uses: actions/cache@v3
with:
key: vcpkg-${{ matrix.arch }}-${{ github.ref }}-${{ github.run_id }}
key: vcpkg-${{ matrix.arch }}-${{ hashFiles('vcpkg.json') }}
restore-keys: |
vcpkg-${{ matrix.arch }}-${{ github.ref }}-
vcpkg-${{ matrix.arch }}-
path: C:\vcpkg\installed
path: build\vcpkg_installed
- name: Cache ccache data
uses: actions/cache@v3
with:
key: "ccache-${{ github.job }}-${{ matrix.arch }}-${{ github.ref }}\
-${{ github.run_id }}"
restore-keys: |
ccache-${{ github.job }}-${{ matrix.arch }}-${{ github.ref }}-
ccache-${{ github.job }}-${{ matrix.arch }}-
path: ~\AppData\Local\ccache
- name: Install tools
run: choco install ccache
- name: Install 64-bit Qt
if: matrix.arch == 'x64'
uses: jurplel/install-qt-action@64bdb64f2c14311d23733a8463e5fcbc65e8775e
uses: jurplel/install-qt-action@b3ea5275e37b734d027040e2c7fe7a10ea2ef946
with:
version: ${{ env.qt-version }}
arch: win64_msvc2019_64
archives: qtbase qtsvg qttools
cache: true
- name: Install 32-bit Qt
uses: jurplel/install-qt-action@64bdb64f2c14311d23733a8463e5fcbc65e8775e
uses: jurplel/install-qt-action@b3ea5275e37b734d027040e2c7fe7a10ea2ef946
with:
version: ${{ env.qt-version }}
arch: win32_msvc2019
archives: qtbase qtsvg qttools
cache: true
set-env: ${{ matrix.arch == 'x86' }}
- name: Install dependencies
run: |
vcpkg install `
--triplet=${{ matrix.arch }}-windows `
--host-triplet=${{ matrix.arch }}-windows `
--recurse `
fftw3 fltk fluidsynth[sndfile] libsamplerate libsndfile libstk `
lilv lv2 portaudio sdl2
- name: Set up build environment
uses: ilammy/msvc-dev-cmd@d8610e2b41c6d0f0c3b4c46dad8df0fd826c68e1
uses: ilammy/msvc-dev-cmd@cec98b9d092141f74527d0afa6feb2af698cfe89
with:
arch: ${{ matrix.arch }}
- name: Configure
run: |
mkdir build
ccache --zero-stats
mkdir build -Force
cmake -S . `
-B build `
-G Ninja `
--toolchain C:/vcpkg/scripts/buildsystems/vcpkg.cmake `
-DCMAKE_BUILD_TYPE=RelWithDebInfo
-DCMAKE_BUILD_TYPE=RelWithDebInfo `
-DUSE_COMPILE_CACHE=ON `
-DVCPKG_TARGET_TRIPLET="${{ matrix.arch }}-windows" `
-DVCPKG_HOST_TRIPLET="${{ matrix.arch }}-windows" `
-DVCPKG_MANIFEST_INSTALL="${{ env.should_install_manifest }}"
env:
should_install_manifest:
${{ steps.cache-deps.outputs.cache-hit == 'true' && 'NO' || 'YES' }}
- name: Build
run: cmake --build build
- name: Build tests
Expand All @@ -250,3 +295,12 @@ jobs:
with:
name: msvc-${{ matrix.arch }}
path: build\lmms-*.exe
- name: Trim ccache and print statistics
run: |
ccache --cleanup
echo "[ccache config]"
ccache --show-config
echo "[ccache stats]"
ccache --show-stats --verbose
env:
CCACHE_MAXSIZE: 500MB
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -9,3 +9,4 @@
/plugins/ZynAddSubFx/zynaddsubfx/doc/Makefile
/plugins/ZynAddSubFx/zynaddsubfx/doc/gen/Makefile
/data/locale/*.qm
Brewfile.lock.json
20 changes: 20 additions & 0 deletions Brewfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
brew "carla"
brew "ccache"
brew "fftw"
brew "fltk"
brew "fluid-synth"
brew "jack"
brew "lame"
brew "libgig"
brew "libogg"
brew "libsamplerate"
brew "libsndfile"
brew "libsoundio"
brew "libvorbis"
brew "lilv"
brew "lv2"
brew "pkg-config"
brew "portaudio"
brew "qt@5"
brew "sdl2"
brew "stk"
42 changes: 38 additions & 4 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,5 +1,25 @@
CMAKE_MINIMUM_REQUIRED(VERSION 3.9)

# Set the given policy to NEW. If it does not exist, it will not be set. If it
# is already set to NEW (most likely due to predating the minimum required CMake
# version), a developer warning is emitted indicating that the policy need no
# longer be explicitly set.
function(enable_policy_if_exists id)
if(POLICY "${id}")
cmake_policy(GET "${id}" current_value)
if(current_value STREQUAL "NEW")
message(AUTHOR_WARNING "${id} is now set to NEW by default, and no longer needs to be explicitly set.")
else()
cmake_policy(SET "${id}" NEW)
endif()
endif()
endfunction()

# Needed for the SWH Ladspa plugins. See below.
enable_policy_if_exists(CMP0074) # find_package() uses <PackageName>_ROOT variables.
# Needed for ccache support with MSVC
enable_policy_if_exists(CMP0141) # MSVC debug information format flags are selected by an abstraction.

PROJECT(lmms)

SET(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake/modules" ${CMAKE_MODULE_PATH})
Expand All @@ -8,6 +28,15 @@ SET(LMMS_SOURCE_DIR ${CMAKE_SOURCE_DIR})

# CMAKE_POLICY Section
IF(COMMAND CMAKE_POLICY)
CMAKE_POLICY(SET CMP0005 NEW)
CMAKE_POLICY(SET CMP0003 NEW)
IF (CMAKE_MAJOR_VERSION GREATER 2)
CMAKE_POLICY(SET CMP0026 NEW)
CMAKE_POLICY(SET CMP0045 NEW)
CMAKE_POLICY(SET CMP0050 OLD)
ENDIF()
CMAKE_POLICY(SET CMP0020 NEW)
CMAKE_POLICY(SET CMP0057 NEW)
# TODO: Keep CMP0074 but remove this condition when cmake 3.12+ is guaranteed
IF(${CMAKE_VERSION} VERSION_GREATER_EQUAL 3.12)
# Needed for the SWH Ladspa plugins. See below.
Expand Down Expand Up @@ -35,7 +64,7 @@ INCLUDE(GenerateExportHeader)

STRING(TOUPPER "${CMAKE_PROJECT_NAME}" PROJECT_NAME_UCASE)

SET(PROJECT_YEAR 2020)
SET(PROJECT_YEAR 2023)

SET(PROJECT_AUTHOR "LMMS Developers")
SET(PROJECT_URL "https://lmms.io")
Expand Down Expand Up @@ -201,7 +230,14 @@ SET(QT_QTTEST_LIBRARY Qt5::Test)

# check for libsndfile
FIND_PACKAGE(SndFile REQUIRED)
IF(NOT SNDFILE_FOUND)
IF(SNDFILE_FOUND)
IF(SndFile_VERSION VERSION_GREATER_EQUAL "1.1.0")
SET(LMMS_HAVE_SNDFILE_MP3 TRUE)
ELSE()
MESSAGE("libsndfile version is < 1.1.0; MP3 import disabled")
SET(LMMS_HAVE_SNDFILE_MP3 FALSE)
ENDIF()
ELSE()
MESSAGE(FATAL_ERROR "LMMS requires libsndfile1 and libsndfile1-dev >= 1.0.18 - please install, remove CMakeCache.txt and try again!")
ENDIF()
# check if we can use SFC_SET_COMPRESSION_LEVEL
Expand Down Expand Up @@ -433,8 +469,6 @@ IF(WANT_MP3LAME)
SET(STATUS_MP3LAME "OK")
ELSE(LAME_FOUND)
SET(STATUS_MP3LAME "not found, please install libmp3lame-dev (or similar)")
SET(LAME_LIBRARIES "")
SET(LAME_INCLUDE_DIRS "")
ENDIF(LAME_FOUND)
ELSE(WANT_MP3LAME)
SET(STATUS_MP3LAME "Disabled for build")
Expand Down
9 changes: 1 addition & 8 deletions cmake/modules/BuildPlugin.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -56,11 +56,7 @@ MACRO(BUILD_PLUGIN PLUGIN_NAME)

ADD_LIBRARY(${PLUGIN_NAME} ${PLUGIN_LINK} ${PLUGIN_SOURCES} ${plugin_MOC_out} ${RCC_OUT})

TARGET_LINK_LIBRARIES(${PLUGIN_NAME} Qt5::Widgets Qt5::Xml)

IF(LMMS_BUILD_WIN32)
TARGET_LINK_LIBRARIES(${PLUGIN_NAME} lmms)
ENDIF(LMMS_BUILD_WIN32)
target_link_libraries("${PLUGIN_NAME}" lmms Qt5::Widgets Qt5::Xml)

INSTALL(TARGETS ${PLUGIN_NAME}
LIBRARY DESTINATION "${PLUGIN_DIR}"
Expand All @@ -70,10 +66,7 @@ MACRO(BUILD_PLUGIN PLUGIN_NAME)
IF(LMMS_BUILD_APPLE)
IF ("${PLUGIN_LINK}" STREQUAL "SHARED")
SET_TARGET_PROPERTIES(${PLUGIN_NAME} PROPERTIES LINK_FLAGS "-undefined dynamic_lookup")
ELSE()
SET_TARGET_PROPERTIES(${PLUGIN_NAME} PROPERTIES LINK_FLAGS "-bundle_loader \"${CMAKE_BINARY_DIR}/lmms\"")
ENDIF()
ADD_DEPENDENCIES(${PLUGIN_NAME} lmms)
ENDIF(LMMS_BUILD_APPLE)
IF(LMMS_BUILD_WIN32)
add_custom_command(
Expand Down
Loading

0 comments on commit d2420eb

Please sign in to comment.