diff options
author | Tamar Christina <tamar@zhox.com> | 2018-02-19 22:13:46 -0500 |
---|---|---|
committer | Ben Gamari <ben@smart-cactus.org> | 2018-02-19 23:02:10 -0500 |
commit | eb2daa2b6a83412382aa0fcda598f8b3d40fde2c (patch) | |
tree | f38d8e287b7b5132cc456ebe0e2c73b47bf438b3 /compiler/deSugar | |
parent | 71294f30fa20ea9c4653f76da20a5f8170ee415b (diff) | |
download | haskell-eb2daa2b6a83412382aa0fcda598f8b3d40fde2c.tar.gz |
Change how includes for input file directory works
GHC Used to only allow for one include mode, namely `-I`. The problem
with `-I` includes is that it supercedes all other includes, including
the system include paths.
This is not a problem for paths requested by the user, but it is a
problem for the ones we implicitly derive and add.
In particular we add the source directory of the input file to the
include path. This is problematic because it causes any file with the
name of a system include, to inadvertently loop as the wrong file gets
included.
Since this is an implicitly include, and as far as I can tell, only done
so local includes are found (as the sources given to GCC reside in a
temp folder) then switch from `-I` to `-iquote`.
This requires a submodule update for haddock
Test Plan: ./validate
Reviewers: austin, bgamari, hvr
Reviewed By: bgamari
Subscribers: carter, rwbarton, thomie
GHC Trac Issues: #14312
Differential Revision: https://phabricator.haskell.org/D4080
Diffstat (limited to 'compiler/deSugar')
-rw-r--r-- | compiler/deSugar/DsForeign.hs | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/compiler/deSugar/DsForeign.hs b/compiler/deSugar/DsForeign.hs index 492d353cc0..a23c51b943 100644 --- a/compiler/deSugar/DsForeign.hs +++ b/compiler/deSugar/DsForeign.hs @@ -229,7 +229,8 @@ dsFCall fn_id co fcall mDeclHeader = do CApiConv safety) c = includes $$ fun_proto <+> braces (cRet <> semi) - includes = vcat [ text "#include <" <> ftext h <> text ">" + includes = vcat [ text "#include \"" <> ftext h + <> text "\"" | Header _ h <- nub headers ] fun_proto = cResType <+> pprCconv <+> ppr wrapperName <> parens argTypes cRet |