From 5b189848cd923ce24845bf94f1cb033bc0c55093 Mon Sep 17 00:00:00 2001 From: Jean Pierre Cimalando Date: Thu, 8 Apr 2021 02:26:18 +0200 Subject: [PATCH] Make VST3 SDK a distinct target --- plugins/vst/CMakeLists.txt | 30 ++------- plugins/vst/cmake/Vst3.cmake | 121 +++++++++++++++++++++-------------- 2 files changed, 78 insertions(+), 73 deletions(-) diff --git a/plugins/vst/CMakeLists.txt b/plugins/vst/CMakeLists.txt index f6bd7724..765ac8f5 100644 --- a/plugins/vst/CMakeLists.txt +++ b/plugins/vst/CMakeLists.txt @@ -145,18 +145,9 @@ else() DESTINATION "${PROJECT_BINARY_DIR}/${VSTPLUGIN_BUNDLE_NAME}") endif() -if(CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang") - gw_target_warn(${VSTPLUGIN_PRJ_NAME} PRIVATE - "-Wno-extra" - "-Wno-multichar" - "-Wno-reorder" - "-Wno-class-memaccess" - "-Wno-ignored-qualifiers" - "-Wno-unknown-pragmas" - "-Wno-unused-function" - "-Wno-unused-parameter" - "-Wno-unused-variable") -endif() +gw_target_warn(${VSTPLUGIN_PRJ_NAME} PRIVATE + "-Wno-ignored-qualifiers" + "-Wno-unused-parameter") # To help debugging the link only if(FALSE) @@ -323,18 +314,9 @@ elseif(SFIZZ_AU) "${AUWRAPPER_BASEDIR}/auresource.r") endif() - if(CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang") - gw_target_warn(${AUPLUGIN_PRJ_NAME} PRIVATE - "-Wno-extra" - "-Wno-multichar" - "-Wno-reorder" - "-Wno-class-memaccess" - "-Wno-ignored-qualifiers" - "-Wno-unknown-pragmas" - "-Wno-unused-function" - "-Wno-unused-parameter" - "-Wno-unused-variable") - endif() + gw_target_warn(${AUPLUGIN_PRJ_NAME} PRIVATE + "-Wno-ignored-qualifiers" + "-Wno-unused-parameter") # Installation if(AUPLUGIN_INSTALL_DIR) diff --git a/plugins/vst/cmake/Vst3.cmake b/plugins/vst/cmake/Vst3.cmake index 960678de..c8aed3c2 100644 --- a/plugins/vst/cmake/Vst3.cmake +++ b/plugins/vst/cmake/Vst3.cmake @@ -1,68 +1,91 @@ find_package(Threads REQUIRED) # --- VST3SDK --- +add_library(vst3sdk STATIC EXCLUDE_FROM_ALL + "${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/common/pluginview.cpp" + "${VST3SDK_BASEDIR}/public.sdk/source/main/pluginfactory.cpp" + "${VST3SDK_BASEDIR}/public.sdk/source/vst/vstaudioeffect.cpp" + "${VST3SDK_BASEDIR}/public.sdk/source/vst/vstbus.cpp" + "${VST3SDK_BASEDIR}/public.sdk/source/vst/vstcomponent.cpp" + "${VST3SDK_BASEDIR}/public.sdk/source/vst/vstcomponentbase.cpp" + "${VST3SDK_BASEDIR}/public.sdk/source/vst/vsteditcontroller.cpp" + "${VST3SDK_BASEDIR}/public.sdk/source/vst/vstinitiids.cpp" + "${VST3SDK_BASEDIR}/public.sdk/source/vst/vstnoteexpressiontypes.cpp" + "${VST3SDK_BASEDIR}/public.sdk/source/vst/vstparameters.cpp" + "${VST3SDK_BASEDIR}/public.sdk/source/vst/vstpresetfile.cpp" + "${VST3SDK_BASEDIR}/public.sdk/source/vst/vstrepresentation.cpp") +if(WIN32) + target_sources(vst3sdk PRIVATE + "${VST3SDK_BASEDIR}/public.sdk/source/common/threadchecker_win32.cpp" + "${VST3SDK_BASEDIR}/public.sdk/source/vst/vstgui_win32_bundle_support.cpp") +elseif(APPLE) +else() + target_sources(vst3sdk PRIVATE + "${VST3SDK_BASEDIR}/public.sdk/source/common/threadchecker_linux.cpp") +endif() +target_include_directories(vst3sdk PUBLIC "${VST3SDK_BASEDIR}") +target_link_libraries(vst3sdk PUBLIC Threads::Threads) +if(MINGW) + target_compile_definitions(vst3sdk PUBLIC + "_NATIVE_WCHAR_T_DEFINED=1" "__wchar_t=wchar_t") +endif() +set(_vst_release_build_types MinSizeRel Release RelWithDebInfo) +if(CMAKE_BUILD_TYPE IN_LIST _vst_release_build_types) + target_compile_definitions(vst3sdk PUBLIC "RELEASE") +else() + target_compile_definitions(vst3sdk PUBLIC "DEVELOPMENT") +endif() + function(plugin_add_vst3sdk NAME) - target_sources("${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/common/pluginview.cpp" - "${VST3SDK_BASEDIR}/public.sdk/source/main/pluginfactory.cpp" - "${VST3SDK_BASEDIR}/public.sdk/source/vst/vstaudioeffect.cpp" - "${VST3SDK_BASEDIR}/public.sdk/source/vst/vstbus.cpp" - "${VST3SDK_BASEDIR}/public.sdk/source/vst/vstcomponent.cpp" - "${VST3SDK_BASEDIR}/public.sdk/source/vst/vstcomponentbase.cpp" - "${VST3SDK_BASEDIR}/public.sdk/source/vst/vsteditcontroller.cpp" - "${VST3SDK_BASEDIR}/public.sdk/source/vst/vstinitiids.cpp" - "${VST3SDK_BASEDIR}/public.sdk/source/vst/vstnoteexpressiontypes.cpp" - "${VST3SDK_BASEDIR}/public.sdk/source/vst/vstparameters.cpp" - "${VST3SDK_BASEDIR}/public.sdk/source/vst/vstpresetfile.cpp" - "${VST3SDK_BASEDIR}/public.sdk/source/vst/vstrepresentation.cpp") + target_link_libraries("${NAME}" PRIVATE vst3sdk) if(WIN32) target_sources("${NAME}" PRIVATE - "${VST3SDK_BASEDIR}/public.sdk/source/common/threadchecker_win32.cpp" - "${VST3SDK_BASEDIR}/public.sdk/source/vst/vstgui_win32_bundle_support.cpp" "${VST3SDK_BASEDIR}/public.sdk/source/main/dllmain.cpp") elseif(APPLE) target_sources("${NAME}" PRIVATE "${VST3SDK_BASEDIR}/public.sdk/source/main/macmain.cpp") else() target_sources("${NAME}" PRIVATE - "${VST3SDK_BASEDIR}/public.sdk/source/common/threadchecker_linux.cpp" "${VST3SDK_BASEDIR}/public.sdk/source/main/linuxmain.cpp") endif() - target_include_directories("${NAME}" PRIVATE "${VST3SDK_BASEDIR}") - target_link_libraries("${NAME}" PRIVATE Threads::Threads) - if(MINGW) - target_compile_definitions("${NAME}" PRIVATE - "_NATIVE_WCHAR_T_DEFINED=1" "__wchar_t=wchar_t") - endif() - - set(_vst_release_build_types MinSizeRel Release RelWithDebInfo) - - if(CMAKE_BUILD_TYPE IN_LIST _vst_release_build_types) - target_compile_definitions("${NAME}" PRIVATE "RELEASE") - else() - target_compile_definitions("${NAME}" PRIVATE "DEVELOPMENT") - endif() endfunction() # --- VSTGUI --- +add_library(vst3sdk_vstgui STATIC EXCLUDE_FROM_ALL + "${VST3SDK_BASEDIR}/public.sdk/source/vst/vstguieditor.cpp") +target_link_libraries(vst3sdk_vstgui PUBLIC vst3sdk sfizz::vstgui) +target_compile_definitions(vst3sdk_vstgui PRIVATE "SMTG_MODULE_IS_BUNDLE=1") + function(plugin_add_vstgui NAME) - target_link_libraries("${NAME}" PRIVATE sfizz::vstgui) - target_sources("${NAME}" PRIVATE "${VST3SDK_BASEDIR}/public.sdk/source/vst/vstguieditor.cpp") - target_compile_definitions("${NAME}" PRIVATE "SMTG_MODULE_IS_BUNDLE=1") + target_link_libraries("${NAME}" PRIVATE vst3sdk_vstgui) endfunction() + +# --- Warning suppressions --- +foreach(_target vst3sdk_vstgui vst3sdk) + gw_target_warn("${_target}" PRIVATE + "-Wno-extra" + "-Wno-multichar" + "-Wno-reorder" + "-Wno-class-memaccess" + "-Wno-ignored-qualifiers" + "-Wno-unknown-pragmas" + "-Wno-unused-function" + "-Wno-unused-parameter" + "-Wno-unused-variable") +endforeach()