diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,9 @@
 # Changelog for shake-language-c
 
+## v0.8.1
+
+* Use `-I` compiler flag for the `userIncludes` of `BuildFlags` and `-isystem` for `systemIncludes`; semantics should be as before for `gcc` and `clang` but `-isystem` suppresses warnings in system headers
+
 ## v0.8.0
 
 * Refactor NMF file creation in NaCl module
diff --git a/shake-language-c.cabal b/shake-language-c.cabal
--- a/shake-language-c.cabal
+++ b/shake-language-c.cabal
@@ -13,7 +13,7 @@
 -- limitations under the License.
 
 Name:         shake-language-c
-Version:      0.8.0
+Version:      0.8.1
 Synopsis:     Utilities for cross-compiling with Shake
 Description:  This library provides <http://hackage.haskell.org/package/shake Shake> utilities for cross-compiling @C@, @C++@ and @ObjC@ code for various target platforms. Currently supported target platforms are Android, iOS, Linux, MacOS X, Windows\/MinGW and Google Portable Native Client (PNaCl). Supported host platforms are MacOS X, Linux and Windows.
 Category:     Development
diff --git a/src/Development/Shake/Language/C/BuildFlags.hs b/src/Development/Shake/Language/C/BuildFlags.hs
--- a/src/Development/Shake/Language/C/BuildFlags.hs
+++ b/src/Development/Shake/Language/C/BuildFlags.hs
@@ -29,8 +29,8 @@
   -- * Build flags
   , BuildFlags
     -- Poor man's documentation for TH generated functions.
-  , systemIncludes -- | System include directories, referenced by @#include \<...\>@ in code and usually passed to the compiler with the @-I@ flag.
-  , userIncludes -- | User include directories, referenced by @#include "..."@ in code and usually passed to the compiler with the @-iquote@ flag.
+  , systemIncludes -- | System include directories, referenced by @#include \<...\>@ in code and usually passed to the compiler with the @-isystem@ flag.
+  , userIncludes -- | User include directories, referenced by @#include "..."@ in code and usually passed to the compiler with the @-I@ flag.
   , defines -- | Preprocessor defines, a list of pairs of names with or without a value.
   , preprocessorFlags -- | Other preprocessor flags.
   , compilerFlags -- | Compiler flags, either generic ones or for a specific source 'Language'.
diff --git a/src/Development/Shake/Language/C/Target/NaCl.hs b/src/Development/Shake/Language/C/Target/NaCl.hs
--- a/src/Development/Shake/Language/C/Target/NaCl.hs
+++ b/src/Development/Shake/Language/C/Target/NaCl.hs
@@ -33,7 +33,6 @@
   , mk_nmf
 ) where
 
-import           Data.List (intercalate)
 import           Development.Shake
 import           Development.Shake.FilePath
 import           Data.Version (Version(..))
@@ -165,10 +164,10 @@
     , "}"
     ]
   where
-    entry what exe = [
+    entry what prog = [
         "      \"" ++ what ++ "\": {"
-      , "        \"url\": \"" ++ makeRelative (takeDirectory output) (executablePath exe) ++ "\""
+      , "        \"url\": \"" ++ makeRelative (takeDirectory output) (executablePath prog) ++ "\""
       ] ++ maybe [] (\n ->
-       ["      , \"optlevel\": " ++ show n]) (optimizationLevel exe)
+       ["      , \"optlevel\": " ++ show n]) (optimizationLevel prog)
         ++
       [ "      }" ]
diff --git a/src/Development/Shake/Language/C/ToolChain.hs b/src/Development/Shake/Language/C/ToolChain.hs
--- a/src/Development/Shake/Language/C/ToolChain.hs
+++ b/src/Development/Shake/Language/C/ToolChain.hs
@@ -125,8 +125,8 @@
   need $ [input]
   let depFile = output <.> "d"
   command_ [] (tool toolChain compilerCommand)
-    $  concatMapFlag "-I" (get systemIncludes buildFlags)
-    ++ mapFlag "-iquote" (get userIncludes buildFlags)
+    $  concatMapFlag "-isystem" (get systemIncludes buildFlags)
+    ++ mapFlag "-I" (get userIncludes buildFlags)
     ++ defineFlags buildFlags
     ++ get preprocessorFlags buildFlags
     ++ compilerFlagsFor (languageOf input) buildFlags
