#------------------------------------------------------------------------ macro(smtg_add_vstgui_subdirectory vstgui_SOURCE_DIR) set(VSTGUI_DISABLE_UNITTESTS 1) set(VSTGUI_STANDALONE_EXAMPLES OFF) set(VSTGUI_STANDALONE ON) set(VSTGUI_TOOLS OFF) add_subdirectory(${vstgui_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR}/VSTGUI.build) endmacro() macro(smtg_target_setup_vstgui_deprecated_methods target) if(VSTGUI_ENABLE_DEPRECATED_METHODS) target_compile_definitions(${target} PUBLIC VSTGUI_ENABLE_DEPRECATED_METHODS=1 ) else() target_compile_definitions(${target} PUBLIC VSTGUI_ENABLE_DEPRECATED_METHODS=0 ) endif() endmacro() macro(smtg_target_prepare_bundle target) target_compile_definitions(${target} PUBLIC SMTG_MODULE_IS_BUNDLE=1 ) target_sources(${target} PRIVATE ${public_sdk_SOURCE_DIR}/source/vst/vstgui_win32_bundle_support.cpp ${public_sdk_SOURCE_DIR}/source/vst/vstgui_win32_bundle_support.h ) endmacro() #[=======================================================================[.txt: Adds VSTGUI support. Usage: smtg_enable_vstgui_support(VSTGUI_SOURCE_DIR "") Exports: smtg_enable_vstgui_support exports "" as SMTG_VSTGUI_SOURCE_DIR to its parent scope. Deprecation: The usage wihout parameters is depricated. SMTG_VSTGUI_ROOT is exported for compatibility reasons and is also depricated. Replace "${SMTG_VSTGUI_ROOT}/vstgui4" with "${SMTG_VSTGUI_SOURCE_DIR}". The export of "${SMTG_VSTGUI_ROOT}" may be removed in future SDK versions. #]=======================================================================] function(smtg_enable_vstgui_support) if(${ARGC} GREATER 0) set(options) set(oneValueArgs VSTGUI_SOURCE_DIR) set(multiValueArgs) cmake_parse_arguments(ARG "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) if(ARG_UNPARSED_ARGUMENTS) message(FATAL_ERROR "[SMTG] The following parameters are unrecognized: ${ARG_UNPARSED_ARGUMENTS}") endif() get_filename_component(vstgui_root "${ARG_VSTGUI_SOURCE_DIR}" DIRECTORY) set(SMTG_VSTGUI_ROOT "${vstgui_root}" PARENT_SCOPE) set(vstgui_source_dir "${ARG_VSTGUI_SOURCE_DIR}") else() # See function documentation for more information. message(DEPRECATION "[SMTG] Use smtg_enable_vstgui_support(VSTGUI_SOURCE_DIR \"\") " "instead of set(SMTG_VSTGUI_ROOT \"\") and smtg_enable_vstgui_support()") set(vstgui_source_dir "${SMTG_VSTGUI_ROOT}/vstgui4") endif() # Export SMTG_VSTGUI_SOURCE_DIR to parent scope set(SMTG_VSTGUI_SOURCE_DIR "${vstgui_source_dir}" PARENT_SCOPE) message(STATUS "[SMTG] SMTG_VSTGUI_SOURCE_DIR is set to: ${vstgui_source_dir}") smtg_add_vstgui_subdirectory(${vstgui_source_dir}) add_library(vstgui_support STATIC ${vstgui_source_dir}/vstgui/plugin-bindings/vst3groupcontroller.cpp ${vstgui_source_dir}/vstgui/plugin-bindings/vst3groupcontroller.h ${vstgui_source_dir}/vstgui/plugin-bindings/vst3padcontroller.cpp ${vstgui_source_dir}/vstgui/plugin-bindings/vst3padcontroller.h ${vstgui_source_dir}/vstgui/plugin-bindings/vst3editor.cpp ${vstgui_source_dir}/vstgui/plugin-bindings/vst3editor.h ${public_sdk_SOURCE_DIR}/source/vst/vstguieditor.cpp ) target_link_libraries(vstgui_support PUBLIC base vstgui vstgui_uidescription ) target_include_directories(vstgui_support PUBLIC ${vstgui_source_dir} ) target_compile_definitions(vstgui_support PUBLIC $<$:VSTGUI_LIVE_EDITING> ) smtg_target_setup_vstgui_deprecated_methods(vstgui_support) smtg_target_setup_universal_binary(vstgui_support) smtg_target_setup_universal_binary(vstgui) smtg_target_setup_universal_binary(vstgui_uidescription) if(SMTG_WIN AND SMTG_CREATE_BUNDLE_FOR_WINDOWS) smtg_target_prepare_bundle(vstgui_support) endif() if(SMTG_LINUX) target_sources(vstgui_support PRIVATE ${public_sdk_SOURCE_DIR}/source/vst/vstgui_linux_runloop_support.cpp ${public_sdk_SOURCE_DIR}/source/vst/vstgui_linux_runloop_support.h ) endif() endfunction()