I think the mutex flags might be needed. For example, if my program use 
accelerate and I want my program can use both of cuda, llvm, (etc) as the 
backend for accelerating, I need to write a lot of if-statements in cabal file 
to control that there will be only one backend to be used. So I think that 
mutex-flags might be useful.

For example:

…
flag a
default: False
flag b
default: False
flag c
default: False
flag d
default: False
...
exec…
…
if flag(a) && !flag(b) && !flag(c) && !flag(d)
        build-depends: xx-a

…
if !flag(a) && flag(b) && !flag(c) && !flag(d)
        build-depends: xx-b

…
if !flag(a) && !flag(b) && flag(c) && !flag(d)
        build-depends: xx-c

…
if !flag(a) && !flag(b) && !flag(c) 
        build-depends: xx-d
…

The above codes are also hard to maintain or extend. Following codes will 
better.

…
flag a
default: False
flag b
default: False
flag c
default: False
flag d
default: False
mutex 
flags: a b c d
default: d
…

if flag(a)
build-depends: xx-a

if flag(b)
build-depends: xx-b

if flag(c)
build-depends: xx-c

if flag(d)
build-depends: xx-d
...
_______________________________________________
cabal-devel mailing list
cabal-devel@haskell.org
http://mail.haskell.org/cgi-bin/mailman/listinfo/cabal-devel

Reply via email to