summaryrefslogtreecommitdiff
path: root/configure.ac
Commit message (Collapse)AuthorAgeFilesLines
* Windows/Clang: Build system adaptationBen Gamari2022-04-061-122/+21
| | | | | | | | | | * Bump win32-tarballs to 0.7 * Move Windows toolchain autoconf logic into separate file * Use clang and LLVM utilities as described in #21019 * Disable object merging as lld doesn't support -r * Drop --oformat=pe-bigobj-x86-64 arguments from ld flags as LLD detects that the output is large on its own. * Drop gcc wrapper since Clang finds its root fine on its own.
* hadrian: Produce ar archives with L modifier on WindowsBen Gamari2022-04-061-0/+1
| | | | | | | | Since object files may in fact be archive files, we must ensure that their contents are merged rather than constructing an archive-of-an-archive. See #21068.
* configure: bump LlvmMaxVersion to 14Cheng Shao2022-03-231-1/+1
| | | | | LLVM 13.0.0 is released in Oct 2021, and latest head validates against LLVM 13 just fine if LlvmMaxVersion is bumped.
* Reinstallable GHCZubin Duggal2022-02-211-0/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch allows ghc and its dependencies to be built using a normal invocation of cabal-install. Each componenent which relied on generated files or additional configuration now has a Setup.hs file. There are also various fixes to the cabal files to satisfy cabal-install. There is a new hadrian command which will build a stage2 compiler and then a stage3 compiler by using cabal. ``` ./hadrian/build build-cabal ``` There is also a new CI job which tests running this command. For the 9.4 release we will upload all the dependent executables to hackage and then end users will be free to build GHC and GHC executables via cabal. There are still some unresolved questions about how to ensure soundness when loading plugins into a reinstalled GHC (#20742) which will be tighted up in due course. Fixes #19896
* Don't try to build stage1 with -eventlog if stage0 doesn't provide itPHO2022-02-081-1/+10
| | | | Like -threaded, stage0 isn't guaranteed to have an event-logging RTS.
* rts: Only declare environ when necessaryBen Gamari2022-01-111-0/+3
| | | | | | | | | | Previously we would unconditionally provide a declaration for `environ`, even if `<unistd.h>` already provided one. This would result in `-Werror` builds failing on some platforms. Also `#include <unistd.h>` to ensure that the declaration is visible. Fixes #20861.
* hadrian: Fully implement source distributions (#19317)Zubin Duggal2022-01-111-0/+2
| | | | | | We use `git ls-files` to get the list of files to include in the source distribution. Also implements the `-testsuite` and `-extra-tarballs` distributions.
* iserv: Remove network dependent parts of libiservMatthew Pickering2021-12-121-1/+0
| | | | | | | | | | | | | | As noted in #20794 the parts of libiserv and iserv-proxy depend on network, therefore are never built nor tested during CI. Due to this iserv-proxy had bitrotted due to the bound on bytestring being out of date. Given we don't test this code it seems undesirable to distribute it. Therefore, it's removed and an external maintainer can be responsible for testing it (via head.hackage if desired). Fixes #20794
* rts/ProfHeap.c: Use setlocale() on platforms where uselocale() is not availablePHO2021-12-011-1/+1
| | | | Not all platforms have per-thread locales. NetBSD doesn't have uselocale() in particular. Using setlocale() is of course not a safe thing to do, but it would be better than no GHC at all.
* Make ambient MinGW support a proper settingsJohn Ericson2021-11-271-1/+0
| | | | | | | Get rid of `USE_INPLACE_MINGW_TOOLCHAIN` and use a settings file entry instead. The CPP setting was originally introduced in f065b6b012.
* Fix top-level configure script so --disable-foo worksJohn Ericson2021-11-271-12/+10
|
* Generate ghcversion.h with the top-level configureJohn Ericson2021-11-121-0/+19
| | | | | | | | | | | | | | This is, rather unintuitively, part of the goal of making the packages that make of the GHC distribution more freestanding. `ghcversion.h` is very simple, so we easily can move it out of the main build systems (make and Hadrian). By doing so, the RTS becomes less of a special case to those build systems as the header, already existing in the source tree, appears like any other. We could do this with the upcomming RTS configure, but it hardly matters because there is nothing platform-specific here, it is just versioning information like the other files the top-level configure can be responsible for.
* Factor out FP_FIND_LIBFFI and use in RTS configure tooJohn Ericson2021-11-081-62/+4
|
* Factor out GHC_ADJUSTORS_METHOD m4 macroJohn Ericson2021-11-081-48/+5
|
* Factor out unregisterised and tables next to code m4 macrosJohn Ericson2021-11-071-53/+2
| | | | These will be useful for upcoming RTS configure script.
* Remove target dependent CPP for Word64/Int64 (#11470)Sylvain Henry2021-11-061-1/+0
| | | | | | | | | | | | | | | | | | | | | | | | | Primops types were dependent on the target word-size at *compiler* compilation time. It's an issue for multi-target as GHC may not have the correct primops types for the target. This patch fixes some primops types: if they take or return fixed 64-bit values they now always use `Int64#/Word64#`, even on 64-bit architectures (where they used `Int#/Word#` before). Users of these primops may now need to convert from Int64#/Word64# to Int#/Word# (a no-op at runtime). This is a stripped down version of !3658 which goes the all way of changing the underlying primitive types of Word64/Int64. This is left for future work. T12545 allocations increase ~4% on some CI platforms and decrease ~3% on AArch64. Metric Increase: T12545 Metric Decrease: T12545
* Avoid GHC_STAGE and other include bitsJohn Ericson2021-11-051-1/+4
| | | | | | | | | We should strive to make our includes in terms of the RTS as much as possible. One place there that is not possible, the llvm version, we make a new tiny header Stage numbers are somewhat arbitrary, if we simple need a newer RTS, we should say so.
* Separate some AC_SUBST / AC_DEFINEJohn Ericson2021-11-021-0/+10
| | | | | | | | Eventually, the RTS configure alone will need the vast majority of AC_DEFINE, and the top-level configure will need the most AC_SUBST. By removing the "side effects" of the macros like this we make them more reusable so they can be shared between the two configures without doing too much.
* Modularize autoconf platform detectionJohn Ericson2021-10-311-3/+25
| | | | | | | This will allow better reuse of it, such as in the upcoming RTS configure script. Progress towards #17191
* Rename fp_gcc_supports__atomics to fp_cc_supports__atomicsHaochen Tong2021-10-121-1/+1
|
* Move libatomic check into m4/fp_gcc_supports_atomics.m4Haochen Tong2021-10-121-32/+3
|
* Check for libatomic dependency for atomic operationsHaochen Tong2021-10-121-0/+26
| | | | | | | Some platforms (e.g. RISC-V) require linking against libatomic for some (e.g. sub-word-sized) atomic operations. Fixes #19119.
* configure: Clarify meaning of CabalHaveLibffiBen Gamari2021-09-231-3/+1
| | | | | Previously the meaning of this flag was unclear and as a result I suspect that CabalHaveLibffi could be incorrectly False.
* configure: Fix copy/paste errorBen Gamari2021-09-231-1/+1
| | | | | | Previously both the --with-system-libffi path and the non--with-system-libffi path set CabalUseSystemLibFFI=True. This was wrong.
* configure: Add check for whether CC supports --targetBen Gamari2021-09-231-1/+5
|
* configure: Move nm search logic to new fileBen Gamari2021-09-231-33/+1
|
* Link with libm dynamically (#19877)Sylvain Henry2021-09-221-0/+2
| | | | The compiler should be independent of the target.
* 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
|