Skip to content
Snippets Groups Projects
Commit 9cfc836c authored by Ian Lynagh's avatar Ian Lynagh
Browse files

Allow additional options to pass on to ./configure to be given

parent 2d20dbfd
No related branches found
No related tags found
No related merge requests found
......@@ -20,26 +20,35 @@ import System.Exit
main :: IO ()
main = do args <- getArgs
let (ghcArgs, args') = extractGhcArgs args
let hooks = defaultUserHooks {
(configureArgs, args'') = extractConfigureArgs args'
hooks = defaultUserHooks {
confHook = add_extra_deps
$ confHook defaultUserHooks,
postConf = add_configure_options configureArgs
$ postConf defaultUserHooks,
buildHook = add_ghc_options ghcArgs
$ filter_modules_hook
$ buildHook defaultUserHooks,
instHook = filter_modules_hook
$ instHook defaultUserHooks }
withArgs args' $ defaultMainWithHooks hooks
withArgs args'' $ defaultMainWithHooks hooks
extractGhcArgs :: [String] -> ([String], [String])
extractGhcArgs args
extractGhcArgs = extractPrefixArgs "--ghc-option="
extractConfigureArgs :: [String] -> ([String], [String])
extractConfigureArgs = extractPrefixArgs "--configure-option="
extractPrefixArgs :: String -> [String] -> ([String], [String])
extractPrefixArgs prefix args
= let f [] = ([], [])
f (x:xs) = case f xs of
(ghcArgs, otherArgs) ->
case removePrefix "--ghc-option=" x of
Just ghcArg ->
(ghcArg:ghcArgs, otherArgs)
(wantedArgs, otherArgs) ->
case removePrefix prefix x of
Just wantedArg ->
(wantedArg:wantedArgs, otherArgs)
Nothing ->
(ghcArgs, x:otherArgs)
(wantedArgs, x:otherArgs)
in f args
removePrefix :: String -> String -> Maybe String
......@@ -51,6 +60,8 @@ removePrefix (x:xs) (y:ys)
type Hook a = PackageDescription -> LocalBuildInfo -> Maybe UserHooks -> a
-> IO ()
type ConfHook = PackageDescription -> ConfigFlags -> IO LocalBuildInfo
type PostConfHook = Args -> ConfigFlags -> PackageDescription -> LocalBuildInfo
-> IO ExitCode
-- type PDHook = PackageDescription -> ConfigFlags -> IO ()
......@@ -66,6 +77,10 @@ add_ghc_options args f pd lbi muhs x
pd' = pd { library = Just lib' }
f pd' lbi muhs x
add_configure_options :: [String] -> PostConfHook -> PostConfHook
add_configure_options args f as cfs pd lbi
= f (as ++ args) cfs pd lbi
filter_modules_hook :: Hook a -> Hook a
filter_modules_hook f pd lbi muhs x
= let build_filter = case compilerFlavor $ compiler lbi of
......
......@@ -5,6 +5,17 @@ AC_CONFIG_SRCDIR([include/HsBase.h])
AC_CONFIG_HEADERS([include/HsBaseConfig.h])
AC_ARG_WITH([cc],
[C compiler],
[OLDPATH=$PATH
PATH=`dirname $withval`:$PATH
AC_PROG_CC(`basename $withval`)
PATH=$OLDPATH
CC=$withval],
[AC_PROG_CC()])
echo CC is $CC >&5
echo CC is $CC >&6
# do we have long longs?
AC_CHECK_TYPES([long long])
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment