From df5d2454a3de65e6d384933806fff133d660758f Mon Sep 17 00:00:00 2001 From: Dimitry Andric Date: Sat, 2 Feb 2013 22:28:29 +0000 Subject: [PATCH] Pull in r170135 from upstream clang trunk: Dont use/link ARCMT, StaticAnalyzer and Rewriter to clang when the user specifies not to. Dont build ASTMatchers with Rewriter disabled and StaticAnalyzer when it's disabled. Without all those three, the clang binary shrinks (x86_64) from ~36MB to ~32MB (unstripped). To disable these clang components, and get a smaller clang binary built and installed, set WITHOUT_CLANG_FULL in src.conf(5). During the initial stages of buildworld, those extra components are already disabled automatically, to save some build time. MFC after: 1 week --- .../clang/Basic/DiagnosticFrontendKinds.td | 2 + .../ExecuteCompilerInvocation.cpp | 46 ++++++++++++++++++- lib/clang/Makefile | 25 ++++++---- lib/clang/clang.build.mk | 6 +++ lib/clang/libclanganalysis/Makefile | 2 + lib/clang/libclangarcmigrate/Makefile | 2 + lib/clang/libclangast/Makefile | 2 + lib/clang/libclangbasic/Makefile | 2 + lib/clang/libclangcodegen/Makefile | 2 + lib/clang/libclangdriver/Makefile | 2 + lib/clang/libclangedit/Makefile | 2 + lib/clang/libclangfrontend/Makefile | 2 + lib/clang/libclangfrontendtool/Makefile | 2 + lib/clang/libclanglex/Makefile | 2 + lib/clang/libclangparse/Makefile | 2 + lib/clang/libclangrewritecore/Makefile | 2 + lib/clang/libclangrewritefrontend/Makefile | 2 + lib/clang/libclangsema/Makefile | 2 + lib/clang/libclangserialization/Makefile | 2 + .../libclangstaticanalyzercheckers/Makefile | 2 + lib/clang/libclangstaticanalyzercore/Makefile | 2 + .../libclangstaticanalyzerfrontend/Makefile | 2 + lib/clang/libllvmarchive/Makefile | 2 + lib/clang/libllvmarmasmparser/Makefile | 2 + lib/clang/libllvmarmcodegen/Makefile | 2 + lib/clang/libllvmarmdesc/Makefile | 2 + lib/clang/libllvmarmdisassembler/Makefile | 2 + lib/clang/libllvmarminfo/Makefile | 2 + lib/clang/libllvmarminstprinter/Makefile | 2 + lib/clang/libllvmasmparser/Makefile | 2 + lib/clang/libllvmasmprinter/Makefile | 2 + lib/clang/libllvmbitreader/Makefile | 2 + lib/clang/libllvmbitwriter/Makefile | 2 + lib/clang/libllvmcodegen/Makefile | 2 + lib/clang/libllvmcore/Makefile | 2 + lib/clang/libllvmdebuginfo/Makefile | 2 + lib/clang/libllvmexecutionengine/Makefile | 2 + lib/clang/libllvminstcombine/Makefile | 2 + lib/clang/libllvminstrumentation/Makefile | 2 + lib/clang/libllvminterpreter/Makefile | 2 + lib/clang/libllvmjit/Makefile | 2 + lib/clang/libllvmlinker/Makefile | 2 + lib/clang/libllvmmcdisassembler/Makefile | 2 + lib/clang/libllvmmcparser/Makefile | 2 + lib/clang/libllvmmipsasmparser/Makefile | 2 + lib/clang/libllvmmipscodegen/Makefile | 2 + lib/clang/libllvmmipsdesc/Makefile | 2 + lib/clang/libllvmmipsdisassembler/Makefile | 2 + lib/clang/libllvmmipsinfo/Makefile | 2 + lib/clang/libllvmmipsinstprinter/Makefile | 2 + lib/clang/libllvmobject/Makefile | 2 + lib/clang/libllvmpowerpccodegen/Makefile | 2 + lib/clang/libllvmpowerpcdesc/Makefile | 2 + lib/clang/libllvmpowerpcinfo/Makefile | 2 + lib/clang/libllvmpowerpcinstprinter/Makefile | 2 + lib/clang/libllvmruntimedyld/Makefile | 2 + lib/clang/libllvmselectiondag/Makefile | 2 + lib/clang/libllvmtablegen/Makefile | 2 + lib/clang/libllvmtarget/Makefile | 2 + lib/clang/libllvmvectorize/Makefile | 2 + lib/clang/libllvmx86asmparser/Makefile | 2 + lib/clang/libllvmx86codegen/Makefile | 2 + lib/clang/libllvmx86desc/Makefile | 2 + lib/clang/libllvmx86info/Makefile | 2 + lib/clang/libllvmx86instprinter/Makefile | 2 + lib/clang/libllvmx86utils/Makefile | 2 + share/mk/bsd.own.mk | 5 +- tools/build/options/WITHOUT_CLANG_FULL | 3 ++ tools/build/options/WITH_CLANG_FULL | 3 ++ usr.bin/clang/clang/Makefile | 22 ++++++--- 70 files changed, 218 insertions(+), 18 deletions(-) create mode 100644 tools/build/options/WITHOUT_CLANG_FULL create mode 100644 tools/build/options/WITH_CLANG_FULL diff --git a/contrib/llvm/tools/clang/include/clang/Basic/DiagnosticFrontendKinds.td b/contrib/llvm/tools/clang/include/clang/Basic/DiagnosticFrontendKinds.td index b7a84764391..d12b5d6d63c 100644 --- a/contrib/llvm/tools/clang/include/clang/Basic/DiagnosticFrontendKinds.td +++ b/contrib/llvm/tools/clang/include/clang/Basic/DiagnosticFrontendKinds.td @@ -60,6 +60,8 @@ def warn_fe_cc_log_diagnostics_failure : Warning< "unable to open CC_LOG_DIAGNOSTICS file: %0 (using stderr)">; def err_fe_no_pch_in_dir : Error< "no suitable precompiled header file found in directory '%0'">; +def err_fe_action_not_available : Error< + "action %0 not compiled in">; def warn_fe_serialized_diag_failure : Warning< "unable to open file %0 for serializing diagnostics (%1)">, diff --git a/contrib/llvm/tools/clang/lib/FrontendTool/ExecuteCompilerInvocation.cpp b/contrib/llvm/tools/clang/lib/FrontendTool/ExecuteCompilerInvocation.cpp index c7c55b02114..60a264a615e 100644 --- a/contrib/llvm/tools/clang/lib/FrontendTool/ExecuteCompilerInvocation.cpp +++ b/contrib/llvm/tools/clang/lib/FrontendTool/ExecuteCompilerInvocation.cpp @@ -31,6 +31,7 @@ using namespace clang; static FrontendAction *CreateFrontendBaseAction(CompilerInstance &CI) { using namespace clang::frontend; + StringRef Action("unknown"); switch (CI.getFrontendOpts().ProgramAction) { case ASTDeclList: return new ASTDeclListAction(); @@ -42,12 +43,20 @@ static FrontendAction *CreateFrontendBaseAction(CompilerInstance &CI) { case DumpTokens: return new DumpTokensAction(); case EmitAssembly: return new EmitAssemblyAction(); case EmitBC: return new EmitBCAction(); +#ifdef CLANG_ENABLE_REWRITER case EmitHTML: return new HTMLPrintAction(); +#else + case EmitHTML: Action = "EmitHTML"; break; +#endif case EmitLLVM: return new EmitLLVMAction(); case EmitLLVMOnly: return new EmitLLVMOnlyAction(); case EmitCodeGenOnly: return new EmitCodeGenOnlyAction(); case EmitObj: return new EmitObjAction(); +#ifdef CLANG_ENABLE_REWRITER case FixIt: return new FixItAction(); +#else + case FixIt: Action = "FixIt"; break; +#endif case GenerateModule: return new GenerateModuleAction; case GeneratePCH: return new GeneratePCHAction; case GeneratePTH: return new GeneratePTHAction(); @@ -74,19 +83,46 @@ static FrontendAction *CreateFrontendBaseAction(CompilerInstance &CI) { case PrintDeclContext: return new DeclContextPrintAction(); case PrintPreamble: return new PrintPreambleAction(); case PrintPreprocessedInput: { - if (CI.getPreprocessorOutputOpts().RewriteIncludes) + if (CI.getPreprocessorOutputOpts().RewriteIncludes) { +#ifdef CLANG_ENABLE_REWRITER return new RewriteIncludesAction(); +#else + Action = "RewriteIncludesAction"; + break; +#endif + } return new PrintPreprocessedAction(); } +#ifdef CLANG_ENABLE_REWRITER case RewriteMacros: return new RewriteMacrosAction(); case RewriteObjC: return new RewriteObjCAction(); case RewriteTest: return new RewriteTestAction(); - case RunAnalysis: return new ento::AnalysisAction(); +#else + case RewriteMacros: Action = "RewriteMacros"; break; + case RewriteObjC: Action = "RewriteObjC"; break; + case RewriteTest: Action = "RewriteTest"; break; +#endif +#ifdef CLANG_ENABLE_ARCMT case MigrateSource: return new arcmt::MigrateSourceAction(); +#else + case MigrateSource: Action = "MigrateSource"; break; +#endif +#ifdef CLANG_ENABLE_STATIC_ANALYZER + case RunAnalysis: return new ento::AnalysisAction(); +#else + case RunAnalysis: Action = "RunAnalysis"; break; +#endif case RunPreprocessorOnly: return new PreprocessOnlyAction(); } + +#if !defined(CLANG_ENABLE_ARCMT) || !defined(CLANG_ENABLE_STATIC_ANALYZER) \ + || !defined(CLANG_ENABLE_REWRITER) + CI.getDiagnostics().Report(diag::err_fe_action_not_available) << Action; + return 0; +#else llvm_unreachable("Invalid program action!"); +#endif } static FrontendAction *CreateFrontendAction(CompilerInstance &CI) { @@ -97,10 +133,13 @@ static FrontendAction *CreateFrontendAction(CompilerInstance &CI) { const FrontendOptions &FEOpts = CI.getFrontendOpts(); +#ifdef CLANG_ENABLE_REWRITER if (FEOpts.FixAndRecompile) { Act = new FixItRecompile(Act); } +#endif +#ifdef CLANG_ENABLE_ARCMT // Potentially wrap the base FE action in an ARC Migrate Tool action. switch (FEOpts.ARCMTAction) { case FrontendOptions::ARCMT_None: @@ -124,6 +163,7 @@ static FrontendAction *CreateFrontendAction(CompilerInstance &CI) { FEOpts.ObjCMTAction & ~FrontendOptions::ObjCMT_Literals, FEOpts.ObjCMTAction & ~FrontendOptions::ObjCMT_Subscripting); } +#endif // If there are any AST files to merge, create a frontend action // adaptor to perform the merge. @@ -176,12 +216,14 @@ bool clang::ExecuteCompilerInvocation(CompilerInstance *Clang) { llvm::cl::ParseCommandLineOptions(NumArgs + 1, Args); } +#ifdef CLANG_ENABLE_STATIC_ANALYZER // Honor -analyzer-checker-help. // This should happen AFTER plugins have been loaded! if (Clang->getAnalyzerOpts()->ShowCheckerHelp) { ento::printCheckerHelp(llvm::outs(), Clang->getFrontendOpts().Plugins); return 0; } +#endif // If there were errors in processing arguments, don't do anything else. bool Success = false; diff --git a/lib/clang/Makefile b/lib/clang/Makefile index cfc1554b0ae..a77d241986f 100644 --- a/lib/clang/Makefile +++ b/lib/clang/Makefile @@ -3,8 +3,20 @@ .include .if !make(install) +.if !defined(EARLY_BUILD) && defined(MK_CLANG_FULL) && ${MK_CLANG_FULL} != "no" +_libclangstaticanalyzer= \ + libclangstaticanalyzercheckers \ + libclangstaticanalyzercore \ + libclangstaticanalyzerfrontend +_libclangarcmigrate= \ + libclangarcmigrate +_libclangrewriter= \ + libclangrewritecore \ + libclangrewritefrontend +.endif # !EARLY_BUILD && MK_CLANG_FULL + SUBDIR= libclanganalysis \ - libclangarcmigrate \ + ${_libclangarcmigrate} \ libclangast \ libclangbasic \ libclangcodegen \ @@ -14,13 +26,10 @@ SUBDIR= libclanganalysis \ libclangfrontendtool \ libclanglex \ libclangparse \ - libclangrewritecore \ - libclangrewritefrontend \ + ${_libclangrewriter} \ libclangsema \ libclangserialization \ - libclangstaticanalyzercheckers \ - libclangstaticanalyzercore \ - libclangstaticanalyzerfrontend \ + ${_libclangstaticanalyzer} \ \ libllvmanalysis \ libllvmarchive \ @@ -78,8 +87,8 @@ SUBDIR+=libllvmdebuginfo \ libllvmmcdisassembler \ libllvmmcjit \ libllvmruntimedyld -.endif -.endif +.endif # MK_CLANG_EXTRAS +.endif # !make(install) SUBDIR+= include diff --git a/lib/clang/clang.build.mk b/lib/clang/clang.build.mk index 298a2eb3c98..0015e3d12bd 100644 --- a/lib/clang/clang.build.mk +++ b/lib/clang/clang.build.mk @@ -8,6 +8,12 @@ CFLAGS+= -I${LLVM_SRCS}/include -I${CLANG_SRCS}/include \ -DLLVM_ON_UNIX -DLLVM_ON_FREEBSD \ -D__STDC_LIMIT_MACROS -D__STDC_CONSTANT_MACROS #-DNDEBUG +.if !defined(EARLY_BUILD) && defined(MK_CLANG_FULL) && ${MK_CLANG_FULL} != "no" +CFLAGS+= -DCLANG_ENABLE_ARCMT \ + -DCLANG_ENABLE_REWRITER \ + -DCLANG_ENABLE_STATIC_ANALYZER +.endif # !EARLY_BUILD && MK_CLANG_FULL + # LLVM is not strict aliasing safe as of 12/31/2011 CFLAGS+= -fno-strict-aliasing diff --git a/lib/clang/libclanganalysis/Makefile b/lib/clang/libclanganalysis/Makefile index 61c45be5add..76bf1e5c8db 100644 --- a/lib/clang/libclanganalysis/Makefile +++ b/lib/clang/libclanganalysis/Makefile @@ -1,5 +1,7 @@ # $FreeBSD$ +.include + LIB= clanganalysis SRCDIR= tools/clang/lib/Analysis diff --git a/lib/clang/libclangarcmigrate/Makefile b/lib/clang/libclangarcmigrate/Makefile index 654480530bd..7597e9c67f1 100644 --- a/lib/clang/libclangarcmigrate/Makefile +++ b/lib/clang/libclangarcmigrate/Makefile @@ -1,5 +1,7 @@ # $FreeBSD$ +.include + LIB= clangarcmigrate SRCDIR= tools/clang/lib/ARCMigrate diff --git a/lib/clang/libclangast/Makefile b/lib/clang/libclangast/Makefile index 0b851e616c8..0ddeb53080d 100644 --- a/lib/clang/libclangast/Makefile +++ b/lib/clang/libclangast/Makefile @@ -1,5 +1,7 @@ # $FreeBSD$ +.include + LIB= clangast SRCDIR= tools/clang/lib/AST diff --git a/lib/clang/libclangbasic/Makefile b/lib/clang/libclangbasic/Makefile index f0efd744366..eec941a2fe1 100644 --- a/lib/clang/libclangbasic/Makefile +++ b/lib/clang/libclangbasic/Makefile @@ -1,5 +1,7 @@ # $FreeBSD$ +.include + LIB= clangbasic SRCDIR= tools/clang/lib/Basic diff --git a/lib/clang/libclangcodegen/Makefile b/lib/clang/libclangcodegen/Makefile index 5252e7cd40d..7aefa7c6448 100644 --- a/lib/clang/libclangcodegen/Makefile +++ b/lib/clang/libclangcodegen/Makefile @@ -1,5 +1,7 @@ # $FreeBSD$ +.include + LIB= clangcodegen SRCDIR= tools/clang/lib/CodeGen diff --git a/lib/clang/libclangdriver/Makefile b/lib/clang/libclangdriver/Makefile index 4950cface39..aae2a057f58 100644 --- a/lib/clang/libclangdriver/Makefile +++ b/lib/clang/libclangdriver/Makefile @@ -1,5 +1,7 @@ # $FreeBSD$ +.include + LIB= clangdriver SRCDIR= tools/clang/lib/Driver diff --git a/lib/clang/libclangedit/Makefile b/lib/clang/libclangedit/Makefile index a0e45a9c43d..59b0b54e4e0 100644 --- a/lib/clang/libclangedit/Makefile +++ b/lib/clang/libclangedit/Makefile @@ -1,5 +1,7 @@ # $FreeBSD$ +.include + LIB= clangedit SRCDIR= tools/clang/lib/Edit diff --git a/lib/clang/libclangfrontend/Makefile b/lib/clang/libclangfrontend/Makefile index c2813b4caef..44ba2fb7432 100644 --- a/lib/clang/libclangfrontend/Makefile +++ b/lib/clang/libclangfrontend/Makefile @@ -1,5 +1,7 @@ # $FreeBSD$ +.include + LIB= clangfrontend SRCDIR= tools/clang/lib/Frontend diff --git a/lib/clang/libclangfrontendtool/Makefile b/lib/clang/libclangfrontendtool/Makefile index f37979f9a8c..f20aa35a11a 100644 --- a/lib/clang/libclangfrontendtool/Makefile +++ b/lib/clang/libclangfrontendtool/Makefile @@ -1,5 +1,7 @@ # $FreeBSD$ +.include + LIB= clangfrontendtool SRCDIR= tools/clang/lib/FrontendTool diff --git a/lib/clang/libclanglex/Makefile b/lib/clang/libclanglex/Makefile index 3ad0e3f78c2..768d43c1e79 100644 --- a/lib/clang/libclanglex/Makefile +++ b/lib/clang/libclanglex/Makefile @@ -1,5 +1,7 @@ # $FreeBSD$ +.include + LIB= clanglex SRCDIR= tools/clang/lib/Lex diff --git a/lib/clang/libclangparse/Makefile b/lib/clang/libclangparse/Makefile index 599a034cfbc..dbe9adb03fb 100644 --- a/lib/clang/libclangparse/Makefile +++ b/lib/clang/libclangparse/Makefile @@ -1,5 +1,7 @@ # $FreeBSD$ +.include + LIB= clangparse SRCDIR= tools/clang/lib/Parse diff --git a/lib/clang/libclangrewritecore/Makefile b/lib/clang/libclangrewritecore/Makefile index 3a628d0a9a6..80115ee0189 100644 --- a/lib/clang/libclangrewritecore/Makefile +++ b/lib/clang/libclangrewritecore/Makefile @@ -1,5 +1,7 @@ # $FreeBSD$ +.include + LIB= clangrewritecore SRCDIR= tools/clang/lib/Rewrite/Core diff --git a/lib/clang/libclangrewritefrontend/Makefile b/lib/clang/libclangrewritefrontend/Makefile index 35de008b565..ffa11b4fe32 100644 --- a/lib/clang/libclangrewritefrontend/Makefile +++ b/lib/clang/libclangrewritefrontend/Makefile @@ -1,5 +1,7 @@ # $FreeBSD$ +.include + LIB= clangrewritefrontend SRCDIR= tools/clang/lib/Rewrite/Frontend diff --git a/lib/clang/libclangsema/Makefile b/lib/clang/libclangsema/Makefile index 235fa13c349..9ced8b4c689 100644 --- a/lib/clang/libclangsema/Makefile +++ b/lib/clang/libclangsema/Makefile @@ -1,5 +1,7 @@ # $FreeBSD$ +.include + LIB= clangsema SRCDIR= tools/clang/lib/Sema diff --git a/lib/clang/libclangserialization/Makefile b/lib/clang/libclangserialization/Makefile index 75f68bf74e6..962bbf09b5c 100644 --- a/lib/clang/libclangserialization/Makefile +++ b/lib/clang/libclangserialization/Makefile @@ -1,5 +1,7 @@ # $FreeBSD$ +.include + LIB= clangserialization SRCDIR= tools/clang/lib/Serialization diff --git a/lib/clang/libclangstaticanalyzercheckers/Makefile b/lib/clang/libclangstaticanalyzercheckers/Makefile index 96274d997f5..95361519d8d 100644 --- a/lib/clang/libclangstaticanalyzercheckers/Makefile +++ b/lib/clang/libclangstaticanalyzercheckers/Makefile @@ -1,5 +1,7 @@ # $FreeBSD$ +.include + LIB= clangstaticanalyzercheckers SRCDIR= tools/clang/lib/StaticAnalyzer/Checkers diff --git a/lib/clang/libclangstaticanalyzercore/Makefile b/lib/clang/libclangstaticanalyzercore/Makefile index 82ff5a3ca55..9c263f03d5b 100644 --- a/lib/clang/libclangstaticanalyzercore/Makefile +++ b/lib/clang/libclangstaticanalyzercore/Makefile @@ -1,5 +1,7 @@ # $FreeBSD$ +.include + LIB= clangstaticanalyzercore SRCDIR= tools/clang/lib/StaticAnalyzer/Core diff --git a/lib/clang/libclangstaticanalyzerfrontend/Makefile b/lib/clang/libclangstaticanalyzerfrontend/Makefile index 5c7cd4109fa..9e19f923d7a 100644 --- a/lib/clang/libclangstaticanalyzerfrontend/Makefile +++ b/lib/clang/libclangstaticanalyzerfrontend/Makefile @@ -1,5 +1,7 @@ # $FreeBSD$ +.include + LIB= clangstaticanalyzerfrontend SRCDIR= tools/clang/lib/StaticAnalyzer/Frontend diff --git a/lib/clang/libllvmarchive/Makefile b/lib/clang/libllvmarchive/Makefile index a28f2f510a6..d5534050083 100644 --- a/lib/clang/libllvmarchive/Makefile +++ b/lib/clang/libllvmarchive/Makefile @@ -1,5 +1,7 @@ # $FreeBSD$ +.include + LIB= llvmarchive SRCDIR= lib/Archive diff --git a/lib/clang/libllvmarmasmparser/Makefile b/lib/clang/libllvmarmasmparser/Makefile index c3d0d890232..05e6263aa89 100644 --- a/lib/clang/libllvmarmasmparser/Makefile +++ b/lib/clang/libllvmarmasmparser/Makefile @@ -1,5 +1,7 @@ # $FreeBSD$ +.include + LIB= llvmarmasmparser SRCDIR= lib/Target/ARM/AsmParser diff --git a/lib/clang/libllvmarmcodegen/Makefile b/lib/clang/libllvmarmcodegen/Makefile index 6ae9251eb94..6a10eaf0825 100644 --- a/lib/clang/libllvmarmcodegen/Makefile +++ b/lib/clang/libllvmarmcodegen/Makefile @@ -1,5 +1,7 @@ # $FreeBSD$ +.include + LIB= llvmarmcodegen SRCDIR= lib/Target/ARM diff --git a/lib/clang/libllvmarmdesc/Makefile b/lib/clang/libllvmarmdesc/Makefile index bd2e0cb96b7..61679a66668 100644 --- a/lib/clang/libllvmarmdesc/Makefile +++ b/lib/clang/libllvmarmdesc/Makefile @@ -1,5 +1,7 @@ # $FreeBSD$ +.include + LIB= llvmarmdesc SRCDIR= lib/Target/ARM/MCTargetDesc diff --git a/lib/clang/libllvmarmdisassembler/Makefile b/lib/clang/libllvmarmdisassembler/Makefile index a3d16f78416..eb4673672b1 100644 --- a/lib/clang/libllvmarmdisassembler/Makefile +++ b/lib/clang/libllvmarmdisassembler/Makefile @@ -1,5 +1,7 @@ # $FreeBSD$ +.include + LIB= llvmarmdisassembler SRCDIR= lib/Target/ARM/Disassembler diff --git a/lib/clang/libllvmarminfo/Makefile b/lib/clang/libllvmarminfo/Makefile index ec88367bc32..1da434c71a0 100644 --- a/lib/clang/libllvmarminfo/Makefile +++ b/lib/clang/libllvmarminfo/Makefile @@ -1,5 +1,7 @@ # $FreeBSD$ +.include + LIB= llvmarminfo SRCDIR= lib/Target/ARM/TargetInfo diff --git a/lib/clang/libllvmarminstprinter/Makefile b/lib/clang/libllvmarminstprinter/Makefile index ca7e7d4ff0a..67b8fee2696 100644 --- a/lib/clang/libllvmarminstprinter/Makefile +++ b/lib/clang/libllvmarminstprinter/Makefile @@ -1,5 +1,7 @@ # $FreeBSD$ +.include + LIB= llvmarminstprinter SRCDIR= lib/Target/ARM/InstPrinter diff --git a/lib/clang/libllvmasmparser/Makefile b/lib/clang/libllvmasmparser/Makefile index 8ceba693492..bb8f0dfda23 100644 --- a/lib/clang/libllvmasmparser/Makefile +++ b/lib/clang/libllvmasmparser/Makefile @@ -1,5 +1,7 @@ # $FreeBSD$ +.include + LIB= llvmasmparser SRCDIR= lib/AsmParser diff --git a/lib/clang/libllvmasmprinter/Makefile b/lib/clang/libllvmasmprinter/Makefile index 36e626fc342..97bc73d3f41 100644 --- a/lib/clang/libllvmasmprinter/Makefile +++ b/lib/clang/libllvmasmprinter/Makefile @@ -1,5 +1,7 @@ # $FreeBSD$ +.include + LIB= llvmasmprinter SRCDIR= lib/CodeGen/AsmPrinter diff --git a/lib/clang/libllvmbitreader/Makefile b/lib/clang/libllvmbitreader/Makefile index c426680b32c..094e0e77330 100644 --- a/lib/clang/libllvmbitreader/Makefile +++ b/lib/clang/libllvmbitreader/Makefile @@ -1,5 +1,7 @@ # $FreeBSD$ +.include + LIB= llvmbitreader SRCDIR= lib/Bitcode/Reader diff --git a/lib/clang/libllvmbitwriter/Makefile b/lib/clang/libllvmbitwriter/Makefile index 3431b219886..1cb9d411281 100644 --- a/lib/clang/libllvmbitwriter/Makefile +++ b/lib/clang/libllvmbitwriter/Makefile @@ -1,5 +1,7 @@ # $FreeBSD$ +.include + LIB= llvmbitwriter SRCDIR= lib/Bitcode/Writer diff --git a/lib/clang/libllvmcodegen/Makefile b/lib/clang/libllvmcodegen/Makefile index 8beb5834505..e65d19ce275 100644 --- a/lib/clang/libllvmcodegen/Makefile +++ b/lib/clang/libllvmcodegen/Makefile @@ -1,5 +1,7 @@ # $FreeBSD$ +.include + LIB= llvmcodegen SRCDIR= lib/CodeGen diff --git a/lib/clang/libllvmcore/Makefile b/lib/clang/libllvmcore/Makefile index 5b597fedf9a..d2010c0d97d 100644 --- a/lib/clang/libllvmcore/Makefile +++ b/lib/clang/libllvmcore/Makefile @@ -1,5 +1,7 @@ # $FreeBSD$ +.include + LIB= llvmcore SRCDIR= lib/VMCore diff --git a/lib/clang/libllvmdebuginfo/Makefile b/lib/clang/libllvmdebuginfo/Makefile index e12289b7c5e..757b9097a38 100644 --- a/lib/clang/libllvmdebuginfo/Makefile +++ b/lib/clang/libllvmdebuginfo/Makefile @@ -1,5 +1,7 @@ # $FreeBSD$ +.include + LIB= llvmdebuginfo SRCDIR= lib/DebugInfo diff --git a/lib/clang/libllvmexecutionengine/Makefile b/lib/clang/libllvmexecutionengine/Makefile index c0dde71debb..3ec39c78658 100644 --- a/lib/clang/libllvmexecutionengine/Makefile +++ b/lib/clang/libllvmexecutionengine/Makefile @@ -1,5 +1,7 @@ # $FreeBSD$ +.include + LIB= llvmexecutionengine SRCDIR= lib/ExecutionEngine diff --git a/lib/clang/libllvminstcombine/Makefile b/lib/clang/libllvminstcombine/Makefile index e989fa5af01..3752aef1987 100644 --- a/lib/clang/libllvminstcombine/Makefile +++ b/lib/clang/libllvminstcombine/Makefile @@ -1,5 +1,7 @@ # $FreeBSD$ +.include + LIB= llvminstcombine SRCDIR= lib/Transforms/InstCombine diff --git a/lib/clang/libllvminstrumentation/Makefile b/lib/clang/libllvminstrumentation/Makefile index ef093702d2d..6d666e518dc 100644 --- a/lib/clang/libllvminstrumentation/Makefile +++ b/lib/clang/libllvminstrumentation/Makefile @@ -1,5 +1,7 @@ # $FreeBSD$ +.include + LIB= llvminstrumentation SRCDIR= lib/Transforms/Instrumentation diff --git a/lib/clang/libllvminterpreter/Makefile b/lib/clang/libllvminterpreter/Makefile index 6a1b453459b..06fcca4fb9f 100644 --- a/lib/clang/libllvminterpreter/Makefile +++ b/lib/clang/libllvminterpreter/Makefile @@ -1,5 +1,7 @@ # $FreeBSD$ +.include + LIB= llvminterpreter SRCDIR= lib/ExecutionEngine/Interpreter diff --git a/lib/clang/libllvmjit/Makefile b/lib/clang/libllvmjit/Makefile index ff852d5047b..682f704b441 100644 --- a/lib/clang/libllvmjit/Makefile +++ b/lib/clang/libllvmjit/Makefile @@ -1,5 +1,7 @@ # $FreeBSD$ +.include + LIB= llvmjit SRCDIR= lib/ExecutionEngine/JIT diff --git a/lib/clang/libllvmlinker/Makefile b/lib/clang/libllvmlinker/Makefile index 73f153b378f..7275131fc6a 100644 --- a/lib/clang/libllvmlinker/Makefile +++ b/lib/clang/libllvmlinker/Makefile @@ -1,5 +1,7 @@ # $FreeBSD$ +.include + LIB= llvmlinker SRCDIR= lib/Linker diff --git a/lib/clang/libllvmmcdisassembler/Makefile b/lib/clang/libllvmmcdisassembler/Makefile index dc5f29437e0..94aff3e9057 100644 --- a/lib/clang/libllvmmcdisassembler/Makefile +++ b/lib/clang/libllvmmcdisassembler/Makefile @@ -1,5 +1,7 @@ # $FreeBSD$ +.include + LIB= llvmmcdisassembler SRCDIR= lib/MC/MCDisassembler diff --git a/lib/clang/libllvmmcparser/Makefile b/lib/clang/libllvmmcparser/Makefile index 48deadfee43..b39926a0d71 100644 --- a/lib/clang/libllvmmcparser/Makefile +++ b/lib/clang/libllvmmcparser/Makefile @@ -1,5 +1,7 @@ # $FreeBSD$ +.include + LIB= llvmmcparser SRCDIR= lib/MC/MCParser diff --git a/lib/clang/libllvmmipsasmparser/Makefile b/lib/clang/libllvmmipsasmparser/Makefile index f5fb3c35a06..0572f8d225b 100644 --- a/lib/clang/libllvmmipsasmparser/Makefile +++ b/lib/clang/libllvmmipsasmparser/Makefile @@ -1,5 +1,7 @@ # $FreeBSD$ +.include + LIB= llvmmipsasmparser SRCDIR= lib/Target/Mips/AsmParser diff --git a/lib/clang/libllvmmipscodegen/Makefile b/lib/clang/libllvmmipscodegen/Makefile index c33d9548396..7675a01666c 100644 --- a/lib/clang/libllvmmipscodegen/Makefile +++ b/lib/clang/libllvmmipscodegen/Makefile @@ -1,5 +1,7 @@ # $FreeBSD$ +.include + LIB= llvmmipscodegen SRCDIR= lib/Target/Mips diff --git a/lib/clang/libllvmmipsdesc/Makefile b/lib/clang/libllvmmipsdesc/Makefile index 120b8663495..4ddb6463536 100644 --- a/lib/clang/libllvmmipsdesc/Makefile +++ b/lib/clang/libllvmmipsdesc/Makefile @@ -1,5 +1,7 @@ # $FreeBSD$ +.include + LIB= llvmmipsdesc SRCDIR= lib/Target/Mips/MCTargetDesc diff --git a/lib/clang/libllvmmipsdisassembler/Makefile b/lib/clang/libllvmmipsdisassembler/Makefile index 7cdd982ca83..1c0a4b66fb4 100644 --- a/lib/clang/libllvmmipsdisassembler/Makefile +++ b/lib/clang/libllvmmipsdisassembler/Makefile @@ -1,5 +1,7 @@ # $FreeBSD$ +.include + LIB= llvmmipsdisassembler SRCDIR= lib/Target/Mips/Disassembler diff --git a/lib/clang/libllvmmipsinfo/Makefile b/lib/clang/libllvmmipsinfo/Makefile index c5b96cda11d..c65c8c86f74 100644 --- a/lib/clang/libllvmmipsinfo/Makefile +++ b/lib/clang/libllvmmipsinfo/Makefile @@ -1,5 +1,7 @@ # $FreeBSD$ +.include + LIB= llvmmipsinfo SRCDIR= lib/Target/Mips/TargetInfo diff --git a/lib/clang/libllvmmipsinstprinter/Makefile b/lib/clang/libllvmmipsinstprinter/Makefile index 36d3b047090..39df7cc59ef 100644 --- a/lib/clang/libllvmmipsinstprinter/Makefile +++ b/lib/clang/libllvmmipsinstprinter/Makefile @@ -1,5 +1,7 @@ # $FreeBSD$ +.include + LIB= llvmmipsinstprinter SRCDIR= lib/Target/Mips/InstPrinter diff --git a/lib/clang/libllvmobject/Makefile b/lib/clang/libllvmobject/Makefile index d056dc7c15d..c8c8068ed3c 100644 --- a/lib/clang/libllvmobject/Makefile +++ b/lib/clang/libllvmobject/Makefile @@ -1,5 +1,7 @@ # $FreeBSD$ +.include + LIB= llvmobject SRCDIR= lib/Object diff --git a/lib/clang/libllvmpowerpccodegen/Makefile b/lib/clang/libllvmpowerpccodegen/Makefile index a97c3528c13..a09da599a9b 100644 --- a/lib/clang/libllvmpowerpccodegen/Makefile +++ b/lib/clang/libllvmpowerpccodegen/Makefile @@ -1,5 +1,7 @@ # $FreeBSD$ +.include + LIB= llvmpowerpccodegen SRCDIR= lib/Target/PowerPC diff --git a/lib/clang/libllvmpowerpcdesc/Makefile b/lib/clang/libllvmpowerpcdesc/Makefile index 2a5ef6eabf6..e48b484d00f 100644 --- a/lib/clang/libllvmpowerpcdesc/Makefile +++ b/lib/clang/libllvmpowerpcdesc/Makefile @@ -1,5 +1,7 @@ # $FreeBSD$ +.include + LIB= llvmpowerpcdesc SRCDIR= lib/Target/PowerPC/MCTargetDesc diff --git a/lib/clang/libllvmpowerpcinfo/Makefile b/lib/clang/libllvmpowerpcinfo/Makefile index 8310378a9e2..03bba0e7293 100644 --- a/lib/clang/libllvmpowerpcinfo/Makefile +++ b/lib/clang/libllvmpowerpcinfo/Makefile @@ -1,5 +1,7 @@ # $FreeBSD$ +.include + LIB= llvmpowerpcinfo SRCDIR= lib/Target/PowerPC/TargetInfo diff --git a/lib/clang/libllvmpowerpcinstprinter/Makefile b/lib/clang/libllvmpowerpcinstprinter/Makefile index c1528aee9b0..ac98321db91 100644 --- a/lib/clang/libllvmpowerpcinstprinter/Makefile +++ b/lib/clang/libllvmpowerpcinstprinter/Makefile @@ -1,5 +1,7 @@ # $FreeBSD$ +.include + LIB= llvmpowerpcinstprinter SRCDIR= lib/Target/PowerPC/InstPrinter diff --git a/lib/clang/libllvmruntimedyld/Makefile b/lib/clang/libllvmruntimedyld/Makefile index d5d5447e8e9..02ca4bd0f1a 100644 --- a/lib/clang/libllvmruntimedyld/Makefile +++ b/lib/clang/libllvmruntimedyld/Makefile @@ -1,5 +1,7 @@ # $FreeBSD$ +.include + LIB= llvmruntimedyld SRCDIR= lib/ExecutionEngine/RuntimeDyld diff --git a/lib/clang/libllvmselectiondag/Makefile b/lib/clang/libllvmselectiondag/Makefile index e6950127344..754310286dc 100644 --- a/lib/clang/libllvmselectiondag/Makefile +++ b/lib/clang/libllvmselectiondag/Makefile @@ -1,5 +1,7 @@ # $FreeBSD$ +.include + LIB= llvmselectiondag SRCDIR= lib/CodeGen/SelectionDAG diff --git a/lib/clang/libllvmtablegen/Makefile b/lib/clang/libllvmtablegen/Makefile index 8dffad0c22b..069cec0b0e3 100644 --- a/lib/clang/libllvmtablegen/Makefile +++ b/lib/clang/libllvmtablegen/Makefile @@ -1,5 +1,7 @@ # $FreeBSD$ +.include + LIB= llvmtablegen SRCDIR= lib/TableGen diff --git a/lib/clang/libllvmtarget/Makefile b/lib/clang/libllvmtarget/Makefile index b82377e0e00..595d2ccbc50 100644 --- a/lib/clang/libllvmtarget/Makefile +++ b/lib/clang/libllvmtarget/Makefile @@ -1,5 +1,7 @@ # $FreeBSD$ +.include + LIB= llvmtarget SRCDIR= lib/Target diff --git a/lib/clang/libllvmvectorize/Makefile b/lib/clang/libllvmvectorize/Makefile index 444d672c353..d0f5b73fd5e 100644 --- a/lib/clang/libllvmvectorize/Makefile +++ b/lib/clang/libllvmvectorize/Makefile @@ -1,5 +1,7 @@ # $FreeBSD$ +.include + LIB= llvmvectorize SRCDIR= lib/Transforms/Vectorize diff --git a/lib/clang/libllvmx86asmparser/Makefile b/lib/clang/libllvmx86asmparser/Makefile index c1402688d3a..252b2d09a7e 100644 --- a/lib/clang/libllvmx86asmparser/Makefile +++ b/lib/clang/libllvmx86asmparser/Makefile @@ -1,5 +1,7 @@ # $FreeBSD$ +.include + LIB= llvmx86asmparser SRCDIR= lib/Target/X86/AsmParser diff --git a/lib/clang/libllvmx86codegen/Makefile b/lib/clang/libllvmx86codegen/Makefile index bcc7aa03383..939b257ffb9 100644 --- a/lib/clang/libllvmx86codegen/Makefile +++ b/lib/clang/libllvmx86codegen/Makefile @@ -1,5 +1,7 @@ # $FreeBSD$ +.include + LIB= llvmx86codegen SRCDIR= lib/Target/X86 diff --git a/lib/clang/libllvmx86desc/Makefile b/lib/clang/libllvmx86desc/Makefile index 3d2a9dd9bfd..a1771293738 100644 --- a/lib/clang/libllvmx86desc/Makefile +++ b/lib/clang/libllvmx86desc/Makefile @@ -1,5 +1,7 @@ # $FreeBSD$ +.include + LIB= llvmx86desc SRCDIR= lib/Target/X86/MCTargetDesc diff --git a/lib/clang/libllvmx86info/Makefile b/lib/clang/libllvmx86info/Makefile index 85155a88337..bc1a7d7efbd 100644 --- a/lib/clang/libllvmx86info/Makefile +++ b/lib/clang/libllvmx86info/Makefile @@ -1,5 +1,7 @@ # $FreeBSD$ +.include + LIB= llvmx86info SRCDIR= lib/Target/X86/TargetInfo diff --git a/lib/clang/libllvmx86instprinter/Makefile b/lib/clang/libllvmx86instprinter/Makefile index a44006cc32e..308f91c8020 100644 --- a/lib/clang/libllvmx86instprinter/Makefile +++ b/lib/clang/libllvmx86instprinter/Makefile @@ -1,5 +1,7 @@ # $FreeBSD$ +.include + LIB= llvmx86instprinter SRCDIR= lib/Target/X86/InstPrinter diff --git a/lib/clang/libllvmx86utils/Makefile b/lib/clang/libllvmx86utils/Makefile index bbed6b0cf04..8355e7e7ccf 100644 --- a/lib/clang/libllvmx86utils/Makefile +++ b/lib/clang/libllvmx86utils/Makefile @@ -1,5 +1,7 @@ # $FreeBSD$ +.include + LIB= llvmx86utils SRCDIR= lib/Target/X86/Utils diff --git a/share/mk/bsd.own.mk b/share/mk/bsd.own.mk index 8b28602995f..aea33d3eae7 100644 --- a/share/mk/bsd.own.mk +++ b/share/mk/bsd.own.mk @@ -391,9 +391,9 @@ __T=${MACHINE_ARCH} .endif # Clang is only for x86 and powerpc right now, by default. .if ${__T} == "amd64" || ${__T} == "i386" || ${__T:Mpowerpc*} -__DEFAULT_YES_OPTIONS+=CLANG +__DEFAULT_YES_OPTIONS+=CLANG CLANG_FULL .else -__DEFAULT_NO_OPTIONS+=CLANG +__DEFAULT_NO_OPTIONS+=CLANG CLANG_FULL .endif # Clang the default system compiler only on x86. .if ${__T} == "amd64" || ${__T} == "i386" @@ -524,6 +524,7 @@ MK_GDB:= no .if ${MK_CLANG} == "no" MK_CLANG_EXTRAS:= no +MK_CLANG_FULL:= no MK_CLANG_IS_CC:= no .endif diff --git a/tools/build/options/WITHOUT_CLANG_FULL b/tools/build/options/WITHOUT_CLANG_FULL new file mode 100644 index 00000000000..418b7d657f6 --- /dev/null +++ b/tools/build/options/WITHOUT_CLANG_FULL @@ -0,0 +1,3 @@ +.\" $FreeBSD$ +Set to avoid building the ARCMigrate, Rewriter and StaticAnalyzer components of +the Clang C/C++ compiler. diff --git a/tools/build/options/WITH_CLANG_FULL b/tools/build/options/WITH_CLANG_FULL new file mode 100644 index 00000000000..59b4dec6fd6 --- /dev/null +++ b/tools/build/options/WITH_CLANG_FULL @@ -0,0 +1,3 @@ +.\" $FreeBSD$ +Set to build the ARCMigrate, Rewriter and StaticAnalyzer components of the +Clang C/C++ compiler. diff --git a/usr.bin/clang/clang/Makefile b/usr.bin/clang/clang/Makefile index 6fa9b802d8e..18a768be849 100644 --- a/usr.bin/clang/clang/Makefile +++ b/usr.bin/clang/clang/Makefile @@ -35,6 +35,19 @@ TGHDRS= CC1AsOptions \ DiagnosticLexKinds \ DiagnosticSemaKinds \ Options + +.if !defined(EARLY_BUILD) && defined(MK_CLANG_FULL) && ${MK_CLANG_FULL} != "no" +_clangstaticanalyzer= \ + clangstaticanalyzerfrontend \ + clangstaticanalyzercheckers \ + clangstaticanalyzercore +_clangarcmigrate= \ + clangarcmigrate +_clangrewriter= \ + clangrewritefrontend \ + clangrewritecore +.endif # !EARLY_BUILD && MK_CLANG_FULL + LIBDEPS=clangfrontendtool \ clangfrontend \ clangdriver \ @@ -42,13 +55,10 @@ LIBDEPS=clangfrontendtool \ clangcodegen \ clangparse \ clangsema \ - clangstaticanalyzerfrontend \ - clangstaticanalyzercheckers \ - clangstaticanalyzercore \ + ${_clangstaticanalyzer} \ clanganalysis \ - clangarcmigrate \ - clangrewritefrontend \ - clangrewritecore \ + ${_clangarcmigrate} \ + ${_clangrewriter} \ clangedit \ clangast \ clanglex \ -- 2.45.0