summaryrefslogtreecommitdiff
path: root/configure.ac
Commit message (Collapse)AuthorAgeFilesLines
* Move `/includes` to `/rts/include`, sort per package betterJohn Ericson2021-08-091-1/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | | In order to make the packages in this repo "reinstallable", we need to associate source code with a specific packages. Having a top level `/includes` dir that mixes concerns (which packages' includes?) gets in the way of this. To start, I have moved everything to `rts/`, which is mostly correct. There are a few things however that really don't belong in the rts (like the generated constants haskell type, `CodeGen.Platform.h`). Those needed to be manually adjusted. Things of note: - No symlinking for sake of windows, so we hard-link at configure time. - `CodeGen.Platform.h` no longer as `.hs` extension (in addition to being moved to `compiler/`) so as not to confuse anyone, since it is next to Haskell files. - Blanket `-Iincludes` is gone in both build systems, include paths now more strictly respect per-package dependencies. - `deriveConstants` has been taught to not require a `--target-os` flag when generating the platform-agnostic Haskell type. Make takes advantage of this, but Hadrian has yet to.
* Add configure flag to enable ASSERTs in all waysDaniel Gröber2021-07-291-0/+12
| | | | | | | | Running the test suite with asserts enabled is somewhat tricky at the moment as running it with a GHC compiled the DEBUG way has some hundred failures from the start. These seem to be unrelated to assertions though. So this provides a toggle to make it easier to debug failing assertions using the test suite.
* packaging: Give ghc-pkg the same version as ProjectVersionMatthew Pickering2021-07-271-0/+1
|
* rts: Don't declare libCffi as bundled when using system libffiBen Gamari2021-07-271-1/+3
| | | | | Previously the rts's cabal file would claim that it bundled libffi, even if we are using the system's libffi. Fixes #19869.
* rts: Break up adjustor logicBen Gamari2021-07-271-0/+54
|
* Set min LLVM version to 9 and make version checking use a non-inclusive upperZubin Duggal2021-06-201-2/+2
| | | | | | | bound. We use a non-inclusive upper bound so that setting the upper bound to 13 for example means that all 12.x versions are accepted.
* hadrian: Don't depend upon bash from PATHBen Gamari2021-05-061-0/+2
| | | | | | | | Previously Hadrian depended implicitly upon whatever `bash` it found in `PATH`, offerring no way for the user to override. Fix this by detecting `sh` in `configure` and passing the result to Hadrian. Fixes #19797.
* configure: Move libdw search logic to macroBen Gamari2021-05-051-53/+1
|
* configure: Move libnuma check to macroBen Gamari2021-05-051-57/+1
|
* configure: Move pthreads checks to macroBen Gamari2021-05-051-95/+1
|
* Break up aclocal.m4Ben Gamari2021-05-051-0/+1
|
* Add background note in elf_tlsgd.c.Viktor Dukhovni2021-04-221-1/+3
| | | | | | | | | | | | | | | | | | | | | | | | Also some code cleanup, and a fix for an (extant unrelated) missing <pthread_np.h> include that should hopefully resolve a failure in the FreeBSD CI build, since it is best to make sure that this MR actually builds on FreeBSD systems other than mine. Some unexpected metric changes on FreeBSD (perhaps because CI had been failing for a while???): Metric Decrease: T3064 T5321Fun T5642 T9020 T12227 T13253-spj T15164 T18282 WWRec Metric Increase: haddock.compiler
* Enable tables next to code for riscv64Andreas Schwab2021-04-191-1/+1
| | | | | This requires adding another rewrite to the mangler, to avoid generating PLT entries.
* configure: Bump version to 9.3wip/bump-versionBen Gamari2021-04-131-1/+1
| | | | Bumps the `haddock` submodule.
* rts: Fix usage of pthread_setname_npBen Gamari2021-04-051-9/+59
| | | | | | | Previously we used this non-portable function unconditionally, breaking FreeBSD. Fixes #19637.
* Apply 1 suggestion(s) to 1 file(s)Joachim Breitner2021-04-051-1/+1
|
* ./configure: Indicate that GHC=… should be a full pathJoachim Breitner2021-04-051-2/+2
| | | | and not just the name on the binary on the `$PATH`.
* configure: Update comment describing versioning policyBen Gamari2021-04-011-2/+4
| | | | | As noted in my comment on #19058, this comment was previously a bit misleading in the case of stable branches.
* llvmGen: Accept range of LLVM versionsBen Gamari2021-03-171-6/+10
| | | | | | | Previously we would support only one LLVM major version. Here we generalize this to accept a range, taking this range to be LLVM 10 to 11, as 11 is necessary for Apple M1 support. We also accept 12, as that is what apple ships with BigSur on the M1.
* Require GHC 8.10 as the minimum compiler for bootstrappingRyan Scott2021-03-091-2/+2
| | | | | | | Now that GHC 9.0.1 is released, it is time to drop support for bootstrapping with GHC 8.8, as we only support building with the previous two major GHC releases. As an added bonus, this allows us to remove several bits of CPP that are either always true or no longer reachable.
* Implement riscv64 LLVM backendAndreas Schwab2021-03-051-3/+3
| | | | This enables a registerised build for the riscv64 architecture.
* configure: avoid empty lines in AC_CONFIG_FILESSylvain Henry2021-02-281-4/+2
| | | | | | | Should fix failures on Windows: configure.ac:1511: error: ` ' is already registered with AC_CONFIG_FILES.
* Replace more autotools obsolete macros (#19189)Sylvain Henry2021-02-161-3/+0
|
* hadrian: Introduce ghci-wrapper packageBen Gamari2021-01-301-1/+14
| | | | | This wraps the existing GHCi wrapper script (driver/ghci/ghci.c) in a cabal file and adds the package to Hadrian.
* configure: Break up AC_CONFIG_FILES listBen Gamari2021-01-301-1/+32
|
* configure: fix the use of some obsolete macros (#19189)Sylvain Henry2021-01-171-20/+20
|
* rts/linker: Don't assume existence of dlinfoBen Gamari2021-01-171-0/+2
| | | | | | | | | The native-code codepath uses dlinfo to identify memory regions owned by a loaded dynamic object, facilitating safe unload. Unfortunately, this interface is not always available. Add an autoconf check for it and introduce a safe fallback behavior. Fixes #19159.
* Fix project version for ProjectVersionMunged (fix #19058)Sylvain Henry2020-12-171-1/+4
|
* configure: Bump minimum-supported gcc version to 4.7Ben Gamari2020-10-241-1/+1
| | | | | Since the __atomic_* builtins are not supported until gcc 4.7. Given that this version was released in 2012 I think this is acceptable.
* mingw: Extract zst toolchain archivesBen Gamari2020-10-161-1/+2
| | | | This should have been done when the toolchain was bumped.
* Bump LLVM version to 10.0Ben Gamari2020-10-141-1/+1
| | | | Fixes #18267.
* Bump version to 9.0Ben Gamari2020-09-171-1/+1
| | | | | | Bumps haskeline and haddock submodules. (cherry picked from commit f218cfc92f7b1a1e01190851972bb9a0e0f3c682)
* [macOS] improved runpath handlingMoritz Angermann2020-09-071-0/+14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In b592bd98ff25730bbe3c13d6f62a427df8c78e28 we started using -dead_strip_dylib on macOS when lining dynamic libraries and binaries. The underlying reason being the Load Command Size Limit in macOS Sierra (10.14) and later. GHC will produce @rpath/libHS... dependency entries together with a corresponding RPATH entry pointing to the location of the libHS... library. Thus for every library we produce two Load Commands. One to specify the dependent library, and one with the path where to find it. This makes relocating libraries and binaries easier, as we just need to update the RPATH entry with the install_name_tool. The dynamic linker will then subsitute each @rpath with the RPATH entries it finds in the libraries load commands or the environement, when looking up @rpath relative libraries. -dead_strip_dylibs intructs the linker to drop unused libraries. This in turn help us reduce the number of referenced libraries, and subsequently the size of the load commands. This however does not remove the RPATH entries. Subsequently we can end up (in extreme cases) with only a single @rpath/libHS... entry, but 100s or more RPATH entries in the Load Commands. This patch rectifies this (slighly unorthodox) by passing *no* -rpath arguments to the linker at link time, but -headerpad 8000. The headerpad argument is in hexadecimal and the maxium 32k of the load command size. This tells the linker to pad the load command section enough for us to inject the RPATHs later. We then proceed to link the library or binary with -dead_strip_dylibs, and *after* the linking inspect the library to find the left over (non-dead-stripped) dependencies (using otool). We find the corresponding RPATHs for each @rpath relative dependency, and inject them into the library or binary using the install_name_tool. Thus achieving a deadstripped dylib (and rpaths) build product. We can not do this in GHC, without starting to reimplement a dynamic linker as we do not know which symbols and subsequently libraries are necessary. Commissioned-by: Mercury Technologies, Inc. (mercury.com)
* configure: Avoid hard-coded ld path on WindowsGHC GitLab CI2020-09-041-0/+2
| | | | | | | The fix to #17962 ended up regressing on Windows as it failed to replicate the logic responsible for overriding the toolchain paths on Windows. This resulted in a hard-coded path to a directory that likely doesn't exist on the user's system (#18550).
* document how build system find toolchains on WindowsTamar Christina2020-08-281-0/+2
|
* Fix use distro toolchianTamar Christina2020-08-281-0/+1
|
* Refactor handling of object mergingBen Gamari2020-08-051-2/+1
| | | | | | | | | Previously to merge a set of object files we would invoke the linker as usual, adding -r to the command-line. However, this can result in non-sensical command-lines which causes lld to balk (#17962). To avoid this we introduce a new tool setting into GHC, -pgmlm, which is the linker which we use to merge object files.
* Require SMP support in order to build a threaded stage1Stefan Schulze Frielinghaus2020-07-251-1/+5
| | | | Fixes 18266
* winio: Add new io-manager cmdline optionsTamar Christina2020-07-151-0/+12
|
* hadrian: make hadrian/ghci use the bootstrap compiler from configure #18190Adam Sandberg Ericsson2020-07-071-0/+1
|
* hadrian/make: Detect makeindexBen Gamari2020-06-251-1/+2
| | | | | | Previously we would simply assume that makeindex was available. Now we correctly detect it in `configure` and respect this conclusion in hadrian and make.
* Enable large address space optimization on windows.Andreas Klebinger2020-06-251-5/+9
| | | | | | | | | | | Starting with Win 8.1/Server 2012 windows no longer preallocates page tables for reserverd memory eagerly, which prevented us from using this approach in the past. We also try to allocate the heap high in the memory space. Hopefully this makes it easier to allocate things in the low 4GB of memory that need to be there. Like jump islands for the linker.
* winio: Add Atomic Exchange PrimOp and implement Atomic Ptr exchanges.Tamar Christina2020-06-141-0/+2
| | | | | | | The initial version was rewritten by Tamar Christina. It was rewritten in large parts by Andreas Klebinger. Co-authored-by: Andreas Klebinger <klebinger.andreas@gmx.at>
* rts: Teach getNumProcessors to return available processorsBen Gamari2020-05-301-1/+1
| | | | | | | | | | | | Previously we would report the number of physical processors, which can be quite wrong in a containerized setting. Now we rather return how many processors are in our affinity mask when possible. I also refactored the code to prefer platform-specific since this will report logical CPUs instead of physical (using `machdep.cpu.thread_count` on Darwin and `cpuset_getaffinity` on FreeBSD). Fixes #14781.
* Build a threaded stage 1 if the bootstrapping GHC supports it.Travis Whitaker2020-05-291-0/+15
|
* Kill wORDS_BIGENDIAN and replace it with platformByteOrder (#17957)Sylvain Henry2020-04-011-0/+4
| | | | | | Metric Decrease: T13035 T1969
* Require GHC 8.8 as the minimum compiler for bootstrappingRyan Scott2020-03-311-2/+2
| | | | | | | | This allows us to remove several bits of CPP that are either always true or no longer reachable. As an added bonus, we no longer need to worry about importing `Control.Monad.Fail.fail` qualified to avoid clashing with `Control.Monad.fail`, since the latter is now the same as the former.
* Don't use non-portable operator "==" in configure.acPHO2020-03-171-1/+1
| | | | | The test operator "==" is a Bash extension and produces a wrong result if /bin/sh is not Bash.
* Use AC_ARG_VAR for LD_STAGE0 and AR_STAGE0.Judah Jacobson2020-03-141-1/+4
|
* Allow overriding LD_STAGE0 and AR_STAGE0 in the configure script.Judah Jacobson2020-03-141-3/+7
| | | | | | | | | Previously it was possible to override the stage0 C compiler via `CC_STAGE0`, but you couldn't override `ld` or `ar` in stage0. This change allows overriding them by setting `LD_STAGE0` or `AR_STAGE0`, respectively. Our team uses this feature internally to take more control of our GHC build and make it run more hermetically.