úÎ!(ú'¾NoneX'3cabal-build-programs]The custom field to use in Cabal stanza to specify external programs. In a ~.cabal~ file use: x-build-programs: p1,p2,p3 #whereas in the ~package.yaml~ of a  /https://docs.haskellstack.org/en/stable/README/Stack or  )https://hackage.haskell.org/package/hpackhpack8 project you must use (note that "p1,p2,p3" are quoted): )verbatim: x-build-programs: "p1,p2,p3" cabal-build-programs=This function is the easiest way to use this library in your Setup.hs. The default Setup.hs: .import Distribution.Simple main = defaultMain becomes: Nimport Distribution.Simple.BuildPrograms -- <- only change main = defaultMain cabal-build-programsDirectly access the  that back 9 when you need finer grained control, they are backed by : Œimport Distribution.Simple.BuildPrograms import Distribution.Simple(defaultMainWithHooks) main = defaultMainWithHooks buildProgramUserHooks cabal-build-programsIf your Setup.hs uses non-default or custom  ,eg. autoconfUserHooks this function will augment the  and  * to first check for the external programs. ­import Distribution.Simple.BuildPrograms import Distribution.Simple(defaultMainWithHooks,autoconfUserHooks) main = defaultMainWithHooks (overlayUserHooks autoconfUserHooks) cabal-build-programs¸Used internally it figures out which components to build, extracts the required external programs into a lookup table. To make debugging easier I made it public so you print the table.cabal-build-programsZThis is the lowest level function provided by this library for use in a highly customized Setup.hs: scripts. Most of the other functions wrap it in some way. ÿ is a large datastructure that holds all the information required to build a project, this function gathers up only the components that need to be built ( or loaded in GHCi ), extracts the programs in the "x-build-programs" fields, checks that they exist and adds them as ConfiguredProgram to the   of the provided   and returns a new   with the new  .QIf any of the programs are cannot be found a formatted error message is returned.,The expectation is that it is called from a  or a  / at some point before the components are built.cabal-build-programs ( extracted from  ) or   argumentscabal-build-programsThe   from G, used to make sure we don't double check built-in build programs like c2hs or ghccabal-build-programsPLocal build info with the external build programs configured or an error messageSafe'™       3cabal-build-programs-0.1.0.0-G8HLyEbsIxRK4i5uXu3aDm!Distribution.Simple.BuildProgramsPaths_cabal_build_programsbuildProgramsCustomField defaultMainbuildProgramsUserHookscomponentBuildProgramslocalBuildInfoWithBuildPrograms Cabal-2.4.0.1Distribution.Simple.UserHooks UserHooksDistribution.SimplesimpleUserHooksoverlayUserHooks buildHookreplHook!Distribution.Types.LocalBuildInfoLocalBuildInfoDistribution.Simple.Program.Db ProgramDbDistribution.Simple.Setup BuildFlagshookedProgramsversion getBinDir getLibDir getDynLibDir getDataDir getLibexecDir getSysconfDirgetDataFileName