| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
| |
|
|
|
|
| |
(cherry picked from commit feb3b955402d53c3875dd7a9a39f322827e5bd69)
|
| |
|
|
|
|
| |
Lest we fail to rebuild when they change. Fixes #17611.
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
| |
I'm not sure how this was omitted from the list of supported
architectures.
|
| |
|
| |
|
|
|
|
| |
Should finally fix #17255.
|
|
|
|
| |
Haskeline now depends upon exceptions. See #16752.
|
|
|
|
|
| |
This addresses #17456 and also fixes the --metrics-file argument that Hadrian
passes to the testsuite driver.
|
|
|
|
|
| |
This took a bit of trial-and-error to get working so it seems worth
having in the tree.
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
| |
Fixing #17255.
|
| |
|
|
|
|
|
| |
Use True/False instead of 0/1. This shouldn't be a functional change but
we should be consistent.
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
| |
Some of these flags wanted to be passed to .cmm builds as well as C
builds.
|
|
|
|
|
|
|
|
| |
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.
|
| |
|
|
|
|
| |
It should point to the _build directory, not the source
|
| |
|
|
|
|
|
|
|
|
|
| |
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'.
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
| |
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.
|
|
|
|
| |
Also refactor things a bit to eliminate repetition.
|
|
|
|
| |
Fixes #17351.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- 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.
|
|
|
|
| |
Fixes #17286.
|
| |
|
|
|
|
| |
To avoid polluting the macro namespace
|
|
|
|
|
|
|
| |
This ensures that all GHC flags are documented during the documentation
build.
Fixes #17315.
|
|
|
|
| |
This ensure that it blurts an error on missing references.
|
| |
|
|
|
|
|
|
| |
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.
|
| |
|
|
|
|
| |
They are only used in a file we construct directly, so just skip CPP.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
| |
This modifies both the Hadrian and make build systems to avoid included
the rts.cabal generated by autoconf in the source distribution.
Fixes #17265.
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
```
|
| |
|
| |
|
| |
|