summaryrefslogtreecommitdiff
path: root/compiler/main/SysTools.hs
diff options
context:
space:
mode:
authorBen Gamari <ben@smart-cactus.org>2019-06-03 18:51:17 -0400
committerMarge Bot <ben+marge-bot@smart-cactus.org>2019-06-13 23:34:41 -0400
commit7bc5d6c6578ab9d60a83b81c7cc14819afef32ba (patch)
tree63c2e2e2669a48965c5508a3787b62b14837889a /compiler/main/SysTools.hs
parent5ce63d52fed05371edb34b4f330c33bc85a45127 (diff)
downloadhaskell-7bc5d6c6578ab9d60a83b81c7cc14819afef32ba.tar.gz
Maintain separate flags for C++ compiler invocations
Previously we would pass flags intended for the C compiler to the C++ compiler (see #16738). This would cause, for instance, `-std=gnu99` to be passed to the C++ compiler, causing spurious test failures. Fix this by maintaining a separate set of flags for C++ compilation invocations.
Diffstat (limited to 'compiler/main/SysTools.hs')
-rw-r--r--compiler/main/SysTools.hs33
1 files changed, 17 insertions, 16 deletions
diff --git a/compiler/main/SysTools.hs b/compiler/main/SysTools.hs
index 2899ba383d..6db3f3243d 100644
--- a/compiler/main/SysTools.hs
+++ b/compiler/main/SysTools.hs
@@ -194,17 +194,18 @@ initSysTools top_dir
-- It would perhaps be nice to be able to override this
-- with the settings file, but it would be a little fiddly
-- to make that possible, so for now you can't.
- gcc_prog <- getToolSetting "C compiler command"
- gcc_args_str <- getSetting "C compiler flags"
+ cc_prog <- getToolSetting "C compiler command"
+ cc_args_str <- getSetting "C compiler flags"
+ cxx_args_str <- getSetting "C++ compiler flags"
gccSupportsNoPie <- getBooleanSetting "C compiler supports -no-pie"
cpp_prog <- getToolSetting "Haskell CPP command"
cpp_args_str <- getSetting "Haskell CPP flags"
- let unreg_gcc_args = if targetUnregisterised
- then ["-DNO_REGS", "-DUSE_MINIINTERPRETER"]
- else []
- cpp_args= map Option (words cpp_args_str)
- gcc_args = map Option (words gcc_args_str
- ++ unreg_gcc_args)
+ let unreg_cc_args = if targetUnregisterised
+ then ["-DNO_REGS", "-DUSE_MINIINTERPRETER"]
+ else []
+ cpp_args = map Option (words cpp_args_str)
+ cc_args = words cc_args_str ++ unreg_cc_args
+ cxx_args = words cxx_args_str
ldSupportsCompactUnwind <- getBooleanSetting "ld supports compact unwind"
ldSupportsBuildId <- getBooleanSetting "ld supports build-id"
ldSupportsFilelist <- getBooleanSetting "ld supports filelist"
@@ -236,11 +237,11 @@ initSysTools top_dir
-- Other things being equal, as and ld are simply gcc
- gcc_link_args_str <- getSetting "C compiler link flags"
- let as_prog = gcc_prog
- as_args = gcc_args
- ld_prog = gcc_prog
- ld_args = gcc_args ++ map Option (words gcc_link_args_str)
+ cc_link_args_str <- getSetting "C compiler link flags"
+ let as_prog = cc_prog
+ as_args = map Option cc_args
+ ld_prog = cc_prog
+ ld_args = map Option (cc_args ++ words cc_link_args_str)
-- We just assume on command line
lc_prog <- getSetting "LLVM llc command"
@@ -308,7 +309,7 @@ initSysTools top_dir
, toolSettings_pgm_L = unlit_path
, toolSettings_pgm_P = (cpp_prog, cpp_args)
, toolSettings_pgm_F = ""
- , toolSettings_pgm_c = (gcc_prog, gcc_args)
+ , toolSettings_pgm_c = cc_prog
, toolSettings_pgm_a = (as_prog, as_args)
, toolSettings_pgm_l = (ld_prog, ld_args)
, toolSettings_pgm_dll = (mkdll_prog,mkdll_args)
@@ -325,8 +326,8 @@ initSysTools top_dir
, toolSettings_opt_P = []
, toolSettings_opt_P_fingerprint = fingerprint0
, toolSettings_opt_F = []
- , toolSettings_opt_c = []
- , toolSettings_opt_cxx = []
+ , toolSettings_opt_c = cc_args
+ , toolSettings_opt_cxx = cxx_args
, toolSettings_opt_a = []
, toolSettings_opt_l = []
, toolSettings_opt_windres = []