53 lines
2.6 KiB
CMake
53 lines
2.6 KiB
CMake
cmake_minimum_required(VERSION 3.25)
|
|
project(xtc_steinberg_examples VERSION 1.0.0 LANGUAGES C CXX)
|
|
set(XTC_VST3_SDK_ROOT "" CACHE PATH "External official VST3 SDK checkout (with submodules)")
|
|
option(XTC_BUILD_ASIO_EXAMPLE "Build Windows ASIO device diagnostics" OFF)
|
|
set(XTC_ASIO_SDK_ROOT "" CACHE PATH "External ASIO SDK root")
|
|
|
|
if(XTC_VST3_SDK_ROOT)
|
|
if(NOT EXISTS "${XTC_VST3_SDK_ROOT}/public.sdk/source/vst/vstaudioeffect.h")
|
|
message(FATAL_ERROR "XTC_VST3_SDK_ROOT needs the official SDK and its submodules")
|
|
endif()
|
|
# Never install/link example plugins into the user's plugin directories.
|
|
set(SMTG_CREATE_PLUGIN_LINK OFF CACHE BOOL "" FORCE)
|
|
set(SMTG_RUN_VST_VALIDATOR OFF CACHE BOOL "" FORCE)
|
|
set(SMTG_ENABLE_VSTGUI_SUPPORT OFF CACHE BOOL "" FORCE)
|
|
set(SMTG_ENABLE_VST3_PLUGIN_EXAMPLES OFF CACHE BOOL "" FORCE)
|
|
set(SMTG_ENABLE_VST3_HOSTING_EXAMPLES ON CACHE BOOL "" FORCE)
|
|
add_subdirectory("${XTC_VST3_SDK_ROOT}" sdk)
|
|
set(public_sdk_SOURCE_DIR "${XTC_VST3_SDK_ROOT}/public.sdk")
|
|
set(SMTG_CUSTOM_BINARY_LOCATION "${CMAKE_CURRENT_BINARY_DIR}")
|
|
smtg_add_vst3plugin(xtc-sdk-examples sdk_plugins.cpp)
|
|
target_link_libraries(xtc-sdk-examples PRIVATE sdk)
|
|
target_compile_features(xtc-sdk-examples PRIVATE cxx_std_17)
|
|
target_include_directories(xtc-sdk-examples PRIVATE "${XTC_VST3_SDK_ROOT}")
|
|
if(MSVC)
|
|
target_compile_options(xtc-sdk-examples PRIVATE /W4)
|
|
else()
|
|
target_compile_options(xtc-sdk-examples PRIVATE -Wall -Wextra -Wpedantic)
|
|
endif()
|
|
endif()
|
|
|
|
if(XTC_BUILD_ASIO_EXAMPLE)
|
|
if(NOT WIN32)
|
|
message(FATAL_ERROR "The ASIO example needs Windows and an installed ASIO driver; Linux uses JACK/PipeWire")
|
|
endif()
|
|
foreach(source common/asio.cpp host/asiodrivers.cpp host/pc/asiolist.cpp)
|
|
if(NOT EXISTS "${XTC_ASIO_SDK_ROOT}/${source}")
|
|
message(FATAL_ERROR "XTC_ASIO_SDK_ROOT is missing ${source}")
|
|
endif()
|
|
endforeach()
|
|
add_executable(xtc-asio-devices asio_devices.cpp
|
|
"${XTC_ASIO_SDK_ROOT}/common/asio.cpp"
|
|
"${XTC_ASIO_SDK_ROOT}/host/asiodrivers.cpp"
|
|
"${XTC_ASIO_SDK_ROOT}/host/pc/asiolist.cpp")
|
|
target_include_directories(xtc-asio-devices PRIVATE
|
|
"${XTC_ASIO_SDK_ROOT}/common" "${XTC_ASIO_SDK_ROOT}/host"
|
|
"${XTC_ASIO_SDK_ROOT}/host/pc")
|
|
target_compile_features(xtc-asio-devices PRIVATE cxx_std_17)
|
|
target_link_libraries(xtc-asio-devices PRIVATE ole32 advapi32 uuid user32)
|
|
endif()
|
|
|
|
if(NOT XTC_VST3_SDK_ROOT AND NOT XTC_BUILD_ASIO_EXAMPLE)
|
|
message(FATAL_ERROR "Set XTC_VST3_SDK_ROOT or enable XTC_BUILD_ASIO_EXAMPLE with XTC_ASIO_SDK_ROOT")
|
|
endif()
|