mirror of
https://codeberg.org/armin/ambivalence.git
synced 2026-09-01 04:10:48 +02:00
174 lines
6.5 KiB
Text
174 lines
6.5 KiB
Text
|
|
cmake_minimum_required(VERSION 3.22)
|
||
|
|
project(Ambivalence VERSION 1.1.0 LANGUAGES C CXX)
|
||
|
|
# ============================================================================
|
||
|
|
# C++20
|
||
|
|
# ============================================================================
|
||
|
|
set(CMAKE_CXX_STANDARD 20)
|
||
|
|
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||
|
|
# ============================================================================
|
||
|
|
# JUCE
|
||
|
|
# Pass the path to your JUCE checkout with -DJUCE_PATH=/path/to/JUCE,
|
||
|
|
# or install JUCE in one of the standard locations below.
|
||
|
|
# ============================================================================
|
||
|
|
if(NOT DEFINED JUCE_PATH OR JUCE_PATH STREQUAL "")
|
||
|
|
foreach(_juce_candidate
|
||
|
|
${CMAKE_CURRENT_SOURCE_DIR}/JUCE
|
||
|
|
${CMAKE_BINARY_DIR}/JUCE
|
||
|
|
${CMAKE_HOME_DIRECTORY}/../JUCE
|
||
|
|
$ENV{HOME}/JUCE
|
||
|
|
/opt/JUCE
|
||
|
|
/usr/local/JUCE
|
||
|
|
/Applications/JUCE)
|
||
|
|
if(EXISTS "${_juce_candidate}/modules/juce_core")
|
||
|
|
set(JUCE_PATH "${_juce_candidate}")
|
||
|
|
break()
|
||
|
|
endif()
|
||
|
|
endforeach()
|
||
|
|
endif()
|
||
|
|
if(NOT JUCE_PATH)
|
||
|
|
message(FATAL_ERROR
|
||
|
|
"JUCE not found. Set -DJUCE_PATH=/path/to/JUCE or install JUCE in a standard location.")
|
||
|
|
endif()
|
||
|
|
set(JUCE_PATH "${JUCE_PATH}" CACHE PATH "Path to the JUCE repository" FORCE)
|
||
|
|
set(_juce_binary_dir "${CMAKE_BINARY_DIR}/JUCE")
|
||
|
|
if(_juce_binary_dir STREQUAL "${JUCE_PATH}")
|
||
|
|
set(_juce_binary_dir "${CMAKE_BINARY_DIR}/JUCE-build")
|
||
|
|
endif()
|
||
|
|
add_subdirectory(${JUCE_PATH} ${_juce_binary_dir})
|
||
|
|
# ============================================================================
|
||
|
|
# plugin definition
|
||
|
|
# ============================================================================
|
||
|
|
juce_add_plugin(Ambivalence
|
||
|
|
COMPANY_NAME "OTODESK"
|
||
|
|
PLUGIN_MANUFACTURER_CODE "Otdk"
|
||
|
|
PLUGIN_CODE "Ambi"
|
||
|
|
FORMATS VST3 Standalone
|
||
|
|
PRODUCT_NAME "Ambivalence1.1"
|
||
|
|
PLUGIN_DESCRIPTION "16-channel FDN Algorithmic Reverb"
|
||
|
|
IS_SYNTH FALSE
|
||
|
|
NEEDS_MIDI_INPUT FALSE
|
||
|
|
NEEDS_MIDI_OUTPUT FALSE
|
||
|
|
IS_MIDI_EFFECT FALSE
|
||
|
|
EDITOR_WANTS_KEYBOARD_FOCUS FALSE
|
||
|
|
VST3_AUTO_MANIFEST FALSE
|
||
|
|
COPY_PLUGIN_AFTER_BUILD FALSE
|
||
|
|
VERSION "1.1.0"
|
||
|
|
)
|
||
|
|
# ============================================================================
|
||
|
|
# build info (Git branch, commit, dirty state)
|
||
|
|
# ============================================================================
|
||
|
|
execute_process(COMMAND git rev-parse --abbrev-ref HEAD
|
||
|
|
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
|
||
|
|
OUTPUT_VARIABLE AMBIVALENCE_GIT_BRANCH
|
||
|
|
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||
|
|
ERROR_QUIET)
|
||
|
|
if(NOT AMBIVALENCE_GIT_BRANCH)
|
||
|
|
set(AMBIVALENCE_GIT_BRANCH "unknown")
|
||
|
|
endif()
|
||
|
|
|
||
|
|
execute_process(COMMAND git rev-parse --short HEAD
|
||
|
|
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
|
||
|
|
OUTPUT_VARIABLE AMBIVALENCE_GIT_COMMIT
|
||
|
|
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||
|
|
ERROR_QUIET)
|
||
|
|
if(NOT AMBIVALENCE_GIT_COMMIT)
|
||
|
|
set(AMBIVALENCE_GIT_COMMIT "unknown")
|
||
|
|
endif()
|
||
|
|
|
||
|
|
execute_process(COMMAND git status --porcelain
|
||
|
|
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
|
||
|
|
OUTPUT_VARIABLE AMBIVALENCE_GIT_STATUS
|
||
|
|
ERROR_QUIET)
|
||
|
|
if(AMBIVALENCE_GIT_STATUS)
|
||
|
|
set(AMBIVALENCE_GIT_DIRTY 1)
|
||
|
|
else()
|
||
|
|
set(AMBIVALENCE_GIT_DIRTY 0)
|
||
|
|
endif()
|
||
|
|
|
||
|
|
configure_file(Source/BuildInfo.h.in ${CMAKE_CURRENT_BINARY_DIR}/BuildInfo.h @ONLY)
|
||
|
|
# ============================================================================
|
||
|
|
# sources (only existing files)
|
||
|
|
# ============================================================================
|
||
|
|
target_sources(Ambivalence PRIVATE
|
||
|
|
${CMAKE_CURRENT_BINARY_DIR}/BuildInfo.h
|
||
|
|
Source/BuildInfo.h.in
|
||
|
|
Source/PluginProcessor.h
|
||
|
|
Source/PluginProcessor.cpp
|
||
|
|
Source/PluginEditor.h
|
||
|
|
Source/PluginEditor.cpp
|
||
|
|
Source/PluginParameters.h
|
||
|
|
Source/PluginParameters.cpp
|
||
|
|
Source/PresetManager.h
|
||
|
|
Source/PresetManager.cpp
|
||
|
|
Source/GUI/AmbivalenceUI.h
|
||
|
|
Source/GUI/AmbivalenceUI.cpp
|
||
|
|
Source/AlgorithmPresets.h
|
||
|
|
Source/DSP/DSPConstants.h
|
||
|
|
Source/DSP/DelayMemory.h
|
||
|
|
Source/DSP/BiquadFilters.h
|
||
|
|
Source/DSP/BiquadFilters.cpp
|
||
|
|
Source/DSP/MagnitudeResponseFitter.h
|
||
|
|
Source/DSP/MagnitudeResponseFitter.cpp
|
||
|
|
Source/DSP/UniversalEngine.h
|
||
|
|
Source/DSP/UniversalEngine.cpp
|
||
|
|
Source/DSP/AcousticMetrics.h
|
||
|
|
Source/DSP/AcousticMetrics.cpp
|
||
|
|
Source/GUI/DecayCurveViz.h
|
||
|
|
Source/GUI/DecayCurveViz.cpp
|
||
|
|
Source/DSP/Saturator.h
|
||
|
|
Source/DSP/OutputLimiter.h
|
||
|
|
Source/DSP/OutputEQ.h
|
||
|
|
)# ============================================================================
|
||
|
|
# include paths
|
||
|
|
# ============================================================================
|
||
|
|
target_include_directories(Ambivalence PRIVATE
|
||
|
|
${CMAKE_CURRENT_SOURCE_DIR}/Source
|
||
|
|
${CMAKE_CURRENT_SOURCE_DIR}/Source/DSP
|
||
|
|
${CMAKE_CURRENT_SOURCE_DIR}/Source/GUI
|
||
|
|
${CMAKE_CURRENT_BINARY_DIR}
|
||
|
|
)
|
||
|
|
# ============================================================================
|
||
|
|
# JUCE
|
||
|
|
# ============================================================================
|
||
|
|
target_link_libraries(Ambivalence
|
||
|
|
PRIVATE
|
||
|
|
juce::juce_audio_basics
|
||
|
|
juce::juce_audio_devices
|
||
|
|
juce::juce_audio_formats
|
||
|
|
juce::juce_audio_plugin_client
|
||
|
|
juce::juce_audio_processors
|
||
|
|
juce::juce_audio_utils
|
||
|
|
juce::juce_core
|
||
|
|
juce::juce_data_structures
|
||
|
|
juce::juce_dsp
|
||
|
|
juce::juce_events
|
||
|
|
juce::juce_graphics
|
||
|
|
juce::juce_gui_basics
|
||
|
|
juce::juce_gui_extra
|
||
|
|
PUBLIC
|
||
|
|
juce::juce_recommended_config_flags
|
||
|
|
juce::juce_recommended_lto_flags
|
||
|
|
juce::juce_recommended_warning_flags
|
||
|
|
)
|
||
|
|
# ============================================================================
|
||
|
|
# compile definitions
|
||
|
|
# ============================================================================
|
||
|
|
target_compile_definitions(Ambivalence PRIVATE
|
||
|
|
JUCE_WEB_BROWSER=0
|
||
|
|
JUCE_USE_CURL=0
|
||
|
|
JUCE_VST3_CAN_REPLACE_VST2=0
|
||
|
|
JUCE_DISPLAY_SPLASH_SCREEN=0
|
||
|
|
AMBIVALENCE_VERSION="1.1.0"
|
||
|
|
)
|
||
|
|
# ============================================================================
|
||
|
|
# JUCE header generation
|
||
|
|
# ============================================================================
|
||
|
|
juce_generate_juce_header(Ambivalence)
|
||
|
|
# ============================================================================
|
||
|
|
# build message
|
||
|
|
# ============================================================================
|
||
|
|
message(STATUS "===========================================")
|
||
|
|
message(STATUS "Ambivalence VST3 - CMake Configuration")
|
||
|
|
message(STATUS "JUCE: ${JUCE_PATH}")
|
||
|
|
message(STATUS "Build Type: ${CMAKE_BUILD_TYPE}")
|
||
|
|
message(STATUS "===========================================")
|