From 1220175bbca34016da086d881dba5a8ffa40865c Mon Sep 17 00:00:00 2001 From: Igor Korsukov Date: Fri, 4 Dec 2020 12:17:21 +0200 Subject: [PATCH] returned jack dependency --- CMakeLists.txt | 46 +++++++++++++++++++++++++++ Makefile | 3 ++ build/ci/linux/setup.sh | 1 + build/ci/linux/tools/make_appimage.sh | 2 +- build/ci/macos/setup.sh | 3 ++ build/ci/windows/build.bat | 7 ++-- build/ci/windows/setup.bat | 3 ++ src/audiofile/CMakeLists.txt | 4 +++ 8 files changed, 66 insertions(+), 3 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 146304033b06..cb8986bde93b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -162,6 +162,10 @@ option(USE_SYSTEM_QTSINGLEAPPLICATION "Use system QtSingleApplication" OFF) option(USE_SYSTEM_FREETYPE "Use system FreeType" OFF) # requires freetype >= 2.5.2, does not work on win option(DOWNLOAD_SOUNDFONT "Download the latest soundfont version as part of the build process" ON) +SET(JACK_LONGNAME "JACK (Jack Audio Connection Kit)") +SET(JACK_MIN_VERSION "0.98.0") +option(BUILD_JACK "Build with support for ${JACK_LONGNAME} audio backend. JACK >= ${JACK_MIN_VERSION} will be needed." OFF) + option(BUILD_PCH "Build using precompiled headers." ON) option(BUILD_FOR_WINSTORE "Build for the Windows Store." OFF) option(COVERAGE "Build with instrumentation to record code coverage." OFF) @@ -416,6 +420,48 @@ if (USE_SYSTEM_FREETYPE) endif (APPLE) endif (USE_SYSTEM_FREETYPE) +## +## Find JACK >= JACK_MIN_VERSION +## + + +IF(BUILD_JACK) + IF(MINGW OR MSVC) + set (USE_JACK 1) + IF("$ENV{PROCESSOR_ARCHITEW6432}" STREQUAL "") + IF("$ENV{PROCESSOR_ARCHITECTURE}" STREQUAL "x86") + # "pure" 32-bit environment + set (progenv "PROGRAMFILES") + ELSE("$ENV{PROCESSOR_ARCHITECTURE}" STREQUAL "x86") + # "pure" 64-bit environment + set (progenv "PROGRAMFILES(x86)") + ENDIF("$ENV{PROCESSOR_ARCHITECTURE}" STREQUAL "x86") + ELSE("$ENV{PROCESSOR_ARCHITEW6432}" STREQUAL "") + IF("$ENV{PROCESSOR_ARCHITECTURE}" STREQUAL "x86") + # 32-bit program running with an underlying 64-bit environment + set (progenv "PROGRAMFILES(x86)") + ELSE("$ENV{PROCESSOR_ARCHITECTURE}" STREQUAL "x86") + # Theoretically impossible case... + MESSAGE(SEND_ERROR "Error: Impossible program/environment bitness combination deduced: 64-bit program running in 32-bit environment. This is a programming error. PROCESSOR_ARCHITEW6432=$ENV{PROCESSOR_ARCHITEW6432}. PROCESSOR_ARCHITECTURE=$ENV{PROCESSOR_ARCHITECTURE}") + ENDIF("$ENV{PROCESSOR_ARCHITECTURE}" STREQUAL "x86") + ENDIF("$ENV{PROCESSOR_ARCHITEW6432}" STREQUAL "") + set (JACK_INCDIR "$ENV{${progenv}}/Jack/includes") + set (JACK_LIB "$ENV{${progenv}}/Jack/lib/libjack.a") + MESSAGE("JACK support enabled.") + ELSE(MINGW OR MSVC) + PKGCONFIG1 (jack ${JACK_MIN_VERSION} JACK_INCDIR JACK_LIBDIR JACK_LIB JACK_CPP) + IF(JACK_INCDIR) + MESSAGE(STATUS "${JACK_LONGNAME} >= ${JACK_MIN_VERSION} found. jack support enabled.") + SET(USE_JACK 1) + ELSE(JACK_INCDIR) + MESSAGE(STATUS "${JACK_LONGNAME} >= ${JACK_MIN_VERSION} not found") + MESSAGE(SEND_ERROR "Error: JACK support requested (BUILD_JACK=${BUILD_JACK}), but JACK was not found") + ENDIF(JACK_INCDIR) + ENDIF(MINGW OR MSVC) +ELSE(BUILD_JACK) + MESSAGE(STATUS "${JACK_LONGNAME} support disabled") +ENDIF(BUILD_JACK) + if (APPLE) if(SOUNDFONT3) ## diff --git a/Makefile b/Makefile index 243ef49591a4..1b581975663f 100644 --- a/Makefile +++ b/Makefile @@ -32,6 +32,7 @@ CRASH_REPORT_URL="" SUFFIX=""# E.g.: SUFFIX="dev" --> "mscore" becomes "mscoredev" LABEL=""# E.g.: LABEL="Development Build" --> "MuseScore 2" becomes "MuseScore 2 Development Build" +BUILD_JACK="ON" # Override with "OFF" to disable. BUILD_WEBENGINE="ON" # Override with "OFF" to disable. USE_SYSTEM_FREETYPE="OFF" # Override with "ON" to enable. Requires freetype >= 2.5.2. COVERAGE="OFF" # Override with "ON" to enable. @@ -65,6 +66,7 @@ release: -DCMAKE_BUILD_NUMBER="${BUILD_NUMBER}" \ -DTELEMETRY_TRACK_ID="${TELEMETRY_TRACK_ID}" \ -DCRASH_REPORT_URL="${CRASH_REPORT_URL}" \ + -DBUILD_JACK="${BUILD_JACK}" \ -DBUILD_WEBENGINE="${BUILD_WEBENGINE}" \ -DUSE_SYSTEM_FREETYPE="${USE_SYSTEM_FREETYPE}" \ -DDOWNLOAD_SOUNDFONT="${DOWNLOAD_SOUNDFONT}" \ @@ -94,6 +96,7 @@ debug: -DMSCORE_INSTALL_SUFFIX="${SUFFIX}" \ -DMUSESCORE_LABEL="${LABEL}" \ -DCMAKE_BUILD_NUMBER="${BUILD_NUMBER}" \ + -DBUILD_JACK="${BUILD_JACK}" \ -DBUILD_WEBENGINE="${BUILD_WEBENGINE}" \ -DUSE_SYSTEM_FREETYPE="${USE_SYSTEM_FREETYPE}" \ -DCOVERAGE="${COVERAGE}" \ diff --git a/build/ci/linux/setup.sh b/build/ci/linux/setup.sh index 8b3779d30a3b..0f70572978a6 100644 --- a/build/ci/linux/setup.sh +++ b/build/ci/linux/setup.sh @@ -43,6 +43,7 @@ apt_packages_standard=( libfreetype6-dev libfreetype6 libgl1-mesa-dev + libjack-dev libnss3-dev libportmidi-dev libpulse-dev diff --git a/build/ci/linux/tools/make_appimage.sh b/build/ci/linux/tools/make_appimage.sh index cd7aac714ded..c7858e00c7a5 100644 --- a/build/ci/linux/tools/make_appimage.sh +++ b/build/ci/linux/tools/make_appimage.sh @@ -154,7 +154,7 @@ additional_libraries=( # the full functionality of the system version, but it does avoid the crash. # Report new additions at https://github.com/linuxdeploy/linuxdeploy/issues fallback_libraries=( - + libjack.so.0 # https://github.com/LMMS/lmms/pull/3958 ) for file in "${unwanted_files[@]}"; do diff --git a/build/ci/macos/setup.sh b/build/ci/macos/setup.sh index 41b0596cfa47..44501088aaed 100644 --- a/build/ci/macos/setup.sh +++ b/build/ci/macos/setup.sh @@ -16,6 +16,9 @@ rm bottles/freetype* | $SKIP_ERR_FLAG brew update >/dev/null | $SKIP_ERR_FLAG +# additional dependencies +brew install jack + BREW_CELLAR=$(brew --cellar) BREW_PREFIX=$(brew --prefix) diff --git a/build/ci/windows/build.bat b/build/ci/windows/build.bat index d081e9dc9675..4f19a45ea4b4 100644 --- a/build/ci/windows/build.bat +++ b/build/ci/windows/build.bat @@ -47,14 +47,17 @@ ECHO "Finished copy dependencies" SET GENERATOR_NAME=Visual Studio 16 2019 SET MSCORE_STABLE_BUILD="TRUE" + +:: TODO We need define paths during image creation +SET "JACK_DIR=C:\Program Files (x86)\Jack" SET "QT_DIR=C:\Qt\5.15.1" @REM IF %TARGET_PROCESSOR_BITS% == 32 ( -@REM ::SET "PATH=%QT_DIR%\msvc2015\bin;%PATH%" +@REM ::SET "PATH=%QT_DIR%\msvc2015\bin;%JACK_DIR%;%PATH%" @REM ECHO "error: Not installed Qt 32" @REM EXIT /b 1 @REM ) ELSE ( -SET "PATH=%QT_DIR%\msvc2019_64\bin;%PATH%" +SET "PATH=%QT_DIR%\msvc2019_64\bin;%JACK_DIR%;%PATH%" @REM ) :: At the moment not compiling yet. diff --git a/build/ci/windows/setup.bat b/build/ci/windows/setup.bat index 6f7217cb4f25..51622695edf4 100644 --- a/build/ci/windows/setup.bat +++ b/build/ci/windows/setup.bat @@ -53,6 +53,9 @@ CALL "7z" x -y "%TEMP_DIR%\%Qt_ARCHIVE%" "-o%QT_DIR%" ECHO "=== Install dependencies ===" CALL "wget.exe" -q --show-progress --no-check-certificate "https://s3.amazonaws.com/utils.musescore.org/musescore_dependencies_win32.7z" -O %TEMP_DIR%\musescore_dependencies_win32.7z CALL "7z" x -y %TEMP_DIR%\musescore_dependencies_win32.7z "-o%TEMP_DIR%\musescore_dependencies_win32" +SET JACK_DIR="C:\Program Files (x86)\Jack" +XCOPY %TEMP_DIR%\musescore_dependencies_win32\dependencies\Jack %JACK_DIR% /E /I /Y +SET PATH=%JACK_DIR%;%PATH% CALL "wget.exe" -q --show-progress --no-check-certificate "https://s3.amazonaws.com/utils.musescore.org/dependencies.7z" -O %TEMP_DIR%\dependencies.7z CALL "7z" x -y %TEMP_DIR%\dependencies.7z "-oC:\musescore_dependencies" diff --git a/src/audiofile/CMakeLists.txt b/src/audiofile/CMakeLists.txt index db91a635a9dc..afe5087816f5 100644 --- a/src/audiofile/CMakeLists.txt +++ b/src/audiofile/CMakeLists.txt @@ -39,6 +39,10 @@ else(PLATFORM_IS_WINDOWS) endif(PLATFORM_IS_WINDOWS) +set(MODULE_INCLUDE + ${SNDFILE_INCDIR} + ) + set(MODULE_LINK ${SNDFILE_LIB} )