summaryrefslogtreecommitdiff
path: root/hadrian/doc
Commit message (Collapse)AuthorAgeFilesLines
* hadrian: Fix flavour compiler stage options off-by-one errorAlexis King2023-03-081-2/+6
| | | | | | | | | | | | | | | !9193 pointed out that ghcDebugAssertions was supposed to be a predicate on the stage of the built compiler, but in practice it was a predicate on the stage of the compiler used to build. Unfortunately, while it fixed that issue for ghcDebugAssertions, it documented every other similar option as behaving the same way when in fact they all used the old behavior. The new behavior of ghcDebugAssertions seems more intuitive, so this commit changes the interpretation of every other option to match. It also improves the enableProfiledGhc and debugGhc flavour transformers by making them more selective about which stages in which they build additional library/RTS ways.
* hadrian: add missing docs for recently added flavour transformersCheng Shao2023-01-231-0/+16
|
* packaging: Build perf builds with -split-sectionswip/various-hadrian-fixesMatthew Pickering2023-01-041-0/+13
| | | | | | | | | | | In 8f71d958 the make build system was made to use split-sections on linux systems but it appears this logic never made it to hadrian. There is the split_sections flavour transformer but this doesn't appear to be used for perf builds on linux. This is disbled on deb9 and windows due to #21670 Closes #21135
* hadrian: Add no_split_sections tranformerMatthew Pickering2023-01-041-0/+4
| | | | | | | | | | | This transformer reverts the effect of `split_sections`, which we intend to use for platforms which don't support split sections. In order to achieve this we have to modify the implemntation of the split_sections transformer to store whether we are enabling split_sections directly in the `Flavour` definition. This is because otherwise there's no convenient way to turn off split_sections due to having to pass additional linker scripts when merging objects.
* hadrian: Add test:all_deps to build just testsuite dependenciesMatthew Pickering2023-01-041-0/+13
| | | | Fixes #22534
* Hadrian: fix ghcDebugAssertions off-by-one errorsheaf2022-12-061-6/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Commit 6b2f7ffe changed the logic that decided whether to enable debug assertions. However, it had an off-by-one error, as the stage parameter to the function inconsistently referred to the stage of the compiler being used to build or the stage of the compiler we are building. This patch makes it consistent. Now the parameter always refers to the the compiler which is being built. In particular, this patch re-enables assertions in the stage 2 compiler when building with devel2 flavour, and disables assertions in the stage 2 compiler when building with validate flavour. Some extra performance tests are now run in the "validate" jobs because the stage2 compiler no longer contains assertions. ------------------------- Metric Decrease: CoOpt_Singletons MultiComponentModules MultiComponentModulesRecomp MultiLayerModulesTH_OneShot T11374 T12227 T12234 T13253-spj T13701 T14683 T14697 T15703 T17096 T17516 T18304 T18478 T18923 T5030 T9872b TcPlugin_RewritePerf Metric Increase: MultiComponentModules MultiComponentModulesRecomp MultiLayerModules MultiLayerModulesRecomp MultiLayerModulesTH_Make T13386 T13719 T3294 T9233 T9675 parsing001 -------------------------
* Add Javascript backendSylvain Henry2022-11-291-0/+5
| | | | | | | | | | | | | | | Add JS backend adapted from the GHCJS project by Luite Stegeman. Some features haven't been ported or implemented yet. Tests for these features have been disabled with an associated gitlab ticket. Bump array submodule Work funded by IOG. Co-authored-by: Jeffrey Young <jeffrey.young@iohk.io> Co-authored-by: Luite Stegeman <stegeman@gmail.com> Co-authored-by: Josh Meredith <joshmeredith2008@gmail.com>
* Hadrian: update documentation of settingssheaf2022-07-132-101/+115
| | | | | | | | | | The documentation for key-value settings was a bit out of date. This patch updates it to account for `cabal.configure.opts` and `hsc2hs.run.opts`. The user-settings document was also re-arranged, to make the key-value settings more prominent (as it doesn't involve changing the Hadrian source code, and thus doesn't require any recompilation of Hadrian).
* hadrian: Improve haddocks for ghcDebugAssertionsAndreas Klebinger2022-06-271-1/+1
|
* Use <br> instead of newline characterYiyun Liu2022-06-101-3/+2
|
* Revert "packaging: Build perf builds with -split-sections"Matthew Pickering2022-05-311-13/+0
| | | | | | | | | This reverts commit 699f593532a3cd5ca1c2fab6e6e4ce9d53be2c1f. Split sections causes segfaults in profiling way with old toolchains (deb9) and on windows (#21670) Fixes #21670
* Add release flavour and use it for the release jobsMatthew Pickering2022-05-191-0/+12
| | | | | | | | The release flavour is essentially the same as the perf flavour currently but also enables `-haddock`. I have hopefully updated all the relevant places where the `-perf` flavour was hardcoded. Fixes #21486
* driver: Introduce pgmcxxBen Gamari2022-05-171-0/+1
| | | | | | | | | | Here we introduce proper support for compilation of C++ objects. This includes: * logic in `configure` to detect the C++ toolchain and propagating this information into the `settings` file * logic in the driver to use the C++ toolchain when compiling C++ sources
* hadrian: Introduce linting flavour transformer (+lint)Ben Gamari2022-05-161-0/+5
| | | | | | | The linting flavour enables -dlint uniformly across anything build by the stage1 compiler. -dcmm-lint is not currently enabled because it fails on i386 (see #21563)
* packaging: Build perf builds with -split-sectionsMatthew Pickering2022-05-101-0/+13
| | | | | | | | | In 8f71d958 the make build system was made to use split-sections on linux systems but it appears this logic never made it to hadrian. There is the split_sections flavour transformer but this doesn't appear to be used for perf builds on linux. Closes #21135
* Hadrian: Update README about the flavour/testsuite contractMatthew Pickering2022-04-301-0/+5
| | | | | | | | | There have been a number of tickets about non-tested flavours not passing the testsuite.. this is expected and now noted in the documentation. You use other flavours to run the testsuite at your own risk. Fixes #21418
* hadrian: add debug_ghc and debug_stage1_ghc flavour transformersDouglas Wilson2022-04-281-0/+8
|
* Enable eventlog support in all ways by defaultBen Gamari2022-04-272-27/+10
| | | | | | | | | | | | | | | | | Here we deprecate the eventlogging RTS ways and instead enable eventlog support in the remaining ways. This simplifies packaging and reduces GHC compilation times (as we can eliminate two whole compilations of the RTS) while simplifying the end-user story. The trade-off is a small increase in binary sizes in the case that the user does not want eventlogging support, but we think that this is a fine trade-off. This also revealed a latent RTS bug: some files which included `Cmm.h` also assumed that it defined various macros which were in fact defined by `Config.h`, which `Cmm.h` did not include. Fixing this in turn revealed that `StgMiscClosures.cmm` failed to import various spinlock statistics counters, as evidenced by the failed unregisterised build. Closes #18948.
* Hadrian: make DDEBUG separate from debugged RTSsheaf2022-03-291-2/+4
| | | | | | | | | | | This patchs separates whether -DDEBUG is enabled (i.e. whether debug assertions are enabled) from whether we are using the debugged RTS (i.e. GhcDebugged = YES). This means that we properly skip tests which have been marked with `when(compiler_debugged(), skip)`. Fixes #21113, #21153 and #21234
* Hadrian: account for change in late-ccs flagsheaf2022-03-171-1/+1
| | | | | | The late cost centre flag was renamed from -fprof-late-ccs to -fprof-late in 7fe07143, but this change hadn't been propagated to Hadrian.
* hadrian: Add little flavour transformer to build stage2 with assertionsMatthew Pickering2022-03-071-1/+7
| | | | | This can be useful to build a `perf+assertions` build or even better `default+no_profiled_libs+omit_pragmas+assertions`.
* Drop --configure from Hadrian docsAndrey Mokhov2021-12-122-5/+2
|
* hadrian: Document fully_static flavour transformerBen Gamari2021-12-011-0/+4
|
* hadrian: Add `collect_stats` flavour transformerSebastian Graf2021-11-251-0/+5
| | | | | This is useful for later consumption with https://gitlab.haskell.org/bgamari/ghc-utils/-/blob/master/ghc_timings.py
* hadrian/doc: Add margin to staged-compilation figureBen Gamari2021-10-201-177/+203
|
* documentation: flavours.md static detailsBrian Jaress2021-10-121-2/+4
|
* hadrian: Introduce `static` flavourBen Gamari2021-10-121-0/+34
|
* hadrian: Update documentation for new verbosity optionsMatthew Pickering2021-09-281-35/+0
|
* hadrian: Remove deprecated tracing functionsMatthew Pickering2021-09-281-1/+1
|
* Add "ipe" flavour transformer to add support for building with IPE debug infoMatthew Pickering2021-09-171-0/+9
| | | | | | The "ipe" transformer compilers everything in stage2 with `-finfo-table-map` and `-fdistinct-constructor-tables` to produce a compiler which is usable with `-hi` profiling and ghc-debug.
* hadrian: Recommend use of +werror over explicit flavour modificationBen Gamari2021-09-131-4/+4
| | | | As noted in #20327, the previous guidance was out-of-date.
* Don't produce platformConstants fileSylvain Henry2021-04-101-11/+0
| | | | It isn't used for anything anymore
* hadrian: Introduce runtest.opts key-value settingBen Gamari2021-02-241-0/+3
|
* Warn about using quick with profilingLeif Metcalf2021-01-291-3/+4
|
* hadrian: Introduce no_profiled_libs flavour transformerBen Gamari2021-01-171-0/+4
| | | | Per request of @AndreasK.
* hadrian: Drop redundant flavour definitionsBen Gamari2020-11-221-27/+2
| | | | | Drop the profiled, LLVM, and ThreadSanitizer flavour definitions as these can now be realized with flavour transformers.
* hadrian: Add profiled_ghc and no_dynamic_ghc modifiersBen Gamari2020-11-221-0/+13
|
* hadrian: Add a viaLlvmBackend modifierBen Gamari2020-11-221-0/+4
| | | | | Note that this also slightly changes the semantics of these flavours as we only use LLVM for >= stage1 builds.
* hadrian: Introduce notion of flavour transformersBen Gamari2020-11-221-0/+44
| | | | This extends Hadrian's notion of "flavour", as described in #18942.
* Hadrian: add quick-debug flavourSylvain Henry2020-10-091-3/+25
|
* hadrian/doc: Clarify documentation of key-value configurationBen Gamari2020-09-301-1/+2
|
* Move Hadrian's wiki pages in tree (fix #16165)Sylvain Henry2020-09-041-0/+104
| | | | | Only the debugging page contains interesting stuff. Some of this stuff looks old (e.g. recommending "cabal install")...
* hadrian: add flag to skip rebuilding dependency information #17636Adam Sandberg Ericsson2020-07-081-0/+14
|
* Update HadrianSylvain Henry2020-06-172-17/+8
| | | | | | | | | | | | | | | * support ghc-bignum backend selection in flavours and command-line * support ghc-bignum "--check" flag (compare results of selected backend against results of the native one) in flavours and command-line (e.g. pass --bignum=check-gmp" to check the "gmp" backend) * remove the hack to workaround #15286 * build GMP only when the gmp backend is used * remove hacks to workaround `text` package flags about integer-*. We fix `text` to use ghc-bignum unconditionally in another patch
* Rename ghci.sh and build.sh to ghci and build respectivelyXavier Denis2020-02-293-11/+11
| | | | | | Convert hadrian buildscripts to unsuffixed, dashed form final cleanups
* hadrian: Add --broken-test flagBen Gamari2020-02-261-0/+10
| | | | | This exposes the flag of the same name supported by the testsuite driver.
* hadrian: Add execution and target architecture to stage-compilation figureBen Gamari2020-02-141-47/+198
|
* hadrian: Add --test-metrics argumentBen Gamari2020-02-091-0/+3
| | | | | Allowing the test metric output to be captured to a file, a la the METRIC_FILE environment variable of the make build system.
* Fix GhcThreaded settingBen Gamari2020-02-081-0/+2
| | | | | | | | | | | | | | This adopts a patch from NetBSD's packaging fixing the `GhcThreaded` option of the make build system. In addition we introduce a `ghcThreaded` option in hadrian's `Flavour` type. Also fix Hadrian's treatment of the `Use Threaded` entry in `settings`. Previously it would incorrectly claim `Use Threaded = True` if we were building the `threaded` runtime way. However, this is inconsistent with the `make` build system, which defines it to be whether the `ghc` executable is linked against the threaded runtime. Fixes #17692.
* hadrian: Allow override of Cabal configuration in hadrian.settingsBen Gamari2020-02-081-15/+17
| | | | | Fixes #17612 by adding a `cabal.configure.opts` key for `hadrian.settings`.