summaryrefslogtreecommitdiff
path: root/hadrian/src
Commit message (Collapse)AuthorAgeFilesLines
* Rework handling of win32 toolchain tarballsBen Gamari2020-01-241-1/+2
|
* Fix more typos, via an improved Levenshtein-style correctorBrian Wignall2020-01-122-2/+2
|
* Bump haskeline submodule to 0.8.0.1Ben Gamari2020-01-081-0/+7
| | | | (cherry picked from commit feb3b955402d53c3875dd7a9a39f322827e5bd69)
* Fix typos, via a Levenshtein-style correctorBrian Wignall2020-01-048-8/+8
|
* hadrian: Track hash of Cabal Setup builder argumentsBen Gamari2019-12-301-1/+6
| | | | Lest we fail to rebuild when they change. Fixes #17611.
* Use *Mode suffix instead of *MJosh Meredith2019-12-173-17/+17
|
* Rename SphinxMode constructorsJosh Meredith2019-12-173-18/+18
|
* Fix ambiguous occurence error when building HadrianJosh Meredith2019-12-171-1/+1
|
* testsuite: Make ghc_built_by_llvm check more preciseBen Gamari2019-12-171-4/+0
| | | | | | | | | | Previously it would hackily look at the flavour name to determine whether LLVM was used to build stage2 ghc. However, this didn't work at all with Hadrian and would miss cases like ARM where we use the LLVM backend by default. See #16087 for the motivation for why ghc_built_by_llvm is needed at all. This should catch one of the ARMv7 failures described in #17555.
* hadrian: AArch64 supports the GHCi interpreter and SMPBen Gamari2019-12-102-2/+2
| | | | | I'm not sure how this was omitted from the list of supported architectures.
* Fix more typosBrian Wignall2019-12-021-1/+1
|
* Fix typos, using Wikipedia list of common typosBrian Wignall2019-11-281-2/+2
|
* Properly account for libdw paths in make build systemBen Gamari2019-11-191-2/+5
| | | | Should finally fix #17255.
* Bump Haskeline and add exceptions as boot libraryBen Gamari2019-11-132-5/+7
| | | | Haskeline now depends upon exceptions. See #16752.
* hadrian: export METRICS_FILE to make it accessible to perf notes scriptAlp Mestanogullari2019-11-111-2/+1
| | | | | This addresses #17456 and also fixes the --metrics-file argument that Hadrian passes to the testsuite driver.
* hadrian: Add enableTickyGhc helperBen Gamari2019-11-081-1/+12
| | | | | This took a bit of trial-and-error to get working so it seems worth having in the tree.
* hadrian: fix support for the recording of perf test resultsAlp Mestanogullari2019-11-071-0/+8
| | | | | | | | | | Before this patch, Hadrian didn't care about the TEST_ENV and METRICS_FILE environment variables, that the performance testing infrastructure uses to record perf tests results from CI jobs. It now looks them up right before running the testsuite driver, and passes suitable --test-env/--metrics-file arguments when these environment variables are set.
* configure: Add --with-libdw-{includes,libraries} flagsBen Gamari2019-11-063-1/+11
| | | | Fixing #17255.
* Hadrian: enable interpreter for s390xStefan Schulze Frielinghaus2019-11-051-1/+1
|
* hadrian: Make runtest invocation consistency with MakeBen Gamari2019-11-011-8/+9
| | | | | Use True/False instead of 0/1. This shouldn't be a functional change but we should be consistent.
* hadrian: Drop -Werror=unused-but-set-variable from GHC flagsBen Gamari2019-10-291-3/+1
| | | | | | | | | | | Previously `hadrian` would pass `-optc-Werror=unused-but-set-variable` to all GHC invocations. This was a difference from the make build system and cause the unregisterised build to fail as the C that GHC produces contains many unused functions. Drop it from the GHC flags. Note, however, that the flag is still present in `Settings.Builders.Common.cWarnings` and therefore will still be applied during compilation of C sources.
* hadrian: Shuffle around RTS build flagsBen Gamari2019-10-291-10/+19
| | | | | Some of these flags wanted to be passed to .cmm builds as well as C builds.
* hadrian: Define NOSMP when building rts unregisterisedBen Gamari2019-10-295-15/+53
| | | | | | | | It seems that NOSMP was previously only defined when compiling the compiler, not the RTS. Fix this. In addition do some spring-cleaning and make the logic match that of the Make build system.
* hadrian: Define USE_LIBFFI_FOR_ADJUSTORS when necessaryBen Gamari2019-10-291-0/+2
|
* Fix path to ghc-flags in users guide Hadrian rulesLuke Lau2019-10-271-2/+2
| | | | It should point to the _build directory, not the source
* Remove unused importLuke Lau2019-10-271-1/+0
|
* Make Hadrian use -dynamic-too in the basic caseJames Foster2019-10-252-1/+19
| | | | | | | | | This commit makes Hadrian use the `-dynamic-too` flag when the current Flavour's libraryWays contains both vanilla and dynamic, cutting down the amount of repeated work caused by separate compilation of dynamic and static files. It does this for the basic case where '.o' and '.dyn_o' files are built with one command, but does not generalise to cases like '.prof_o' and '.prof_dyn_o'.
* Hadrian: Invoke ghc0 via bash when running tests to fix #17362.Andreas Klebinger2019-10-231-1/+3
| | | | | | | | cmd uses RawCommand which uses Windows semantics to find the executable which sometimes seems to fail for unclear reasons. If we invoke ghc via bash then bash will find the ghc executable and the issue goes away.
* Implement s390x LLVM backend.Stefan Schulze Frielinghaus2019-10-221-1/+1
| | | | | | This patch adds support for the s390x architecture for the LLVM code generator. The patch includes a register mapping of STG registers onto s390x machine registers which enables a registerised build.
* hadrian: Introduce enableDebugInfo flavour transformerBen Gamari2019-10-161-9/+21
| | | | Also refactor things a bit to eliminate repetition.
* hadrian: Add support for bindist compressors other than XzBen Gamari2019-10-151-11/+31
| | | | Fixes #17351.
* Simplify Configure in a few waysJohn Ericson2019-10-126-25/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - No need to distinguish between gcc-llvm and clang. First of all, gcc-llvm is quite old and surely unmaintained by now. Second of all, none of the code actually care about that distinction! Now, it does make sense to consider C multiple frontends for LLVMs in the form of clang vs clang-cl (same clang, yes, but tweaked interface). But this is better handled in terms of "gccish vs mvscish" and "is LLVM", yielding 4 combinations. Therefore, I don't think it is useful saving the existing code for that. - Get the remaining CC_LLVM_BACKEND, and also TABLES_NEXT_TO_CODE in mk/config.h the normal way, rather than hacking it post-hoc. No point keeping these special cases around for now reason. - Get rid of hand-rolled `die` function and just use `AC_MSG_ERROR`. - Abstract check + flag override for unregisterised and tables next to code. Oh, and as part of the above I also renamed/combined some variables where it felt appropriate. - GccIsClang -> CcLlvmBackend. This is for `AC_SUBST`, like the other Camal case ones. It was never about gcc-llvm, or Apple's renamed clang, to be clear. - llvm_CC_FLAVOR -> CC_LLVM_BACKEND. This is for `AC_DEFINE`, like the other all-caps snake case ones. llvm_CC_FLAVOR was just silly indirection *and* an odd name to boot.
* Hadrian: Take care of assembler source filesStefan Schulze Frielinghaus2019-10-113-5/+12
| | | | Fixes #17286.
* Define GHC_STAGE in headers instead of command-lineBen Gamari2019-10-092-3/+4
|
* Rename STAGE macro to GHC_STAGEBen Gamari2019-10-092-2/+2
| | | | To avoid polluting the macro namespace
* gitlab-ci: Check coverage of GHC flags in users guideBen Gamari2019-10-081-0/+17
| | | | | | | This ensures that all GHC flags are documented during the documentation build. Fixes #17315.
* users-guide: Run sphinx in nit-picky modeBen Gamari2019-10-082-0/+16
| | | | This ensure that it blurts an error on missing references.
* hadrian: Add `validate` and `slow validate` flavoursBen Gamari2019-10-082-1/+48
|
* Always enable the external interpreterJohn Ericson2019-10-041-4/+0
| | | | | | You can always just not use or even build `iserv`. I don't think the maintenance cost of the CPP is worth...I can't even tell what the benefit is.
* Factor out a smaller part of Platform for host fallbackJohn Ericson2019-10-042-3/+36
|
* Remove {Build,Host}Platform_NAME from headerJohn Ericson2019-10-041-7/+6
| | | | They are only used in a file we construct directly, so just skip CPP.
* Per stage headers, ghc_boot_platform.h -> stage 0 ghcplatform.hJohn Ericson2019-10-0410-142/+102
| | | | | | | | | | | | | | | | | | The generated headers are now generated per stage, which means we can skip hacks like `ghc_boot_platform.h` and just have that be the stage 0 header as proper. In general, stages are to be embraced: freely generate everything in each stage but then just build what you depend on, and everything is symmetrical and efficient. Trying to avoid stages because bootstrapping is a mind bender just creates tons of bespoke mini-mind-benders that add up to something far crazier. Hadrian was pretty close to this "stage-major" approach already, and so was fairly easy to fix. Make needed more work, however: it did know about stages so at least there was a scaffold, but few packages except for the compiler cared, and the compiler used its own counting system. That said, make and Hadrian now work more similarly, which is good for the transition to Hadrian. The merits of embracing stage aside, the change may be worthy for easing that transition alone.
* Exclude rts.cabal from source distributionsBen Gamari2019-10-031-0/+1
| | | | | | | This modifies both the Hadrian and make build systems to avoid included the rts.cabal generated by autoconf in the source distribution. Fixes #17265.
* Hadrian: do not cache GHC configure ruleDavid Eichmann2019-10-011-0/+4
|
* Hadrian: Libffi rule now `produces` dynamic library files.David Eichmann2019-10-011-0/+4
|
* Hadrian: Add -haddock option for GHCi's :doc commandTakenobu Tani2019-09-241-1/+1
| | | | | | | | | | | | | | This commit adds -haddock option to Hadrian-based build system. To enable :doc command on GHCi, core libraries must be compiled with -haddock option. Especially, the `-haddock` option is essential for a release build. Assuming current GitLab CI condition (.gitlab-ci.yml), I add -haddock option to the default flavour only. This has already been done for Make-based build system. Please see #16415.
* [hadrian] Rebuild programs on dynamicGhcPrograms/ghcProfiled changeArtem Pyanykh2019-09-239-20/+66
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Currently, if you change these ^ flavour parameters, rebuilding is not triggered, since `programContext` doesn't set up a dependency on those values. Exposing these values via an oracle does set the dependency and properly triggers a rebuild of binaries. Several attempts to factor out these actions ended up in cyclic dependency here or there. I'm not absolutely happy with this variant either, but at least it works. ==== Issue repro: In UserSettings.hs: ``` dbgDynamic = defaultFlavour { name = "dbg-dynamic" , dynamicGhcPrograms = pure True, ... } dbgStatic = defaultFlavour { name = "dbg-static" , dynamicGhcPrograms = pure False ... } ``` Then in console: ``` $ hadrian/build.sh -j --flavour=dbg-dynamic ... does the build $ hadrian/build.sh -j --flavour=dbg-static ... does nothing, considers binaries up to date ```
* sort-paragraphs in runBuilderWithBjörn Gohla2019-09-231-11/+13
|
* alphabetical orderingBjörn Gohla2019-09-231-4/+4
|
* explicit dependence on makeinfoBjörn Gohla2019-09-232-5/+12
|