mirror of
https://codeberg.org/armin/trommelkiste.git
synced 2026-09-01 12:20:46 +02:00
73 lines
2.2 KiB
CMake
73 lines
2.2 KiB
CMake
cmake_minimum_required(VERSION 3.22)
|
|
project(Trommelkiste VERSION 1.0.0 LANGUAGES C CXX)
|
|
|
|
set(CMAKE_CXX_STANDARD 17)
|
|
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
|
|
|
add_subdirectory(build/JUCE)
|
|
|
|
juce_add_plugin(Trommelkiste
|
|
PRODUCT_NAME "Trommelkiste"
|
|
COMPANY_NAME "Trommelkiste"
|
|
PLUGIN_MANUFACTURER_CODE D909
|
|
PLUGIN_CODE Ds90
|
|
FORMATS VST3 Standalone AU
|
|
IS_SYNTH TRUE
|
|
NEEDS_MIDI_INPUT TRUE
|
|
IS_MIDI_EFFECT FALSE
|
|
EDITOR_WANTS_KEYBOARD_FOCUS FALSE
|
|
COPY_PLUGIN_AFTER_BUILD TRUE
|
|
)
|
|
|
|
target_sources(Trommelkiste PRIVATE
|
|
Source/PluginProcessor.cpp
|
|
Source/PluginEditor.cpp
|
|
)
|
|
|
|
# Embed all WAV samples into the binary
|
|
file(GLOB SAMPLE_WAVS "Samples/*.WAV")
|
|
juce_add_binary_data(TrommelkisteBinaryData
|
|
HEADER_NAME "BinaryData.h"
|
|
NAMESPACE "BinaryData"
|
|
SOURCES ${SAMPLE_WAVS}
|
|
)
|
|
|
|
# Generate sample manifest mapping names -> binary data pointers
|
|
set(_manifest "// Auto-generated - do not edit\n#pragma once\n")
|
|
set(_manifest "${_manifest}struct EmbeddedSample { const char* name; const char* data; int size; };\n")
|
|
set(_manifest "${_manifest}static const EmbeddedSample embeddedSamples[] = {\n")
|
|
foreach(_f ${SAMPLE_WAVS})
|
|
get_filename_component(_we ${_f} NAME_WE)
|
|
string(REGEX REPLACE "[^A-Za-z0-9]" "_" _var ${_we})
|
|
set(_manifest "${_manifest} { \"${_we}\", BinaryData::${_var}_WAV, BinaryData::${_var}_WAVSize },\n")
|
|
endforeach()
|
|
set(_manifest "${_manifest}};\n")
|
|
set(_manifest "${_manifest}static const int numEmbeddedSamples = sizeof(embeddedSamples) / sizeof(embeddedSamples[0]);\n")
|
|
file(WRITE "${CMAKE_BINARY_DIR}/SampleLibrary.h" "${_manifest}")
|
|
|
|
target_include_directories(TrommelkisteBinaryData PUBLIC "${CMAKE_BINARY_DIR}")
|
|
|
|
target_compile_definitions(Trommelkiste PRIVATE
|
|
JUCE_WEB_BROWSER=0
|
|
JUCE_USE_CURL=0
|
|
JUCE_VST3_CAN_REPLACE_VST2=0
|
|
|
|
)
|
|
|
|
target_link_libraries(Trommelkiste
|
|
PRIVATE
|
|
TrommelkisteBinaryData
|
|
juce::juce_audio_basics
|
|
juce::juce_audio_devices
|
|
juce::juce_audio_formats
|
|
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
|
|
PUBLIC
|
|
juce::juce_recommended_config_flags
|
|
)
|