From b274318bbaa3f64db85f8a813319c04b97518949 Mon Sep 17 00:00:00 2001 From: Daniel Dunbar Date: Tue, 18 Oct 2011 20:40:38 +0000 Subject: [PATCH] Frontend: Support -iframework. llvm-svn: 142418 --- clang/include/clang/Driver/CC1Options.td | 2 ++ clang/include/clang/Driver/Options.td | 2 +- clang/lib/Driver/Tools.cpp | 4 ---- clang/lib/Frontend/CompilerInvocation.cpp | 4 ++++ .../Inputs/TestFramework.framework/Headers/TestFramework.h | 1 + clang/test/Frontend/iframework.c | 3 +++ 6 files changed, 11 insertions(+), 5 deletions(-) create mode 100644 clang/test/Frontend/Inputs/TestFramework.framework/Headers/TestFramework.h create mode 100644 clang/test/Frontend/iframework.c diff --git a/clang/include/clang/Driver/CC1Options.td b/clang/include/clang/Driver/CC1Options.td index 0599e05fc73f..710072510954 100644 --- a/clang/include/clang/Driver/CC1Options.td +++ b/clang/include/clang/Driver/CC1Options.td @@ -639,6 +639,8 @@ def objc_isystem : JoinedOrSeparate<"-objc-isystem">, def objcxx_isystem : JoinedOrSeparate<"-objcxx-isystem">, MetaVarName<"">, HelpText<"Add directory to the ObjC++ SYSTEM include search path">; +def iframework : JoinedOrSeparate<"-iframework">, MetaVarName<"">, + HelpText<"Add directory to SYSTEM framework search path">; def isystem : JoinedOrSeparate<"-isystem">, MetaVarName<"">, HelpText<"Add directory to SYSTEM include search path">; def iwithsysroot : JoinedOrSeparate<"-iwithsysroot">,MetaVarName<"">, diff --git a/clang/include/clang/Driver/Options.td b/clang/include/clang/Driver/Options.td index c8295ea63d28..813509705cc0 100644 --- a/clang/include/clang/Driver/Options.td +++ b/clang/include/clang/Driver/Options.td @@ -517,7 +517,7 @@ def g_Joined : Joined<"-g">, Group; def headerpad__max__install__names : Joined<"-headerpad_max_install_names">; def index_header_map : Flag<"-index-header-map">; def idirafter : JoinedOrSeparate<"-idirafter">, Group; -def iframework : JoinedOrSeparate<"-iframework">, Group; +def iframework : Joined<"-iframework">, Group; def imacros : JoinedOrSeparate<"-imacros">, Group; def image__base : Separate<"-image_base">; def include_ : JoinedOrSeparate<"-include">, Group, EnumName<"include">; diff --git a/clang/lib/Driver/Tools.cpp b/clang/lib/Driver/Tools.cpp index 3a6d737dec22..2dcb61bfb243 100644 --- a/clang/lib/Driver/Tools.cpp +++ b/clang/lib/Driver/Tools.cpp @@ -1437,10 +1437,6 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA, types::ID InputType = Inputs[0].getType(); if (!Args.hasArg(options::OPT_fallow_unsupported)) { Arg *Unsupported; - if ((Unsupported = Args.getLastArg(options::OPT_iframework))) - D.Diag(diag::err_drv_clang_unsupported) - << Unsupported->getOption().getName(); - if (types::isCXX(InputType) && getToolChain().getTriple().isOSDarwin() && getToolChain().getTriple().getArch() == llvm::Triple::x86) { diff --git a/clang/lib/Frontend/CompilerInvocation.cpp b/clang/lib/Frontend/CompilerInvocation.cpp index 6a7d2ac10d44..05d2e692e555 100644 --- a/clang/lib/Frontend/CompilerInvocation.cpp +++ b/clang/lib/Frontend/CompilerInvocation.cpp @@ -1450,6 +1450,10 @@ static void ParseHeaderSearchArgs(HeaderSearchOptions &Opts, ArgList &Args) { OPT_iwithsysroot), ie = Args.filtered_end(); it != ie; ++it) Opts.AddPath((*it)->getValue(Args), frontend::System, true, false, !(*it)->getOption().matches(OPT_iwithsysroot)); + for (arg_iterator it = Args.filtered_begin(OPT_iframework), + ie = Args.filtered_end(); it != ie; ++it) + Opts.AddPath((*it)->getValue(Args), frontend::System, true, true, + true); // Add the paths for the various language specific isystem flags. for (arg_iterator it = Args.filtered_begin(OPT_c_isystem), diff --git a/clang/test/Frontend/Inputs/TestFramework.framework/Headers/TestFramework.h b/clang/test/Frontend/Inputs/TestFramework.framework/Headers/TestFramework.h new file mode 100644 index 000000000000..49048ca45292 --- /dev/null +++ b/clang/test/Frontend/Inputs/TestFramework.framework/Headers/TestFramework.h @@ -0,0 +1 @@ +static int f0(void) {} diff --git a/clang/test/Frontend/iframework.c b/clang/test/Frontend/iframework.c new file mode 100644 index 000000000000..0c241fd4891c --- /dev/null +++ b/clang/test/Frontend/iframework.c @@ -0,0 +1,3 @@ +// RUN: %clang -fsyntax-only -iframework%S/Inputs %s -Xclang -verify + +#include