Repository : ssh://darcs.haskell.org//srv/darcs/packages/Cabal

On branch  : master

http://hackage.haskell.org/trac/ghc/changeset/bfc301cbf7cfde3eb492f60b6bc2c3515647c330

>---------------------------------------------------------------

commit bfc301cbf7cfde3eb492f60b6bc2c3515647c330
Author: intractable <[email protected]>
Date:   Tue Oct 6 05:58:31 2009 +0000

    build-tools-extend-namespace

>---------------------------------------------------------------

 Distribution/Simple/Configure.hs |   34 ++++++++++++++++++++++++++--------
 1 files changed, 26 insertions(+), 8 deletions(-)

diff --git a/Distribution/Simple/Configure.hs b/Distribution/Simple/Configure.hs
index aa0adf4..0ee3b0a 100644
--- a/Distribution/Simple/Configure.hs
+++ b/Distribution/Simple/Configure.hs
@@ -91,7 +91,7 @@ import Distribution.Simple.Hpc ( enableCoverage )
 import Distribution.Simple.Program
     ( Program(..), ProgramLocation(..), ConfiguredProgram(..)
     , ProgramConfiguration, defaultProgramConfiguration
-    , configureAllKnownPrograms, knownPrograms, lookupKnownProgram
+    , configureAllKnownPrograms, knownPrograms, lookupKnownProgram, 
addKnownProgram
     , userSpecifyArgss, userSpecifyPaths
     , requireProgram, requireProgramVersion
     , pkgConfigProgram, gccProgram, rawSystemProgramStdoutConf )
@@ -265,6 +265,7 @@ configure :: (GenericPackageDescription, HookedBuildInfo)
           -> ConfigFlags -> IO LocalBuildInfo
 configure (pkg_descr0, pbi) cfg
   = do  let distPref = fromFlag (configDistPref cfg)
+            buildDir' = distPref </> "build"
             verbosity = fromFlag (configVerbosity cfg)
 
         setupMessage verbosity "Configuring" (packageId pkg_descr0)
@@ -425,13 +426,21 @@ configure (pkg_descr0, pbi) cfg
              ++ "supported by " ++ display (compilerId comp) ++ ": "
              ++ intercalate ", " (map display exts)
 
+        -- configured known/required programs & build tools
         let requiredBuildTools = concatMap buildTools (allBuildInfo pkg_descr)
-        programsConfig'' <-
-              configureAllKnownPrograms (lessVerbose verbosity) programsConfig'
+
+        -- add all exes built by this package ("internal exes") to the program
+        -- conf; this makes the namespace of build-tools include intrapackage
+        -- references to executables
+        let programsConfig'' = foldr (addInternalExe buildDir') programsConfig'
+                                 (executables pkg_descr)
+
+        programsConfig''' <-
+              configureAllKnownPrograms (lessVerbose verbosity) 
programsConfig''
           >>= configureRequiredPrograms verbosity requiredBuildTools
 
-        (pkg_descr', programsConfig''') <- configurePkgconfigPackages verbosity
-                                            pkg_descr programsConfig''
+        (pkg_descr', programsConfig'''') <-
+          configurePkgconfigPackages verbosity pkg_descr programsConfig'''
 
         split_objs <-
            if not (fromFlag $ configSplitObjs cfg)
@@ -475,7 +484,7 @@ configure (pkg_descr0, pbi) cfg
                                                -- did they would go here.
                     installDirTemplates = installDirs,
                     compiler            = comp,
-                    buildDir            = distPref </> "build",
+                    buildDir            = buildDir', 
                     scratchDir          = fromFlagOrDefault
                                             (distPref </> "scratch")
                                             (configScratchDir cfg),
@@ -485,7 +494,7 @@ configure (pkg_descr0, pbi) cfg
                     installedPkgs       = packageDependsIndex,
                     pkgDescrFile        = Nothing,
                     localPkgDescr       = pkg_descr',
-                    withPrograms        = programsConfig''',
+                    withPrograms        = programsConfig'''',
                     withVanillaLib      = fromFlag $ configVanillaLib cfg,
                     withProfLib         = fromFlag $ configProfLib cfg,
                     withSharedLib       = fromFlag $ configSharedLib cfg,
@@ -526,11 +535,20 @@ configure (pkg_descr0, pbi) cfg
         dirinfo "Documentation"    (docdir dirs)     (docdir relative)
 
         sequence_ [ reportProgram verbosity prog configuredProg
-                  | (prog, configuredProg) <- knownPrograms programsConfig''' ]
+                  | (prog, configuredProg) <- knownPrograms programsConfig'''' 
]
 
         return lbi
 
     where
+      addInternalExe bd exe =
+        let nm = exeName exe in
+        addKnownProgram Program {
+          programName         = nm, 
+          programFindLocation = \_ -> return $ Just $ bd </> nm </> nm,
+          programFindVersion  = \_ _ -> return Nothing, 
+          programPostConf     = \_ _ -> return []
+        }
+
       addExtraIncludeLibDirs pkg_descr =
           let extraBi = mempty { extraLibDirs = configExtraLibDirs cfg
                                , PD.includeDirs = configExtraIncludeDirs cfg}



_______________________________________________
Cvs-libraries mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/cvs-libraries

Reply via email to