cmake_minimum_required(VERSION 3.20)

set(CMAKE_OSX_ARCHITECTURES arm64 x86_64)

set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED True)

project(UhhyouPlugins
  VERSION 0.70.0)

if(MSVC)
  # For errors on `lib/vst3sdk/public.sdk/source/vst/hosting/module_win32.cpp`, VST SDK 3.7.14.
  add_compile_options("/Zc:__cplusplus")
endif()

option(SMTG_ADD_VST3_HOSTING_SAMPLES OFF)
option(SMTG_ENABLE_VST3_PLUGIN_EXAMPLES OFF)
option(SMTG_ENABLE_VST3_HOSTING_EXAMPLES OFF)
option(SMTG_CREATE_PLUGIN_LINK OFF)
option(SMTG_RUN_VST_VALIDATOR OFF)

add_subdirectory(common)
add_subdirectory(lib/vst3sdk)
smtg_enable_vst3_sdk()

add_subdirectory(AccumulativeRingMod)
add_subdirectory(BasicLimiter)
add_subdirectory(BasicLimiterAutoMake)
add_subdirectory(ClangCymbal)
add_subdirectory(ClangSynth)
add_subdirectory(CollidingCombSynth)
add_subdirectory(CombDistortion)
add_subdirectory(CubicPadSynth)
add_subdirectory(DoubleLoopCymbal)
add_subdirectory(EnvelopedSine)
add_subdirectory(EsPhaser)
add_subdirectory(FDN64Reverb)
add_subdirectory(FDNCymbal)
add_subdirectory(FeedbackPhaser)
add_subdirectory(FoldShaper)
add_subdirectory(GenericDrum)
add_subdirectory(GlitchSprinkler)
add_subdirectory(IterativeSinCluster)
add_subdirectory(L3Reverb)
add_subdirectory(L4Reverb)
add_subdirectory(LatticeReverb)
add_subdirectory(LightPadSynth)
add_subdirectory(LongPhaser)
add_subdirectory(MatrixShifter)
add_subdirectory(MaybeSnare)
add_subdirectory(MembraneSynth)
add_subdirectory(MiniCliffEQ)
add_subdirectory(ModuloShaper)
add_subdirectory(NarrowingDelay)
add_subdirectory(OddPowShaper)
add_subdirectory(OrdinaryPhaser)
add_subdirectory(ParallelComb)
add_subdirectory(ParallelDetune)
add_subdirectory(PitchShiftDelay)
add_subdirectory(RingModSpacer)
add_subdirectory(SevenDelay)
add_subdirectory(SoftClipper)
add_subdirectory(SpectralPhaser)
add_subdirectory(SyncSawSynth)
add_subdirectory(TrapezoidSynth)
add_subdirectory(UltraSynth)
add_subdirectory(UltrasonicRingMod)
add_subdirectory(WaveCymbal)

# ## Below are prototype plugins. Breaking changes will be introduced.
# add_subdirectory(TestBedSynth)
# add_subdirectory(GrowlSynth)
