mirror of
https://codeberg.org/armin/gelyk.git
synced 2026-10-11 17:01:53 +02:00
121 lines
3.6 KiB
Text
121 lines
3.6 KiB
Text
|
|
cmake_minimum_required(VERSION 3.15)
|
||
|
|
|
||
|
|
set(CMAKE_CXX_STANDARD 17)
|
||
|
|
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||
|
|
|
||
|
|
project(GelykEQ VERSION 1.0.0 LANGUAGES 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_compile_definitions(GelykEQ PRIVATE
|
||
|
|
JucePlugin_Build_VST=1
|
||
|
|
JucePlugin_Build_AU=1
|
||
|
|
JucePlugin_Build_AAX=0
|
||
|
|
JucePlugin_Build_Standalone=0
|
||
|
|
)
|
||
|
|
|
||
|
|
target_compile_options(GelykEQ PRIVATE
|
||
|
|
$<$<CXX_COMPILER_ID:AppleClang,Clang>:-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
|
||
|
|
)
|