aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Dunbar <daniel@zuster.org>2011-10-11 18:20:16 +0000
committerDaniel Dunbar <daniel@zuster.org>2011-10-11 18:20:16 +0000
commit92d6d404833468120f9a86fb360691ac60585551 (patch)
treeece0ab51d3ed5e4169bef6920b5ac1e686e98f03
parenta268fc0f2229eb132ebc8501b140093aeb5516bf (diff)
Driver: Add support for a new -nostdlibinc option.
- This disables the system include directories, but not the compiler builtin directories. Useful for projects that want to use things like the intrinsic headers, but are otherwise freestanding. - I'm willing to reconsider the option naming, I also considered providing an explicit -builtinc (which would match -nobuiltininc), but this is more consistent with existing options. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141692 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--docs/tools/clang.pod8
-rw-r--r--include/clang/Driver/Options.td1
-rw-r--r--lib/Driver/Tools.cpp2
-rw-r--r--test/Driver/nostdlibinc.c10
4 files changed, 20 insertions, 1 deletions
diff --git a/docs/tools/clang.pod b/docs/tools/clang.pod
index 704cc8743b..964b143ac9 100644
--- a/docs/tools/clang.pod
+++ b/docs/tools/clang.pod
@@ -459,7 +459,13 @@ Add the specified directory to the search path for framework include files.
=item B<-nostdinc>
-Do not search the standard system directories for include files.
+Do not search the standard system directories or compiler builtin directories
+for include files.
+
+=item B<-nostdlibinc>
+
+Do not search the standard system directories for include files, but do search
+compiler builting include directories.
=item B<-nobuiltininc>
diff --git a/include/clang/Driver/Options.td b/include/clang/Driver/Options.td
index a0520f0bea..ae8c7945cb 100644
--- a/include/clang/Driver/Options.td
+++ b/include/clang/Driver/Options.td
@@ -624,6 +624,7 @@ def noprebind : Flag<"-noprebind">;
def noseglinkedit : Flag<"-noseglinkedit">;
def nostartfiles : Flag<"-nostartfiles">;
def nostdinc : Flag<"-nostdinc">;
+def nostdlibinc : Flag<"-nostdlibinc">;
def nostdincxx : Flag<"-nostdinc++">;
def nostdlib : Flag<"-nostdlib">;
def object : Flag<"-object">;
diff --git a/lib/Driver/Tools.cpp b/lib/Driver/Tools.cpp
index 07d2a68189..e0efe82286 100644
--- a/lib/Driver/Tools.cpp
+++ b/lib/Driver/Tools.cpp
@@ -1486,6 +1486,8 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA,
CmdArgs.push_back("-nostdsysteminc");
CmdArgs.push_back("-nobuiltininc");
} else {
+ if (Args.hasArg(options::OPT_nostdlibinc))
+ CmdArgs.push_back("-nostdsysteminc");
Args.AddLastArg(CmdArgs, options::OPT_nostdincxx);
Args.AddLastArg(CmdArgs, options::OPT_nobuiltininc);
}
diff --git a/test/Driver/nostdlibinc.c b/test/Driver/nostdlibinc.c
new file mode 100644
index 0000000000..f7ee712d86
--- /dev/null
+++ b/test/Driver/nostdlibinc.c
@@ -0,0 +1,10 @@
+// RUN: %clang -ccc-host-triple x86_64-unknown-unknown \
+// RUN: -nostdlibinc -ffreestanding -fsyntax-only %s
+
+#if !__has_include("stddef.h")
+#error "expected to be able to find compiler builtin headers!"
+#endif
+
+#if __has_include("stdlib.h")
+#error "expected to *not* be able to find standard C headers"
+#endif