cabal-version: 3.0 name: hs-bindgen version: 1.0.0.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 tested-with: GHC ==9.4.8 || ==9.6.7 || ==9.8.4 || ==9.10.3 || ==9.12.2 || ==9.14.1 extra-source-files: bootstrap/*.h musl-include/**/*.h musl-include/COPYRIGHT musl-include/VERSION test-artefacts/fixtures/**/*.hs test-artefacts/fixtures/**/*.txt test-artefacts/fixtures/**/*.yaml test-artefacts/headers/**/*.h test-artefacts/headers/**/*.yaml extra-doc-files: CHANGELOG.md known-issues.md README.md source-repository head type: git location: https://github.com/well-typed/hs-bindgen subdir: hs-bindgen source-repository this type: git location: https://github.com/well-typed/hs-bindgen subdir: hs-bindgen tag: release-1.0.0.0 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.17 && <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 -- -- Rules: -- -- * HsBindgen.IR.* modules must not (transitively) import from Frontend or -- Backend exposed-modules: Data.Digraph HsBindgen HsBindgen.Artefact HsBindgen.ArtefactM HsBindgen.Backend HsBindgen.Backend.Category HsBindgen.Backend.Category.ApplyChoice HsBindgen.Backend.Extensions HsBindgen.Backend.Global HsBindgen.Backend.Hs.AST HsBindgen.Backend.Hs.AST.CompletePragma HsBindgen.Backend.Hs.AST.Strategy HsBindgen.Backend.Hs.CallConv 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.Field HsBindgen.Backend.Hs.Translation.ForeignImport HsBindgen.Backend.Hs.Translation.Function HsBindgen.Backend.Hs.Translation.Instances HsBindgen.Backend.Hs.Translation.Monad HsBindgen.Backend.Hs.Translation.Newtype HsBindgen.Backend.Hs.Translation.Structure HsBindgen.Backend.Hs.Translation.ToFromFunPtr HsBindgen.Backend.Hs.Translation.Union HsBindgen.Backend.HsModule.Names HsBindgen.Backend.HsModule.Pretty HsBindgen.Backend.HsModule.Pretty.CAPI HsBindgen.Backend.HsModule.Pretty.Comment HsBindgen.Backend.HsModule.Pretty.Common HsBindgen.Backend.HsModule.Pretty.Decl HsBindgen.Backend.HsModule.Pretty.Expr HsBindgen.Backend.HsModule.Pretty.Type HsBindgen.Backend.HsModule.Render HsBindgen.Backend.HsModule.Translation HsBindgen.Backend.HsModule.Translation.Doxygen HsBindgen.Backend.Level HsBindgen.Backend.Runtime HsBindgen.Backend.SHs.AST HsBindgen.Backend.SHs.AST.Expr HsBindgen.Backend.SHs.AST.Type HsBindgen.Backend.SHs.Simplify HsBindgen.Backend.SHs.Translation HsBindgen.Backend.SHs.Translation.Common HsBindgen.Backend.SHs.Translation.MapFunction 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.CompareVersions HsBindgen.Clang.Discover HsBindgen.Clang.ExtraClangArgs HsBindgen.Clang.Macos HsBindgen.Clang.Tokens HsBindgen.Config.ClangArgs HsBindgen.Config.Internal HsBindgen.Config.MangleCandidate HsBindgen.Config.MangleCandidate.ReservedNames HsBindgen.Config.Prelims HsBindgen.Doxygen HsBindgen.Eff HsBindgen.Errors HsBindgen.Frontend HsBindgen.Frontend.Analysis HsBindgen.Frontend.Analysis.DeclIndex HsBindgen.Frontend.Analysis.DeclIndex.ResolveMacro HsBindgen.Frontend.Analysis.DeclUseGraph HsBindgen.Frontend.Analysis.DeclUseGraph.Construction HsBindgen.Frontend.Analysis.DeclUseGraph.Definition HsBindgen.Frontend.Analysis.DeclUseGraph.Query HsBindgen.Frontend.Analysis.Deps HsBindgen.Frontend.Analysis.IncludeGraph HsBindgen.Frontend.Analysis.Typedefs HsBindgen.Frontend.Analysis.UnnamedIdUsage HsBindgen.Frontend.Analysis.UseDeclGraph HsBindgen.Frontend.DeclMeta 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.Pass.AdjustTypes HsBindgen.Frontend.Pass.AdjustTypes.IsPass HsBindgen.Frontend.Pass.ConstructTranslationUnit HsBindgen.Frontend.Pass.ConstructTranslationUnit.IsPass HsBindgen.Frontend.Pass.EnrichComments HsBindgen.Frontend.Pass.EnrichComments.IsPass HsBindgen.Frontend.Pass.FillUnnamedIds HsBindgen.Frontend.Pass.FillUnnamedIds.ChooseNames HsBindgen.Frontend.Pass.FillUnnamedIds.IsPass HsBindgen.Frontend.Pass.Final HsBindgen.Frontend.Pass.MangleNames HsBindgen.Frontend.Pass.MangleNames.CreateNames HsBindgen.Frontend.Pass.MangleNames.DetectClashes HsBindgen.Frontend.Pass.MangleNames.Error HsBindgen.Frontend.Pass.MangleNames.IsPass HsBindgen.Frontend.Pass.MangleNames.Names HsBindgen.Frontend.Pass.MangleNames.ResolveNames HsBindgen.Frontend.Pass.Parse HsBindgen.Frontend.Pass.Parse.Builtin HsBindgen.Frontend.Pass.Parse.Context HsBindgen.Frontend.Pass.Parse.Decl HsBindgen.Frontend.Pass.Parse.Decl.Field HsBindgen.Frontend.Pass.Parse.Decl.ImplicitFields HsBindgen.Frontend.Pass.Parse.Decl.Macro HsBindgen.Frontend.Pass.Parse.Decl.Members HsBindgen.Frontend.Pass.Parse.IsPass HsBindgen.Frontend.Pass.Parse.Monad.Decl HsBindgen.Frontend.Pass.Parse.Monad.SourceRangeMap HsBindgen.Frontend.Pass.Parse.Monad.Type HsBindgen.Frontend.Pass.Parse.Msg HsBindgen.Frontend.Pass.Parse.Result HsBindgen.Frontend.Pass.Parse.Type HsBindgen.Frontend.Pass.PrepareReparse HsBindgen.Frontend.Pass.PrepareReparse.AST HsBindgen.Frontend.Pass.PrepareReparse.Flatten HsBindgen.Frontend.Pass.PrepareReparse.IsPass HsBindgen.Frontend.Pass.PrepareReparse.IsPass.Msg HsBindgen.Frontend.Pass.PrepareReparse.Lexer HsBindgen.Frontend.Pass.PrepareReparse.Parser HsBindgen.Frontend.Pass.PrepareReparse.Preprocessor HsBindgen.Frontend.Pass.PrepareReparse.Printer HsBindgen.Frontend.Pass.PrepareReparse.Printer.Util HsBindgen.Frontend.Pass.PrepareReparse.Simplifier HsBindgen.Frontend.Pass.PrepareReparse.Tracer HsBindgen.Frontend.Pass.PrepareReparse.Update HsBindgen.Frontend.Pass.ReparseMacroExpansions HsBindgen.Frontend.Pass.ReparseMacroExpansions.ForgetAnn HsBindgen.Frontend.Pass.ReparseMacroExpansions.IsPass HsBindgen.Frontend.Pass.ReparseMacroExpansions.IsPass.Msg HsBindgen.Frontend.Pass.ReparseMacroExpansions.LanC HsBindgen.Frontend.Pass.ReparseMacroExpansions.Zip HsBindgen.Frontend.Pass.ReparseMacroExpansions.Zip.Error 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.Pass.TranslateTypes HsBindgen.Frontend.Pass.TranslateTypes.IsPass HsBindgen.Frontend.Pass.TranslateTypes.IsPass.Msg HsBindgen.Frontend.Pass.TranslateTypes.Translation HsBindgen.Frontend.Pass.TypecheckMacros HsBindgen.Frontend.Pass.TypecheckMacros.IsPass HsBindgen.Frontend.Pass.TypecheckMacros.KnownTypes HsBindgen.Frontend.Pass.TypecheckMacros.Typecheck HsBindgen.Frontend.Predicate HsBindgen.Frontend.PrettyC HsBindgen.Frontend.ProcessIncludes HsBindgen.Frontend.RootHeader HsBindgen.Frontend.TranslationUnit HsBindgen.Guasi HsBindgen.Imports HsBindgen.Instances HsBindgen.IR.C HsBindgen.IR.C.Conflict HsBindgen.IR.C.Decl HsBindgen.IR.C.DeclPath HsBindgen.IR.C.HashDefine HsBindgen.IR.C.HashIncludeArg HsBindgen.IR.C.LocationInfo HsBindgen.IR.C.Naming HsBindgen.IR.C.PrettyPrinter HsBindgen.IR.C.RootDirective HsBindgen.IR.C.Type HsBindgen.IR.Hs HsBindgen.IR.Hs.Type HsBindgen.IR.Pass HsBindgen.IR.Pass.Ann HsBindgen.IR.Pass.CommentDecl HsBindgen.IR.Pass.Definition HsBindgen.IR.Pass.ExtBinding HsBindgen.IR.Pass.Id HsBindgen.IR.Pass.Macro HsBindgen.IR.Pass.Msg HsBindgen.IR.Pass.ScopedName HsBindgen.IR.Pass.Types HsBindgen.IR.Translation HsBindgen.Language.C HsBindgen.Language.Haskell HsBindgen.Macro.Empty HsBindgen.Macro.Error HsBindgen.Macro.Flip HsBindgen.Macro.Interface HsBindgen.Macro.Parse HsBindgen.Macro.Raw HsBindgen.Macro.Raw.Lang HsBindgen.Macro.Raw.Parse HsBindgen.Macro.Syntax HsBindgen.Macro.Type HsBindgen.Macro.UniqueExpansion HsBindgen.Macro.UniqueExpansion.Parse HsBindgen.Macro.UniqueExpansion.Types HsBindgen.NameHint HsBindgen.Orphans 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.Process HsBindgen.Util.Rational HsBindgen.Util.Tracer Text.SimplePrettyPrint other-modules: Paths_hs_bindgen autogen-modules: Paths_hs_bindgen other-extensions: TemplateHaskellQuotes -- Internal dependencies build-depends: hs-bindgen-runtime >=1.0.0.0 && <1.1 -- 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 , doxygen-parser >=0.1 && <0.2 , exceptions >=0.10 && <0.11 , filepath >=1.4 && <1.6 , fin >=0.3.2 && <0.4 , language-c >=0.9 && <0.11 , libclang-bindings >=0.2 && <0.3 , mtl >=2.2 && <2.4 , optics-core >=0.4 && <0.5 , parsec >=3.1 && <3.2 , pretty >=1.1.3.6 && <1.2 , process >=1.6 && <1.7 , regex-pcre-builtin >=0.95 && <0.96 , some >=1.0.6 && <1.1 , template-haskell >=2.19 && <2.25 , temporary >=1.3 && <1.4 , text >=1.2 && <2.2 , transformers >=0.5 && <0.7 , unliftio-core >=0.2.1 && <0.3 , vec >=0.5 && <0.6 , yaml >=0.11.11.1 && <0.12 library import: lang hs-source-dirs: src exposed-modules: HsBindgen.Macro HsBindgen.TH other-modules: HsBindgen.Internal.Macro.CExpr HsBindgen.Internal.Macro.CExpr.Global HsBindgen.Internal.Macro.CExpr.Parse HsBindgen.Internal.Macro.CExpr.Resolution HsBindgen.Internal.Macro.CExpr.Translation.Type HsBindgen.Internal.Macro.CExpr.Translation.Value HsBindgen.Internal.Macro.CExpr.Type HsBindgen.Internal.Macro.CExpr.Typecheck reexported-modules: other-extensions: TemplateHaskellQuotes -- Internal dependencies build-depends: , hs-bindgen-runtime , hs-bindgen:internal -- External dependencies build-depends: , c-expr-dsl >=0.2 && <0.3 , c-expr-runtime >=0.1 && <0.2 -- Inherited dependencies build-depends: , containers , data-default , debruijn , fin , libclang-bindings , template-haskell , text , vec 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.Doxygen 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 , hs-bindgen:internal -- Inherited dependencies build-depends: , containers , data-default , libclang-bindings -- External dependencies build-depends: , bytestring >=0.11.4.0 && <0.13 , 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 -- Inherited dependencies build-depends: , containers , data-default , libclang-bindings , 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 -- Inherited dependencies build-depends: , ansi-terminal , bytestring , containers , directory , filepath , mtl , text , transformers -- External dependencies build-depends: , deepseq >=1.4 && <1.6 , Diff >=1.0 && <1.1 , edit-distance >=0.2.2.1 && <0.3 , primitive >=0.9 && <0.10 , 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 -- -threaded is needed for parallel fixture compilation via direct GHC -- invocations. -- Suppress warning about hs-bindgen being unused in test code -- (it's only used when compiling generated TH modules) ghc-options: -threaded -Wno-unused-packages other-modules: Test.HsBindgen.Clang Test.HsBindgen.Fixtures.Haddock Test.HsBindgen.Fixtures.TestCases Test.HsBindgen.Fixtures.Utils Test.HsBindgen.Frontend.LanguageC Test.HsBindgen.Frontend.Pass.PrepareReparse Test.HsBindgen.Golden Test.HsBindgen.Golden.Arrays Test.HsBindgen.Golden.Attributes Test.HsBindgen.Golden.BindingSpecs Test.HsBindgen.Golden.Comprehensive Test.HsBindgen.Golden.Declarations Test.HsBindgen.Golden.Documentation Test.HsBindgen.Golden.EdgeCases Test.HsBindgen.Golden.Functions Test.HsBindgen.Golden.Globals Test.HsBindgen.Golden.Infra.Check.BindingSpec Test.HsBindgen.Golden.Infra.Check.FailureBindgen Test.HsBindgen.Golden.Infra.Check.FailureLibclang Test.HsBindgen.Golden.Infra.Check.PP Test.HsBindgen.Golden.Infra.Check.TH Test.HsBindgen.Golden.Infra.TestCase Test.HsBindgen.Golden.Infra.TestCaseTree Test.HsBindgen.Golden.Macros Test.HsBindgen.Golden.Macros.Lang Test.HsBindgen.Golden.Macros.Redeclaration Test.HsBindgen.Golden.Macros.Reparse Test.HsBindgen.Golden.ProgramAnalysis Test.HsBindgen.Golden.Types Test.HsBindgen.Integration.ExitCode Test.HsBindgen.Integration.OverwritePolicy Test.HsBindgen.Macro.CExpr Test.HsBindgen.Macro.Infra Test.HsBindgen.Macro.Syntax Test.HsBindgen.Macro.Syntax.Clang Test.HsBindgen.Macro.UniqueExpansion Test.HsBindgen.PPFixtures Test.HsBindgen.PPFixtures.Compile Test.HsBindgen.PPFixtures.TestCases Test.HsBindgen.Prop.Selection Test.HsBindgen.Resources Test.HsBindgen.THFixtures Test.HsBindgen.THFixtures.Compile Test.HsBindgen.THFixtures.Generate Test.HsBindgen.THFixtures.TestCases Test.HsBindgen.Unit.ClangArgs Test.HsBindgen.Unit.Digraph Test.HsBindgen.Unit.Frontend Test.HsBindgen.Unit.Pretty Test.HsBindgen.Unit.RootDirective Test.HsBindgen.Unit.Runtime Test.HsBindgen.Unit.Tracer -- Internal dependencies build-depends: , hs-bindgen , hs-bindgen-runtime , hs-bindgen:internal , test-common -- Inherited dependencies build-depends: , c-expr-dsl , containers , data-default , debruijn , directory , filepath , libclang-bindings , mtl , optics-core , parsec , process , tasty , tasty-hunit , template-haskell , temporary , text , utf8-string -- External dependencies build-depends: , async >=2.2 && <2.3 , syb >=0.7.2.4 && <0.8 , tasty-quickcheck >=0.11 && <0.12 -- 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: test-artefacts/headers default-language: GHC2021 ghc-options: -Wall -Widentities -Wprepositive-qualified-module -Wredundant-constraints -Wunused-packages -Wno-unticked-promoted-constructors other-modules: Test.TH.RecordDot Test.TH.StaticCounterA Test.TH.StaticCounterB Test.TH.Test01 Test.TH.Test02 -- Internal dependencies build-depends: , hs-bindgen , hs-bindgen-runtime , test-common -- Inherited dependencies build-depends: , base , filepath , 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: test-artefacts/headers default-language: GHC2021 build-depends: base >=4.17 && <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