[Git][ghc/ghc][wip/toolchain-selection] 12 commits: Configure CPP into settings

Rodrigo Mesquita (@alt-romes) gitlab at gitlab.haskell.org
Thu Jun 15 10:32:22 UTC 2023



Rodrigo Mesquita pushed to branch wip/toolchain-selection at Glasgow Haskell Compiler / GHC


Commits:
a5da5bd5 by Rodrigo Mesquita at 2023-06-15T11:30:54+01:00
Configure CPP into settings

There is a distinction to be made between the Haskell Preprocessor and
the C preprocessor. The former is used to preprocess Haskell files,
while the latter is used in C preprocessing such as Cmm files.

In practice, they are both the same program (usually the C compiler) but
invoked with different flags.

Previously we would, at configure time, configure the haskell
preprocessor and save the configuration in the settings file, but,
instead of doing the same for CPP, we had hardcoded in GHC that the CPP
program was either `cc -E` or `cpp`.

This commit fixes that asymmetry by also configuring CPP at configure
time, and tries to make more explicit the difference between HsCpp and
Cpp (see Note [Preprocessing invocations]).

Note that we don't use the standard CPP and CPPFLAGS to configure Cpp,
but instead use the non-standard --with-cpp and --with-cpp-flags.
The reason is that autoconf sets CPP to "$CC -E", whereas we expect the
CPP command to be configured as a standalone executable rather than a
command. These are symmetrical with --with-hs-cpp and
--with-hs-cpp-flags.

Cleanup: Hadrian no longer needs to pass the CPP configuration for CPP
         to be C99 compatible through -optP, since we now configure that
         into settings.

Closes #23422

- - - - -
ab13551c by Ben Gamari at 2023-06-15T11:31:13+01:00
configure: Rip out Solaris dyld check

Solaris 11 was released over a decade ago and, moreover, I doubt we have
any Solaris users

- - - - -
7d106802 by Ben Gamari at 2023-06-15T11:31:46+01:00
ghc-toolchain: Initial commit

- - - - -
2ddfe05a by Ben Gamari at 2023-06-15T11:31:46+01:00
Rip out runtime linker/compiler checks

- - - - -
6a754b2d by Ben Gamari at 2023-06-15T11:31:46+01:00
configure: Rip out toolchain selection logic

- - - - -
0125a9fc by Rodrigo Mesquita at 2023-06-15T11:31:46+01:00
ghc-toolchain: Toolchain Selection

ghc-toolchain: Rename readProcess to readProcessStdout

Fixes bugs regarding a translation from the original autconf program
that failed to account for the exit code.

The longer name reenforces that we really only care about the stdout,
and the exit code and stderr of the program are irrelevant for the case.

Fixes

Re-introduce ld-override option

ghc-toolchain library and usage in hadrian flags

Re-introduce flags in hadrian config

ghc-toolchain: UseLibFFI, LdCompactUnwind, LdFileList

A more complete ghc-toolchain.
Added configuration of:

* Use libffi for adjustors
* Supports compact unwind
* Supports filelist

Handle passing CPP cmd and flags from configure to ghc-toolchain

Rip more of configure that is no longer being used

Remove configure checks of GNUnoexecStack and ident directive

And fix bug in ghc-toolchain respective code

Rip out more from hadrians system.config.in

Configure CLink supports response files

Read deleted keys from host and target's target

Delete CMD_OPTS_STAGEX

Instead of having configure configure different options for different
programs depend on the stage, we delete this completely and have hadrian
select the correct target toolchain configuration file depending on the
stage, from which it can read those options.

Fix [host|target]-[os|arch] vs [host|target]-haskell-[os|arch]

Handle unspecified vs specified flags and commands better

Configure Cpp and HsCpp separately

Fixes for compilation

Link is GNU linkerg

Revert "Rip more of configure that is no longer being used"

I realized we still need this function in rts/configure.ac

This reverts commit 01f5d4b480f4ab1514ac0a4fc957db199d1a0279.

Revert get_arm_isa deletion from 74f03f243d08aa910d39cdd9dadb976e9386283a

As in the previous commit, we still need this info from the rts
configure script.

I suppose it could be useful for the rts to also read somehow the
toolchain information...

helper AC function for enable/disable

Delete unused imports of SysTools.Info

Drop PROG_CPP in distrib/autoconf too

Get rid of MonadCatch instances and dependencies

ghc-toolchain: Check Cc supports extra-via-c-flags

Consider empty programs as non-specified programs

Cpp and HsCpp cleanup

Add comment from check for gold t22266

Remove more settings bits from hadrian/cfg

Use llvm target from ghc-toolchain

Print default.target

Fix bugs in MergeTool and Ar

Add check and log errors on error

X

- - - - -
bc1fa2b9 by Rodrigo Mesquita at 2023-06-15T11:31:46+01:00
configure: Revert ripping out of toolchain selection logic

- - - - -
69ab81e2 by Rodrigo Mesquita at 2023-06-15T11:31:46+01:00
Stop configuring into settings unused Ld command

- - - - -
24d0ae28 by Rodrigo Mesquita at 2023-06-15T11:31:47+01:00
configure: Create and validate toolchain target file

- - - - -
42df34dd by Rodrigo Mesquita at 2023-06-15T11:31:47+01:00
Fixes for ghc-toolchain to match configure output

- - - - -
78f949e8 by Rodrigo Mesquita at 2023-06-15T11:31:47+01:00
Don't pass options to ghc-toolchain, it should arrive at the same conclusion as configure for now

- - - - -
1dc9a134 by Rodrigo Mesquita at 2023-06-15T11:31:47+01:00
Tweak to prep_target_file

- - - - -


30 changed files:

- compiler/GHC/Driver/Backend.hs
- compiler/GHC/Driver/DynFlags.hs
- compiler/GHC/Driver/Main.hs
- compiler/GHC/Driver/Pipeline/Execute.hs
- compiler/GHC/Driver/Session.hs
- compiler/GHC/Linker/ExtraObj.hs
- compiler/GHC/Linker/Static.hs
- compiler/GHC/Settings.hs
- compiler/GHC/Settings/IO.hs
- compiler/GHC/StgToJS/Linker/Linker.hs
- compiler/GHC/SysTools.hs
- compiler/GHC/SysTools/Cpp.hs
- compiler/GHC/SysTools/Info.hs
- compiler/GHC/SysTools/Tasks.hs
- configure.ac
- + default.target.in
- distrib/configure.ac.in
- ghc/Main.hs
- hadrian/bindist/Makefile
- hadrian/bindist/config.mk.in
- hadrian/cabal.project
- hadrian/cfg/system.config.in
- hadrian/hadrian.cabal
- hadrian/src/Base.hs
- hadrian/src/Builder.hs
- hadrian/src/Context.hs
- hadrian/src/Hadrian/Haskell/Hash.hs
- hadrian/src/Hadrian/Oracles/TextFile.hs
- hadrian/src/Oracles/Flag.hs
- hadrian/src/Oracles/Setting.hs


The diff was not included because it is too large.


View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/compare/90058e6b49370c1613909c2b0012d44168dd25c2...1dc9a1341a859b5feca6134a1a440fb33bd2c0f3

-- 
View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/compare/90058e6b49370c1613909c2b0012d44168dd25c2...1dc9a1341a859b5feca6134a1a440fb33bd2c0f3
You're receiving this email because of your account on gitlab.haskell.org.


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/ghc-commits/attachments/20230615/1a9d17c9/attachment-0001.html>


More information about the ghc-commits mailing list