mirror of
https://codeberg.org/armin/ambivalence.git
synced 2026-09-01 04:10:48 +02:00
init
This commit is contained in:
parent
29c860587e
commit
42cf8432bf
57 changed files with 5782 additions and 0 deletions
174
CMakeLists.txt
Normal file
174
CMakeLists.txt
Normal file
|
|
@ -0,0 +1,174 @@
|
|||
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 "===========================================")
|
||||
Loading…
Add table
Add a link
Reference in a new issue