mirror of
https://codeberg.org/armin/mindball.git
synced 2026-09-01 03:40:49 +02:00
init
This commit is contained in:
parent
1b541ba587
commit
78e52e612f
9 changed files with 1553 additions and 0 deletions
124
CMakeLists.txt
Normal file
124
CMakeLists.txt
Normal file
|
|
@ -0,0 +1,124 @@
|
|||
cmake_minimum_required(VERSION 3.22)
|
||||
project(Mindball VERSION 1.0.0 LANGUAGES C CXX)
|
||||
|
||||
set(CMAKE_CXX_STANDARD 20)
|
||||
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||
set(CMAKE_OSX_DEPLOYMENT_TARGET 12.0 CACHE STRING "Minimum macOS deployment target")
|
||||
|
||||
if(CMAKE_BUILD_TYPE STREQUAL "" AND NOT CMAKE_CONFIGURATION_TYPES)
|
||||
set(CMAKE_BUILD_TYPE Release)
|
||||
endif()
|
||||
|
||||
set(MINDBALL_FORMATS "AU VST3 Standalone" CACHE STRING "Plugin formats to build (space separated)")
|
||||
separate_arguments(_formats UNIX_COMMAND "${MINDBALL_FORMATS}")
|
||||
|
||||
set(JUCE_ROOT "" CACHE PATH "Path to a local JUCE source tree (default: fetched from GitHub)")
|
||||
if(JUCE_ROOT)
|
||||
add_subdirectory(${JUCE_ROOT} juce)
|
||||
else()
|
||||
include(FetchContent)
|
||||
FetchContent_Declare(juce
|
||||
GIT_REPOSITORY https://github.com/juce-framework/JUCE.git
|
||||
GIT_TAG 8.0.9
|
||||
GIT_SHALLOW TRUE)
|
||||
FetchContent_MakeAvailable(juce)
|
||||
endif()
|
||||
|
||||
# A JUCE GUI plugin needs the core system headers to compile on Linux. Detect
|
||||
# them up front so a missing package produces a clear error instead of a
|
||||
# confusing compile failure. GTK and libcurl are never required.
|
||||
if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
|
||||
set(_mindball_headers "X11/Xlib.h" "freetype2/freetype/freetype.h"
|
||||
"fontconfig/fontconfig.h" "alsa/asoundlib.h")
|
||||
set(_mindball_packages "libx11-dev" "libfreetype-dev"
|
||||
"libfontconfig-dev" "libasound2-dev")
|
||||
set(_mindball_missing "")
|
||||
|
||||
foreach(_i RANGE 0 3)
|
||||
list(GET _mindball_headers ${_i} _header)
|
||||
list(GET _mindball_packages ${_i} _package)
|
||||
find_path(_mindball_hdr_${_i} NAMES "${_header}" QUIET)
|
||||
if(NOT _mindball_hdr_${_i})
|
||||
string(APPEND _mindball_missing " ${_header} (package: ${_package})\n")
|
||||
endif()
|
||||
endforeach()
|
||||
|
||||
if(_mindball_missing)
|
||||
message(FATAL_ERROR
|
||||
"Missing required system headers for the Linux build:\n${_mindball_missing}"
|
||||
"Install them with:\n"
|
||||
" sudo apt-get install pkg-config libx11-dev libfreetype-dev libfontconfig-dev libasound2-dev\n")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
juce_add_plugin(Mindball
|
||||
PRODUCT_NAME "Mindball"
|
||||
VENDOR_NAME "Mindball"
|
||||
VERSION "1.0.0"
|
||||
DESCRIPTION "Mindball - a tiny, minimal delay plugin"
|
||||
FORMATS ${_formats}
|
||||
PLUGIN_MANUFACTURER_CODE Mind
|
||||
PLUGIN_CODE Mbll
|
||||
COPY_PLUGIN_AFTER_BUILD TRUE
|
||||
COMPANY_COPYRIGHT "2026 Mindball")
|
||||
|
||||
target_sources(Mindball PRIVATE
|
||||
Source/PluginProcessor.cpp
|
||||
Source/PluginEditor.cpp)
|
||||
|
||||
target_include_directories(Mindball PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/buildinfo)
|
||||
target_link_libraries(Mindball PRIVATE
|
||||
juce::juce_audio_processors
|
||||
juce::juce_audio_utils
|
||||
juce::juce_audio_devices
|
||||
juce::juce_gui_basics)
|
||||
|
||||
# New VST3-only plugin: no VST2 has ever been released, so the parameter-ID
|
||||
# migration warning is irrelevant.
|
||||
target_compile_definitions(Mindball PRIVATE JUCE_IGNORE_VST3_MISMATCHED_PARAMETER_ID_WARNING)
|
||||
|
||||
# juce_core enables libcurl by default on Linux; without NEEDS_CURL the JUCE
|
||||
# helper targets don't link -lcurl, so that would fail at link time with
|
||||
# undefined references to curl_easy_setopt. We use no network features, so
|
||||
# disable it. (GTK/webkit2gtk is never required because juce_gui_extra is not
|
||||
# linked.)
|
||||
target_compile_definitions(Mindball PRIVATE JUCE_USE_CURL=0)
|
||||
|
||||
# ---- git / build info -----------------------------------------------------
|
||||
find_package(Git QUIET)
|
||||
set(MINDBALL_GIT_HASH "n/a")
|
||||
set(MINDBALL_GIT_BRANCH "n/a")
|
||||
set(MINDBALL_GIT_DIRTY false)
|
||||
if(Git_FOUND)
|
||||
execute_process(COMMAND ${GIT_EXECUTABLE} rev-parse --short=8 HEAD
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
|
||||
RESULT_VARIABLE _git_hash_res
|
||||
OUTPUT_VARIABLE _git_hash
|
||||
ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||
if(_git_hash_res EQUAL 0 AND _git_hash)
|
||||
set(MINDBALL_GIT_HASH "${_git_hash}")
|
||||
execute_process(COMMAND ${GIT_EXECUTABLE} branch --show-current
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
|
||||
RESULT_VARIABLE _git_branch_res
|
||||
OUTPUT_VARIABLE _git_branch
|
||||
ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||
if(_git_branch_res EQUAL 0 AND _git_branch)
|
||||
set(MINDBALL_GIT_BRANCH "${_git_branch}")
|
||||
endif()
|
||||
execute_process(COMMAND ${GIT_EXECUTABLE} status --porcelain
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
|
||||
RESULT_VARIABLE _git_status_res
|
||||
OUTPUT_VARIABLE _git_status
|
||||
ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||
string(LENGTH "${_git_status}" _status_len)
|
||||
if(_status_len GREATER 0)
|
||||
set(MINDBALL_GIT_DIRTY true)
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
string(TIMESTAMP MINDBALL_BUILD_TIME "%Y-%m-%d %H:%M:%S UTC")
|
||||
|
||||
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/Source/BuildInfo.h.in
|
||||
${CMAKE_CURRENT_BINARY_DIR}/buildinfo/BuildInfo.h @ONLY)
|
||||
|
||||
juce_generate_juce_header(Mindball)
|
||||
Loading…
Add table
Add a link
Reference in a new issue