summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEdward Z. Yang <ezyang@cs.stanford.edu>2016-03-30 21:44:09 +0200
committerBen Gamari <ben@smart-cactus.org>2016-03-30 22:49:06 +0200
commitbc953fcdbc76ffbb4f06a2b74be271268f73328f (patch)
treed415337c117c51dc89446f6c601b8e643db14ff1
parente9c2555ac666912f7dff56448ced4bfa06d14e76 (diff)
downloadhaskell-bc953fcdbc76ffbb4f06a2b74be271268f73328f.tar.gz
Add -f(no-)version-macro to explicitly control macros.
Test Plan: validate Reviewers: thomie, austin, bgamari Reviewed By: bgamari Subscribers: hvr Differential Revision: https://phabricator.haskell.org/D2058 GHC Trac Issues: #11763
-rw-r--r--compiler/main/DriverPipeline.hs2
-rw-r--r--compiler/main/DynFlags.hs5
-rw-r--r--testsuite/.gitignore1
-rw-r--r--testsuite/tests/driver/T11763.hs5
-rw-r--r--testsuite/tests/driver/T11763.stdout1
-rw-r--r--testsuite/tests/driver/all.T1
6 files changed, 13 insertions, 2 deletions
diff --git a/compiler/main/DriverPipeline.hs b/compiler/main/DriverPipeline.hs
index bc9c19bf69..586754fe1c 100644
--- a/compiler/main/DriverPipeline.hs
+++ b/compiler/main/DriverPipeline.hs
@@ -2056,7 +2056,7 @@ doCpp dflags raw input_fn output_fn = do
let uids = explicitPackages (pkgState dflags)
pkgs = catMaybes (map (lookupPackage dflags) uids)
mb_macro_include <-
- if not (null pkgs)
+ if not (null pkgs) && gopt Opt_VersionMacros dflags
then do macro_stub <- newTempName dflags "h"
writeFile macro_stub (generatePackageVersionMacros pkgs)
-- Include version macros for every *exposed* package.
diff --git a/compiler/main/DynFlags.hs b/compiler/main/DynFlags.hs
index 9c6704581d..9e064451ef 100644
--- a/compiler/main/DynFlags.hs
+++ b/compiler/main/DynFlags.hs
@@ -486,6 +486,7 @@ data GeneralFlag
| Opt_FlatCache
| Opt_ExternalInterpreter
| Opt_OptimalApplicativeDo
+ | Opt_VersionMacros
-- PreInlining is on by default. The option is there just to see how
-- bad things get if you turn it off!
@@ -3397,6 +3398,7 @@ fFlagsDeps = [
flagSpec "unbox-strict-fields" Opt_UnboxStrictFields,
flagSpec "vectorisation-avoidance" Opt_VectorisationAvoidance,
flagSpec "vectorise" Opt_Vectorise,
+ flagSpec "version-macros" Opt_VersionMacros,
flagSpec "worker-wrapper" Opt_WorkerWrapper,
flagSpec "show-warning-groups" Opt_ShowWarnGroups
]
@@ -3640,7 +3642,8 @@ defaultFlags settings
Opt_ProfCountEntries,
Opt_RPath,
Opt_SharedImplib,
- Opt_SimplPreInlining
+ Opt_SimplPreInlining,
+ Opt_VersionMacros
]
++ [f | (ns,f) <- optLevelFlags, 0 `elem` ns]
diff --git a/testsuite/.gitignore b/testsuite/.gitignore
index 8926e4eb16..655e3da3c8 100644
--- a/testsuite/.gitignore
+++ b/testsuite/.gitignore
@@ -571,6 +571,7 @@ mk/ghcconfig*_test___spaces_ghc*.exe.mk
/tests/driver/T8526/A.inc
/tests/driver/T8602/t8602.sh
/tests/driver/T9562/Main
+/tests/driver/T11763
/tests/driver/Test.081b
/tests/driver/Test.081b.hs
/tests/driver/Test_081a
diff --git a/testsuite/tests/driver/T11763.hs b/testsuite/tests/driver/T11763.hs
new file mode 100644
index 0000000000..3fd5df9fce
--- /dev/null
+++ b/testsuite/tests/driver/T11763.hs
@@ -0,0 +1,5 @@
+{-# LANGUAGE CPP #-}
+main = do
+#ifndef VERSION_containers
+ putStrLn "OK"
+#endif
diff --git a/testsuite/tests/driver/T11763.stdout b/testsuite/tests/driver/T11763.stdout
new file mode 100644
index 0000000000..d86bac9de5
--- /dev/null
+++ b/testsuite/tests/driver/T11763.stdout
@@ -0,0 +1 @@
+OK
diff --git a/testsuite/tests/driver/all.T b/testsuite/tests/driver/all.T
index 23aeb99a46..761ad621d4 100644
--- a/testsuite/tests/driver/all.T
+++ b/testsuite/tests/driver/all.T
@@ -475,6 +475,7 @@ test('T11381', normal, compile_fail, [''])
test('T11429a', normal, compile, ['-Wunrecognised-warning-flags -Wfoobar'])
test('T11429b', normal, compile, ['-Wno-unrecognised-warning-flags -Wfoobar'])
test('T11429c', normal, compile_fail, ['-Wunrecognised-warning-flags -Werror -Wfoobar'])
+test('T11763', normal, compile_and_run, ['-fno-version-macros'])
test('T10320',
[ ignore_output