Use autoconf to generate version numbers for libiserv and friends
[ghc.git] / utils / iserv-proxy / iserv-proxy.cabal.in
1 -- WARNING: iserv-proxy.cabal is automatically generated from iserv-proxy.cabal.in by
2 -- ../../configure.  Make sure you are editing iserv-proxy.cabal.in, not
3 -- iserv-proxy.cabal.
4
5 Name: iserv-proxy
6 Version: @ProjectVersion@
7 Copyright: XXX
8 License: BSD3
9 -- XXX License-File: LICENSE
10 Author: XXX
11 Maintainer: XXX
12 Synopsis: iserv allows GHC to delegate Tempalte Haskell computations
13 Description:
14   GHC can be provided with a path to the iserv binary with
15   @-pgmi=/path/to/iserv-bin@, and will in combination with
16   @-fexternal-interpreter@, compile Template Haskell though the
17   @iserv-bin@ delegate. This is very similar to how ghcjs has been
18   compiling Template Haskell, by spawning a separate delegate (so
19   called runner on the javascript vm) and evaluating the splices
20   there.
21   .
22   iserv can also be used in combination with cross compilation. For
23   this, the @iserv-proxy@ needs to be built on the host, targeting the
24   host (as it is running on the host). @cabal install -flibrary
25   -fproxy@ will yield the proxy.
26   .
27   Using the cabal for the target @arch-platform-target-cabal install
28   -flibrary@ will build the required library that contains the ffi
29   @startSlave@ function, which needs to be invoked on the target
30   (e.g. in an iOS application) to start the remote iserv slave.
31   .
32   calling the GHC cross compiler with @-fexternal-interpreter
33   -pgmi=$HOME/.cabal/bin/iserv-proxy -opti\<ip address\> -opti\<port\>@
34   will cause it to compile Template Haskell via the remote at \<ip address\>.
35   .
36   Thus to get cross compilation with Template Haskell follow the
37   following receipt:
38   .
39   * compile the iserv library for your target
40   .
41       > iserv $ arch-platform-target-cabal install -flibrary
42   .
43   * setup an application for your target that calls the
44   * startSlave function. This could be either haskell or your
45   * targets ffi capable language, if needed.
46   .
47       >  void startSlave(false /* verbose */, 5000 /* port */,
48       >                  "/path/to/storagelocation/on/target");
49   .
50   * build the iserv-proxy
51   .
52       > iserv $ cabal install -flibrary -fproxy
53   * Start your iserv-slave app on your target running on say @10.0.0.1:5000@
54   * compiler your sources with -fexternal-interpreter and the proxy
55   .
56       > project $ arch-platform-target-ghc ModuleContainingTH.hs \
57       >             -fexternal-interpreter \
58       >             -pgmi=$HOME/.cabal/bin/iserv-proxy \
59       >             -opti10.0.0.1 -opti5000
60   .
61   Should something not work as expected, provide @-opti-v@ for verbose
62   logging of the @iserv-proxy@.
63
64 Category: Development
65 build-type: Simple
66 cabal-version: >=1.10
67
68 Executable iserv-proxy
69    Default-Language: Haskell2010
70    Main-Is: Main.hs
71    Hs-Source-Dirs: src
72    Build-Depends: array      >= 0.5 && < 0.6,
73                   base       >= 4   && < 5,
74                   binary     >= 0.7 && < 0.9,
75                   bytestring >= 0.10 && < 0.11,
76                   containers >= 0.5 && < 0.6,
77                   deepseq    >= 1.4 && < 1.5,
78                   directory  >= 1.3 && < 1.4,
79                   network    >= 2.6,
80                   filepath   >= 1.4 && < 1.5,
81                   ghci       == @ProjectVersionMunged@,
82                   libiserv   == @ProjectVersionMunged@