From 70538df621421ce04b5c5d7e1f5b62d5a7f9fc7a Mon Sep 17 00:00:00 2001 From: dim Date: Sat, 2 Feb 2013 22:28:29 +0000 Subject: 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 --- .../include/clang/Basic/DiagnosticFrontendKinds.td | 2 + .../lib/FrontendTool/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 + lib/clang/libclangstaticanalyzercheckers/Makefile | 2 + lib/clang/libclangstaticanalyzercore/Makefile | 2 + lib/clang/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 b7a8476..d12b5d6 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 c7c55b0..60a264a 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 cfc1554..a77d241 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 298a2eb..0015e3d 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 61c45be..76bf1e5 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 6544805..7597e9c 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 0b851e6..0ddeb53 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 f0efd74..eec941a 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 5252e7c..7aefa7c 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 4950cfa..aae2a05 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 a0e45a9..59b0b54 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 c2813b4..44ba2fb 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 f37979f..f20aa35 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 3ad0e3f..768d43c 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 599a034..dbe9adb 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 3a628d0..80115ee 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 35de008..ffa11b4 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 235fa13..9ced8b4 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 75f68bf..962bbf0 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 96274d9..9536151 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 82ff5a3..9c263f0 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 5c7cd41..9e19f92 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 a28f2f5..d553405 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 c3d0d89..05e6263 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 6ae9251..6a10eaf 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 bd2e0cb..61679a6 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 a3d16f7..eb46736 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 ec88367..1da434c 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 ca7e7d4..67b8fee 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 8ceba69..bb8f0df 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 36e626f..97bc73d3 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 c426680..094e0e7 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 3431b21..1cb9d41 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 8beb583..e65d19c 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 5b597fe..d2010c0 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 e12289b..757b909 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 c0dde71..3ec39c7 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 e989fa5..3752aef 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 ef09370..6d666e5 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 6a1b453..06fcca4 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 ff852d5..682f704 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 73f153b..7275131 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 dc5f294..94aff3e 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 48deadf..b39926a 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 f5fb3c3..0572f8d 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 c33d954..7675a01 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 120b866..4ddb646 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 7cdd982..1c0a4b6 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 c5b96cd..c65c8c8 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 36d3b04..39df7cc 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 d056dc7..c8c8068 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 a97c352..a09da59 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 2a5ef6e..e48b484 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 8310378..03bba0e 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 c1528ae..ac98321 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 d5d5447..02ca4bd 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 e6950127..7543102 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 8dffad0..069cec0 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 b82377e..595d2cc 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 444d672..d0f5b73 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 c140268..252b2d0 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 bcc7aa0..939b257 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 3d2a9dd..a177129 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 85155a8..bc1a7d7 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 a44006c..308f91c 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 bbed6b0..8355e7e 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 8b28602..aea33d3 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 0000000..418b7d6 --- /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 0000000..59b4dec --- /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 6fa9b80..18a768b 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 \ -- cgit v1.1