Skip to content
Snippets Groups Projects
  • Matthew Pickering's avatar
    497a220e
    Add support for profiled dynamic way · 497a220e
    Matthew Pickering authored
    New options for cabal.project and ./Setup interface:
    
    * `profiling-shared`: Enable building profiling dynamic way
    * Passing `--enable-profiling` and `--enable-executable-dynamic` builds
      profiled dynamic executables.
    
    Support for using `profiling-shared` is guarded behind a constraint
    which ensures you are using `Cabal >= 3.13`.
    
    In the cabal file:
    
    * `ghc-prof-shared-options`, for passing options when building in
      profiling dynamic way
    
    Other miscellenious fixes and improvements
    
    * Some refactoring around ways so that which
      ways we should build for a library, foreign library and executable is
      computed by the `buildWays` function (rather than ad-hoc in three
      different places).
    
    * Improved logic for detecting whether a compiler supports compiling
      a specific way. See functions `profilingVanillaSupported`,
      `dynamicSupported`, `profilingDynamicSupported` etc
      These functions report accurate infomation after ghc-9.10.1.
    
    * Fixed logic for determining whether to build shared libraries. (see
      #10050)
      Now, if you explicitly enable `--*-shared`, then that will always take
      effect. If it's not specified then `--enable-executable-dynamic` will
      turn on shared libraries IF `--enable-profiling` is not enabled.
    
    * Remove assumption that dynamically linked compilers can build dynamic
      libraries (they might be cross compilers.
    
    * Query the build compiler to determine which library way is necessary
      to be built for TH support to work.
      (rather than assume all compilers are dynamically linked)
    
    * An extensive test which checks how options for `./Setup` and
      `cabal-install` are translated into build ways.
    
    Fixes #4816, #10049, #10050
    497a220e
    History
    Add support for profiled dynamic way
    Matthew Pickering authored
    New options for cabal.project and ./Setup interface:
    
    * `profiling-shared`: Enable building profiling dynamic way
    * Passing `--enable-profiling` and `--enable-executable-dynamic` builds
      profiled dynamic executables.
    
    Support for using `profiling-shared` is guarded behind a constraint
    which ensures you are using `Cabal >= 3.13`.
    
    In the cabal file:
    
    * `ghc-prof-shared-options`, for passing options when building in
      profiling dynamic way
    
    Other miscellenious fixes and improvements
    
    * Some refactoring around ways so that which
      ways we should build for a library, foreign library and executable is
      computed by the `buildWays` function (rather than ad-hoc in three
      different places).
    
    * Improved logic for detecting whether a compiler supports compiling
      a specific way. See functions `profilingVanillaSupported`,
      `dynamicSupported`, `profilingDynamicSupported` etc
      These functions report accurate infomation after ghc-9.10.1.
    
    * Fixed logic for determining whether to build shared libraries. (see
      #10050)
      Now, if you explicitly enable `--*-shared`, then that will always take
      effect. If it's not specified then `--enable-executable-dynamic` will
      turn on shared libraries IF `--enable-profiling` is not enabled.
    
    * Remove assumption that dynamically linked compilers can build dynamic
      libraries (they might be cross compilers.
    
    * Query the build compiler to determine which library way is necessary
      to be built for TH support to work.
      (rather than assume all compilers are dynamically linked)
    
    * An extensive test which checks how options for `./Setup` and
      `cabal-install` are translated into build ways.
    
    Fixes #4816, #10049, #10050
Code owners
Assign users and groups as approvers for specific file changes. Learn more.