mirror of
https://codeberg.org/armin/pascalcompressor.git
synced 2026-10-11 16:51:56 +02:00
98 lines
3.2 KiB
Text
98 lines
3.2 KiB
Text
|
|
cmake_minimum_required(VERSION 3.23)
|
||
|
|
|
||
|
|
project(Pascalcompressor
|
||
|
|
VERSION 1.0.0
|
||
|
|
LANGUAGES C CXX OBJC OBJCXX)
|
||
|
|
|
||
|
|
set(CMAKE_CXX_STANDARD 17)
|
||
|
|
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||
|
|
set(CMAKE_CXX_EXTENSIONS OFF)
|
||
|
|
|
||
|
|
if(NOT CMAKE_SYSTEM_NAME STREQUAL "Darwin")
|
||
|
|
message(FATAL_ERROR "Pascalcompressor targets macOS arm64 (VST3 + AU).")
|
||
|
|
endif()
|
||
|
|
|
||
|
|
set(CMAKE_OSX_DEPLOYMENT_TARGET 12.0 CACHE STRING "Minimum macOS deployment target")
|
||
|
|
set(CMAKE_OSX_ARCHITECTURES arm64 CACHE STRING "Architecture")
|
||
|
|
|
||
|
|
set(JUCE_TAG "8.0.15" CACHE STRING "JUCE git tag to fetch")
|
||
|
|
|
||
|
|
include(FetchContent)
|
||
|
|
|
||
|
|
if(JUCE_DIR)
|
||
|
|
add_subdirectory(${JUCE_DIR} juce)
|
||
|
|
else()
|
||
|
|
set(JUCE_BUILD_EXAMPLES OFF CACHE BOOL "" FORCE)
|
||
|
|
set(JUCE_BUILD_EXTRAS OFF CACHE BOOL "" FORCE)
|
||
|
|
FetchContent_Declare(juce
|
||
|
|
GIT_REPOSITORY https://github.com/juce-framework/JUCE.git
|
||
|
|
GIT_TAG ${JUCE_TAG}
|
||
|
|
GIT_SHALLOW TRUE)
|
||
|
|
FetchContent_MakeAvailable(juce)
|
||
|
|
endif()
|
||
|
|
|
||
|
|
set(PASCAL_GENERATED_DIR "${CMAKE_BINARY_DIR}/generated")
|
||
|
|
file(MAKE_DIRECTORY "${PASCAL_GENERATED_DIR}")
|
||
|
|
|
||
|
|
execute_process(
|
||
|
|
COMMAND /bin/sh -c "date '+%Y-%m-%d %H:%M:%S %Z'"
|
||
|
|
OUTPUT_VARIABLE PASCAL_BUILD_TIME
|
||
|
|
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||
|
|
if(NOT PASCAL_BUILD_TIME)
|
||
|
|
string(TIMESTAMP PASCAL_BUILD_TIME "%Y-%m-%d %H:%M:%S %Z")
|
||
|
|
endif()
|
||
|
|
|
||
|
|
file(WRITE "${PASCAL_GENERATED_DIR}/BuildInfo.h"
|
||
|
|
"#pragma once\n"
|
||
|
|
"#define PASCAL_BUILD_TIME \"${PASCAL_BUILD_TIME}\"\n")
|
||
|
|
|
||
|
|
juce_add_plugin(Pascalcompressor
|
||
|
|
PRODUCT_NAME Pascalcompressor
|
||
|
|
COMPANY_NAME "Pascal"
|
||
|
|
BUNDLE_ID com.pascal.pascalcompressor
|
||
|
|
PLUGIN_MANUFACTURER_CODE PscC
|
||
|
|
PLUGIN_CODE Pscp
|
||
|
|
FORMATS AU VST3
|
||
|
|
IS_SYNTH NO
|
||
|
|
NEEDS_MIDI_INPUT NO
|
||
|
|
NEEDS_MIDI_OUTPUT NO
|
||
|
|
IS_MIDI_EFFECT NO
|
||
|
|
COPY_PLUGIN_AFTER_BUILD FALSE)
|
||
|
|
|
||
|
|
target_include_directories(Pascalcompressor PRIVATE
|
||
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/Source"
|
||
|
|
"${PASCAL_GENERATED_DIR}")
|
||
|
|
|
||
|
|
target_compile_definitions(Pascalcompressor PUBLIC JUCE_VST3_CAN_REPLACE_VST2=0)
|
||
|
|
|
||
|
|
target_sources(Pascalcompressor PRIVATE
|
||
|
|
Source/Compressor.cpp
|
||
|
|
Source/PluginProcessor.cpp
|
||
|
|
Source/PluginEditor.cpp)
|
||
|
|
|
||
|
|
target_link_libraries(Pascalcompressor PRIVATE
|
||
|
|
juce::juce_core
|
||
|
|
juce::juce_events
|
||
|
|
juce::juce_graphics
|
||
|
|
juce::juce_gui_basics
|
||
|
|
juce::juce_gui_extra
|
||
|
|
juce::juce_audio_basics
|
||
|
|
juce::juce_audio_processors
|
||
|
|
juce::juce_audio_utils
|
||
|
|
juce::juce_dsp)
|
||
|
|
|
||
|
|
set(PASCAL_BUILDINFO "${PASCAL_GENERATED_DIR}/BuildInfo.h")
|
||
|
|
set_source_files_properties(Source/PluginEditor.cpp PROPERTIES OBJECT_DEPENDS "${PASCAL_BUILDINFO}")
|
||
|
|
|
||
|
|
# Sign each format bundle from its own target. Signing on the shared-library
|
||
|
|
# target rewrote the bundle binaries' mtimes every build, which made make treat
|
||
|
|
# them as always up to date and never relinked them.
|
||
|
|
add_custom_command(TARGET Pascalcompressor_AU POST_BUILD
|
||
|
|
COMMAND codesign --force --sign -
|
||
|
|
"${CMAKE_BINARY_DIR}/Pascalcompressor_artefacts/$<CONFIG>/AU/Pascalcompressor.component"
|
||
|
|
VERBATIM)
|
||
|
|
|
||
|
|
add_custom_command(TARGET Pascalcompressor_VST3 POST_BUILD
|
||
|
|
COMMAND codesign --force --sign -
|
||
|
|
"${CMAKE_BINARY_DIR}/Pascalcompressor_artefacts/$<CONFIG>/VST3/Pascalcompressor.vst3"
|
||
|
|
VERBATIM)
|