cabal-version: 3.0 name: hs-bindgen version: 0.1.0 license: BSD-3-Clause license-file: LICENSE author: Well-Typed LLP maintainer: info@well-typed.com category: Development build-type: Simple synopsis: Generate Haskell bindings from C headers description: Automatically generate Haskell bindings from C headers extra-doc-files: CHANGELOG.md tested-with: GHC ==9.2.8 || ==9.4.8 || ==9.6.7 || ==9.8.4 || ==9.10.3 || ==9.12.2 || ==9.14.1 extra-source-files: bootstrap/*.h examples/**/*.h examples/**/*.yaml fixtures/**/*.hs fixtures/**/*.txt fixtures/**/*.yaml musl-include/**/*.h flag dev description: Build debugging utilities for developing hs-bindgen itself default: False manual: True common lang ghc-options: -Wall -Widentities -Wprepositive-qualified-module -Wredundant-constraints -Wunused-packages -Wno-unticked-promoted-constructors build-depends: base >=4.16 && <4.23 default-language: GHC2021 default-extensions: DataKinds DefaultSignatures DeriveAnyClass DerivingStrategies DerivingVia DisambiguateRecordFields DuplicateRecordFields FunctionalDependencies LambdaCase MultiWayIf NoFieldSelectors NoNamedFieldPuns OverloadedLabels OverloadedRecordDot OverloadedStrings PatternSynonyms QuantifiedConstraints TypeApplications TypeFamilies UndecidableInstances ViewPatterns if impl(ghc >=9.8) default-extensions: TypeAbstractions library internal import: lang hs-source-dirs: src-internal ghc-options: -Wmissing-export-lists -- Modules containing public API. exposed-modules: HsBindgen.Config -- Internal modules. exposed-modules: Data.DynGraph Data.DynGraph.Labelled HsBindgen HsBindgen.Artefact HsBindgen.Backend HsBindgen.Backend.Category HsBindgen.Backend.Category.ApplyChoice HsBindgen.Backend.Extensions HsBindgen.Backend.Hs.AST HsBindgen.Backend.Hs.AST.Strategy HsBindgen.Backend.Hs.AST.Type HsBindgen.Backend.Hs.CallConv HsBindgen.Backend.Hs.Haddock.Config HsBindgen.Backend.Hs.Haddock.Documentation HsBindgen.Backend.Hs.Haddock.Translation HsBindgen.Backend.Hs.Name HsBindgen.Backend.Hs.Origin HsBindgen.Backend.Hs.Translation HsBindgen.Backend.Hs.Translation.ForeignImport HsBindgen.Backend.Hs.Translation.Function HsBindgen.Backend.Hs.Translation.Instances HsBindgen.Backend.Hs.Translation.Newtype HsBindgen.Backend.Hs.Translation.State HsBindgen.Backend.Hs.Translation.Structure HsBindgen.Backend.Hs.Translation.ToFromFunPtr HsBindgen.Backend.Hs.Translation.Type HsBindgen.Backend.HsModule.CAPI HsBindgen.Backend.HsModule.Names HsBindgen.Backend.HsModule.Render HsBindgen.Backend.HsModule.Translation HsBindgen.Backend.SHs.AST HsBindgen.Backend.SHs.Macro HsBindgen.Backend.SHs.Simplify HsBindgen.Backend.SHs.Translation HsBindgen.Backend.SHs.Translation.Common HsBindgen.Backend.SHs.Translation.Prim HsBindgen.Backend.TH.Translation HsBindgen.Backend.UniqueSymbol HsBindgen.BindingSpec HsBindgen.BindingSpec.Gen HsBindgen.BindingSpec.Private.Common HsBindgen.BindingSpec.Private.Stdlib HsBindgen.BindingSpec.Private.V1 HsBindgen.BindingSpec.Private.Version HsBindgen.Boot HsBindgen.Cache HsBindgen.Clang HsBindgen.Clang.BuiltinIncDir HsBindgen.Clang.CompareVersions HsBindgen.Clang.CStandard HsBindgen.Clang.ExtraClangArgs HsBindgen.Clang.Sizeof HsBindgen.Config.ClangArgs HsBindgen.Config.FixCandidate HsBindgen.Config.FixCandidate.ReservedNames HsBindgen.Config.Internal HsBindgen.Config.Prelims HsBindgen.DelayedIO HsBindgen.Eff HsBindgen.Errors HsBindgen.Frontend HsBindgen.Frontend.Analysis.AnonUsage HsBindgen.Frontend.Analysis.DeclIndex HsBindgen.Frontend.Analysis.DeclUseGraph HsBindgen.Frontend.Analysis.IncludeGraph HsBindgen.Frontend.Analysis.Typedefs HsBindgen.Frontend.Analysis.UseDeclGraph HsBindgen.Frontend.AST.Coerce HsBindgen.Frontend.AST.Decl HsBindgen.Frontend.AST.Deps HsBindgen.Frontend.AST.PrettyPrinter HsBindgen.Frontend.AST.Type HsBindgen.Frontend.LanguageC HsBindgen.Frontend.LanguageC.Error HsBindgen.Frontend.LanguageC.Monad HsBindgen.Frontend.LanguageC.PartialAST HsBindgen.Frontend.LanguageC.PartialAST.FromLanC HsBindgen.Frontend.LanguageC.PartialAST.ToBindgen HsBindgen.Frontend.LocationInfo HsBindgen.Frontend.Naming HsBindgen.Frontend.Pass HsBindgen.Frontend.Pass.AssignAnonIds HsBindgen.Frontend.Pass.AssignAnonIds.ChooseNames HsBindgen.Frontend.Pass.AssignAnonIds.IsPass HsBindgen.Frontend.Pass.ConstructTranslationUnit HsBindgen.Frontend.Pass.ConstructTranslationUnit.Conflict HsBindgen.Frontend.Pass.ConstructTranslationUnit.IsPass HsBindgen.Frontend.Pass.Final HsBindgen.Frontend.Pass.HandleMacros HsBindgen.Frontend.Pass.HandleMacros.Error HsBindgen.Frontend.Pass.HandleMacros.IsPass HsBindgen.Frontend.Pass.MangleNames HsBindgen.Frontend.Pass.MangleNames.Error HsBindgen.Frontend.Pass.MangleNames.IsPass HsBindgen.Frontend.Pass.Parse HsBindgen.Frontend.Pass.Parse.Decl HsBindgen.Frontend.Pass.Parse.Decl.Monad HsBindgen.Frontend.Pass.Parse.IsPass HsBindgen.Frontend.Pass.Parse.Msg HsBindgen.Frontend.Pass.Parse.PrelimDeclId HsBindgen.Frontend.Pass.Parse.Result HsBindgen.Frontend.Pass.Parse.Type HsBindgen.Frontend.Pass.Parse.Type.Monad HsBindgen.Frontend.Pass.ResolveBindingSpecs HsBindgen.Frontend.Pass.ResolveBindingSpecs.IsPass HsBindgen.Frontend.Pass.Select HsBindgen.Frontend.Pass.Select.IsPass HsBindgen.Frontend.Pass.SimplifyAST HsBindgen.Frontend.Pass.SimplifyAST.IsPass HsBindgen.Frontend.Predicate HsBindgen.Frontend.ProcessIncludes HsBindgen.Frontend.RootHeader HsBindgen.Guasi HsBindgen.Imports HsBindgen.Instances HsBindgen.Language.C HsBindgen.Language.Haskell HsBindgen.NameHint HsBindgen.Orphans HsBindgen.PrettyC HsBindgen.Resolve HsBindgen.Test HsBindgen.Test.C HsBindgen.Test.Hs HsBindgen.Test.Internal HsBindgen.Test.Readme HsBindgen.TH.Internal HsBindgen.TraceMsg HsBindgen.Util.Monad HsBindgen.Util.TH HsBindgen.Util.Tracer Text.SimplePrettyPrint other-modules: Paths_hs_bindgen autogen-modules: Paths_hs_bindgen other-extensions: TemplateHaskellQuotes -- Internal dependencies build-depends: , c-expr-dsl , c-expr-runtime , hs-bindgen-runtime , libclang-bindings -- External dependencies build-depends: , aeson >=2.2.1.0 && <2.3 , ansi-terminal >=1.0.0 && <1.2 , array >=0.5.4.0 && <0.6 , base-compat >=0.13.1 && <0.16 , base16-bytestring >=1.0.2.0 && <1.1 , bytestring >=0.11.4.0 && <0.13 , containers >=0.6.5.1 && <0.9 , contra-tracer >=0.2 && <0.3 , cryptohash-sha256 >=0.11.102.1 && <0.12 , data-default >=0.7 && <0.9 , debruijn ^>=0.3.1 , directory >=1.3.6.2 && <1.4 , exceptions >=0.10 && <0.11 , filepath >=1.4 && <1.6 , fin >=0.3.2 && <0.4 , language-c >=0.10 && <0.11 , mtl >=2.2 && <2.4 , optics-core >=0.4 && <0.5 , pretty >=1.1.3.6 && <1.2 , primitive >=0.8 && <0.10 , process >=1.6 && <1.7 , regex-pcre-builtin >=0.95 && <0.96 , some >=1.0.6 && <1.1 , template-haskell >=2.18 && <2.25 , text >=1.2 && <2.2 , time >=1.11 && <1.16 , transformers >=0.5 && <0.7 , unliftio-core >=0.2.1 && <0.3 , vec >=0.5 && <0.6 , witherable >=0.4.2 && <0.6 , yaml >=0.11.11.1 && <0.12 if impl(ghc <9.4) -- th-compat included for getPackageRoot build-depends: , data-array-byte >=0.1.0.1 && <0.2 , th-compat ^>=0.1.6 library import: lang hs-source-dirs: src exposed-modules: HsBindgen.TH other-modules: reexported-modules: -- Internal dependencies build-depends: , hs-bindgen-runtime , hs-bindgen:internal -- Inherited dependencies build-depends: data-default executable hs-bindgen-cli import: lang default-extensions: NoFieldSelectors main-is: hs-bindgen-cli.hs hs-source-dirs: app other-modules: HsBindgen.App HsBindgen.App.Output HsBindgen.Cli HsBindgen.Cli.BindingSpec HsBindgen.Cli.BindingSpec.StdLib HsBindgen.Cli.GenTests HsBindgen.Cli.Info HsBindgen.Cli.Info.BuiltinMacros HsBindgen.Cli.Info.IncludeGraph HsBindgen.Cli.Info.Instances HsBindgen.Cli.Info.Libclang HsBindgen.Cli.Info.ResolveHeader HsBindgen.Cli.Info.UseDeclGraph HsBindgen.Cli.Internal HsBindgen.Cli.Internal.Frontend HsBindgen.Cli.Preprocess HsBindgen.Cli.ToolSupport HsBindgen.Cli.ToolSupport.Literate Paths_hs_bindgen autogen-modules: Paths_hs_bindgen -- Internal dependencies build-depends: , hs-bindgen:internal , libclang-bindings -- Inherited dependencies build-depends: , bytestring , containers , data-default -- External dependencies build-depends: , optparse-applicative >=0.18 && <0.20 , prettyprinter >=1.7.1 && <1.8 , text >=1.2 && <2.2 executable clang-ast-dump import: lang main-is: Main.hs hs-source-dirs: clang-ast-dump if flag(dev) buildable: True else buildable: False -- Internal dependencies build-depends: , hs-bindgen:internal , libclang-bindings -- Inherited dependencies build-depends: , containers , data-default , text -- External dependencies build-depends: optparse-applicative >=0.18 && <0.20 library test-common import: lang hs-source-dirs: test/common exposed-modules: Test.Common.HsBindgen.Trace Test.Common.HsBindgen.Trace.Patterns Test.Common.HsBindgen.Trace.Predicate Test.Common.Util.AnsiDiff Test.Common.Util.Cabal Test.Common.Util.Tasty Test.Common.Util.Tasty.Golden -- Internal dependencies build-depends: , hs-bindgen:internal , libclang-bindings -- Inherited dependencies build-depends: , ansi-terminal , bytestring , containers , directory , filepath , mtl , primitive , text , transformers -- External dependencies build-depends: , deepseq >=1.4 && <1.6 , Diff >=1.0 && <1.1 , edit-distance >=0.2.2.1 && <0.3 , tasty >=1.5 && <1.6 , tasty-hunit >=0.10.2 && <0.11 , utf8-string >=1.0.2 && <1.1 test-suite test-hs-bindgen import: lang type: exitcode-stdio-1.0 main-is: test-hs-bindgen.hs hs-source-dirs: test/hs-bindgen other-modules: Test.HsBindgen.Golden Test.HsBindgen.Golden.Check.BindingSpec Test.HsBindgen.Golden.Check.FailureBindgen Test.HsBindgen.Golden.Check.FailureLibclang Test.HsBindgen.Golden.Check.PP Test.HsBindgen.Golden.Check.TH Test.HsBindgen.Golden.TestCase Test.HsBindgen.Integration.ExitCode Test.HsBindgen.Integration.OverwritePolicy Test.HsBindgen.Prop.Selection Test.HsBindgen.Resources Test.HsBindgen.Unit.ClangArgs Test.HsBindgen.Unit.Tracer -- Internal dependencies build-depends: , hs-bindgen:internal , libclang-bindings , test-common -- Inherited dependencies build-depends: , containers , directory , filepath , mtl , optics-core , process , tasty , tasty-hunit , template-haskell , text , utf8-string -- External dependencies build-depends: , syb >=0.7.2.4 && <0.8 , tasty-quickcheck >=0.11 && <0.12 , temporary >=1.3 && <1.4 -- Build tools needed for integration tests build-tool-depends: hs-bindgen:hs-bindgen-cli -- Test TH mode -- -- We're intentionally /not/ importing the common @lang@ section here: this -- forces us to explicitly declare whatever language extensions are needed -- when using hs-bindgen's TH mode. test-suite test-th type: exitcode-stdio-1.0 main-is: test-th.hs hs-source-dirs: test/th include-dirs: examples default-language: GHC2021 ghc-options: -Wall -Widentities -Wprepositive-qualified-module -Wredundant-constraints -Wunused-packages -Wno-unticked-promoted-constructors other-modules: Test.TH.Test01 Test.TH.Test02 -- Internal dependencies build-depends: , hs-bindgen , hs-bindgen-runtime , test-common -- Inherited dependencies build-depends: , base , optics , tasty , tasty-hunit -- External dependencies build-depends: vector ^>=0.13.2.0 test-suite test-literate type: exitcode-stdio-1.0 main-is: test-literate.hs hs-source-dirs: test/literate include-dirs: examples default-language: GHC2021 build-depends: base >=4.16 && <4.23 ghc-options: -Wall -Widentities -Wredundant-constraints -Wunused-packages -Wno-unticked-promoted-constructors other-modules: Test.Literate.Test01 Test.Literate.Test02 Test.Literate.TestPointer Test.Literate.TestSafe Test.Literate.TestSafeAndUnsafe Test.Literate.TestUnsafe -- Here we use literate haskell "hook" to avoid setting up true preprocessors -- (which would require either build-type: Custom or Hooks - both not a great options, at least yet). -- -- The source files contains the actual options and arguments to be used with hs-bindgen ghc-options: -pgmL hs-bindgen-cli -optL tool-support -optL literate build-tool-depends: hs-bindgen:hs-bindgen-cli -- Internal dependencies build-depends: , c-expr-runtime , hs-bindgen-runtime -- External dependencies build-depends: primitive if impl(ghc <9.4) build-depends: data-array-byte