packages feed

VulkanMemoryAllocator-0.9: package.yaml

name: VulkanMemoryAllocator
version: "0.9"
synopsis: Bindings to the VulkanMemoryAllocator library
category: Graphics
maintainer: Ellie Hermaszewska <live.long.and.prosper@monoid.al>
github: expipiplus1/vulkan
extra-source-files:
  - readme.md
  - changelog.md
  - package.yaml
  - VulkanMemoryAllocator/include/vk_mem_alloc.h

library:
  source-dirs: src
  include-dirs:
    VulkanMemoryAllocator/include
  extra-libraries:
    stdc++
  cxx-sources:
    src/lib.cpp
  dependencies:
    - base <5
    - vulkan >= 3.6 && < 3.17
    - bytestring
    - transformers
    - vector
  when:
    - condition: flag(safe-foreign-calls)
      cpp-options: -DSAFE_FOREIGN_CALLS
    - condition: flag(vma-ndebug)
      cxx-options: -DNDEBUG
    - condition: flag(vma-recording)
      cxx-options: -DVMA_RECORDING_ENABLED
    - condition: flag(generic-instances)
      cpp-options: -DGENERIC_INSTANCES
    # Work around https://github.com/haskell/cabal/pull/7074
    - condition: "impl(ghc >= 8.10)"
      ghc-options:
        - -optcxx -std=c++14
    - condition: false
      other-modules: Paths_VulkanMemoryAllocator
  ghc-options:
    - -Wall
    - -Wno-unticked-promoted-constructors
    - -Wno-missing-pattern-synonym-signatures
    - -Wno-unused-imports
    - -Wno-missing-signatures
    - -Wno-partial-type-signatures
  cxx-options:
    - -std=c++14
  verbatim:
    other-modules:

flags:
  safe-foreign-calls:
    description:
      Do not mark foreign imports as 'unsafe'. This means that callbacks from
      VulkanMemoryAllocator to Haskell will work. If you are using these then
      make sure this flag is enabled.
    default: no
    manual: yes

  generic-instances:
    description:
      Derive Generic instances for all structs. Disabled by default because of
      code size and compile time impact.
    default: no
    manual: yes

  vma-ndebug:
    description:
      Compile VulkanMemoryAllocator with NDEBUG to disable assertions.
    default: no
    manual: yes

  vma-recording:
    description:
      Compile VulkanMemoryAllocator with VMA_RECORDING_ENABLED to enable
      recording functionality.
    default: no
    manual: yes

default-extensions:
  - AllowAmbiguousTypes
  - CPP
  - DataKinds
  - DefaultSignatures
  - DeriveAnyClass
  - DeriveGeneric
  - DerivingStrategies
  - DuplicateRecordFields
  - FlexibleContexts
  - FlexibleInstances
  - GADTs
  - GeneralizedNewtypeDeriving
  - InstanceSigs
  - LambdaCase
  - MagicHash
  - NoMonomorphismRestriction
  - OverloadedStrings
  - PartialTypeSignatures
  - PatternSynonyms
  - PolyKinds
  - QuantifiedConstraints
  - RankNTypes
  - RecordWildCards
  - RoleAnnotations
  - ScopedTypeVariables
  - StandaloneDeriving
  - Strict
  - TypeApplications
  - TypeFamilyDependencies
  - TypeOperators
  - TypeSynonymInstances
  - UndecidableInstances
  - ViewPatterns