mirror of
https://codeberg.org/armin/monostep.git
synced 2026-09-01 04:10:46 +02:00
97 lines
2.7 KiB
Text
97 lines
2.7 KiB
Text
|
|
cmake_minimum_required(VERSION 3.22)
|
||
|
|
|
||
|
|
project(MonoStep VERSION 1.0.0 LANGUAGES C CXX)
|
||
|
|
|
||
|
|
set(CMAKE_CXX_STANDARD 17)
|
||
|
|
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||
|
|
set(CMAKE_OSX_DEPLOYMENT_TARGET "12.0")
|
||
|
|
set(CMAKE_OSX_ARCHITECTURES "arm64")
|
||
|
|
|
||
|
|
# --- build metadata (git info + build date) ----------------------------------
|
||
|
|
set(MONOSTEP_GIT_STRING "no-vcs")
|
||
|
|
|
||
|
|
find_package(Git QUIET)
|
||
|
|
if(Git_FOUND)
|
||
|
|
execute_process(
|
||
|
|
COMMAND ${GIT_EXECUTABLE} -C "${CMAKE_CURRENT_LIST_DIR}" rev-parse --short HEAD
|
||
|
|
OUTPUT_VARIABLE MONOSTEP_GIT_HASH
|
||
|
|
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||
|
|
ERROR_QUIET
|
||
|
|
)
|
||
|
|
execute_process(
|
||
|
|
COMMAND ${GIT_EXECUTABLE} -C "${CMAKE_CURRENT_LIST_DIR}" status --porcelain
|
||
|
|
OUTPUT_VARIABLE MONOSTEP_GIT_PORCELAIN
|
||
|
|
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||
|
|
ERROR_QUIET
|
||
|
|
)
|
||
|
|
|
||
|
|
if(MONOSTEP_GIT_HASH)
|
||
|
|
set(MONOSTEP_GIT_STRING "${MONOSTEP_GIT_HASH}")
|
||
|
|
if(NOT MONOSTEP_GIT_PORCELAIN STREQUAL "")
|
||
|
|
string(APPEND MONOSTEP_GIT_STRING "-dirty")
|
||
|
|
endif()
|
||
|
|
endif()
|
||
|
|
endif()
|
||
|
|
|
||
|
|
if(NOT DEFINED JUCE_DIR)
|
||
|
|
set(JUCE_DIR "${CMAKE_CURRENT_LIST_DIR}/../juce")
|
||
|
|
endif()
|
||
|
|
|
||
|
|
if(NOT EXISTS "${JUCE_DIR}/CMakeLists.txt")
|
||
|
|
message(FATAL_ERROR "JUCE not found at ${JUCE_DIR}. Pass -DJUCE_DIR=<path> or clone it next to this project.")
|
||
|
|
endif()
|
||
|
|
|
||
|
|
add_subdirectory("${JUCE_DIR}" juce_build)
|
||
|
|
|
||
|
|
juce_add_plugin(MonoStep
|
||
|
|
VERSION 1.0.0
|
||
|
|
COMPANY_NAME "armin"
|
||
|
|
BUNDLE_ID "com.armin.monostep"
|
||
|
|
FORMATS VST3
|
||
|
|
PRODUCT_NAME "MonoStep"
|
||
|
|
PLUGIN_MANUFACTURER_CODE Armn
|
||
|
|
PLUGIN_CODE MStp
|
||
|
|
DESCRIPTION "Monophonic 2-oscillator step-sequencer synth"
|
||
|
|
EDITOR_NAME MonoStepAudioProcessorEditor
|
||
|
|
IS_SYNTH TRUE
|
||
|
|
NEEDS_MIDI_INPUT TRUE
|
||
|
|
VST3_AUTO_MANIFEST TRUE
|
||
|
|
)
|
||
|
|
|
||
|
|
juce_generate_juce_header(MonoStep)
|
||
|
|
|
||
|
|
target_sources(MonoStep PRIVATE
|
||
|
|
Source/PluginProcessor.cpp
|
||
|
|
Source/PluginEditor.cpp
|
||
|
|
Source/ui/SequencerMatrix.cpp
|
||
|
|
)
|
||
|
|
|
||
|
|
target_include_directories(MonoStep PRIVATE Source)
|
||
|
|
|
||
|
|
target_compile_definitions(MonoStep PRIVATE
|
||
|
|
JUCE_WEB_BROWSER=0
|
||
|
|
JUCE_VST3_CAN_REPLACE_VST2=0
|
||
|
|
MONOSTEP_GIT_INFO="${MONOSTEP_GIT_STRING}"
|
||
|
|
)
|
||
|
|
|
||
|
|
option(MONOSTEP_BUILD_TESTS "Build the headless host test" ON)
|
||
|
|
|
||
|
|
if(MONOSTEP_BUILD_TESTS)
|
||
|
|
juce_add_console_app(MonoStepTestHost
|
||
|
|
PRODUCT_NAME MonoStepTestHost
|
||
|
|
)
|
||
|
|
juce_generate_juce_header(MonoStepTestHost)
|
||
|
|
target_link_libraries(MonoStepTestHost PRIVATE
|
||
|
|
juce::juce_audio_processors
|
||
|
|
juce::juce_audio_formats
|
||
|
|
)
|
||
|
|
target_include_directories(MonoStepTestHost PRIVATE Source)
|
||
|
|
target_sources(MonoStepTestHost PRIVATE
|
||
|
|
Source/PluginProcessor.cpp
|
||
|
|
tests/TestHost.cpp
|
||
|
|
)
|
||
|
|
target_compile_definitions(MonoStepTestHost PRIVATE
|
||
|
|
MONOSTEP_HEADLESS=1
|
||
|
|
JUCE_PLUGINHOST_VST3=1
|
||
|
|
)
|
||
|
|
endif()
|