Skip to content
  • Jose A. Lopes's avatar
    Optimize Haskell compilation · d16e3ce4
    Jose A. Lopes authored
    The idea is to compile (on demand, that is, when necessary) each
    source file to a normal object file, a coverage object file, a
    profiling object file, and a test object file.  Also, a given Haskell
    binary is linked with the proper object files.  This is achieved with
    the following Makefile variables:
    
    Compilation modes (profiles):
    1. HPROFILE enables/disables profiling
    2. HCOVERAGE enables/disables coverage
    3. HTEST enables/disables 'TEST' preprocessor definition
    
    A few words on testing: testing means the problem described in issue
    535: https://code.google.com/p/ganeti/issues/detail?id=535
    
    .  With
    HTEST enable, ghc will be instructed to define the preprocessor
    definition TEST, for modules that use '#ifdef TEST'.
    
    Haskell binary targets fetch the proper dependencies.  They are also
    '.PHONY' targets so that 'make' does not check for the file timestamp
    and instead it will always call 'ghc --make ...'.  This is not a
    problem because 'ghc' with the '--make' flag only compiles the
    necessary object files.
    
    Signed-off-by: default avatarJose A. Lopes <jabolopes@google.com>
    Reviewed-by: default avatarMichele Tartara <mtartara@google.com>
    d16e3ce4