summaryrefslogtreecommitdiff
path: root/hadrian
diff options
context:
space:
mode:
authorJames Foster <ratherforky@gmail.com>2019-07-30 18:01:29 +0100
committerMarge Bot <ben+marge-bot@smart-cactus.org>2019-08-06 20:25:18 -0400
commit0c1ccf3cad5da8ae974c2813767cfcc489391e21 (patch)
tree4d7a06534123379a0d4d2903632bba30cb629c49 /hadrian
parentea16f6cb22148982f9a0956be82288d380c1d9d9 (diff)
downloadhaskell-0c1ccf3cad5da8ae974c2813767cfcc489391e21.tar.gz
hadrian: Refactor file patterns for future Shake changes (fixes #17005)
Shake will be moving from its current implementation of ?== to one from System.FilePattern. Support for `//` is being dropped, leaving only `*` and `**` as special forms. This commit converts the existing file patterns in Hadrian to the new format. It also removes all occurances of <//> and changes the user-settings docs to remove references to // and add **. The conversion is as follows: - //a ==> **/a - a// ==> a/** - a//b ==> a/**/b
Diffstat (limited to 'hadrian')
-rw-r--r--hadrian/doc/user-settings.md10
-rw-r--r--hadrian/src/Hadrian/Builder/Tar.hs6
-rw-r--r--hadrian/src/Hadrian/Haskell/Cabal/Parse.hs4
-rw-r--r--hadrian/src/Hadrian/Utilities.hs2
-rw-r--r--hadrian/src/Main.hs6
-rw-r--r--hadrian/src/Rules.hs12
-rw-r--r--hadrian/src/Rules/Compile.hs4
-rw-r--r--hadrian/src/Rules/Generate.hs30
-rw-r--r--hadrian/src/Rules/Libffi.hs8
-rw-r--r--hadrian/src/Rules/Library.hs16
-rw-r--r--hadrian/src/Rules/Rts.hs8
-rw-r--r--hadrian/src/Rules/SourceDist.hs40
-rw-r--r--hadrian/src/Settings/Builders/DeriveConstants.hs10
-rw-r--r--hadrian/src/Settings/Builders/GenPrimopCode.hs36
-rw-r--r--hadrian/src/Settings/Flavours/Common.hs4
-rw-r--r--hadrian/src/Settings/Packages.hs44
16 files changed, 120 insertions, 120 deletions
diff --git a/hadrian/doc/user-settings.md b/hadrian/doc/user-settings.md
index 6a1d5be847..2f8397a303 100644
--- a/hadrian/doc/user-settings.md
+++ b/hadrian/doc/user-settings.md
@@ -99,13 +99,13 @@ You can combine several custom command line settings using `mconcat`:
userArgs :: Args
userArgs = mconcat
[ builder Ghc ? package cabal ? arg "-O0"
- , package rts ? input "//PrimOps.c" ? pure ["-fno-PIC", "-static"] ]
+ , package rts ? input "**/PrimOps.c" ? pure ["-fno-PIC", "-static"] ]
```
You can match any combination of the `builder`, `stage`, `package`, `way`, `input`
and `output` predicates when specifying custom command line arguments. File
-patterns such as `"//Prelude.*"` can be used when matching input and output files,
-where `//` matches an arbitrary number of path components and `*` matches an entire
-path component, excluding any separators.
+patterns such as `"**/Prelude.*"` can be used when matching input and output files,
+where `**` matches an arbitrary number of path components, but not absolute path
+prefixes, and `*` matches an entire path component, excluding any separators.
#### Enabling -Werror
@@ -245,7 +245,7 @@ verboseCommand = builder (Ghc Link)
verboseCommand = builder (Gcc Compile) &&^ package compiler
-- Use patterns when matching files:
-verboseCommand = output "//rts/sm/*" &&^ way threaded
+verboseCommand = output "**/rts/sm/*" &&^ way threaded
-- Print all commands:
verboseCommand = return True
diff --git a/hadrian/src/Hadrian/Builder/Tar.hs b/hadrian/src/Hadrian/Builder/Tar.hs
index 5b145a7127..a576d83bf5 100644
--- a/hadrian/src/Hadrian/Builder/Tar.hs
+++ b/hadrian/src/Hadrian/Builder/Tar.hs
@@ -28,9 +28,9 @@ instance NFData TarMode
args :: (ShakeValue c, ShakeValue b) => TarMode -> Args c b
args Create = mconcat
[ arg "-c"
- , output "//*.gz" ? arg "--gzip"
- , output "//*.bz2" ? arg "--bzip2"
- , output "//*.xz" ? arg "--xz"
+ , output "**/*.gz" ? arg "--gzip"
+ , output "**/*.bz2" ? arg "--bzip2"
+ , output "**/*.xz" ? arg "--xz"
, arg "-f", arg =<< getOutput
, getInputs ]
args Extract = mconcat
diff --git a/hadrian/src/Hadrian/Haskell/Cabal/Parse.hs b/hadrian/src/Hadrian/Haskell/Cabal/Parse.hs
index 1c54a4e5d6..af7966c0ef 100644
--- a/hadrian/src/Hadrian/Haskell/Cabal/Parse.hs
+++ b/hadrian/src/Hadrian/Haskell/Cabal/Parse.hs
@@ -148,9 +148,9 @@ configurePackage context@Context {..} = do
(argList ++ ["--flags=" ++ unwords flagList, v])
dir <- Context.buildPath context
- files <- liftIO $ getDirectoryFilesIO "." [ dir -/- "include" <//> "*"
+ files <- liftIO $ getDirectoryFilesIO "." [ dir -/- "include" -/- "**"
, dir -/- "*.buildinfo"
- , dir -/- "lib" <//> "*"
+ , dir -/- "lib" -/- "**"
, dir -/- "config.*" ]
produces files
diff --git a/hadrian/src/Hadrian/Utilities.hs b/hadrian/src/Hadrian/Utilities.hs
index 1c2479715c..d726e74141 100644
--- a/hadrian/src/Hadrian/Utilities.hs
+++ b/hadrian/src/Hadrian/Utilities.hs
@@ -212,7 +212,7 @@ makeRelativeNoSysLink a b
isDot _ = False
-- | Like Shake's '%>' but gives higher priority to longer patterns. Useful
--- in situations when a family of build rules, e.g. @"//*.a"@ and @"//*_p.a"@
+-- in situations when a family of build rules, e.g. @"**/*.a"@ and @"**/*_p.a"@
-- can be matched by the same file, such as @library_p.a@. We break the tie
-- by preferring longer matches, which correpond to longer patterns.
(%%>) :: FilePattern -> (FilePath -> Action ()) -> Rules ()
diff --git a/hadrian/src/Main.hs b/hadrian/src/Main.hs
index 3692047317..7e8c593453 100644
--- a/hadrian/src/Main.hs
+++ b/hadrian/src/Main.hs
@@ -29,7 +29,7 @@ main = do
BuildRoot buildRoot = CommandLine.lookupBuildRoot argsMap
- rebuild = [ (RebuildLater, buildRoot -/- "stage0//*")
+ rebuild = [ (RebuildLater, buildRoot -/- "stage0/**")
| CommandLine.lookupFreeze1 argsMap ]
cwd <- getCurrentDirectory
@@ -60,11 +60,11 @@ main = do
, shakeLintIgnore =
-- Ignore access to the package database caches.
-- They are managed externally by the ghc-pkg tool.
- [ buildRoot -/- "//package.conf.d/package.cache"
+ [ buildRoot -/- "**/package.conf.d/package.cache"
-- Ignore access to autom4te.cache directories.
-- They are managed externally by auto tools.
- , "//autom4te.cache//*"
+ , "**/autom4te.cache/**"
]
}
diff --git a/hadrian/src/Rules.hs b/hadrian/src/Rules.hs
index 61c5211399..5bb9d4cdc4 100644
--- a/hadrian/src/Rules.hs
+++ b/hadrian/src/Rules.hs
@@ -50,12 +50,12 @@ toolArgsTarget = do
root <- buildRoot
let dir = buildDir (vanillaContext Stage0 compiler)
- need [ root <//> dir -/- "Config.hs" ]
- need [ root <//> dir -/- "Fingerprint.hs" ]
- need [ root <//> dir -/- "Parser.hs" ]
- need [ root <//> dir -/- "Lexer.hs" ]
- need [ root <//> dir -/- "CmmParse.hs" ]
- need [ root <//> dir -/- "CmmLex.hs" ]
+ need [ root -/- dir -/- "Config.hs" ]
+ need [ root -/- dir -/- "Fingerprint.hs" ]
+ need [ root -/- dir -/- "Parser.hs" ]
+ need [ root -/- dir -/- "Lexer.hs" ]
+ need [ root -/- dir -/- "CmmParse.hs" ]
+ need [ root -/- dir -/- "CmmLex.hs" ]
-- Find out the arguments that are needed to load a module into the
-- session
diff --git a/hadrian/src/Rules/Compile.hs b/hadrian/src/Rules/Compile.hs
index 2227bb01ca..92a94fe611 100644
--- a/hadrian/src/Rules/Compile.hs
+++ b/hadrian/src/Rules/Compile.hs
@@ -182,8 +182,8 @@ compileHsObjectAndHi rs objpath = do
-- Allow such reads (see https://gitlab.haskell.org/ghc/ghc/wikis/Developing-Hadrian#haskell-object-files-and-hi-inputs)
-- Note that this may allow too many *.hi and *.hi-boot files, but
-- calculating the exact set of direct inputs is not feasible.
- trackAllow [ "//*." ++ hisuf way
- , "//*." ++ hibootsuf way
+ trackAllow [ "**/*." ++ hisuf way
+ , "**/*." ++ hibootsuf way
]
buildWithResources rs $ target ctx (Ghc CompileHs stage) [src] [objpath]
diff --git a/hadrian/src/Rules/Generate.hs b/hadrian/src/Rules/Generate.hs
index b14bccc09c..18e6f9271c 100644
--- a/hadrian/src/Rules/Generate.hs
+++ b/hadrian/src/Rules/Generate.hs
@@ -96,7 +96,7 @@ generatePackageCode :: Context -> Rules ()
generatePackageCode context@(Context stage pkg _) = do
root <- buildRootRules
let dir = buildDir context
- generated f = (root -/- dir ++ "//*.hs") ?== f && not ("//autogen/*" ?== f)
+ generated f = (root -/- dir -/- "**/*.hs") ?== f && not ("**/autogen/*" ?== f)
go gen file = generate file context gen
generated ?> \file -> do
let unpack = fromMaybe . error $ "No generator for " ++ file ++ "."
@@ -111,13 +111,13 @@ generatePackageCode context@(Context stage pkg _) = do
priority 2.0 $ do
when (pkg == compiler) $ do
- root <//> dir -/- "Config.hs" %> go generateConfigHs
- root <//> dir -/- "*.hs-incl" %> genPrimopCode context
+ root -/- "**" -/- dir -/- "Config.hs" %> go generateConfigHs
+ root -/- "**" -/- dir -/- "*.hs-incl" %> genPrimopCode context
when (pkg == ghcPrim) $ do
- root <//> dir -/- "GHC/Prim.hs" %> genPrimopCode context
- root <//> dir -/- "GHC/PrimopWrappers.hs" %> genPrimopCode context
+ root -/- "**" -/- dir -/- "GHC/Prim.hs" %> genPrimopCode context
+ root -/- "**" -/- dir -/- "GHC/PrimopWrappers.hs" %> genPrimopCode context
when (pkg == ghcBoot) $
- root <//> dir -/- "GHC/Version.hs" %> go generateVersionHs
+ root -/- "**" -/- dir -/- "GHC/Version.hs" %> go generateVersionHs
when (pkg == compiler) $ do
root -/- primopsTxt stage %> \file -> do
@@ -125,17 +125,17 @@ generatePackageCode context@(Context stage pkg _) = do
need $ [primopsSource] ++ includes
build $ target context HsCpp [primopsSource] [file]
- root -/- stageString stage <//> "ghc_boot_platform.h" %>
+ root -/- stageString stage -/- "**" -/- "ghc_boot_platform.h" %>
go generateGhcBootPlatformH
when (pkg == rts) $ do
- root <//> dir -/- "cmm/AutoApply.cmm" %> \file ->
+ root -/- "**" -/- dir -/- "cmm/AutoApply.cmm" %> \file ->
build $ target context GenApply [] [file]
-- TODO: This should be fixed properly, e.g. generated here on demand.
- (root <//> dir -/- "DerivedConstants.h") <~ (buildRoot <&> (-/- generatedDir))
- (root <//> dir -/- "ghcautoconf.h") <~ (buildRoot <&> (-/- generatedDir))
- (root <//> dir -/- "ghcplatform.h") <~ (buildRoot <&> (-/- generatedDir))
- (root <//> dir -/- "ghcversion.h") <~ (buildRoot <&> (-/- generatedDir))
+ (root -/- "**" -/- dir -/- "DerivedConstants.h") <~ (buildRoot <&> (-/- generatedDir))
+ (root -/- "**" -/- dir -/- "ghcautoconf.h") <~ (buildRoot <&> (-/- generatedDir))
+ (root -/- "**" -/- dir -/- "ghcplatform.h") <~ (buildRoot <&> (-/- generatedDir))
+ (root -/- "**" -/- dir -/- "ghcversion.h") <~ (buildRoot <&> (-/- generatedDir))
where
pattern <~ mdir = pattern %> \file -> do
dir <- mdir
@@ -165,8 +165,8 @@ copyRules = do
prefix -/- "platformConstants" <~ (buildRoot <&> (-/- generatedDir))
prefix -/- "template-hsc.h" <~ return (pkgPath hsc2hs)
- prefix -/- "html//*" <~ return "utils/haddock/haddock-api/resources"
- prefix -/- "latex//*" <~ return "utils/haddock/haddock-api/resources"
+ prefix -/- "html/**" <~ return "utils/haddock/haddock-api/resources"
+ prefix -/- "latex/**" <~ return "utils/haddock/haddock-api/resources"
generateRules :: Rules ()
generateRules = do
@@ -184,7 +184,7 @@ generateRules = do
priority 2.0 $ (prefix -/- "settings") %> go generateSettings
-- TODO: simplify, get rid of fake rts context
- root -/- generatedDir ++ "//*" %> \file -> do
+ root -/- generatedDir -/- "**" %> \file -> do
withTempDir $ \dir -> build $
target (rtsContext Stage1) DeriveConstants [] [file, dir]
where
diff --git a/hadrian/src/Rules/Libffi.hs b/hadrian/src/Rules/Libffi.hs
index ebd6cef849..3d54721822 100644
--- a/hadrian/src/Rules/Libffi.hs
+++ b/hadrian/src/Rules/Libffi.hs
@@ -140,7 +140,7 @@ needLibfffiArchive buildPath = do
. fromSingleton "Exactly one LibFFI tarball is expected"
<$> getDirectoryFiles top ["libffi-tarballs/libffi*.tar.gz"]
need [top -/- tarball]
- trackAllow [buildPath -/- "//*"]
+ trackAllow [buildPath -/- "**"]
return tarball
libffiRules :: Rules ()
@@ -195,12 +195,12 @@ libffiRules = do
build $ target context (Tar Extract) [tarball] [path]
moveDirectory (path -/- libname) libffiPath) $
-- And finally:
- removeFiles (path) [libname <//> "*"]
+ removeFiles (path) [libname -/- "**"]
top <- topDirectory
fixFile mkIn (fixLibffiMakefile top)
- files <- liftIO $ getDirectoryFilesIO "." [libffiPath <//> "*"]
+ files <- liftIO $ getDirectoryFilesIO "." [libffiPath -/- "**"]
produces files
fmap (libffiPath -/-) ["Makefile", "config.guess", "config.sub"] &%> \[mk, _, _] -> do
@@ -218,5 +218,5 @@ libffiRules = do
target context (Configure libffiPath) [mk <.> "in"] [mk]
dir <- setting BuildPlatform
- files <- liftIO $ getDirectoryFilesIO "." [libffiPath -/- dir <//> "*"]
+ files <- liftIO $ getDirectoryFilesIO "." [libffiPath -/- dir -/- "**"]
produces files
diff --git a/hadrian/src/Rules/Library.hs b/hadrian/src/Rules/Library.hs
index 75a2cb2c3e..0daf4681d1 100644
--- a/hadrian/src/Rules/Library.hs
+++ b/hadrian/src/Rules/Library.hs
@@ -20,15 +20,15 @@ import Utilities
libraryRules :: Rules ()
libraryRules = do
root <- buildRootRules
- root -/- "//libHS*-*.dylib" %> buildDynamicLibUnix root "dylib"
- root -/- "//libHS*-*.so" %> buildDynamicLibUnix root "so"
- root -/- "//*.a" %> buildStaticLib root
+ root -/- "**/libHS*-*.dylib" %> buildDynamicLibUnix root "dylib"
+ root -/- "**/libHS*-*.so" %> buildDynamicLibUnix root "so"
+ root -/- "**/*.a" %> buildStaticLib root
priority 2 $ do
- root -/- "stage*/lib//libHS*-*.dylib" %> registerDynamicLibUnix root "dylib"
- root -/- "stage*/lib//libHS*-*.so" %> registerDynamicLibUnix root "so"
- root -/- "stage*/lib//*.a" %> registerStaticLib root
- root -/- "//HS*-*.o" %> buildGhciLibO root
- root -/- "//HS*-*.p_o" %> buildGhciLibO root
+ root -/- "stage*/lib/**/libHS*-*.dylib" %> registerDynamicLibUnix root "dylib"
+ root -/- "stage*/lib/**/libHS*-*.so" %> registerDynamicLibUnix root "so"
+ root -/- "stage*/lib/**/*.a" %> registerStaticLib root
+ root -/- "**/HS*-*.o" %> buildGhciLibO root
+ root -/- "**/HS*-*.p_o" %> buildGhciLibO root
-- * 'Action's for building libraries
diff --git a/hadrian/src/Rules/Rts.hs b/hadrian/src/Rules/Rts.hs
index 64864eee82..a99d0f40a6 100644
--- a/hadrian/src/Rules/Rts.hs
+++ b/hadrian/src/Rules/Rts.hs
@@ -13,10 +13,10 @@ rtsRules = priority 3 $ do
-- This is for backwards compatibility (the old make build system omitted the
-- dummy version number).
root <- buildRootRules
- [ root -/- "//libHSrts_*-ghc*.so",
- root -/- "//libHSrts_*-ghc*.dylib",
- root -/- "//libHSrts-ghc*.so",
- root -/- "//libHSrts-ghc*.dylib"]
+ [ root -/- "**/libHSrts_*-ghc*.so",
+ root -/- "**/libHSrts_*-ghc*.dylib",
+ root -/- "**/libHSrts-ghc*.so",
+ root -/- "**/libHSrts-ghc*.dylib"]
|%> \ rtsLibFilePath' -> createFileLink
(addRtsDummyVersion $ takeFileName rtsLibFilePath')
rtsLibFilePath'
diff --git a/hadrian/src/Rules/SourceDist.hs b/hadrian/src/Rules/SourceDist.hs
index 0c12021010..8da98ef821 100644
--- a/hadrian/src/Rules/SourceDist.hs
+++ b/hadrian/src/Rules/SourceDist.hs
@@ -61,20 +61,20 @@ prepareTree dest = do
cpFile a = copyFile a (dest -/- a)
cpDir a = copyDirectoryContents (Not excluded) a (dest -/- a)
excluded = Or
- [ Test "//.*"
- , Test "//#*"
- , Test "//*-SAVE"
- , Test "//*.orig"
- , Test "//*.rej"
- , Test "//*~"
- , Test "//autom4te*"
- , Test "//dist"
- , Test "//dist-install"
- , Test "//log"
- , Test "//stage0"
- , Test "//stage1"
- , Test "//stage2"
- , Test "//stage3"
+ [ Test "**/.*"
+ , Test "**/#*"
+ , Test "**/*-SAVE"
+ , Test "**/*.orig"
+ , Test "**/*.rej"
+ , Test "**/*~"
+ , Test "**/autom4te*"
+ , Test "**/dist"
+ , Test "**/dist-install"
+ , Test "**/log"
+ , Test "**/stage0"
+ , Test "**/stage1"
+ , Test "**/stage2"
+ , Test "**/stage3"
, Test "hadrian/.cabal-sandbox"
, Test "hadrian/.stack-work"
, Test "hadrian/UserSettings.hs"
@@ -83,12 +83,12 @@ prepareTree dest = do
, Test "hadrian/bin"
, Test "hadrian/dist"
, Test "hadrian/dist-newstyle"
- , Test "libraries//*.buildinfo"
- , Test "libraries//GNUmakefile"
- , Test "libraries//config.log"
- , Test "libraries//config.status"
- , Test "libraries//ghc.mk"
- , Test "libraries//include/Hs*Config.h"
+ , Test "libraries/**/*.buildinfo"
+ , Test "libraries/**/GNUmakefile"
+ , Test "libraries/**/config.log"
+ , Test "libraries/**/config.status"
+ , Test "libraries/**/ghc.mk"
+ , Test "libraries/**/include/Hs*Config.h"
, Test "libraries/dph"
, Test "libraries/primitive"
, Test "libraries/random"
diff --git a/hadrian/src/Settings/Builders/DeriveConstants.hs b/hadrian/src/Settings/Builders/DeriveConstants.hs
index bd7511be23..90068b3c4a 100644
--- a/hadrian/src/Settings/Builders/DeriveConstants.hs
+++ b/hadrian/src/Settings/Builders/DeriveConstants.hs
@@ -12,11 +12,11 @@ deriveConstantsBuilderArgs = builder DeriveConstants ? do
[a, b] -> (a, b)
_ -> error $ "DeriveConstants: expected two outputs, got " ++ show outs
mconcat
- [ output "//DerivedConstants.h" ? arg "--gen-header"
- , output "//GHCConstantsHaskellType.hs" ? arg "--gen-haskell-type"
- , output "//platformConstants" ? arg "--gen-haskell-value"
- , output "//GHCConstantsHaskellWrappers.hs" ? arg "--gen-haskell-wrappers"
- , output "//GHCConstantsHaskellExports.hs" ? arg "--gen-haskell-exports"
+ [ output "**/DerivedConstants.h" ? arg "--gen-header"
+ , output "**/GHCConstantsHaskellType.hs" ? arg "--gen-haskell-type"
+ , output "**/platformConstants" ? arg "--gen-haskell-value"
+ , output "**/GHCConstantsHaskellWrappers.hs" ? arg "--gen-haskell-wrappers"
+ , output "**/GHCConstantsHaskellExports.hs" ? arg "--gen-haskell-exports"
, arg "-o", arg outputFile
, arg "--tmpdir", arg tempDir
, arg "--gcc-program", arg =<< getBuilderPath (Cc CompileC Stage1)
diff --git a/hadrian/src/Settings/Builders/GenPrimopCode.hs b/hadrian/src/Settings/Builders/GenPrimopCode.hs
index e616ed3b43..f62cfde75f 100644
--- a/hadrian/src/Settings/Builders/GenPrimopCode.hs
+++ b/hadrian/src/Settings/Builders/GenPrimopCode.hs
@@ -4,21 +4,21 @@ import Settings.Builders.Common
genPrimopCodeBuilderArgs :: Args
genPrimopCodeBuilderArgs = builder GenPrimopCode ? mconcat
- [ output "//PrimopWrappers.hs" ? arg "--make-haskell-wrappers"
- , output "//Prim.hs" ? arg "--make-haskell-source"
- , output "//primop-data-decl.hs-incl" ? arg "--data-decl"
- , output "//primop-tag.hs-incl" ? arg "--primop-tag"
- , output "//primop-list.hs-incl" ? arg "--primop-list"
- , output "//primop-has-side-effects.hs-incl" ? arg "--has-side-effects"
- , output "//primop-out-of-line.hs-incl" ? arg "--out-of-line"
- , output "//primop-commutable.hs-incl" ? arg "--commutable"
- , output "//primop-code-size.hs-incl" ? arg "--code-size"
- , output "//primop-can-fail.hs-incl" ? arg "--can-fail"
- , output "//primop-strictness.hs-incl" ? arg "--strictness"
- , output "//primop-fixity.hs-incl" ? arg "--fixity"
- , output "//primop-primop-info.hs-incl" ? arg "--primop-primop-info"
- , output "//primop-vector-uniques.hs-incl" ? arg "--primop-vector-uniques"
- , output "//primop-vector-tys.hs-incl" ? arg "--primop-vector-tys"
- , output "//primop-vector-tys-exports.hs-incl" ? arg "--primop-vector-tys-exports"
- , output "//primop-vector-tycons.hs-incl" ? arg "--primop-vector-tycons"
- , output "//primop-usage.hs-incl" ? arg "--usage" ]
+ [ output "**/PrimopWrappers.hs" ? arg "--make-haskell-wrappers"
+ , output "**/Prim.hs" ? arg "--make-haskell-source"
+ , output "**/primop-data-decl.hs-incl" ? arg "--data-decl"
+ , output "**/primop-tag.hs-incl" ? arg "--primop-tag"
+ , output "**/primop-list.hs-incl" ? arg "--primop-list"
+ , output "**/primop-has-side-effects.hs-incl" ? arg "--has-side-effects"
+ , output "**/primop-out-of-line.hs-incl" ? arg "--out-of-line"
+ , output "**/primop-commutable.hs-incl" ? arg "--commutable"
+ , output "**/primop-code-size.hs-incl" ? arg "--code-size"
+ , output "**/primop-can-fail.hs-incl" ? arg "--can-fail"
+ , output "**/primop-strictness.hs-incl" ? arg "--strictness"
+ , output "**/primop-fixity.hs-incl" ? arg "--fixity"
+ , output "**/primop-primop-info.hs-incl" ? arg "--primop-primop-info"
+ , output "**/primop-vector-uniques.hs-incl" ? arg "--primop-vector-uniques"
+ , output "**/primop-vector-tys.hs-incl" ? arg "--primop-vector-tys"
+ , output "**/primop-vector-tys-exports.hs-incl" ? arg "--primop-vector-tys-exports"
+ , output "**/primop-vector-tycons.hs-incl" ? arg "--primop-vector-tycons"
+ , output "**/primop-usage.hs-incl" ? arg "--usage" ]
diff --git a/hadrian/src/Settings/Flavours/Common.hs b/hadrian/src/Settings/Flavours/Common.hs
index 054633ffe2..cba0bcd978 100644
--- a/hadrian/src/Settings/Flavours/Common.hs
+++ b/hadrian/src/Settings/Flavours/Common.hs
@@ -6,6 +6,6 @@ import Expression
-- https://phabricator.haskell.org/D4880
naturalInBaseFixArgs :: Args
naturalInBaseFixArgs = mconcat
- [ input "//Natural.hs" ? pure ["-fno-omit-interface-pragmas"]
- , input "//Num.hs" ? pure ["-fno-ignore-interface-pragmas"]
+ [ input "**/Natural.hs" ? pure ["-fno-omit-interface-pragmas"]
+ , input "**/Num.hs" ? pure ["-fno-ignore-interface-pragmas"]
]
diff --git a/hadrian/src/Settings/Packages.hs b/hadrian/src/Settings/Packages.hs
index c093dfb20e..ecffc58c9d 100644
--- a/hadrian/src/Settings/Packages.hs
+++ b/hadrian/src/Settings/Packages.hs
@@ -48,13 +48,13 @@ packageArgs = do
[ builder Alex ? arg "--latin1"
, builder (Ghc CompileHs) ? mconcat
- [ inputs ["//GHC.hs", "//GhcMake.hs"] ? arg "-fprof-auto"
- , input "//Parser.hs" ?
+ [ inputs ["**/GHC.hs", "**/GhcMake.hs"] ? arg "-fprof-auto"
+ , input "**/Parser.hs" ?
pure ["-fno-ignore-interface-pragmas", "-fcmm-sink"]
-- These files take a very long time to compile with -O1,
-- so we use -O0 for them just in Stage0 to speed up the
-- build but not affect Stage1+ executables
- , inputs ["//HsInstances.hs", "//DynFlags.hs"] ? stage0 ?
+ , inputs ["**/HsInstances.hs", "**/DynFlags.hs"] ? stage0 ?
pure ["-O0"] ]
, builder (Cabal Setup) ? mconcat
@@ -110,7 +110,7 @@ packageArgs = do
[ builder (Cabal Flags) ? arg "include-ghc-prim"
, builder (Cc CompileC) ? (not <$> flag GccIsClang) ?
- input "//cbits/atomic.c" ? arg "-Wno-sync-nand" ]
+ input "**/cbits/atomic.c" ? arg "-Wno-sync-nand" ]
--------------------------------- ghci ---------------------------------
-- TODO: This should not be @not <$> flag CrossCompiling@. Instead we
@@ -163,7 +163,7 @@ packageArgs = do
-------------------------------- runGhc --------------------------------
, package runGhc ?
- builder Ghc ? input "//Main.hs" ?
+ builder Ghc ? input "**/Main.hs" ?
(\version -> ["-cpp", "-DVERSION=" ++ show version]) <$> getSetting ProjectVersion
--------------------------------- text ---------------------------------
@@ -231,10 +231,10 @@ rtsPackageArgs = package rts ? do
, Profiling `wayUnit` way ? arg "-DPROFILING"
, Threaded `wayUnit` way ? arg "-DTHREADED_RTS"
- , inputs ["//RtsMessages.c", "//Trace.c"] ?
+ , inputs ["**/RtsMessages.c", "**/Trace.c"] ?
arg ("-DProjectVersion=" ++ show projectVersion)
- , input "//RtsUtils.c" ? pure
+ , input "**/RtsUtils.c" ? pure
[ "-DProjectVersion=" ++ show projectVersion
, "-DHostPlatform=" ++ show hostPlatform
, "-DHostArch=" ++ show hostArch
@@ -253,46 +253,46 @@ rtsPackageArgs = package rts ? do
-- We're after pur performance here. So make sure fast math and
-- vectorization is enabled.
- , input "//xxhash.c" ? pure
+ , input "**/xxhash.c" ? pure
[ "-O3"
, "-ffast-math"
, "-ftree-vectorize" ]
- , inputs ["//Evac.c", "//Evac_thr.c"] ? arg "-funroll-loops"
+ , inputs ["**/Evac.c", "**/Evac_thr.c"] ? arg "-funroll-loops"
, speedHack ?
- inputs [ "//Evac.c", "//Evac_thr.c"
- , "//Scav.c", "//Scav_thr.c"
- , "//Compact.c", "//GC.c" ] ? arg "-fno-PIC"
+ inputs [ "**/Evac.c", "**/Evac_thr.c"
+ , "**/Scav.c", "**/Scav_thr.c"
+ , "**/Compact.c", "**/GC.c" ] ? arg "-fno-PIC"
-- @-static@ is necessary for these bits, as otherwise the NCG
-- generates dynamic references.
, speedHack ?
- inputs [ "//Updates.c", "//StgMiscClosures.c"
- , "//PrimOps.c", "//Apply.c"
- , "//AutoApply.c" ] ? pure ["-fno-PIC", "-static"]
+ inputs [ "**/Updates.c", "**/StgMiscClosures.c"
+ , "**/PrimOps.c", "**/Apply.c"
+ , "**/AutoApply.c" ] ? pure ["-fno-PIC", "-static"]
-- inlining warnings happen in Compact
- , inputs ["//Compact.c"] ? arg "-Wno-inline"
+ , inputs ["**/Compact.c"] ? arg "-Wno-inline"
-- emits warnings about call-clobbered registers on x86_64
- , inputs [ "//RetainerProfile.c", "//StgCRun.c"
- , "//win32/ConsoleHandler.c", "//win32/ThrIOManager.c"] ? arg "-w"
+ , inputs [ "**/RetainerProfile.c", "**/StgCRun.c"
+ , "**/win32/ConsoleHandler.c", "**/win32/ThrIOManager.c"] ? arg "-w"
-- The above warning suppression flags are a temporary kludge.
-- While working on this module you are encouraged to remove it and fix
-- any warnings in the module. See:
-- https://gitlab.haskell.org/ghc/ghc/wikis/working-conventions#Warnings
, (not <$> flag GccIsClang) ?
- inputs ["//Compact.c"] ? arg "-finline-limit=2500"
+ inputs ["**/Compact.c"] ? arg "-finline-limit=2500"
- , input "//RetainerProfile.c" ? flag GccIsClang ?
+ , input "**/RetainerProfile.c" ? flag GccIsClang ?
arg "-Wno-incompatible-pointer-types"
, windowsHost ? arg ("-DWINVER=" ++ windowsVersion)
-- libffi's ffi.h triggers various warnings
- , inputs [ "//Interpreter.c", "//Storage.c", "//Adjustor.c" ] ?
+ , inputs [ "**/Interpreter.c", "**/Storage.c", "**/Adjustor.c" ] ?
arg "-Wno-strict-prototypes"
- , inputs ["//Interpreter.c", "//Adjustor.c", "//sm/Storage.c"] ?
+ , inputs ["**/Interpreter.c", "**/Adjustor.c", "**/sm/Storage.c"] ?
anyTargetArch ["powerpc"] ? arg "-Wno-undef" ]
mconcat