Make vst3 core a build-once target
This commit is contained in:
parent
5b189848cd
commit
5aa26b58bf
2 changed files with 68 additions and 79 deletions
|
|
@ -13,61 +13,89 @@ configure_file(VstPluginDefs.h.in "${CMAKE_CURRENT_BINARY_DIR}/VstPluginDefs.h")
|
||||||
# Build VST3 SDK
|
# Build VST3 SDK
|
||||||
include("cmake/Vst3.cmake")
|
include("cmake/Vst3.cmake")
|
||||||
|
|
||||||
# Build the plugin
|
# Add the ring buffer
|
||||||
set(VSTPLUGIN_SOURCES
|
set(RINGBUFFER_HEADERS
|
||||||
SfizzVstProcessor.cpp
|
"external/ring_buffer/ring_buffer/ring_buffer.h"
|
||||||
SfizzVstController.cpp
|
"external/ring_buffer/ring_buffer/ring_buffer.tcc")
|
||||||
SfizzVstEditor.cpp
|
add_library(sfizz-ring-buffer STATIC
|
||||||
SfizzVstState.cpp
|
"external/ring_buffer/ring_buffer/ring_buffer.cpp"
|
||||||
SfizzVstUpdates.cpp
|
${RINGBUFFER_HEADERS})
|
||||||
SfizzFileScan.cpp
|
source_group("Header Files" FILES ${RINGBUFFER_HEADERS})
|
||||||
SfizzForeignPaths.cpp
|
target_include_directories(sfizz-ring-buffer INTERFACE "external/ring_buffer")
|
||||||
SfizzSettings.cpp
|
add_library(sfizz::ring-buffer ALIAS sfizz-ring-buffer)
|
||||||
VstPluginFactory.cpp
|
|
||||||
X11RunLoop.cpp
|
|
||||||
NativeHelpers.cpp
|
|
||||||
FileTrie.cpp)
|
|
||||||
|
|
||||||
set(VSTPLUGIN_HEADERS
|
# Build the VST shared code
|
||||||
|
add_library(sfizz-vst3-core STATIC
|
||||||
|
SfizzVstProcessor.cpp
|
||||||
SfizzVstProcessor.h
|
SfizzVstProcessor.h
|
||||||
|
SfizzVstController.cpp
|
||||||
SfizzVstController.h
|
SfizzVstController.h
|
||||||
|
SfizzVstEditor.cpp
|
||||||
SfizzVstEditor.h
|
SfizzVstEditor.h
|
||||||
|
SfizzVstState.cpp
|
||||||
SfizzVstState.h
|
SfizzVstState.h
|
||||||
SfizzVstParameters.h
|
SfizzVstParameters.h
|
||||||
SfizzVstUpdates.h
|
SfizzVstUpdates.h
|
||||||
|
SfizzVstUpdates.cpp
|
||||||
SfizzFileScan.h
|
SfizzFileScan.h
|
||||||
|
SfizzFileScan.cpp
|
||||||
SfizzForeignPaths.h
|
SfizzForeignPaths.h
|
||||||
|
SfizzForeignPaths.cpp
|
||||||
SfizzSettings.h
|
SfizzSettings.h
|
||||||
X11RunLoop.h
|
SfizzSettings.cpp
|
||||||
IdleUpdateHandler.h
|
FileTrie.h
|
||||||
|
FileTrie.cpp
|
||||||
NativeHelpers.h
|
NativeHelpers.h
|
||||||
FileTrie.h)
|
NativeHelpers.cpp
|
||||||
|
VstPluginFactory.cpp
|
||||||
|
IdleUpdateHandler.h
|
||||||
|
X11RunLoop.h
|
||||||
|
X11RunLoop.cpp)
|
||||||
if(APPLE)
|
if(APPLE)
|
||||||
set(VSTPLUGIN_MAC_SOURCES
|
target_sources(sfizz-vst3-core PRIVATE
|
||||||
SfizzForeignPaths.mm
|
SfizzForeignPaths.mm
|
||||||
SfizzSettings.mm
|
SfizzSettings.mm
|
||||||
NativeHelpers.mm)
|
NativeHelpers.mm)
|
||||||
list(APPEND VSTPLUGIN_SOURCES ${VSTPLUGIN_MAC_SOURCES})
|
set_property(
|
||||||
set_property(SOURCE ${VSTPLUGIN_MAC_SOURCES} APPEND_STRING
|
SOURCE SfizzForeignPaths.mm
|
||||||
PROPERTY COMPILE_FLAGS " -fobjc-arc")
|
SfizzSettings.mm
|
||||||
|
NativeHelpers.mm
|
||||||
|
APPEND_STRING
|
||||||
|
PROPERTY COMPILE_FLAGS " -fobjc-arc")
|
||||||
endif()
|
endif()
|
||||||
|
target_include_directories(sfizz-vst3-core
|
||||||
add_library(${VSTPLUGIN_PRJ_NAME} MODULE
|
PRIVATE "${CMAKE_CURRENT_BINARY_DIR}")
|
||||||
${VSTPLUGIN_HEADERS}
|
target_link_libraries(sfizz-vst3-core PRIVATE
|
||||||
${VSTPLUGIN_SOURCES})
|
|
||||||
|
|
||||||
if(WIN32)
|
|
||||||
target_sources(${VSTPLUGIN_PRJ_NAME} PRIVATE vst3.def)
|
|
||||||
endif()
|
|
||||||
target_link_libraries(${VSTPLUGIN_PRJ_NAME}
|
|
||||||
PRIVATE sfizz::sfizz
|
PRIVATE sfizz::sfizz
|
||||||
PRIVATE sfizz::import
|
PRIVATE sfizz::import
|
||||||
PRIVATE sfizz::editor
|
PRIVATE sfizz::editor
|
||||||
PRIVATE sfizz::plugins-common
|
PRIVATE sfizz::plugins-common
|
||||||
PRIVATE sfizz::pugixml sfizz::filesystem)
|
PRIVATE sfizz::pugixml sfizz::filesystem
|
||||||
target_include_directories(${VSTPLUGIN_PRJ_NAME}
|
PRIVATE sfizz::ring-buffer
|
||||||
PRIVATE "${CMAKE_CURRENT_BINARY_DIR}")
|
vst3sdk
|
||||||
|
vst3sdk_vstgui)
|
||||||
|
gw_target_warn(sfizz-vst3-core PRIVATE
|
||||||
|
"-Wno-ignored-qualifiers"
|
||||||
|
"-Wno-unused-parameter")
|
||||||
|
add_library(sfizz::vst3-core ALIAS sfizz-vst3-core)
|
||||||
|
|
||||||
|
# Link system dependencies
|
||||||
|
if(WIN32)
|
||||||
|
elseif(APPLE)
|
||||||
|
else()
|
||||||
|
find_package(PkgConfig REQUIRED)
|
||||||
|
pkg_check_modules(GLIB REQUIRED glib-2.0)
|
||||||
|
target_include_directories(sfizz-vst3-core PRIVATE ${GLIB_INCLUDE_DIRS})
|
||||||
|
target_link_libraries(sfizz-vst3-core PRIVATE ${GLIB_LIBRARIES})
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# Build the plugin
|
||||||
|
add_library(${VSTPLUGIN_PRJ_NAME} MODULE)
|
||||||
|
if(WIN32)
|
||||||
|
target_sources(${VSTPLUGIN_PRJ_NAME} PRIVATE vst3.def)
|
||||||
|
endif()
|
||||||
|
target_link_libraries(${VSTPLUGIN_PRJ_NAME}
|
||||||
|
PRIVATE sfizz-vst3-core)
|
||||||
set_target_properties(${VSTPLUGIN_PRJ_NAME} PROPERTIES
|
set_target_properties(${VSTPLUGIN_PRJ_NAME} PROPERTIES
|
||||||
OUTPUT_NAME "${PROJECT_NAME}"
|
OUTPUT_NAME "${PROJECT_NAME}"
|
||||||
PREFIX "")
|
PREFIX "")
|
||||||
|
|
@ -75,18 +103,6 @@ set_target_properties(${VSTPLUGIN_PRJ_NAME} PROPERTIES
|
||||||
plugin_add_vst3sdk(${VSTPLUGIN_PRJ_NAME})
|
plugin_add_vst3sdk(${VSTPLUGIN_PRJ_NAME})
|
||||||
plugin_add_vstgui(${VSTPLUGIN_PRJ_NAME})
|
plugin_add_vstgui(${VSTPLUGIN_PRJ_NAME})
|
||||||
|
|
||||||
# Add the ring buffer
|
|
||||||
set(RINGBUFFER_HEADERS
|
|
||||||
"external/ring_buffer/ring_buffer/ring_buffer.h"
|
|
||||||
"external/ring_buffer/ring_buffer/ring_buffer.tcc")
|
|
||||||
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")
|
if(${CMAKE_SYSTEM_NAME} MATCHES "Linux")
|
||||||
target_link_libraries(${VSTPLUGIN_PRJ_NAME} PRIVATE
|
target_link_libraries(${VSTPLUGIN_PRJ_NAME} PRIVATE
|
||||||
"-Wl,--version-script=${CMAKE_CURRENT_SOURCE_DIR}/vst3.version")
|
"-Wl,--version-script=${CMAKE_CURRENT_SOURCE_DIR}/vst3.version")
|
||||||
|
|
@ -96,17 +112,6 @@ if(MINGW)
|
||||||
set_target_properties(${VSTPLUGIN_PRJ_NAME} PROPERTIES LINK_FLAGS "-static")
|
set_target_properties(${VSTPLUGIN_PRJ_NAME} PROPERTIES LINK_FLAGS "-static")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# Link system dependencies
|
|
||||||
if(WIN32)
|
|
||||||
elseif(APPLE)
|
|
||||||
target_link_libraries(${VSTPLUGIN_PRJ_NAME} PRIVATE ${APPLE_FOUNDATION_LIBRARY})
|
|
||||||
else()
|
|
||||||
find_package(PkgConfig REQUIRED)
|
|
||||||
pkg_check_modules(GLIB REQUIRED glib-2.0)
|
|
||||||
target_include_directories(${VSTPLUGIN_PRJ_NAME} PRIVATE ${GLIB_INCLUDE_DIRS})
|
|
||||||
target_link_libraries(${VSTPLUGIN_PRJ_NAME} PRIVATE ${GLIB_LIBRARIES})
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# Create the bundle(see "VST 3 Locations / Format")
|
# Create the bundle(see "VST 3 Locations / Format")
|
||||||
execute_process(
|
execute_process(
|
||||||
COMMAND "${CMAKE_COMMAND}" -E make_directory "${PROJECT_BINARY_DIR}/${VSTPLUGIN_BUNDLE_NAME}/Contents/Resources")
|
COMMAND "${CMAKE_COMMAND}" -E make_directory "${PROJECT_BINARY_DIR}/${VSTPLUGIN_BUNDLE_NAME}/Contents/Resources")
|
||||||
|
|
@ -145,10 +150,6 @@ else()
|
||||||
DESTINATION "${PROJECT_BINARY_DIR}/${VSTPLUGIN_BUNDLE_NAME}")
|
DESTINATION "${PROJECT_BINARY_DIR}/${VSTPLUGIN_BUNDLE_NAME}")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
gw_target_warn(${VSTPLUGIN_PRJ_NAME} PRIVATE
|
|
||||||
"-Wno-ignored-qualifiers"
|
|
||||||
"-Wno-unused-parameter")
|
|
||||||
|
|
||||||
# To help debugging the link only
|
# To help debugging the link only
|
||||||
if(FALSE)
|
if(FALSE)
|
||||||
target_link_options(${VSTPLUGIN_PRJ_NAME} PRIVATE "-Wl,-no-undefined")
|
target_link_options(${VSTPLUGIN_PRJ_NAME} PRIVATE "-Wl,-no-undefined")
|
||||||
|
|
@ -177,9 +178,7 @@ elseif(SFIZZ_AU)
|
||||||
"${AUWRAPPER_BASEDIR}/aucocoaview.mm"
|
"${AUWRAPPER_BASEDIR}/aucocoaview.mm"
|
||||||
"${AUWRAPPER_BASEDIR}/ausdk.mm"
|
"${AUWRAPPER_BASEDIR}/ausdk.mm"
|
||||||
"${AUWRAPPER_BASEDIR}/auwrapper.mm"
|
"${AUWRAPPER_BASEDIR}/auwrapper.mm"
|
||||||
"${AUWRAPPER_BASEDIR}/NSDataIBStream.mm"
|
"${AUWRAPPER_BASEDIR}/NSDataIBStream.mm")
|
||||||
${VSTPLUGIN_HEADERS}
|
|
||||||
${VSTPLUGIN_SOURCES})
|
|
||||||
target_include_directories(${AUPLUGIN_PRJ_NAME} PRIVATE
|
target_include_directories(${AUPLUGIN_PRJ_NAME} PRIVATE
|
||||||
"${VST3SDK_BASEDIR}")
|
"${VST3SDK_BASEDIR}")
|
||||||
target_link_libraries(${AUPLUGIN_PRJ_NAME} PRIVATE
|
target_link_libraries(${AUPLUGIN_PRJ_NAME} PRIVATE
|
||||||
|
|
@ -192,13 +191,7 @@ elseif(SFIZZ_AU)
|
||||||
"${APPLE_COREMIDI_LIBRARY}")
|
"${APPLE_COREMIDI_LIBRARY}")
|
||||||
|
|
||||||
target_link_libraries(${AUPLUGIN_PRJ_NAME}
|
target_link_libraries(${AUPLUGIN_PRJ_NAME}
|
||||||
PRIVATE sfizz::sfizz
|
PRIVATE sfizz-vst3-core)
|
||||||
PRIVATE sfizz::import
|
|
||||||
PRIVATE sfizz::editor
|
|
||||||
PRIVATE sfizz::plugins-common
|
|
||||||
PRIVATE sfizz::pugixml sfizz::filesystem)
|
|
||||||
target_include_directories(${AUPLUGIN_PRJ_NAME}
|
|
||||||
PRIVATE "${CMAKE_CURRENT_BINARY_DIR}")
|
|
||||||
set_target_properties(${AUPLUGIN_PRJ_NAME} PROPERTIES
|
set_target_properties(${AUPLUGIN_PRJ_NAME} PROPERTIES
|
||||||
OUTPUT_NAME "${PROJECT_NAME}"
|
OUTPUT_NAME "${PROJECT_NAME}"
|
||||||
PREFIX "")
|
PREFIX "")
|
||||||
|
|
@ -249,9 +242,6 @@ elseif(SFIZZ_AU)
|
||||||
"${VST3SDK_BASEDIR}/public.sdk/source/vst/hosting/pluginterfacesupport.cpp"
|
"${VST3SDK_BASEDIR}/public.sdk/source/vst/hosting/pluginterfacesupport.cpp"
|
||||||
"${VST3SDK_BASEDIR}/public.sdk/source/vst/hosting/processdata.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
|
# Add generated source
|
||||||
file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/include")
|
file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/include")
|
||||||
target_include_directories(${AUPLUGIN_PRJ_NAME} PRIVATE "${CMAKE_CURRENT_BINARY_DIR}/include")
|
target_include_directories(${AUPLUGIN_PRJ_NAME} PRIVATE "${CMAKE_CURRENT_BINARY_DIR}/include")
|
||||||
|
|
@ -314,10 +304,6 @@ elseif(SFIZZ_AU)
|
||||||
"${AUWRAPPER_BASEDIR}/auresource.r")
|
"${AUWRAPPER_BASEDIR}/auresource.r")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
gw_target_warn(${AUPLUGIN_PRJ_NAME} PRIVATE
|
|
||||||
"-Wno-ignored-qualifiers"
|
|
||||||
"-Wno-unused-parameter")
|
|
||||||
|
|
||||||
# Installation
|
# Installation
|
||||||
if(AUPLUGIN_INSTALL_DIR)
|
if(AUPLUGIN_INSTALL_DIR)
|
||||||
install(DIRECTORY "${PROJECT_BINARY_DIR}/${AUPLUGIN_BUNDLE_NAME}"
|
install(DIRECTORY "${PROJECT_BINARY_DIR}/${AUPLUGIN_BUNDLE_NAME}"
|
||||||
|
|
|
||||||
|
|
@ -41,6 +41,9 @@ else()
|
||||||
endif()
|
endif()
|
||||||
target_include_directories(vst3sdk PUBLIC "${VST3SDK_BASEDIR}")
|
target_include_directories(vst3sdk PUBLIC "${VST3SDK_BASEDIR}")
|
||||||
target_link_libraries(vst3sdk PUBLIC Threads::Threads)
|
target_link_libraries(vst3sdk PUBLIC Threads::Threads)
|
||||||
|
if(APPLE)
|
||||||
|
target_link_libraries(vst3sdk PUBLIC ${APPLE_FOUNDATION_LIBRARY})
|
||||||
|
endif()
|
||||||
if(MINGW)
|
if(MINGW)
|
||||||
target_compile_definitions(vst3sdk PUBLIC
|
target_compile_definitions(vst3sdk PUBLIC
|
||||||
"_NATIVE_WCHAR_T_DEFINED=1" "__wchar_t=wchar_t")
|
"_NATIVE_WCHAR_T_DEFINED=1" "__wchar_t=wchar_t")
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue