diff options
author | John Ericson <John.Ericson@Obsidian.Systems> | 2021-10-27 04:06:46 +0000 |
---|---|---|
committer | Marge Bot <ben+marge-bot@smart-cactus.org> | 2021-11-05 20:25:32 -0400 |
commit | 3645abac01b634b61b2ea2508ba67e88ef9ee219 (patch) | |
tree | 0274f7f1fdcb328e76a531a3ec25e357c5bc8188 | |
parent | d96ce59dc86799f0cf07da2ce5a55b189a50c130 (diff) | |
download | haskell-3645abac01b634b61b2ea2508ba67e88ef9ee219.tar.gz |
Avoid GHC_STAGE and other include bits
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.
-rw-r--r-- | .gitignore | 1 | ||||
-rw-r--r-- | compiler/GHC/CmmToLlvm/Base.hs | 2 | ||||
-rw-r--r-- | compiler/GHC/Data/FastString.hs | 12 | ||||
-rw-r--r-- | compiler/GHC/Driver/Pipeline.hs | 1 | ||||
-rw-r--r-- | compiler/GHC/Driver/Pipeline/Execute.hs | 2 | ||||
-rw-r--r-- | compiler/GHC/Utils/GlobalVars.hs | 5 | ||||
-rw-r--r-- | compiler/cbits/genSym.c | 5 | ||||
-rw-r--r-- | compiler/ghc-llvm-version.h.in | 12 | ||||
-rw-r--r-- | compiler/ghc.cabal.in | 1 | ||||
-rw-r--r-- | configure.ac | 5 | ||||
-rw-r--r-- | hadrian/src/Rules/Generate.hs | 2 | ||||
-rw-r--r-- | libraries/ghc-boot/GHC/Data/ShortText.hs | 2 | ||||
-rw-r--r-- | rts/include/ghc.mk | 2 | ||||
-rw-r--r-- | utils/iserv/cbits/iservmain.c | 3 |
14 files changed, 33 insertions, 22 deletions
diff --git a/.gitignore b/.gitignore index c860ecd9cb..46fb24d4a9 100644 --- a/.gitignore +++ b/.gitignore @@ -108,6 +108,7 @@ _darcs/ /compiler/FunTypes.h /compiler/MachDeps.h /compiler/MachRegs.h +/compiler/ghc-llvm-version.h /compiler/ghc.cabal /compiler/ghc.cabal.old /distrib/configure.ac diff --git a/compiler/GHC/CmmToLlvm/Base.hs b/compiler/GHC/CmmToLlvm/Base.hs index 2095e3d606..33798acf72 100644 --- a/compiler/GHC/CmmToLlvm/Base.hs +++ b/compiler/GHC/CmmToLlvm/Base.hs @@ -39,7 +39,7 @@ module GHC.CmmToLlvm.Base ( aliasify, llvmDefLabel ) where -#include "ghcautoconf.h" +#include "ghc-llvm-version.h" import GHC.Prelude import GHC.Utils.Panic diff --git a/compiler/GHC/Data/FastString.hs b/compiler/GHC/Data/FastString.hs index 262ddd3ada..1b2f21c415 100644 --- a/compiler/GHC/Data/FastString.hs +++ b/compiler/GHC/Data/FastString.hs @@ -111,9 +111,6 @@ module GHC.Data.FastString lengthPS ) where --- For GHC_STAGE -#include "ghcplatform.h" - import GHC.Prelude as Prelude import GHC.Utils.Encoding @@ -143,7 +140,7 @@ import Data.Semigroup as Semi import Foreign -#if GHC_STAGE >= 2 +#if MIN_VERSION_GLASGOW_HASKELL(9,3,0,0) import GHC.Conc.Sync (sharedCAF) #endif @@ -384,13 +381,14 @@ stringTable = unsafePerformIO $ do -- use the support wired into the RTS to share this CAF among all images of -- libHSghc -#if GHC_STAGE < 2 +#if !MIN_VERSION_GLASGOW_HASKELL(9,3,0,0) return tab #else sharedCAF tab getOrSetLibHSghcFastStringTable --- from the RTS; thus we cannot use this mechanism when GHC_STAGE<2; the previous --- RTS might not have this symbol +-- from the 9.3 RTS; the previouss RTS before might not have this symbol. The +-- right way to do this however would be to define some HAVE_FAST_STRING_TABLE +-- or similar rather than use (odd parity) development versions. foreign import ccall unsafe "getOrSetLibHSghcFastStringTable" getOrSetLibHSghcFastStringTable :: Ptr a -> IO (Ptr a) #endif diff --git a/compiler/GHC/Driver/Pipeline.hs b/compiler/GHC/Driver/Pipeline.hs index 55b6a28970..53bf0333fb 100644 --- a/compiler/GHC/Driver/Pipeline.hs +++ b/compiler/GHC/Driver/Pipeline.hs @@ -48,7 +48,6 @@ module GHC.Driver.Pipeline ( ) where -#include "ghcplatform.h" import GHC.Prelude import GHC.Platform diff --git a/compiler/GHC/Driver/Pipeline/Execute.hs b/compiler/GHC/Driver/Pipeline/Execute.hs index 25aac65d85..08a63c0125 100644 --- a/compiler/GHC/Driver/Pipeline/Execute.hs +++ b/compiler/GHC/Driver/Pipeline/Execute.hs @@ -5,7 +5,7 @@ {-# LANGUAGE MultiParamTypeClasses #-} {-# LANGUAGE GADTs #-} {-# OPTIONS_GHC -Wno-incomplete-uni-patterns #-} -#include "ghcplatform.h" +#include <ghcplatform.h> {- Functions for providing the default interpretation of the 'TPhase' actions -} diff --git a/compiler/GHC/Utils/GlobalVars.hs b/compiler/GHC/Utils/GlobalVars.hs index 19496d5d82..ad02bc45b1 100644 --- a/compiler/GHC/Utils/GlobalVars.hs +++ b/compiler/GHC/Utils/GlobalVars.hs @@ -22,9 +22,6 @@ module GHC.Utils.GlobalVars ) where --- For GHC_STAGE -#include "ghcplatform.h" - import GHC.Prelude import GHC.Conc.Sync ( sharedCAF ) @@ -60,7 +57,7 @@ foreign import ccall unsafe saccessor \ -#if GHC_STAGE < 2 +#if !MIN_VERSION_GLASGOW_HASKELL(9,3,0,0) GLOBAL_VAR(v_unsafeHasPprDebug, False, Bool) GLOBAL_VAR(v_unsafeHasNoDebugOutput, False, Bool) diff --git a/compiler/cbits/genSym.c b/compiler/cbits/genSym.c index 19697de25e..9bdadc5a99 100644 --- a/compiler/cbits/genSym.c +++ b/compiler/cbits/genSym.c @@ -1,11 +1,14 @@ #include <Rts.h> #include <assert.h> #include "Unique.h" -#include "ghcversion.h" +#include <ghcversion.h> // These global variables have been moved into the RTS. It allows them to be // shared with plugins even if two different instances of the GHC library are // loaded at the same time (#19940) +// +// The CPP is thus about the RTS version GHC is linked against, and not the +// version of the GHC being built. #if !MIN_VERSION_GLASGOW_HASKELL(9,3,0,0) HsInt ghc_unique_counter = 0; HsInt ghc_unique_inc = 1; diff --git a/compiler/ghc-llvm-version.h.in b/compiler/ghc-llvm-version.h.in new file mode 100644 index 0000000000..241ce53e32 --- /dev/null +++ b/compiler/ghc-llvm-version.h.in @@ -0,0 +1,12 @@ +#if !defined(__GHC_LLVM_VERSION_H__) +#define __GHC_LLVM_VERSION_H__ + +/* The maximum supported LLVM version number */ +#undef sUPPORTED_LLVM_VERSION_MAX + +/* The minimum supported LLVM version number */ +#undef sUPPORTED_LLVM_VERSION_MIN + +/* Define to `unsigned int' if <sys/types.h> does not define. */ +#undef size_t +#endif /* __GHC_LLVM_VERSION_H__ */ diff --git a/compiler/ghc.cabal.in b/compiler/ghc.cabal.in index 0fed86620b..19ade29336 100644 --- a/compiler/ghc.cabal.in +++ b/compiler/ghc.cabal.in @@ -78,6 +78,7 @@ Library -- MachRegs.h -- hits #error, skip -- target sensative, should not be used MachDeps.h + ghc-llvm-version.h Build-Depends: base >= 4.11 && < 4.17, deepseq >= 1.4 && < 1.5, diff --git a/configure.ac b/configure.ac index 634210b151..bb0ab606cc 100644 --- a/configure.ac +++ b/configure.ac @@ -71,8 +71,11 @@ AC_PREREQ([2.69]) # ------------------------------------------------------------------------- # Prepare to generate the following header files # -# + +# This one is autogenerated by autoheader. AC_CONFIG_HEADER(mk/config.h) +# This one is manually maintained. +AC_CONFIG_HEADER(compiler/ghc-llvm-version.h) # No, semi-sadly, we don't do `--srcdir'... if test x"$srcdir" != 'x.' ; then diff --git a/hadrian/src/Rules/Generate.hs b/hadrian/src/Rules/Generate.hs index 5247c8b4ae..782ae63803 100644 --- a/hadrian/src/Rules/Generate.hs +++ b/hadrian/src/Rules/Generate.hs @@ -254,8 +254,6 @@ generateGhcPlatformH = do [ "#if !defined(__GHCPLATFORM_H__)" , "#define __GHCPLATFORM_H__" , "" - , "#define GHC_STAGE " ++ show (fromEnum stage + 1) - , "" , "#define BuildPlatform_TYPE " ++ cppify buildPlatform , "#define HostPlatform_TYPE " ++ cppify hostPlatform , "" diff --git a/libraries/ghc-boot/GHC/Data/ShortText.hs b/libraries/ghc-boot/GHC/Data/ShortText.hs index 108b5a43cd..815c3edb64 100644 --- a/libraries/ghc-boot/GHC/Data/ShortText.hs +++ b/libraries/ghc-boot/GHC/Data/ShortText.hs @@ -14,7 +14,7 @@ -- -- This can be removed when we exit the boot compiler window. Thus once we drop GHC-9.2 as boot compiler, -- we can drop this code as well. -#if GHC_STAGE < 1 +#if !MIN_VERSION_GLASGOW_HASKELL(9,3,0,0) {-# OPTIONS_GHC -fignore-interface-pragmas #-} #endif -- | diff --git a/rts/include/ghc.mk b/rts/include/ghc.mk index 7c26499ce4..a04d5dbc1c 100644 --- a/rts/include/ghc.mk +++ b/rts/include/ghc.mk @@ -179,8 +179,6 @@ $$(includes_$1_H_PLATFORM) : rts/include/ghc.mk rts/include/Makefile | $$$$(dir @echo "#if !defined(__GHCPLATFORM_H__)" > $$@ @echo "#define __GHCPLATFORM_H__" >> $$@ @echo >> $$@ - @echo "#define GHC_STAGE ($1 + 1)" >> $$@ - @echo >> $$@ @echo "#define BuildPlatform_TYPE $(BuildPlatform_$1_CPP)" >> $$@ @echo "#define HostPlatform_TYPE $(HostPlatform_$1_CPP)" >> $$@ @echo >> $$@ diff --git a/utils/iserv/cbits/iservmain.c b/utils/iserv/cbits/iservmain.c index d88d14e0d6..b182f9f549 100644 --- a/utils/iserv/cbits/iservmain.c +++ b/utils/iserv/cbits/iservmain.c @@ -1,4 +1,5 @@ -#if GHC_STAGE > 1 +#include <ghcversion.h> +#if MIN_VERSION_GLASGOW_HASKELL(9,3,0,0) # include <rts/PosixSource.h> #else // PosixSource.h not yet exposed, hacky inline for now. # include <ghcplatform.h> |