terion/CMakeLists.txt

97 lines
2.7 KiB
Text
Raw Normal View History

2026-09-16 17:47:45 +02:00
cmake_minimum_required(VERSION 3.22)
project(Terion VERSION 1.0.0 LANGUAGES C CXX)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
# Locate JUCE: prefer an explicit TERION_JUCE_DIR, then ~/JUCE,
# ~/.local/git/juce, ~/.local/git/JUCE, then the vendored copy at
# third_party/JUCE (populated by `make juce`).
2026-09-16 17:47:45 +02:00
if(TERION_JUCE_DIR)
set(JUCE_DIR_SELECTED "${TERION_JUCE_DIR}")
elseif(EXISTS "$ENV{HOME}/JUCE/CMakeLists.txt")
set(JUCE_DIR_SELECTED "$ENV{HOME}/JUCE")
elseif(EXISTS "$ENV{HOME}/.local/git/juce/CMakeLists.txt")
set(JUCE_DIR_SELECTED "$ENV{HOME}/.local/git/juce")
elseif(EXISTS "$ENV{HOME}/.local/git/JUCE/CMakeLists.txt")
set(JUCE_DIR_SELECTED "$ENV{HOME}/.local/git/JUCE")
2026-09-16 17:47:45 +02:00
elseif(EXISTS "${CMAKE_SOURCE_DIR}/third_party/JUCE/CMakeLists.txt")
set(JUCE_DIR_SELECTED "${CMAKE_SOURCE_DIR}/third_party/JUCE")
else()
message(FATAL_ERROR "JUCE not found. Run 'make juce' to clone it into third_party/JUCE, "
"or pass -DTERION_JUCE_DIR=/path/to/JUCE.")
endif()
message(STATUS "Using JUCE at: ${JUCE_DIR_SELECTED}")
# Git version info
execute_process(
COMMAND git log -1 --format=%h
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
OUTPUT_VARIABLE GIT_HASH
OUTPUT_STRIP_TRAILING_WHITESPACE
ERROR_QUIET
)
if(NOT GIT_HASH)
set(GIT_HASH "unknown")
endif()
execute_process(
COMMAND git rev-list --count HEAD
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
OUTPUT_VARIABLE GIT_LOCAL_COMMITS
OUTPUT_STRIP_TRAILING_WHITESPACE
ERROR_QUIET
)
if(NOT GIT_LOCAL_COMMITS)
set(GIT_LOCAL_COMMITS "0")
endif()
string(TIMESTAMP BUILD_TIME "%Y-%m-%d %H:%M:%S")
configure_file(
${CMAKE_SOURCE_DIR}/Source/Version.h.in
${CMAKE_BINARY_DIR}/Version.h
@ONLY
)
add_subdirectory("${JUCE_DIR_SELECTED}" "${CMAKE_BINARY_DIR}/JUCE")
juce_add_plugin(Terion
PRODUCT_NAME "Terion"
COMPANY_NAME "Terion"
BUNDLE_ID "com.terion.stereo-analyzer"
PLUGIN_MANUFACTURER_CODE Teri
PLUGIN_CODE TeAn
FORMATS VST3 AU
IS_SYNTH FALSE
NEEDS_MIDI_INPUT FALSE
NEEDS_MIDI_OUTPUT FALSE
IS_MIDI_EFFECT FALSE
EDITOR_WANTS_KEYBOARD_FOCUS FALSE
COPY_PLUGIN_AFTER_BUILD TRUE
VST3_CATEGORIES Analyzer
)
target_sources(Terion PRIVATE
Source/PluginProcessor.cpp
Source/PluginEditor.cpp
Source/VectorScope.cpp
Source/ArcKnob.cpp
)
target_compile_definitions(Terion PUBLIC
JUCE_WEB_BROWSER=0
JUCE_USE_CURL=0
JUCE_VST3_CAN_REPLACE_VST2=0
)
target_link_libraries(Terion PRIVATE
juce::juce_audio_utils
juce::juce_dsp
juce::juce_opengl
juce::juce_graphics
juce::juce_gui_basics
juce::juce_gui_extra
)
target_include_directories(Terion PRIVATE ${CMAKE_BINARY_DIR})