Clean up runtime cabal generation, add idsupply flags and update defaults
This branch moves the kics2-runtime.cabal
template into a *.in
file and models the different IDSupply implementations as package flags. The advantage of doing so is that we can conditionally depend on ghc
, requiring it only for GHC/UniqSupply-based IDSupply implementations.
Since the libtinfo
dependency (which transitively got included in every compiled executable through the kics2-runtime
, which in turn depended on GHC) has caused some portability issues in the past, this branch also changes the default IDSupply to idsupplyinteger
, which does not depend on GHC/libtinfo
and has similar performance characteristics to the previously used idsupplyghc
.
Finally, we now default the Curry compiler used to compile KiCS2 to the kics2
, pakcs
or curry
binary on the user's PATH
(in that order of precedence). The idea is to 'do the right thing' by default: Usually pinning the compiler implementation leads to less fragile/more reproducible builds than repeatedly bootstrapping with the locally compiled KiCS2 binary. Of course, manually overriding CURRY
and point it to ./bin/kics2
is still always possible.