From bfbcdb2b43cd0394633ec170164378b9db32ae31 Mon Sep 17 00:00:00 2001 From: Jean Pierre Cimalando Date: Fri, 11 Dec 2020 19:12:00 +0100 Subject: [PATCH] Static link strategy for AudioUnit --- .gitmodules | 3 ++ scripts/appveyor/after_build.sh | 2 - vst/CMakeLists.txt | 65 +++++++++++++++------------------ vst/cmake/Vst3.cmake | 2 +- vst/external/sfzt_auwrapper | 1 + 5 files changed, 35 insertions(+), 38 deletions(-) create mode 160000 vst/external/sfzt_auwrapper diff --git a/.gitmodules b/.gitmodules index cbe668dc..fcf2c98f 100644 --- a/.gitmodules +++ b/.gitmodules @@ -30,3 +30,6 @@ [submodule "external/st_audiofile/thirdparty/libaiff"] path = external/st_audiofile/thirdparty/libaiff url = https://github.com/sfztools/libaiff.git +[submodule "vst/external/sfzt_auwrapper"] + path = vst/external/sfzt_auwrapper + url = https://github.com/sfztools/sfzt_auwrapper.git diff --git a/scripts/appveyor/after_build.sh b/scripts/appveyor/after_build.sh index 5f9f5d72..330ffc9b 100755 --- a/scripts/appveyor/after_build.sh +++ b/scripts/appveyor/after_build.sh @@ -15,8 +15,6 @@ else # code-sign AudioUnit and dylibs codesign --sign "${CODESIGN_IDENTITY}" --deep --keychain build.keychain --force --verbose \ "${INSTALL_DIR}"/Library/Audio/Plug-Ins/Components/sfizz.component - codesign --sign "${CODESIGN_IDENTITY}" --deep --keychain build.keychain --force --verbose \ - "${INSTALL_DIR}"/Library/Audio/Plug-Ins/Components/sfizz.component/Contents/Resources/plugin.vst3 # code-sign LV2 and dylibs (note: manual, LV2 are not real bundles) codesign --sign "${CODESIGN_IDENTITY}" --keychain build.keychain --force --verbose \ "${INSTALL_DIR}"/Library/Audio/Plug-Ins/LV2/sfizz.lv2/Contents/Binary/*.so diff --git a/vst/CMakeLists.txt b/vst/CMakeLists.txt index 9d13eac0..af9fbdef 100644 --- a/vst/CMakeLists.txt +++ b/vst/CMakeLists.txt @@ -2,6 +2,8 @@ set (VSTPLUGIN_PRJ_NAME "${PROJECT_NAME}_vst3") set (VSTPLUGIN_BUNDLE_NAME "${PROJECT_NAME}.vst3") set (VST3SDK_BASEDIR "${CMAKE_CURRENT_SOURCE_DIR}/external/VST_SDK/VST3_SDK") +#set (AUWRAPPER_BASEDIR "${VST3SDK_BASEDIR}/public.sdk/source/vst/auwrapper") +set (AUWRAPPER_BASEDIR "${CMAKE_CURRENT_SOURCE_DIR}/external/sfzt_auwrapper") # VST plugin specific settings include (VSTConfig) @@ -71,11 +73,13 @@ plugin_add_vstgui(${VSTPLUGIN_PRJ_NAME}) set (RINGBUFFER_HEADERS "external/ring_buffer/ring_buffer/ring_buffer.h" "external/ring_buffer/ring_buffer/ring_buffer.tcc") -source_group ("Header Files" FILES ${RINGBUFFER_HEADERS}) -target_include_directories(${VSTPLUGIN_PRJ_NAME} PRIVATE "external/ring_buffer") -target_sources(${VSTPLUGIN_PRJ_NAME} PRIVATE +add_library(sfizz_ring_buffer STATIC "external/ring_buffer/ring_buffer/ring_buffer.cpp" ${RINGBUFFER_HEADERS}) +source_group ("Header Files" FILES ${RINGBUFFER_HEADERS}) +target_include_directories(sfizz_ring_buffer INTERFACE "external/ring_buffer") + +target_link_libraries(${VSTPLUGIN_PRJ_NAME} PRIVATE sfizz_ring_buffer) if (${CMAKE_SYSTEM_NAME} MATCHES "Linux") target_link_libraries(${VSTPLUGIN_PRJ_NAME} PRIVATE @@ -174,11 +178,13 @@ elseif(SFIZZ_AU) set(AUPLUGIN_BUNDLE_NAME "${PROJECT_NAME}.component") add_library(${AUPLUGIN_PRJ_NAME} MODULE - "${VST3SDK_BASEDIR}/public.sdk/source/vst/auwrapper/aucarbonview.mm" - "${VST3SDK_BASEDIR}/public.sdk/source/vst/auwrapper/aucocoaview.mm" - "${VST3SDK_BASEDIR}/public.sdk/source/vst/auwrapper/ausdk.mm" - "${VST3SDK_BASEDIR}/public.sdk/source/vst/auwrapper/auwrapper.mm" - "${VST3SDK_BASEDIR}/public.sdk/source/vst/auwrapper/NSDataIBStream.mm") + "${AUWRAPPER_BASEDIR}/aucarbonview.mm" + "${AUWRAPPER_BASEDIR}/aucocoaview.mm" + "${AUWRAPPER_BASEDIR}/ausdk.mm" + "${AUWRAPPER_BASEDIR}/auwrapper.mm" + "${AUWRAPPER_BASEDIR}/NSDataIBStream.mm" + ${VSTPLUGIN_HEADERS} + ${VSTPLUGIN_SOURCES}) target_include_directories(${AUPLUGIN_PRJ_NAME} PRIVATE "${VST3SDK_BASEDIR}") target_link_libraries(${AUPLUGIN_PRJ_NAME} PRIVATE @@ -190,10 +196,19 @@ elseif(SFIZZ_AU) "${APPLE_COREAUDIO_LIBRARY}" "${APPLE_COREMIDI_LIBRARY}") + target_link_libraries(${AUPLUGIN_PRJ_NAME} + PRIVATE ${PROJECT_NAME}::${PROJECT_NAME} + PRIVATE sfizz_editor + PRIVATE sfizz-pugixml) + target_include_directories(${AUPLUGIN_PRJ_NAME} + PRIVATE "${CMAKE_CURRENT_BINARY_DIR}") set_target_properties(${AUPLUGIN_PRJ_NAME} PROPERTIES OUTPUT_NAME "${PROJECT_NAME}" PREFIX "") + plugin_add_vst3sdk(${AUPLUGIN_PRJ_NAME}) + plugin_add_vstgui(${AUPLUGIN_PRJ_NAME}) + # Get Core Audio utility classes if missing set(CA_UTILITY_BASEDIR "${CMAKE_CURRENT_SOURCE_DIR}/external/CoreAudioUtilityClasses") @@ -229,26 +244,6 @@ elseif(SFIZZ_AU) "${CA_UTILITY_BASEDIR}/CoreAudio/AudioUnits/AUPublic/Utility" "${CA_UTILITY_BASEDIR}/CoreAudio/PublicUtility") - # Add VST base classes - target_sources(${AUPLUGIN_PRJ_NAME} PRIVATE - "${VST3SDK_BASEDIR}/base/source/baseiids.cpp" - "${VST3SDK_BASEDIR}/base/source/fbuffer.cpp" - "${VST3SDK_BASEDIR}/base/source/fdebug.cpp" - "${VST3SDK_BASEDIR}/base/source/fdynlib.cpp" - "${VST3SDK_BASEDIR}/base/source/fobject.cpp" - "${VST3SDK_BASEDIR}/base/source/fstreamer.cpp" - "${VST3SDK_BASEDIR}/base/source/fstring.cpp" - "${VST3SDK_BASEDIR}/base/source/timer.cpp" - "${VST3SDK_BASEDIR}/base/source/updatehandler.cpp" - "${VST3SDK_BASEDIR}/base/thread/source/fcondition.cpp" - "${VST3SDK_BASEDIR}/base/thread/source/flock.cpp" - "${VST3SDK_BASEDIR}/pluginterfaces/base/conststringtable.cpp" - "${VST3SDK_BASEDIR}/pluginterfaces/base/coreiids.cpp" - "${VST3SDK_BASEDIR}/pluginterfaces/base/funknown.cpp" - "${VST3SDK_BASEDIR}/pluginterfaces/base/ustring.cpp" - "${VST3SDK_BASEDIR}/public.sdk/source/common/commoniids.cpp" - "${VST3SDK_BASEDIR}/public.sdk/source/vst/vstinitiids.cpp") - # Add VST hosting classes target_sources(${AUPLUGIN_PRJ_NAME} PRIVATE "${VST3SDK_BASEDIR}/public.sdk/source/vst/hosting/eventlist.cpp" @@ -257,6 +252,9 @@ elseif(SFIZZ_AU) "${VST3SDK_BASEDIR}/public.sdk/source/vst/hosting/pluginterfacesupport.cpp" "${VST3SDK_BASEDIR}/public.sdk/source/vst/hosting/processdata.cpp") + # Add the ring buffer + target_link_libraries(${AUPLUGIN_PRJ_NAME} PRIVATE sfizz_ring_buffer) + # Add generated source file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/include") target_include_directories(${AUPLUGIN_PRJ_NAME} PRIVATE "${CMAKE_CURRENT_BINARY_DIR}/include") @@ -269,6 +267,9 @@ elseif(SFIZZ_AU) # Create the bundle execute_process( COMMAND "${CMAKE_COMMAND}" -E make_directory "${PROJECT_BINARY_DIR}/${AUPLUGIN_BUNDLE_NAME}/Contents/Resources") + copy_editor_resources( + "${CMAKE_CURRENT_SOURCE_DIR}/../editor/resources" + "${PROJECT_BINARY_DIR}/${AUPLUGIN_BUNDLE_NAME}/Contents/Resources") set_target_properties(${AUPLUGIN_PRJ_NAME} PROPERTIES SUFFIX "" LIBRARY_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/${AUPLUGIN_BUNDLE_NAME}/Contents/MacOS/$<0:>") @@ -315,7 +316,7 @@ elseif(SFIZZ_AU) "-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") + "${AUWRAPPER_BASEDIR}/auresource.r") endif() if (CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang") @@ -336,14 +337,8 @@ 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() diff --git a/vst/cmake/Vst3.cmake b/vst/cmake/Vst3.cmake index 259f62a2..20eee6b3 100644 --- a/vst/cmake/Vst3.cmake +++ b/vst/cmake/Vst3.cmake @@ -10,7 +10,7 @@ function(plugin_add_vst3sdk NAME) "${VST3SDK_BASEDIR}/base/source/fobject.cpp" "${VST3SDK_BASEDIR}/base/source/fstreamer.cpp" "${VST3SDK_BASEDIR}/base/source/fstring.cpp" - # "${VST3SDK_BASEDIR}/base/source/timer.cpp" + "${VST3SDK_BASEDIR}/base/source/timer.cpp" "${VST3SDK_BASEDIR}/base/source/updatehandler.cpp" "${VST3SDK_BASEDIR}/base/thread/source/fcondition.cpp" "${VST3SDK_BASEDIR}/base/thread/source/flock.cpp" diff --git a/vst/external/sfzt_auwrapper b/vst/external/sfzt_auwrapper new file mode 160000 index 00000000..014311ae --- /dev/null +++ b/vst/external/sfzt_auwrapper @@ -0,0 +1 @@ +Subproject commit 014311ae45b86571e1ae3aaa03ebbd7db8b3a32e