Sun Mar 2 13:50:20 CET 2008 Pepe Iborra <mnislaih#@gmial.oail.com> * Trac #221 part 1 This patch adds two missing cl flags to configure, --extra-include-dirs and extra-lib-dirs. These have effect over all the buildables in a project. The next step is to close #223 so that all the configure cl flags can be stored in the .cabal/config file. With this patch, that should close #221 too. Sun Mar 16 17:25:10 CET 2008 Pepe Iborra <mnislaih#@gmial.oail.com> * Refactoring Distribution.Command.Simple.Option (see Ticket #223) so that it really represents an option and not just a flag. data Option a = Option { optionName :: Name, optionDescr :: [OptDescr a] } data OptDescr a = ReqArg Description OptFlags ArgDescr (ReadE (a->a)) (a -> [String]) | OptArg Description OptFlags ArgDescr (ReadE (a->a)) (a->a) (a -> [Maybe String]) | Choice [(Description, OptFlags, a->a, a -> Bool)] Now an option can expand to several flags, which are all defined together. For example, the compiler flag is defined as follows. option [] ["compiler"] "compiler" configHcFlavor (\v flags -> flags { configHcFlavor = v }) (choiceOpt [ (Flag GHC, ("g", ["ghc"]), "compile with GHC") , (Flag NHC, ([] , ["nhc98"]), "compile with NHC") , (Flag JHC, ([] , ["jhc"]), "compile with JHC") , (Flag Hugs,([] , ["hugs"]), "compile with Hugs")]) We can need to use several kinds of OptDescr for the same option, as in the optimization Option (really a extreme case): ,multiOption "optimization" configOptimization (\v flags -> flags { configOptimization = v }) [optArg' "n" (Flag . flagToOptimisationLevel) .... .... "Build with optimization (n is 0--2, default is 1)", noArg (Flag NoOptimisation) [] ("disable-optimization": case showOrParseArgs of -- Allow British English spelling: ShowArgs -> []; ParseArgs -> ["disable-optimisation"]) "Build without optimization" ] The benefit is that we can now derive a FieldDescr from an Option, viewAsFieldDescr :: Option a -> FieldDescr a and this allows for easy human readable serialization of Options to a config file, as it is needed for cabal-install.