cmake_minimum_required(VERSION 3.15) set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) project(GelykEQ VERSION 1.0.0 LANGUAGES C CXX) if(NOT DEFINED JUCE_ROOT) include(FetchContent) set(FETCHCONTENT_QUIET OFF) FetchContent_Declare( JUCE GIT_REPOSITORY https://github.com/juce-framework/JUCE.git GIT_TAG 8.0.7 ) FetchContent_MakeAvailable(JUCE) else() add_subdirectory(${JUCE_ROOT} JUCE) endif() juce_add_plugin(GelykEQ VENDOR_NAME "Gelyk Audio" VENDOR_WEBSITE "https://gelyk.example" VENDOR_EMAIL "dev@gelyk.example" VENDOR_VERSION_CODE 1 PLUGIN_MANUFACTURER_CODE Gely PLUGIN_CODE GkEQ FORMATS AU VST3 PRODUCT_NAME "Gelyk EQ" IS_SYNTH FALSE IS_MIDI_EFFECT FALSE NEEDS_MIDI_INPUT FALSE NEEDS_MIDI_OUTPUT FALSE EDITOR_WANTS_KEYBOARD_FOCUS TRUE COPY_PLUGIN_AFTER_BUILD TRUE INSTALL_AU TRUE INSTALL_VST3 TRUE BUNDLE_ID com.gelyk.eq JucePlugin_Name "Gelyk EQ" JucePlugin_Desc "A minimalist cyber/neon multiband equalizer" ) juce_generate_juce_header(GelykEQ) # --- Generate Git build info header ------------------------------------- find_package(Git QUIET) set(GELYK_GIT_BRANCH "unknown") set(GELYK_GIT_SHA "unknown") set(GELYK_GIT_DESCRIBE "no-git") set(GELYK_GIT_DIRTY "") if(Git_FOUND) execute_process( COMMAND ${GIT_EXECUTABLE} rev-parse --abbrev-ref HEAD WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} OUTPUT_VARIABLE GELYK_GIT_BRANCH OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_QUIET) execute_process( COMMAND ${GIT_EXECUTABLE} describe --always --tags --dirty WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} OUTPUT_VARIABLE GELYK_GIT_DESCRIBE OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_QUIET) execute_process( COMMAND ${GIT_EXECUTABLE} rev-parse --short HEAD WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} OUTPUT_VARIABLE GELYK_GIT_SHA OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_QUIET) execute_process( COMMAND ${GIT_EXECUTABLE} status --porcelain WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} OUTPUT_VARIABLE GELYK_GIT_DIRTY ERROR_QUIET) if(NOT GELYK_GIT_DIRTY STREQUAL "") set(GELYK_GIT_DIRTY "dirty") else() set(GELYK_GIT_DIRTY "") endif() endif() string(TIMESTAMP GELYK_BUILD_DATE "%Y-%m-%d %H:%M") configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/Source/GitInfo.h.in ${CMAKE_CURRENT_BINARY_DIR}/Source/GitInfo.h @ONLY ) target_sources(GelykEQ PRIVATE Source/PluginProcessor.cpp Source/PluginEditor.cpp Source/EqualizerDSP.cpp ) target_include_directories(GelykEQ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/Source ) target_link_libraries(GelykEQ PRIVATE juce::juce_dsp) target_compile_definitions(GelykEQ PRIVATE JUCE_MODULE_AVAILABLE_juce_dsp=1) # Gelyk never uses the embedded web browser, so keep JUCE_WEB_BROWSER off. # Otherwise juce_gui_extra's WebBrowserComponent pulls in WebKitGTK + GTK dev # headers (webkit2gtk, gtk, jsc, libsoup), which would break headless builds # like Arch/Artix where those aren't installed. target_compile_definitions(GelykEQ PRIVATE JUCE_WEB_BROWSER=0) target_compile_options(GelykEQ PRIVATE $<$:-Wall -Wextra> ) option(GELYK_BUILD_STANDALONE "Build a standalone audio app target too" OFF) if(GELYK_BUILD_STANDALONE) target_sources(GelykEQ PRIVATE Source/Standalone.cpp) add_executable(GelykEQStandalone ${CMAKE_CURRENT_BINARY_DIR}/JuceLibraryCode/Standalone.cpp) target_link_libraries(GelykEQStandalone PRIVATE GelykEQ_impl juce_recommended_config_flags) endif() set_target_properties(GelykEQ PROPERTIES OUTPUT_NAME GelykEQ )