X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=interface%2Fextract_interface.cc;h=5aa6294bb460397be7165a437abd8208a9a016a4;hb=63fb8a7f484648c3caa25351c8c94ac2395ec563;hp=1e631dcbf5283fb58c5223f59967d19ed003c4e1;hpb=e559c7147a1cb2deb98bf11b742cd13c45e9027d;p=platform%2Fupstream%2Fisl.git diff --git a/interface/extract_interface.cc b/interface/extract_interface.cc index 1e631dc..5aa6294 100644 --- a/interface/extract_interface.cc +++ b/interface/extract_interface.cc @@ -31,6 +31,8 @@ * Sven Verdoolaege. */ +#include "isl_config.h" + #include #include #include @@ -49,7 +51,11 @@ #include #include #include +#ifdef HAVE_BASIC_DIAGNOSTICOPTIONS_H +#include +#else #include +#endif #include #include #include @@ -57,7 +63,6 @@ #include #include -#include "isl_config.h" #include "extract_interface.h" #include "python.h" @@ -140,12 +145,18 @@ static Driver *construct_driver(const char *binary, DiagnosticsEngine &Diags) return new Driver(binary, llvm::sys::getDefaultTargetTriple(), "", false, false, Diags); } -#else +#elif defined(HAVE_ISPRODUCTION) static Driver *construct_driver(const char *binary, DiagnosticsEngine &Diags) { return new Driver(binary, llvm::sys::getDefaultTargetTriple(), "", false, Diags); } +#else +static Driver *construct_driver(const char *binary, DiagnosticsEngine &Diags) +{ + return new Driver(binary, llvm::sys::getDefaultTargetTriple(), + "", Diags); +} #endif /* Create a CompilerInvocation object that stores the command line @@ -188,14 +199,83 @@ static CompilerInvocation *construct_invocation(const char *filename, #endif +#ifdef HAVE_BASIC_DIAGNOSTICOPTIONS_H + +static TextDiagnosticPrinter *construct_printer(void) +{ + return new TextDiagnosticPrinter(llvm::errs(), new DiagnosticOptions()); +} + +#else + +static TextDiagnosticPrinter *construct_printer(void) +{ + DiagnosticOptions DO; + return new TextDiagnosticPrinter(llvm::errs(), DO); +} + +#endif + +#ifdef CREATETARGETINFO_TAKES_POINTER + +static TargetInfo *create_target_info(CompilerInstance *Clang, + DiagnosticsEngine &Diags) +{ + TargetOptions &TO = Clang->getTargetOpts(); + TO.Triple = llvm::sys::getDefaultTargetTriple(); + return TargetInfo::CreateTargetInfo(Diags, &TO); +} + +#else + +static TargetInfo *create_target_info(CompilerInstance *Clang, + DiagnosticsEngine &Diags) +{ + TargetOptions &TO = Clang->getTargetOpts(); + TO.Triple = llvm::sys::getDefaultTargetTriple(); + return TargetInfo::CreateTargetInfo(Diags, TO); +} + +#endif + +#ifdef CREATEDIAGNOSTICS_TAKES_ARG + +static void create_diagnostics(CompilerInstance *Clang) +{ + Clang->createDiagnostics(0, NULL, construct_printer()); +} + +#else + +static void create_diagnostics(CompilerInstance *Clang) +{ + Clang->createDiagnostics(construct_printer()); +} + +#endif + +#ifdef ADDPATH_TAKES_4_ARGUMENTS + +void add_path(HeaderSearchOptions &HSO, string Path) +{ + HSO.AddPath(Path, frontend::Angled, false, false); +} + +#else + +void add_path(HeaderSearchOptions &HSO, string Path) +{ + HSO.AddPath(Path, frontend::Angled, true, false, false); +} + +#endif + int main(int argc, char *argv[]) { llvm::cl::ParseCommandLineOptions(argc, argv); CompilerInstance *Clang = new CompilerInstance(); - DiagnosticOptions DO; - Clang->createDiagnostics(0, NULL, - new TextDiagnosticPrinter(llvm::errs(), DO)); + create_diagnostics(Clang); DiagnosticsEngine &Diags = Clang->getDiagnostics(); Diags.setSuppressSystemWarnings(true); CompilerInvocation *invocation = @@ -204,9 +284,7 @@ int main(int argc, char *argv[]) Clang->setInvocation(invocation); Clang->createFileManager(); Clang->createSourceManager(Clang->getFileManager()); - TargetOptions TO; - TO.Triple = llvm::sys::getDefaultTargetTriple(); - TargetInfo *target = TargetInfo::CreateTargetInfo(Diags, TO); + TargetInfo *target = create_target_info(Clang, Diags); Clang->setTarget(target); CompilerInvocation::setLangDefaults(Clang->getLangOpts(), IK_C, LangStandard::lang_unspecified); @@ -216,7 +294,7 @@ int main(int argc, char *argv[]) HSO.ResourceDir = ResourceDir; for (int i = 0; i < Includes.size(); ++i) - HSO.AddPath(Includes[i], frontend::Angled, true, false, false); + add_path(HSO, Includes[i]); PO.addMacroDef("__isl_give=__attribute__((annotate(\"isl_give\")))"); PO.addMacroDef("__isl_keep=__attribute__((annotate(\"isl_keep\")))");