Magical8bitPlug2/builder_linux/CMakeLists.txt

127 lines
3.3 KiB
CMake

cmake_minimum_required(VERSION 3.15)
set(PLUGIN_NAME "Magical8bitPlug2")
string(TOLOWER ${PLUGIN_NAME} PLUGIN_NAME_LOWERCASE)
project(${PLUGIN_NAME}_project VERSION 1.1.0)
option(PLUGIN_VST3 "Build VST3 Plugin" OFF)
option(PLUGIN_LV2 "Build LADSPA Version 2 Plugin" OFF)
#find_package(JUCE CONFIG REQUIRED) # You need to install compiled JUCE framework to your system.
# Or,
add_subdirectory(modules/JUCE) # JUCE framework on a subdirectory.
set(PLUGIN_FORMATS Standalone)
if(PLUGIN_VST3)
list(APPEND PLUGIN_FORMATS VST3)
endif()
if(PLUGIN_LV2)
list(APPEND PLUGIN_FORMATS LV2)
endif()
message(STATUS "JUCE Formats: ${PLUGIN_FORMATS}")
juce_add_plugin(${PLUGIN_NAME}
PLUGIN_NAME ${PLUGIN_NAME}
PRODUCT_NAME ${PLUGIN_NAME_LOWERCASE}
VERSION ${CMAKE_PROJECT_VERSION}
BUNDLE_ID "com.ymck.magical8bitPlug2Juce"
ICON_SMALL "../Resources/icon-256.png"
ICON_LARGE "../Resources/icon-512.png"
COMPANY_NAME "Ymck"
COMPANY_WEBSITE "http://ymck.net"
COMPANY_EMAIL "info@ymck.net"
IS_SYNTH TRUE
NEEDS_MIDI_INPUT TRUE
NEEDS_MIDI_OUTPUT FALSE
IS_MIDI_EFFECT FALSE
PLUGIN_MANUFACTURER_CODE "Ymck"
PLUGIN_CODE "synj"
FORMATS ${PLUGIN_FORMATS}
LV2_URI "http://ymck.net"
DESCRIPTION "8bit sound generator 2nd ver. by YMCK"
)
# Generate JuceHeader.h
juce_generate_juce_header(${PLUGIN_NAME})
target_compile_definitions(${PLUGIN_NAME}
PUBLIC
JUCE_JACK=1
JUCE_WEB_BROWSER=0
JUCE_USE_CURL=0
JUCE_DISPLAY_SPLASH_SCREEN=1
JUCE_USE_DARK_SPLASH_SCREEN=0
JUCE_REPORT_APP_USAGE=0
JUCE_VST3_CAN_REPLACE_VST2=0
JUCE_STRICT_REFCOUNTEDPOINTER=1
)
target_sources(${PLUGIN_NAME}
PRIVATE
../Source/CheckBoxComponent.cpp
../Source/ChoiceComponent.cpp
../Source/CustomEnvelopeComponent.cpp
../Source/SliderComponent.cpp
../Source/AdvancedParamsComponent.cpp
../Source/BasicParamsComponent.cpp
../Source/BendParamsComponent.cpp
../Source/EnvelopeParamsComponent.cpp
../Source/MonophonicComponent.cpp
../Source/NoiseParamsComponent.cpp
../Source/PulseParamsComponent.cpp
../Source/SweepParamsComponent.cpp
../Source/VibratoParamsComponent.cpp
../Source/CustomSynth.cpp
../Source/FrameSequenceParseErrors.cpp
../Source/FrameSequenceParser.cpp
../Source/ColorScheme.cpp
../Source/BaseVoice.cpp
../Source/NoiseVoice.cpp
../Source/TriangleVoice.cpp
../Source/PulseVoice.cpp
../Source/TonalVoice.cpp
../Source/Settings.cpp
../Source/Voices.cpp
../Source/PluginProcessor.cpp
../Source/PluginEditor.cpp
)
juce_add_binary_data(${PLUGIN_NAME}_images
SOURCES
../Resources/icon-256.png
../Resources/icon-512.png
)
set_target_properties(${PLUGIN_NAME}_images
PROPERTIES
POSITION_INDEPENDENT_CODE TRUE
)
# JUCE Modules and Binary Data
target_link_libraries(${PLUGIN_NAME}
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_cryptography
juce::juce_data_structures
juce::juce_events
juce::juce_graphics
juce::juce_gui_basics
juce::juce_gui_extra
juce::juce_opengl
${PLUGIN_NAME}_images
)
# Recommended Flags
target_link_libraries(${PLUGIN_NAME}
PUBLIC
juce::juce_recommended_warning_flags
juce::juce_recommended_config_flags
juce::juce_recommended_lto_flags
)