From: Daniel Dunbar Date: Tue, 11 Oct 2011 18:20:16 +0000 (+0000) Subject: Driver: Add support for a new -nostdlibinc option. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=92d6d404833468120f9a86fb360691ac60585551;p=clang 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 --- 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