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
[email protected]
http://mail.haskell.org/cgi-bin/mailman/listinfo/cabal-devel