making with profiling, 6.4.1, cabal-1.1.3

Lemmih lemmih at gmail.com
Mon Oct 3 09:17:38 EDT 2005


On 10/3/05, Serge D. Mechveliani <mechvel at botik.ru> wrote:
> People,
>
> I need help on making for profiling,
> and cannot decide whether the question is on GHC or on Cabal.
>
> I have  ghc-6.4.1,  and  Cabal-1.1.3-September-12
> installed in my user directory, under Debian Linux,
> and need to make a project for profiling.
>
>         ghci -package Cabal
> says
>  ...
>  Loading package base-1.0 ... linking ... done.
>  ...
>  Loading package Cabal-1.1.3 ... linking ... done.
>
>
> I start with a contrived example project of  M1.hs, M2.hs, Main.hs:
>
> ---------------------------------------
> module M1 where  m1 = True
>
> module M2 where  import M1;  m2 = m1 && m1
>
> Main.hs:  import M2l;        main = putStr $ shows m2 "\n"
> ---------------------------------------
>
> For this,          ghc --make -prof -auto-all Main
>
> works as needed -- without packages.
> Now, try to make a package for profiling:
>
> foo.cabal:
>   name:            foo
>   version:         1.0
>   build-depends:   base, haskell98, data
>   exposed-modules: M2
>   other-modules:   M1
>   ghc-options:     -prof -auto-all -hisuf p_hi -osuf p_o
>
> The aim is to build  foo  (of M2)  as a library, then to make Main
> under the package  foo,  and with profiling.
>
> Then,  runhaskell Setup configure --ghc --prefix=$source/inst
>        runhaskell Setup build
>
> produces a report
>
> -------------------------------------------------------------------
> ...
> configure: Using compiler: /home/mechvel/ghc/6.4.1/inst/bin/ghc
> configure: Compiler flavor: GHC
> configure: Compiler version: 6.4.1
> configure: Using package tool: /home/mechvel/ghc/6.4.1/inst/bin/ghc-pkg
> configure: No haddock found
> configure: Using happy: /usr/bin/happy
> configure: Using alex: /usr/bin/alex
> configure: Using hsc2hs: /home/mechvel/ghc/6.4.1/inst/bin/hsc2hs
> configure: No c2hs found
> configure: No cpphs found
> configure: No greencard found
> configure: Dependency base-any: using base-1.0
> configure: Dependency haskell98-any: using haskell98-1.0
> configure: Dependency data-any: using data-1.0
>
> scico:~/t> make build
>
> runhaskell Setup.hs build
> Preprocessing library foo-1.0...
> Building foo-1.0...
> Chasing modules from: M2,M1
> Skipping  M1               ( M1.hs, dist/build/M1.p_o )
> Skipping  M2               ( M2.hs, dist/build/M2.p_o )
> /usr/bin/ar: creating dist/build/libHSfoo-1.0.a
> /usr/bin/ar: dist/build/M2.o: No such file or directory
> make: *** [build] Error 1
> -------------------------------------------------------------------
>
> The directory   ~/t/dist/build   contains at this moment
>
>   M1.p_hi  M1.p_o  M2.p_hi  M2.p_o  Main.p_hi  Main.p_o
>
> , and indeed, no  M2.o  file.
>
> If I remove  -hisuf p_hi -osuf p_o
>
> (by the way, why should the user think of these wise suffixes,
> maybe,  -prof  should be sufficient?
> ),
> then it reports  ...
>                  /usr/bin/ld: cannot find -lHSfoo-1.0_p
>                  collect2: ld returned 1 exit status
>
> What I am missing, please?
> Thank you in advance for the help.

You don't have to mess with GHC-Options at all. Just pass
--enable-library-profiling to the setup script when you're configuring
the library.

--
Friendly,
  Lemmih


More information about the Libraries mailing list