# Pulp CMake function status
# Vocabulary: stable, usable, experimental, partial, planned, unsupported

functions:
  - name: pulp_add_plugin
    status: usable
    summary: Create plugin targets for multiple formats from a single declaration.
    required:
      - FORMATS
    optional:
      - PLUGIN_NAME
      - BUNDLE_ID
      - MANUFACTURER
      - VERSION
      - CATEGORY
      - ACCEPTS_MIDI
      - PLUGIN_CODE
      - MANUFACTURER_CODE
      - AAX_PRODUCT_CODE
      - AAX_NATIVE_CODE
      - SOURCES
      - PROCESSOR_FACTORY
      - UI_SCRIPT
      - CONTENT_CAPABILITIES
      - CONTENT_KINDS
      - CONTENT_HOT_RELOAD_KINDS
      - CONTENT_MANUAL_RESCAN_KINDS
    creates:
      - ${target}_Core
      - ${target}_VST3
      - ${target}_AU
      - ${target}_AUv3Framework
      - ${target}_AUv3
      - ${target}_AUv3Host
      - ${target}_CLAP
      - ${target}_LV2
      - ${target}_AAX
      - ${target}_Standalone
      - pulp-install-${target}
    docs: reference/cmake.md#pulp_add_plugin

  - name: pulp_add_plugin_bundle
    status: usable
    summary: Package MANY plugins into ONE binary per format (CLAP, VST3) — the multi-plugin counterpart to pulp_add_plugin.
    required:
      - FORMATS
    optional:
      - BUNDLE_NAME
      - BUNDLE_ID
      - VERSION
      - MANUFACTURER
      - SOURCES
    creates:
      - ${target}_Core
      - ${target}_VST3
      - ${target}_CLAP
    docs: reference/cmake.md#pulp_add_plugin_bundle

  - name: pulp_add_reload_logic
    status: usable
    summary: Build a hot-reloadable DSP "logic" MODULE (PULP_RELOAD_LOGIC) and optionally publish it to the path a ReloadableShell watches.
    required:
      - SOURCES
    optional:
      - OUTPUT_NAME
      - PUBLISH_DIR
      - RESOLVE_FROM_HOST
    creates:
      - ${target}
    docs: guides/dsp-hot-reload.md

  - name: pulp_reload_host
    status: usable
    summary: Export a host target's SDK symbols so thin (RESOLVE_FROM_HOST) reload logic can resolve pulp::* at dlopen. No-op on Windows.
    required:
      - target
    docs: guides/dsp-hot-reload.md

  - name: pulp_add_app
    status: partial
    summary: Create a standalone application target with basic metadata.
    optional:
      - APP_NAME
      - BUNDLE_ID
      - VERSION
    docs: reference/cmake.md#pulp_add_app

  - name: pulp_app_icon
    status: usable
    summary: Attach app icon assets to a standalone application or generated app bundle target.
    required:
      - target
    optional:
      - SOURCE
      - MACOS
      - WINDOWS
      - IOS
      - ANDROID
      - LINUX
      - DEBUG_ICON
      - RELEASE_ICON
    docs: reference/cmake.md#pulp_app_icon

  - name: pulp_use_kit_ui
    status: experimental
    summary: Attach reviewed UI-kit script, optional token/theme file, and reviewed asset roots from a generated kit interface target to an existing plugin's format targets.
    required:
      - target
      - kit_target
    optional:
      - SCRIPT
      - TOKENS
    docs: reference/cmake.md#pulp_add_plugin

  - name: pulp_enable_midi_tuning_provider
    status: usable
    summary: Attach optional provider-neutral MIDI tuning wrappers to a plugin target after package CMake has created the required third-party targets.
    required:
      - target
      - provider
    optional:
      - additional providers
    docs: reference/cmake.md#pulp_enable_midi_tuning_provider

  - name: pulp_faust_generate
    status: experimental
    summary: Generate C++ from a FAUST .dsp file (requires faust compiler). Pre-generated files are used when faust is not installed.
    required:
      - output_hpp
      - input_dsp
      - class_name
    docs: reference/cmake.md#pulp_faust_generate

  - name: pulp_add_faust_test
    status: experimental
    summary: Add a test target for a FAUST-generated processor.
    required:
      - target
      - test_source
    optional:
      - SOURCES
    docs: reference/cmake.md#pulp_add_faust_test

  - name: pulp_add_binary_data
    status: usable
    summary: Embed binary assets as C++ arrays in a static library.
    required:
      - SOURCES
    optional:
      - NAMESPACE
    docs: reference/cmake.md#pulp_add_binary_data

  - name: pulp_add_ios_auv3
    status: usable
    summary: Build an iOS AUv3 .appex extension bundle from a Pulp processor.
    required:
      - NAME
      - BUNDLE_ID
      - MANUFACTURER
      - MANUFACTURER_CODE
      - SUBTYPE_CODE
      - VERSION
    optional:
      - AU_TYPE
      - ACCEPTS_MIDI
      - SOURCES
    creates:
      - ${target}_Core
      - ${target}_AUv3
    docs: getting-started/ios-deployment.md

  - name: pulp_add_ios_host_app
    status: usable
    summary: Build a SwiftUI HostApp .app bundle that embeds a Pulp AUv3 .appex so it can be installed on iOS Simulator or a physical iPad.
    required:
      - AUV3_EXTENSION
      - BUNDLE_ID
    optional:
      - NAME
      - VERSION
      - DEPLOYMENT_TARGET
      - SOURCES
    creates:
      - ${target}
      - ${target}_Embed
    docs: getting-started/ios-deployment.md

  - name: pulp_add_cargo_staticlib
    status: experimental
    summary: Build a Rust (Cargo) staticlib as a PIC/panic=abort IMPORTED target for an opt-in native-component DSP core. Requires a Rust toolchain; intended for use under PULP_BUILD_NATIVE_COMPONENT_RUST_TESTS=ON (OFF by default — no Rust in default builds).
    required:
      - NAME
      - MANIFEST
      - LIB_NAME
    optional:
      - PROFILE
      - FEATURES
    creates:
      - ${NAME}
      - ${NAME}-cargo-build
    docs: reference/cmake.md#pulp_add_cargo_staticlib

  - name: pulp_add_wam_plugin
    status: experimental
    summary: Build a Pulp Processor to a WAMv2 (Web Audio Modules v2) WebAssembly AudioWorklet plugin. Requires the Emscripten toolchain (configure with emcmake); a no-op under any other toolchain. Compiles the headless DSP subset once into a shared object library and owns the wam_* export table and link flags.
    required:
      - ENTRY
    optional:
      - SOURCES
      - INCLUDES
      - SINGLE_FILE
    creates:
      - ${NAME}-wam
    docs: reference/cmake.md#pulp_add_wam_plugin
  - name: pulp_stage_runtime_dependencies
    status: stable
    summary: Stage a target's runtime sidecars (wgpu runtime, Windows Skia icudtl.dat) beside its binary.
    required:
      - target
    notes: >
      Called automatically by pulp_add_plugin / pulp_add_app for every format
      target. target_copy_webgpu_binaries is a compatibility wrapper for the
      same behaviour.
  - name: pulp_verify_runtime_dependencies_staged
    status: stable
    summary: POST_BUILD check that a target's runtime sidecars actually landed beside the built binary.
    required:
      - target

