Simplest ticky-ticky profiling (was RE: Selective compilation)

Nicholas Nethercote njn25@cam.ac.uk
Wed, 30 Jan 2002 09:45:52 +0000 (GMT)


On Tue, 29 Jan 2002, Simon Marlow wrote:

> > If you want to build GHC in different ways, eg. with
> > ticky-ticky profiling
> > on, you can do it by setting "GhcLibWays=t".  This make two
> > versions of
> > all the library .o files and .a files, a normal one, and a ticky-ticky
> > one.
> >
> > My question is: can you stop it from making the normal one?
>
> In a single directory, you can say 'make way=t' to just build the
> ticky-ticky versions of everything.  There isn't a way to omit the
> normal way from the whole tree, unfortunately.

Ok, AFAICT, the easiest way to get ticky-ticky profiling working with
minimal compilation is this: in a build tree containing a normal build, run
"make way=t" in these directories:

	$(BUILD)/ghc/rts	# runtime system
	$(BUILD)/ghc/lib	# standard library
	$(BUILD)/hslibs	# hslibs

This seems to create the necessary *.t_o and *_t.a files, and doesn't
create any unnecessary ones.  Then -ticky can be given to the "ghc" in that
build tree, eg:

	$(BUILD)/ghc/compiler/ghc-inplace -ticky Foo.hs

The compiled program can then be profiled, eg:  "Foo +RTS -rstderr"

Is this correct?  Have I overlooked anything else that might need to be
compiled with way=t?  (Maybe other projects?  I'm only considering ghc and
hslibs.)

If it is correct, perhaps this information could be added to the user's
manual.  Section 5.7 on using ticky-ticky profiling says:

  To be able to use ticky-ticky profiling, you will need to have built
  appropriate libraries and things when you made the system. See
  "Customising what libraries to build," in the installation guide.

I couldn't find such a section in the installation or building guides;
the nearest thing was Section 8.8 "Way Management" in the building guide,
but that still wasn't as clear as what I've written above.
--
Nick Nethercote
njn25@cam.ac.uk