cmake_minimum_required(VERSION 3.22) project(Horizont VERSION 1.0.0 LANGUAGES C CXX) set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) if(NOT CMAKE_BUILD_TYPE) set(CMAKE_BUILD_TYPE Release) endif() if(DEFINED JUCE_ROOT AND EXISTS "${JUCE_ROOT}/CMakeLists.txt") message(STATUS "Using JUCE from ${JUCE_ROOT}") add_subdirectory("${JUCE_ROOT}" "${CMAKE_BINARY_DIR}/JUCE") elseif(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/JUCE/CMakeLists.txt") message(STATUS "Using JUCE from ${CMAKE_CURRENT_SOURCE_DIR}/JUCE") add_subdirectory("${CMAKE_CURRENT_SOURCE_DIR}/JUCE") else() list(APPEND CMAKE_PREFIX_PATH "${CMAKE_CURRENT_SOURCE_DIR}/JUCE") find_package(JUCE CONFIG REQUIRED) endif() juce_add_plugin(Horizont VERSION "1.0.0" PRODUCT_NAME "Horizont" COMPANY_NAME "Horizont" BUNDLE_ID "com.horizont.Horizont" PLUGIN_MANUFACTURER_CODE "ARMN" PLUGIN_CODE "RVRB" DESCRIPTION "Algorithmic stereo reverb with feedback pitch shifting" IS_SYNTH FALSE IS_MIDI_EFFECT FALSE NEEDS_MIDI_INPUT FALSE NEEDS_MIDI_OUTPUT FALSE FORMATS "VST3" "AU" COPY_PLUGIN_AFTER_BUILD FALSE ) juce_generate_juce_header(Horizont) # We only ship a VST3 (never released a VST2), so tell JUCE it doesn't need to # keep parameter IDs compatible with a VST2 version of this plugin. target_compile_definitions(Horizont PUBLIC JUCE_VST3_CAN_REPLACE_VST2=0) string(TIMESTAMP BUILD_TIMESTAMP "%Y-%m-%d__%H-%M-%S") set(HORIZONT_GIT_REVISION "unknown") find_package(Git QUIET) if(Git_FOUND) execute_process( COMMAND ${GIT_EXECUTABLE} describe --tags --always --dirty WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} OUTPUT_VARIABLE HORIZONT_GIT_REVISION OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_QUIET) endif() target_compile_definitions(Horizont PRIVATE HORIZONT_VERSION="${PROJECT_VERSION}" HORIZONT_GIT_REVISION="${HORIZONT_GIT_REVISION}" HORIZONT_BUILD_TIMESTAMP="${BUILD_TIMESTAMP}") target_sources(Horizont PRIVATE Source/PluginProcessor.cpp Source/PluginEditor.cpp Source/HorizontEngine.cpp Source/PitchShifter.cpp Source/HorizontLookAndFeel.cpp Source/Knob.cpp Source/SpectrumDisplay.cpp Source/Presets.h ) target_link_libraries(Horizont PRIVATE juce::juce_dsp)