Skip to content

Commit ebc13a2

Browse files
authoredDec 27, 2024
Update to support SDK 3.7.11 via local installation. Integrate AUv3 support (#19)
1 parent 461de64 commit ebc13a2

24 files changed

+1022
-396
lines changed
 

‎.gitignore

+1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
build
2+
vst3sdk
23
*.cmake
34
Makefile
45
CMakeCache.txt

‎CMakeLists.txt

+60-103
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,12 @@ set(CMAKE_COLOR_MAKEFILE ON)
1111
project(VSTSID)
1212
set(PROJECT_VERSION 1)
1313
set(target vstsid)
14-
set(copyright "igorski.nl 2018-2023")
14+
set(copyright "igorski.nl 2018-2024")
1515
set(major_version 1)
1616
set(minor_version 1)
1717
set(release_number 2)
1818
set(build_number 1) # TODO supply through CLI (build number is not included in public facing version strings)
19+
set(version_string "${major_version}.${minor_version}.${release_number}") # also see audiounitconfig.h#kAUcomponentVersion and related Info.plist
1920
set(SMTG_CREATE_MODULE_INFO false)
2021

2122
#####################
@@ -35,16 +36,18 @@ if(MSVC)
3536
endif()
3637

3738
if(UNIX)
38-
if(XCODE)
39-
set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LANGUAGE_STANDARD "c++17")
40-
set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LIBRARY "libc++")
41-
elseif(APPLE)
42-
set(CMAKE_POSITION_INDEPENDENT_CODE TRUE)
43-
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++17 -stdlib=libc++")
44-
link_libraries(c++)
45-
# support Yosemite and up
46-
set(CMAKE_OSX_SYSROOT macosx10.13)
47-
set(CMAKE_OSX_DEPLOYMENT_TARGET "10.13")
39+
if(APPLE)
40+
if (XCODE)
41+
set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LANGUAGE_STANDARD "c++17")
42+
set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LIBRARY "libc++")
43+
else()
44+
set(CMAKE_POSITION_INDEPENDENT_CODE TRUE)
45+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++17 -stdlib=libc++")
46+
link_libraries(c++)
47+
endif()
48+
# support Yosemite and up
49+
set(CMAKE_OSX_SYSROOT macosx10.13)
50+
set(CMAKE_OSX_DEPLOYMENT_TARGET "10.13")
4851
else()
4952
set(LINUX true)
5053
add_definitions( -D__cdecl= )
@@ -64,24 +67,23 @@ endif()
6467

6568
list(APPEND CMAKE_MODULE_PATH "${VST3_SDK_ROOT}/cmake/modules")
6669

67-
include(SMTG_Global)
70+
# include(SMTG_AAXSupport)
6871
include(SMTG_AddVST3Library)
72+
include(SMTG_AddVST3Options)
6973
include(SMTG_Bundle)
74+
include(SMTG_CoreAudioSupport)
7075
include(SMTG_ExportedSymbols)
71-
include(SMTG_PrefixHeader)
76+
include(SMTG_Global)
7277
include(SMTG_PlatformIOS)
7378
include(SMTG_PlatformToolset)
74-
include(SMTG_CoreAudioSupport)
75-
include(SMTG_AAXSupport)
76-
include(SMTG_VstGuiSupport)
79+
include(SMTG_PrefixHeader)
7780
include(SMTG_UniversalBinary)
78-
include(SMTG_AddVST3Options)
81+
include(SMTG_VstGuiSupport)
7982

8083
#########################
8184
# Steinberg VST sources #
8285
#########################
8386

84-
set(VSTSDK_INCLUDE_DIR ${VST3_SDK_ROOT})
8587
set(VSTSDK_PLUGIN_SOURCE
8688
${VST3_SDK_ROOT}/public.sdk/source/common/commoniids.cpp
8789
${VST3_SDK_ROOT}/public.sdk/source/vst/vstaudioeffect.cpp
@@ -158,31 +160,13 @@ set(vst_ui_descr "resource/plugin.uidesc")
158160
# VST #
159161
#######
160162

161-
set(steinberg_libs "base" "pluginterfaces" "sdk" "vstgui_support" "vstgui_uidescription" "vstgui")
162163
smtg_add_vst3plugin(${target} ${vst_sources})
164+
smtg_target_configure_version_file(${target})
163165

164-
##############
165-
# Audio Unit #
166-
##############
167-
168-
if (CREATE_AUDIO_UNIT)
169-
set(SDK_ROOT ${VST3_SDK_ROOT})
170-
include(SMTG_AddVST3AuV2)
171-
set(steinberg_libs ${steinberg_libs} "auwrapper" "sdk_hosting")
172-
smtg_target_add_auv2(${target}-au
173-
BUNDLE_NAME ${target}
174-
BUNDLE_IDENTIFIER nl.igorski.vst.${target}.audiounit
175-
INFO_PLIST_TEMPLATE ${CMAKE_CURRENT_SOURCE_DIR}/audio-unit/Info.plist
176-
VST3_PLUGIN_TARGET ${target}
177-
)
178-
set_target_properties(${target} PROPERTIES XCODE_ATTRIBUTE_OTHER_LDFLAGS "-all_load")
179-
endif()
180-
181-
#######################
182-
# Steinberg libraries #
183-
#######################
166+
## include Steinberg libraries
184167

185-
include_directories(${VSTSDK_INCLUDE_DIR})
168+
set(steinberg_libs "base" "pluginterfaces" "sdk" "vstgui" "vstgui_support" "vstgui_uidescription")
169+
include_directories(${VST3_SDK_ROOT})
186170
foreach(lib IN ITEMS ${steinberg_libs})
187171
if(UNIX)
188172
target_link_libraries(${target} PRIVATE ${VST3_SDK_ROOT}/build/lib/Release/lib${lib}.a)
@@ -200,55 +184,14 @@ target_sources(${target} PRIVATE
200184
${VST3_SDK_ROOT}/public.sdk/source/vst/vstguieditor.cpp
201185
)
202186

203-
#############################
204-
# System specific libraries #
205-
#############################
206-
207187
## include macOS specific libraries
208188

209189
IF (APPLE)
210190
target_sources (${target} PRIVATE
211191
${VST3_SDK_ROOT}/public.sdk/source/main/macmain.cpp
212-
${VST3_SDK_ROOT}/vstgui4/vstgui/vstgui_mac.mm
213192
)
214193
if(XCODE)
215-
if(SMTG_IOS_DEVELOPMENT_TEAM)
216-
## iOS plugin
217-
set(target ${target}_ios)
218-
smtg_add_ios_vst3plugin("${SMTG_CODE_SIGN_IDENTITY_IOS}" ${target} "${target}" "${vst_sources}")
219-
set_target_properties(${target} PROPERTIES ${SDK_IDE_PLUGIN_EXAMPLES_FOLDER})
220-
target_link_libraries(${target} PRIVATE
221-
base_ios
222-
sdk_ios
223-
"-framework UIKit"
224-
"-framework CoreGraphics"
225-
"-framework QuartzCore"
226-
"-framework CoreText"
227-
"-framework Accelerate"
228-
"-framework ImageIO"
229-
"-framework MobileCoreServices"
230-
)
231-
target_sources(${target} PRIVATE
232-
${VST3_SDK_ROOT}/vstgui4/vstgui/vstgui_ios.mm
233-
)
234-
else()
235-
## macOS plugin
236-
set(MACOS_LIBRARIES
237-
"-framework Cocoa"
238-
"-framework OpenGL"
239-
"-framework Accelerate"
240-
"-framework QuartzCore"
241-
"-framework Carbon"
242-
)
243-
if (CREATE_AUDIO_UNIT)
244-
set(MACOS_LIBRARIES
245-
${MACOS_LIBRARIES}
246-
"-framework AudioToolbox"
247-
"-framework CoreMIDI"
248-
)
249-
endif()
250-
target_link_libraries(${target} PRIVATE ${MACOS_LIBRARIES})
251-
endif()
194+
target_link_libraries(${target} PRIVATE "-framework Cocoa" "-framework OpenGL" "-framework Accelerate" "-framework QuartzCore" "-framework Carbon")
252195
else()
253196
find_library(COREFOUNDATION_FRAMEWORK CoreFoundation)
254197
find_library(COCOA_FRAMEWORK Cocoa)
@@ -264,10 +207,10 @@ IF (APPLE)
264207
BUNDLE_EXTENSION "vst3"
265208
XCODE_ATTRIBUTE_WRAPPER_EXTENSION "vst3"
266209
MACOSX_BUNDLE_INFO_PLIST "${CMAKE_CURRENT_SOURCE_DIR}/mac/Info.plist"
267-
MACOSX_BUNDLE_BUNDLE_NAME "${project}"
210+
MACOSX_BUNDLE_BUNDLE_NAME "${target}"
268211
MACOSX_BUNDLE_GUI_IDENTIFIER "nl.igorski.vst.${target}"
269212
MACOSX_BUNDLE_ICON_FILE ""
270-
MACOSX_BUNDLE_SHORT_VERSION_STRING "${major_version}.${minor_version}.${release_number}"
213+
MACOSX_BUNDLE_SHORT_VERSION_STRING "${version_string}"
271214
MACOSX_BUNDLE_COPYRIGHT "${copyright}"
272215
)
273216
endif()
@@ -310,7 +253,7 @@ endif()
310253
## Include Windows specific libraries
311254

312255
if(WIN)
313-
target_sources (${target} PRIVATE
256+
target_sources(${target} PRIVATE
314257
${VST3_SDK_ROOT}/public.sdk/source/main/dllmain.cpp
315258
# ${VST3_SDK_ROOT}/vstgui4/vstgui/vstgui_win32.cpp
316259
)
@@ -319,19 +262,33 @@ endif()
319262
## Add the resource files to the bundle
320263

321264
smtg_target_add_plugin_resources(${target}
322-
RESOURCES ${vst_ui_descr} ${vst_resources}
265+
RESOURCES ${vst_ui_descr} ${vst_resources}
323266
)
324267

325268
if(APPLE)
326-
smtg_target_set_bundle(${target} INFOPLIST "${CMAKE_CURRENT_SOURCE_DIR}/mac/Info.plist" PREPROCESS)
327-
# adding PkgInfo at root level makes plugin appear as a file instead of folder
328-
smtg_target_add_plugin_resources(${target} RESOURCES "${CMAKE_CURRENT_SOURCE_DIR}/mac/PkgInfo" OUTPUT_SUBDIRECTORY "../")
269+
##############
270+
# Audio Unit #
271+
##############
272+
if (XCODE AND SMTG_CREATE_AU_VERSION)
273+
message(STATUS "SMTG_CREATE_AU_VERSION is set. An Audio Unit version of the plug-in will be created.")
274+
smtg_target_codesign(${target} ${SMTG_IOS_DEVELOPMENT_TEAM} ${SMTG_CODE_SIGN_IDENTITY_MAC})
275+
add_subdirectory(mac/audio-unit)
276+
create_audio_unit(${target})
277+
else()
278+
smtg_target_set_bundle(${target} INFOPLIST "${CMAKE_CURRENT_SOURCE_DIR}/mac/Info.plist" PREPROCESS)
279+
# adding PkgInfo at root level makes plugin appear as a file instead of folder
280+
smtg_target_add_plugin_resources(${target} RESOURCES "${CMAKE_CURRENT_SOURCE_DIR}/mac/PkgInfo" OUTPUT_SUBDIRECTORY "../")
281+
endif()
282+
smtg_target_set_bundle(${target}
283+
BUNDLE_IDENTIFIER "nl.igorski.${target}"
284+
COMPANY_NAME "igorski.nl"
285+
)
329286
elseif(WIN)
330287
target_sources(${target} PRIVATE resource/plugin.rc)
331288
endif()
332289

333290
if (SMTG_CREATE_VST2_VERSION)
334-
message(STATUS "SMTG_CREATE_VST2_VERSION is set. A VST 2 version of the plug-in will be created (just rename the generated file from .vst3 to .vst).")
291+
message(STATUS "SMTG_CREATE_VST2_VERSION is set. A VST 2 version of the plug-in will be created.")
335292
if(XCODE)
336293
# fix missing VSTPluginMain symbol when also building VST 2 version
337294
set_target_properties(${target} PROPERTIES XCODE_ATTRIBUTE_EXPORTED_SYMBOLS_FILE "")
@@ -346,19 +303,19 @@ endif()
346303
######################
347304

348305
if(APPLE)
349-
install(TARGETS ${target}
350-
DESTINATION "$ENV{HOME}/Library/Audio/Plug-Ins/VST"
351-
)
306+
install(TARGETS ${target}
307+
DESTINATION "$ENV{HOME}/Library/Audio/Plug-Ins/VST"
308+
)
352309
elseif(WIN32)
353-
install(TARGETS ${target}
354-
DESTINATION "C:/Program Files (x86)/Common Files/VST3/"
355-
)
310+
install(TARGETS ${target}
311+
DESTINATION "C:/Program Files (x86)/Common Files/VST3/"
312+
)
356313
elseif(WIN)
357-
install(TARGETS ${target}
358-
DESTINATION "C:/Program Files/Common Files/VST3/"
359-
)
314+
install(TARGETS ${target}
315+
DESTINATION "C:/Program Files/Common Files/VST3/"
316+
)
360317
elseif(LINUX)
361-
install(TARGETS ${target}
362-
DESTINATION "/usr/lib/lxvst"
363-
)
364-
endif()
318+
install(TARGETS ${target}
319+
DESTINATION "/usr/lib/lxvst"
320+
)
321+
endif()

0 commit comments

Comments
 (0)
Please sign in to comment.