sfizz-ui/plugins/vst/cmake/VST3Plugin.cmake
2024-02-23 03:40:58 +01:00

87 lines
3.4 KiB
CMake

set(VST3_PLUGIN_PRJ_NAME "plugins_vst3")
set(VST3_PLUGIN_BUNDLE_NAME "${PROJECT_NAME}.vst3")
if(SFIZZ_CMAKE_USE_EMPTY_SOURCE_GROUPS)
source_group("" FILES VstPluginFactory.cpp)
endif()
add_library(${VST3_PLUGIN_PRJ_NAME} MODULE "VstPluginFactory.cpp")
if(WIN32)
target_sources(${VST3_PLUGIN_PRJ_NAME} PRIVATE vst3.def)
endif()
target_include_directories(${VST3_PLUGIN_PRJ_NAME}
PRIVATE "${CMAKE_CURRENT_BINARY_DIR}")
target_link_libraries(${VST3_PLUGIN_PRJ_NAME}
PRIVATE plugins_vst3_core)
set_target_properties(${VST3_PLUGIN_PRJ_NAME} PROPERTIES
OUTPUT_NAME "${PROJECT_NAME}"
PREFIX "")
plugin_add_vst3sdk(${VST3_PLUGIN_PRJ_NAME})
plugin_add_vstgui(${VST3_PLUGIN_PRJ_NAME})
if(${CMAKE_SYSTEM_NAME} MATCHES "Linux")
target_link_libraries(${VST3_PLUGIN_PRJ_NAME} PRIVATE
"-Wl,--version-script=${CMAKE_CURRENT_SOURCE_DIR}/vst3.version")
endif()
sfizz_enable_lto_if_needed(${VST3_PLUGIN_PRJ_NAME})
if(MINGW)
set_target_properties(${VST3_PLUGIN_PRJ_NAME} PROPERTIES LINK_FLAGS "-static")
endif()
# Create the bundle(see "VST 3 Locations / Format")
execute_process(
COMMAND "${CMAKE_COMMAND}" -E make_directory "${PROJECT_BINARY_DIR}/${VST3_PLUGIN_BUNDLE_NAME}/Contents/Resources")
copy_editor_resources(
${VST3_PLUGIN_PRJ_NAME}
"${CMAKE_CURRENT_SOURCE_DIR}/../editor/resources"
"${PROJECT_BINARY_DIR}/${VST3_PLUGIN_BUNDLE_NAME}/Contents/Resources")
if(WIN32)
set_target_properties(${VST3_PLUGIN_PRJ_NAME} PROPERTIES
SUFFIX ".vst3"
LIBRARY_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/${VST3_PLUGIN_BUNDLE_NAME}/Contents/${VST3_PACKAGE_ARCHITECTURE}-win/$<0:>")
file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/win/Plugin.ico"
"${CMAKE_CURRENT_SOURCE_DIR}/win/desktop.ini"
DESTINATION "${PROJECT_BINARY_DIR}/${VST3_PLUGIN_BUNDLE_NAME}")
elseif(APPLE)
set_target_properties(${VST3_PLUGIN_PRJ_NAME} PROPERTIES
SUFFIX ""
LIBRARY_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/${VST3_PLUGIN_BUNDLE_NAME}/Contents/MacOS/$<0:>")
file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/mac/PkgInfo"
DESTINATION "${PROJECT_BINARY_DIR}/${VST3_PLUGIN_BUNDLE_NAME}/Contents")
set(SFIZZ_VST3_BUNDLE_EXECUTABLE "${PROJECT_NAME}")
set(SFIZZ_VST3_BUNDLE_VERSION "${PROJECT_VERSION}")
configure_file("${CMAKE_CURRENT_SOURCE_DIR}/mac/Info.vst3.plist"
"${PROJECT_BINARY_DIR}/${VST3_PLUGIN_BUNDLE_NAME}/Contents/Info.plist" @ONLY)
else()
set_target_properties(${VST3_PLUGIN_PRJ_NAME} PROPERTIES
LIBRARY_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/${VST3_PLUGIN_BUNDLE_NAME}/Contents/${VST3_PACKAGE_ARCHITECTURE}-linux/$<0:>")
endif()
# Copy the license
if(APPLE)
# on macOS, files are not permitted at the bundle root, during code signing
file(COPY "gpl-3.0.txt"
DESTINATION "${PROJECT_BINARY_DIR}/${VST3_PLUGIN_BUNDLE_NAME}/Contents/SharedSupport/License")
else()
file(COPY "gpl-3.0.txt"
DESTINATION "${PROJECT_BINARY_DIR}/${VST3_PLUGIN_BUNDLE_NAME}")
endif()
# To help debugging the link only
if(FALSE)
target_link_options(${VST3_PLUGIN_PRJ_NAME} PRIVATE "-Wl,-no-undefined")
endif()
# Installation
if(NOT MSVC)
install(DIRECTORY "${PROJECT_BINARY_DIR}/${VST3_PLUGIN_BUNDLE_NAME}"
DESTINATION "${VST3_PLUGIN_INSTALL_DIR}"
COMPONENT "vst"
USE_SOURCE_PERMISSIONS)
bundle_dylibs(vst
"${VST3_PLUGIN_INSTALL_DIR}/${VST3_PLUGIN_BUNDLE_NAME}/Contents/MacOS/sfizz"
COMPONENT "vst")
endif()