From af6dbea70c9a6dd5f6458940e7291251e4c4d69d Mon Sep 17 00:00:00 2001 From: Jean Pierre Cimalando Date: Wed, 13 May 2020 08:38:11 -0700 Subject: [PATCH] Build and deploy AU in Travis --- .gitignore | 2 ++ .travis.yml | 4 +++ .travis/prepare_osx.sh | 5 ++++ .travis/script_osx.sh | 2 ++ vst/CMakeLists.txt | 66 ++++++++++++++++++++++++++++-------------- 5 files changed, 58 insertions(+), 21 deletions(-) diff --git a/.gitignore b/.gitignore index 7abb4c40..fdafa3d3 100644 --- a/.gitignore +++ b/.gitignore @@ -19,6 +19,8 @@ compile_commands.json clients/sfizz_jack clients/sfzprint +/vst/download/ + # gh-pages unstaged files: _api/ _site/ diff --git a/.travis.yml b/.travis.yml index 00c897ef..8b92e35a 100644 --- a/.travis.yml +++ b/.travis.yml @@ -2,6 +2,10 @@ language: cpp os: linux dist: bionic +cache: + directories: + - vst/download/ + jobs: include: - name: "clang-tidy checks" diff --git a/.travis/prepare_osx.sh b/.travis/prepare_osx.sh index 955d40e3..8fc891c9 100755 --- a/.travis/prepare_osx.sh +++ b/.travis/prepare_osx.sh @@ -23,6 +23,11 @@ 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} diff --git a/.travis/script_osx.sh b/.travis/script_osx.sh index 98bb0ca9..0b271c84 100755 --- a/.travis/script_osx.sh +++ b/.travis/script_osx.sh @@ -4,10 +4,12 @@ set -ex mkdir -p build/${INSTALL_DIR} && cd build cmake -DCMAKE_BUILD_TYPE=Release \ -DSFIZZ_VST=ON \ + -DSFIZZ_AU=ON \ -DSFIZZ_TESTS=OFF \ -DCMAKE_CXX_STANDARD=17 \ -DLV2PLUGIN_INSTALL_DIR=/Library/Audio/Plug-Ins/LV2 \ -DVSTPLUGIN_INSTALL_DIR=/Library/Audio/Plug-Ins/VST3 \ + -DAUPLUGIN_INSTALL_DIR=/Library/Audio/Plug-Ins/Components \ .. make -j$(sysctl -n hw.ncpu) # Xcode not currently supported, see https://gitlab.kitware.com/cmake/cmake/issues/18088 diff --git a/vst/CMakeLists.txt b/vst/CMakeLists.txt index d3f55997..4d140d55 100644 --- a/vst/CMakeLists.txt +++ b/vst/CMakeLists.txt @@ -146,9 +146,24 @@ elseif(SFIZZ_AU) OUTPUT_NAME "${PROJECT_NAME}" PREFIX "") - # Add Core Audio utility classes + # Get Core Audio utility classes if missing set(CA_UTILITY_BASEDIR "${CMAKE_CURRENT_SOURCE_DIR}/external/CoreAudioUtilityClasses") + if(NOT EXISTS "${CA_UTILITY_BASEDIR}") + set(CA_UTILITY_VERSION "1.1") + set(CA_UTILITY_ARCHIVE "CoreAudioUtilityClasses-${CA_UTILITY_VERSION}.tar.gz") + set(CA_UTILITY_DOWNLOAD_URL "https://github.com/sfztools/CoreAudioUtilityClasses/releases/download/v${CA_UTILITY_VERSION}/${CA_UTILITY_ARCHIVE}") + if(NOT EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/download/${CA_UTILITY_ARCHIVE}") + file(MAKE_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/download") + file(DOWNLOAD "${CA_UTILITY_DOWNLOAD_URL}" + "${CMAKE_CURRENT_SOURCE_DIR}/download/${CA_UTILITY_ARCHIVE}") + endif() + execute_process(COMMAND "${CMAKE_COMMAND}" "-E" "tar" "xvf" + "${CMAKE_CURRENT_SOURCE_DIR}/download/${CA_UTILITY_ARCHIVE}" + WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/external") + endif() + + # Add Core Audio utility classes target_include_directories(${AUPLUGIN_PRJ_NAME} PRIVATE "${CA_UTILITY_BASEDIR}/CoreAudio" "${CA_UTILITY_BASEDIR}/CoreAudio/AudioUnits" @@ -221,26 +236,28 @@ elseif(SFIZZ_AU) DESTINATION "${PROJECT_BINARY_DIR}/${AUPLUGIN_BUNDLE_NAME}") # Add the resource fork - execute_process(COMMAND "xcrun" "--find" "Rez" - OUTPUT_VARIABLE OSX_REZ_COMMAND OUTPUT_STRIP_TRAILING_WHITESPACE) - file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/include") - configure_file("${CMAKE_CURRENT_SOURCE_DIR}/mac/audiounitconfig.h.in" - "${CMAKE_CURRENT_BINARY_DIR}/include/audiounitconfig.h" @ONLY) - add_custom_command(TARGET ${AUPLUGIN_PRJ_NAME} POST_BUILD COMMAND - "${OSX_REZ_COMMAND}" - "-d" "SystemSevenOrLater=1" - "-script" "Roman" - "-d" "i386_YES" - "-d" "x86_64_YES" - "-is" "${CMAKE_OSX_SYSROOT}" - "-I" "${CMAKE_OSX_SYSROOT}/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Versions/A/Headers" - "-I" "/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Versions/A/Headers" - "-I" "/System/Library/Frameworks/AudioUnit.framework/Versions/A/Headers/" - "-I" "${CA_UTILITY_BASEDIR}/CoreAudio/AudioUnits/AUPublic/AUBase" - "-I" "${CMAKE_CURRENT_BINARY_DIR}/include" # generated audiounitconfig.h - "-o" "${PROJECT_BINARY_DIR}/${AUPLUGIN_BUNDLE_NAME}/Contents/Resources/${PROJECT_NAME}.rsrc" - "-useDF" - "${VST3SDK_BASEDIR}/public.sdk/source/vst/auwrapper/auresource.r") + if (FALSE) # optional, disabled because broken on CI + execute_process(COMMAND "xcrun" "--find" "Rez" + OUTPUT_VARIABLE OSX_REZ_COMMAND OUTPUT_STRIP_TRAILING_WHITESPACE) + file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/include") + configure_file("${CMAKE_CURRENT_SOURCE_DIR}/mac/audiounitconfig.h.in" + "${CMAKE_CURRENT_BINARY_DIR}/include/audiounitconfig.h" @ONLY) + add_custom_command(TARGET ${AUPLUGIN_PRJ_NAME} POST_BUILD COMMAND + "${OSX_REZ_COMMAND}" + "-d" "SystemSevenOrLater=1" + "-script" "Roman" + "-d" "i386_YES" + "-d" "x86_64_YES" + "-is" "${CMAKE_OSX_SYSROOT}" + "-I" "${CMAKE_OSX_SYSROOT}/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Versions/A/Headers" + "-I" "/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Versions/A/Headers" + "-I" "/System/Library/Frameworks/AudioUnit.framework/Versions/A/Headers/" + "-I" "${CA_UTILITY_BASEDIR}/CoreAudio/AudioUnits/AUPublic/AUBase" + "-I" "${CMAKE_CURRENT_BINARY_DIR}/include" # generated audiounitconfig.h + "-o" "${PROJECT_BINARY_DIR}/${AUPLUGIN_BUNDLE_NAME}/Contents/Resources/${PROJECT_NAME}.rsrc" + "-useDF" + "${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 @@ -261,4 +278,11 @@ elseif(SFIZZ_AU) "-Wno-unused-parameter" "-Wno-unused-variable") endif() + + # Installation + if(AUPLUGIN_INSTALL_DIR) + install(DIRECTORY "${PROJECT_BINARY_DIR}/${AUPLUGIN_BUNDLE_NAME}" + DESTINATION "${AUPLUGIN_INSTALL_DIR}" + COMPONENT "au") + endif() endif()