pascalcompressor/CMakeLists.txt

98 lines
No EOL
3.2 KiB
CMake

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)