Merge pull request #525 from jpcima/mac-install-rules

Better installation rules for macOS
This commit is contained in:
JP Cimalando 2020-10-24 08:42:01 +02:00 committed by GitHub
commit 6cd2b7147a
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
8 changed files with 70 additions and 56 deletions

View file

@ -56,7 +56,7 @@ jobs:
env:
- INSTALL_DIR="sfizz-${TRAVIS_BRANCH}-${TRAVIS_OS_NAME}-${TRAVIS_CPU_ARCH}"
script: .travis/script_osx.sh
after_success: .travis/prepare_osx.sh
after_success: .travis/prepare_tarball.sh
- name: "MOD devices arm"
env:

View file

@ -1,40 +0,0 @@
#!/bin/bash
set -ex
test -z "$CONTAINER"
if ! [ -z "$CONTAINER" ]; then
. .travis/docker_container.sh
else
. .travis/no_container.sh
fi
cd build
buildenv make DESTDIR=${PWD}/${INSTALL_DIR} install
# Bundle LV2 dependencies
cd "${INSTALL_DIR}"/Library/Audio/Plug-Ins/LV2
dylibbundler -od -b -x sfizz.lv2/Contents/Binary/sfizz.so -d sfizz.lv2/Contents/libs/ -p @loader_path/../libs/
dylibbundler -od -b -x sfizz.lv2/Contents/Binary/sfizz_ui.so -d sfizz.lv2/Contents/libs/ -p @loader_path/../libs/
cd "${TRAVIS_BUILD_DIR}/build"
# Bundle VST3 dependencies
cd "${INSTALL_DIR}"/Library/Audio/Plug-Ins/VST3
dylibbundler -od -b -x sfizz.vst3/Contents/MacOS/sfizz -d sfizz.vst3/Contents/libs/ -p @loader_path/../libs/
cd "${TRAVIS_BUILD_DIR}/build"
# Bundle AU dependencies
cd "${INSTALL_DIR}"/Library/Audio/Plug-Ins/Components
dylibbundler -od -b -x sfizz.component/Contents/Resources/plugin.vst3/Contents/MacOS/sfizz -d sfizz.component/Contents/Resources/plugin.vst3/Contents/libs/ -p @loader_path/../libs/
cd "${TRAVIS_BUILD_DIR}/build"
#
tar -zcvf "${INSTALL_DIR}.tar.gz" ${INSTALL_DIR}
# Only release a tarball if there is a tag
if [[ ${TRAVIS_TAG} != "" ]]; then
mv "${INSTALL_DIR}.tar.gz" ${TRAVIS_BUILD_DIR}
fi
cd "${TRAVIS_BUILD_DIR}"

View file

@ -38,6 +38,9 @@ include (SfizzConfig)
# Don't use IPO in non Release builds
include (CheckIPO)
# Dylib bunder for macOS
include (BundleDylibs)
# Add Abseil
add_subdirectory (external/abseil-cpp EXCLUDE_FROM_ALL)

32
cmake/BundleDylibs.cmake Normal file
View file

@ -0,0 +1,32 @@
# Dylib bundler for macOS
# Requires the external program "dylibbundler"
if(APPLE)
find_program(DYLIBBUNDLER_PROGRAM "dylibbundler")
if(NOT DYLIBBUNDLER_PROGRAM)
message(WARNING "The installation helper \"dylibbundler\" is not available.")
endif()
endif()
function(bundle_dylibs NAME PATH)
if(NOT APPLE OR NOT DYLIBBUNDLER_PROGRAM)
return()
endif()
set(_relative_libdir "../libs")
get_filename_component(_dir "${PATH}" DIRECTORY)
set(_dir "${_dir}/${_relative_libdir}")
set(_script "${CMAKE_CURRENT_BINARY_DIR}/_bundle-dylibs.${NAME}.cmake")
file(WRITE "${_script}"
"execute_process(COMMAND \"${DYLIBBUNDLER_PROGRAM}\"
\"-cd\" \"-of\" \"-b\"
\"-x\" \"\$ENV{DESTDIR}${PATH}\"
\"-d\" \"\$ENV{DESTDIR}${_dir}\"
\"-p\" \"@loader_path/${_relative_libdir}/\")
")
install(SCRIPT "${_script}" ${ARGN})
endfunction()

View file

@ -30,10 +30,13 @@ else()
set(LV2_UI_TYPE "X11UI")
endif()
if (MSVC)
if (APPLE)
set (LV2PLUGIN_INSTALL_DIR "$ENV{HOME}/Library/Audio/Plug-Ins/LV2" CACHE STRING
"Install destination for LV2 bundle [default: $ENV{HOME}/Library/Audio/Plug-Ins/LV2]")
elseif (MSVC)
set (LV2PLUGIN_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/lv2" CACHE STRING
"Install destination for LV2 bundle [default: ${CMAKE_INSTALL_PREFIX}/lv2}]")
"Install destination for LV2 bundle [default: ${CMAKE_INSTALL_PREFIX}/lv2]")
else()
set (LV2PLUGIN_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/lib/lv2" CACHE STRING
"Install destination for LV2 bundle [default: ${CMAKE_INSTALL_PREFIX}/lib/lv2}]")
"Install destination for LV2 bundle [default: ${CMAKE_INSTALL_PREFIX}/lib/lv2]")
endif()

View file

@ -3,12 +3,17 @@ set (VSTPLUGIN_VENDOR "Paul Ferrand")
set (VSTPLUGIN_URL "http://sfztools.github.io/sfizz")
set (VSTPLUGIN_EMAIL "paul@ferrand.cc")
if (MSVC)
if (APPLE)
set (VSTPLUGIN_INSTALL_DIR "$ENV{HOME}/Library/Audio/Plug-Ins/VST3" CACHE STRING
"Install destination for VST bundle [default: $ENV{HOME}/Library/Audio/Plug-Ins/VST3]")
set (AUPLUGIN_INSTALL_DIR "$ENV{HOME}/Library/Audio/Plug-Ins/Components" CACHE STRING
"Install destination for AudioUnit bundle [default: $ENV{HOME}/Library/Audio/Plug-Ins/Components]")
elseif (MSVC)
set (VSTPLUGIN_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/vst3" CACHE STRING
"Install destination for VST bundle [default: ${CMAKE_INSTALL_PREFIX}/vst3}]")
"Install destination for VST bundle [default: ${CMAKE_INSTALL_PREFIX}/vst3]")
else()
set (VSTPLUGIN_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/lib/vst3" CACHE STRING
"Install destination for VST bundle [default: ${CMAKE_INSTALL_PREFIX}/lib/vst3}]")
"Install destination for VST bundle [default: ${CMAKE_INSTALL_PREFIX}/lib/vst3]")
endif()
if (NOT VST3_SYSTEM_PROCESSOR)

View file

@ -105,6 +105,12 @@ endif()
# Installation
if (NOT MSVC)
install (DIRECTORY ${PROJECT_BINARY_DIR} DESTINATION ${LV2PLUGIN_INSTALL_DIR}
install(DIRECTORY ${PROJECT_BINARY_DIR} DESTINATION ${LV2PLUGIN_INSTALL_DIR}
COMPONENT "lv2")
bundle_dylibs(lv2
"${LV2PLUGIN_INSTALL_DIR}/${PROJECT_NAME}.lv2/Contents/Binary/sfizz.so"
COMPONENT "lv2")
bundle_dylibs(lv2-ui
"${LV2PLUGIN_INSTALL_DIR}/${PROJECT_NAME}.lv2/Contents/Binary/sfizz_ui.so"
COMPONENT "lv2")
endif()

View file

@ -118,9 +118,12 @@ endif()
# Installation
if (NOT MSVC)
install (DIRECTORY "${PROJECT_BINARY_DIR}/${VSTPLUGIN_BUNDLE_NAME}"
install(DIRECTORY "${PROJECT_BINARY_DIR}/${VSTPLUGIN_BUNDLE_NAME}"
DESTINATION "${VSTPLUGIN_INSTALL_DIR}"
COMPONENT "vst")
bundle_dylibs(vst
"${VSTPLUGIN_INSTALL_DIR}/${VSTPLUGIN_BUNDLE_NAME}/Contents/MacOS/sfizz"
COMPONENT "vst")
endif()
# --- Audio Unit wrapper --- #
@ -275,13 +278,6 @@ elseif(SFIZZ_AU)
"${VST3SDK_BASEDIR}/public.sdk/source/vst/auwrapper/auresource.r")
endif()
# Copy VST3 in the bundle
add_custom_command(TARGET ${VSTPLUGIN_PRJ_NAME} POST_BUILD COMMAND
"${CMAKE_COMMAND}" "-E"
"copy_directory"
"${PROJECT_BINARY_DIR}/${VSTPLUGIN_BUNDLE_NAME}"
"${PROJECT_BINARY_DIR}/${AUPLUGIN_BUNDLE_NAME}/Contents/Resources/plugin.vst3")
if (CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang")
target_compile_options(${AUPLUGIN_PRJ_NAME} PRIVATE
"-Wno-extra"
@ -300,5 +296,14 @@ elseif(SFIZZ_AU)
install(DIRECTORY "${PROJECT_BINARY_DIR}/${AUPLUGIN_BUNDLE_NAME}"
DESTINATION "${AUPLUGIN_INSTALL_DIR}"
COMPONENT "au")
install(DIRECTORY "${PROJECT_BINARY_DIR}/${VSTPLUGIN_BUNDLE_NAME}/"
DESTINATION "${AUPLUGIN_INSTALL_DIR}/${AUPLUGIN_BUNDLE_NAME}/Contents/Resources/plugin.vst3"
COMPONENT "au")
bundle_dylibs(au
"${AUPLUGIN_INSTALL_DIR}/${AUPLUGIN_BUNDLE_NAME}/Contents/MacOS/sfizz"
COMPONENT "au")
bundle_dylibs(au-vst
"${AUPLUGIN_INSTALL_DIR}/${AUPLUGIN_BUNDLE_NAME}/Contents/Resources/plugin.vst3/Contents/MacOS/sfizz"
COMPONENT "au")
endif()
endif()