diff options
author | Ivan Donchevskii <ivan.donchevskii@qt.io> | 2018-01-04 08:59:28 +0100 |
---|---|---|
committer | Ivan Donchevskii <ivan.donchevskii@qt.io> | 2018-01-04 11:30:26 +0000 |
commit | 4f9b664d131927717860a8e42f371839af5583f0 (patch) | |
tree | ce8c25da82196a6c84e9e5ea7785adda02fc1992 /dist | |
parent | f8f882ecdf1b3a4a87ed7dcabbd3eeedcaaf0374 (diff) |
Clang: update patches for build with clazy
Clazy will now be a part of clang-tools-extra during
the build process which will allow to build clang one time.
Change-Id: Id506db267f4a1f0f0e8351ba21f1bc70a4555556
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@qt.io>
Diffstat (limited to 'dist')
4 files changed, 61 insertions, 134 deletions
diff --git a/dist/clang/patches/QTCREATORBUG-15157_Link-with-clazy.patch b/dist/clang/patches/QTCREATORBUG-15157_Link-with-clazy.patch deleted file mode 100644 index e7489ee1b7d..00000000000 --- a/dist/clang/patches/QTCREATORBUG-15157_Link-with-clazy.patch +++ /dev/null @@ -1,134 +0,0 @@ -diff --git a/lib/Transforms/CMakeLists.txt b/lib/Transforms/CMakeLists.txt -index 67bdeb27212..7fcddb15904 100644 ---- a/lib/Transforms/CMakeLists.txt -+++ b/lib/Transforms/CMakeLists.txt -@@ -4,6 +4,5 @@ add_subdirectory(InstCombine) - add_subdirectory(Scalar) - add_subdirectory(IPO) - add_subdirectory(Vectorize) --add_subdirectory(Hello) - add_subdirectory(ObjCARC) - add_subdirectory(Coroutines) - -diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt -index 124f0c72fd7..fdff2ffe6d4 100644 ---- a/test/CMakeLists.txt -+++ b/test/CMakeLists.txt -@@ -29,7 +29,6 @@ endif() - set(LLVM_TEST_DEPENDS - BugpointPasses - FileCheck -- LLVMHello - UnitTests - bugpoint - count -diff --git a/tools/clang/tools/libclang/CMakeLists.txt b/tools/clang/tools/libclang/CMakeLists.txt -index 2dd6703076..2ef48266ac 100644 ---- a/tools/clang/tools/libclang/CMakeLists.txt -+++ b/tools/clang/tools/libclang/CMakeLists.txt -@@ -19,6 +19,7 @@ set(SOURCES - CXString.cpp - CXType.cpp - Indexing.cpp -+ LinkClazy.cpp - - ADDITIONAL_HEADERS - CIndexDiagnostic.h -@@ -53,6 +54,14 @@ if (TARGET clangTidyPlugin) - list(APPEND LIBS clangIncludeFixerPlugin) - endif () - -+option(CLANG_ENABLE_CLAZY "Build libclang with clazy" OFF) -+ -+if (CLANG_ENABLE_CLAZY) -+ add_definitions(-DENABLE_CLAZY) -+ link_directories(${CMAKE_INSTALL_PREFIX}/lib ${CMAKE_INSTALL_PREFIX}/lib64) -+ list(APPEND LIBS ClangLazy clangRewriteFrontend) -+endif() -+ - find_library(DL_LIBRARY_PATH dl) - if (DL_LIBRARY_PATH) - list(APPEND LIBS dl) -diff --git a/tools/clang/tools/libclang/LinkClazy.cpp b/tools/clang/tools/libclang/LinkClazy.cpp -new file mode 100644 ---- /dev/null -+++ b/tools/clang/tools/libclang/LinkClazy.cpp -@@ -0,0 +1,78 @@ -+#ifdef ENABLE_CLAZY -+extern volatile int ClazyPluginAnchorSource; -+static int ClazyPluginAnchorDestination = ClazyPluginAnchorSource; -+ -+#define REGISTER_CHECK_WITH_FLAGS(CHECK_NAME, CLASS_NAME, LEVEL, OPTIONS) \ -+ extern volatile int ClazyAnchor_##CLASS_NAME; \ -+ volatile int ClazyAnchorDestination_##CLASS_NAME = ClazyAnchor_##CLASS_NAME; -+#define REGISTER_CHECK(CHECK_NAME, CLASS_NAME, LEVEL) \ -+ extern volatile int ClazyAnchor_##CLASS_NAME; \ -+ static int ClazyAnchorDestination_##CLASS_NAME = ClazyAnchor_##CLASS_NAME; -+ -+REGISTER_CHECK("inefficient-qlist", InefficientQList, HiddenCheckLevel) -+REGISTER_CHECK("isempty-vs-count", IsEmptyVSCount, HiddenCheckLevel) -+REGISTER_CHECK(s_checkName, Qt4_QStringFromArray, HiddenCheckLevel) -+REGISTER_CHECK("tr-non-literal", TrNonLiteral, HiddenCheckLevel) -+REGISTER_CHECK("connect-non-signal", ConnectNonSignal, CheckLevel0) -+REGISTER_CHECK("connect-not-normalized", ConnectNotNormalized, CheckLevel0) -+REGISTER_CHECK("container-anti-pattern", ContainerAntiPattern, CheckLevel0) -+REGISTER_CHECK("lambda-in-connect", LambdaInConnect, CheckLevel0) -+REGISTER_CHECK("mutable-container-key", MutableContainerKey, CheckLevel0) -+REGISTER_CHECK("qcolor-from-literal", QColorFromLiteral, CheckLevel0) -+REGISTER_CHECK(s_checkName, QDateTimeUtc, CheckLevel0) -+REGISTER_CHECK_WITH_FLAGS("qenums", Qenums, CheckLevel0, RegisteredCheck::Option_Qt4Incompatible) -+REGISTER_CHECK("qfileinfo-exists", QFileInfoExists, CheckLevel0) -+REGISTER_CHECK_WITH_FLAGS(s_checkName, QGetEnv, CheckLevel0, RegisteredCheck::Option_Qt4Incompatible) -+REGISTER_CHECK("qmap-with-pointer-key", QMapWithPointerKey, CheckLevel0) -+REGISTER_CHECK("qstring-insensitive-allocation", QStringInsensitiveAllocation, CheckLevel0) -+REGISTER_CHECK("qstring-arg", StringArg, CheckLevel0) -+REGISTER_CHECK(s_checkName, StringRefCandidates, CheckLevel0) -+REGISTER_CHECK("qt-macros", QtMacros, CheckLevel0) -+REGISTER_CHECK("qvariant-template-instantiation", QVariantTemplateInstantiation, CheckLevel0) -+REGISTER_CHECK("strict-iterators", StrictIterators, CheckLevel0) -+REGISTER_CHECK("temporary-iterator", TemporaryIterator, CheckLevel0) -+REGISTER_CHECK("unused-non-trivial-variable", UnusedNonTrivialVariable, CheckLevel0) -+REGISTER_CHECK("writing-to-temporary", WritingToTemporary, CheckLevel0) -+REGISTER_CHECK("wrong-qglobalstatic", WrongQGlobalStatic, CheckLevel0) -+REGISTER_CHECK(s_checkName, AutoUnexpectedQStringBuilder, CheckLevel1) -+REGISTER_CHECK("child-event-qobject-cast", ChildEvent_qobject_cast, CheckLevel1) -+REGISTER_CHECK("connect-3arg-lambda", Connect3argLambda, CheckLevel1) -+REGISTER_CHECK("const-signal-or-slot", ConstSignalOrSlot, CheckLevel1) -+REGISTER_CHECK("ctor-missing-parent-argument", CtorMissingParentArgument, CheckLevel2) -+REGISTER_CHECK("detaching-temporary", DetachingTemporary, CheckLevel1) -+REGISTER_CHECK("foreach", Foreach, CheckLevel1) -+REGISTER_CHECK("incorrect-emit", IncorrectEmit, CheckLevel1) -+REGISTER_CHECK("inefficient-qlist-soft", InefficientQListSoft, CheckLevel1) -+REGISTER_CHECK("install-event-filter", InstallEventFilter, CheckLevel1) -+REGISTER_CHECK("non-pod-global-static", NonPodStatic, CheckLevel1) -+REGISTER_CHECK("overridden-signal", OverriddenSignal, CheckLevel1) -+REGISTER_CHECK("post-event", PostEvent, CheckLevel1) -+REGISTER_CHECK("qdeleteall", QDeleteAll, CheckLevel1) -+REGISTER_CHECK("qhash-namespace", qhash_namespace, CheckLevel1) -+REGISTER_CHECK("qlatin1string-non-ascii", QLatin1StringNonAscii, CheckLevel1) -+REGISTER_CHECK("qproperty-without-notify", QPropertyWithoutNotify, CheckLevel1) -+REGISTER_CHECK("qstring-left", QStringLeft, CheckLevel1) -+REGISTER_CHECK("range-loop", RangeLoop, CheckLevel1) -+REGISTER_CHECK("returning-data-from-temporary", ReturningDataFromTemporary, CheckLevel1) -+REGISTER_CHECK("rule-of-two-soft", RuleOfTwoSoft, CheckLevel1) -+REGISTER_CHECK("virtual-signal", VirtualSignal, CheckLevel1) -+REGISTER_CHECK("base-class-event", BaseClassEvent, CheckLevel2) -+REGISTER_CHECK("container-inside-loop", ContainerInsideLoop, CheckLevel2) -+REGISTER_CHECK("copyable-polymorphic", CopyablePolymorphic, CheckLevel2) -+REGISTER_CHECK(s_checkName, FunctionArgsByRef, CheckLevel2) -+REGISTER_CHECK("function-args-by-value", FunctionArgsByValue, CheckLevel2) -+REGISTER_CHECK("global-const-char-pointer", GlobalConstCharPointer, CheckLevel2) -+REGISTER_CHECK("implicit-casts", ImplicitCasts, CheckLevel2) -+REGISTER_CHECK("missing-qobject-macro", MissingQ_OBJECT, CheckLevel2) -+REGISTER_CHECK("missing-typeinfo", MissingTypeinfo, CheckLevel2) -+REGISTER_CHECK_WITH_FLAGS(s_checkName, OldStyleConnect, CheckLevel2, RegisteredCheck::Option_Qt4Incompatible) -+REGISTER_CHECK_WITH_FLAGS(s_checkName, QStringAllocations, CheckLevel2, RegisteredCheck::Option_Qt4Incompatible) -+REGISTER_CHECK("reserve-candidates", ReserveCandidates, CheckLevel2) -+REGISTER_CHECK("returning-void-expression", ReturningVoidExpression, CheckLevel2) -+REGISTER_CHECK("rule-of-three", RuleOfThree, CheckLevel2) -+REGISTER_CHECK("virtual-call-ctor", VirtualCallsFromCTOR, CheckLevel2) -+REGISTER_CHECK("assert-with-side-effects", AssertWithSideEffects, CheckLevel3) -+REGISTER_CHECK("detaching-member", DetachingMember, CheckLevel3) -+REGISTER_CHECK("bogus-dynamic-cast", BogusDynamicCast, CheckLevel3) -+REGISTER_CHECK("thread-with-slots", ThreadWithSlots, CheckLevel3) -+#endif diff --git a/dist/clang/patches/QTCREATORBUG-15157_Link-with-clazy_clang.patch b/dist/clang/patches/QTCREATORBUG-15157_Link-with-clazy_clang.patch new file mode 100644 index 00000000000..20c2d33e538 --- /dev/null +++ b/dist/clang/patches/QTCREATORBUG-15157_Link-with-clazy_clang.patch @@ -0,0 +1,25 @@ +diff --git a/tools/clang/tools/libclang/CIndex.cpp b/tools/clang/tools/libclang/CIndex.cpp +index 66b6edc8b1..281ab77c23 100644 +--- a/tools/clang/tools/libclang/CIndex.cpp ++++ b/tools/clang/tools/libclang/CIndex.cpp +@@ -8479,4 +8479,8 @@ static int LLVM_ATTRIBUTE_UNUSED ClangTidyPluginAnchorDestination = + extern volatile int ClangIncludeFixerPluginAnchorSource; + static int LLVM_ATTRIBUTE_UNUSED ClangIncludeFixerPluginAnchorDestination = + ClangIncludeFixerPluginAnchorSource; ++ ++// This anchor is used to force the linker to link the clazy plugin. ++extern volatile int ClazyPluginAnchorSource; ++static int LLVM_ATTRIBUTE_UNUSED ClazyPluginAnchorDestination = ClazyPluginAnchorSource; + #endif +diff --git a/tools/clang/tools/libclang/CMakeLists.txt b/tools/clang/tools/libclang/CMakeLists.txt +index 4440637820..6798d2ee8b 100644 +--- a/tools/clang/tools/libclang/CMakeLists.txt ++++ b/tools/clang/tools/libclang/CMakeLists.txt +@@ -51,6 +51,7 @@ if (TARGET clangTidyPlugin) + add_definitions(-DCLANG_TOOL_EXTRA_BUILD) + list(APPEND LIBS clangTidyPlugin) + list(APPEND LIBS clangIncludeFixerPlugin) ++ list(APPEND LIBS clazyPlugin) + if(LLVM_ENABLE_MODULES) + list(APPEND LLVM_COMPILE_FLAGS "-fmodules-ignore-macro=CLANG_TOOL_EXTRA_BUILD") + endif() diff --git a/dist/clang/patches/QTCREATORBUG-15157_Link-with-clazy_extra.patch b/dist/clang/patches/QTCREATORBUG-15157_Link-with-clazy_extra.patch new file mode 100644 index 00000000000..f481376fbcf --- /dev/null +++ b/dist/clang/patches/QTCREATORBUG-15157_Link-with-clazy_extra.patch @@ -0,0 +1,13 @@ +diff --git a/tools/clang/tools/extra/CMakeLists.txt b/tools/clang/tools/extra/CMakeLists.txt +index 760340a6..53f720c4 100644 +--- a/tools/clang/tools/extra/CMakeLists.txt ++++ b/tools/clang/tools/extra/CMakeLists.txt +@@ -5,6 +5,8 @@ if(CLANG_ENABLE_STATIC_ANALYZER) + add_subdirectory(clang-tidy) + add_subdirectory(clang-tidy-vs) + endif() ++set(CLAZY_BUILD_WITH_CLANG 1) ++add_subdirectory(clazy) + + add_subdirectory(change-namespace) + add_subdirectory(clang-query) diff --git a/dist/clang/patches/QTCREATORBUG-15157_Link-with-clazy_llvm.patch b/dist/clang/patches/QTCREATORBUG-15157_Link-with-clazy_llvm.patch new file mode 100644 index 00000000000..8862c35f5ca --- /dev/null +++ b/dist/clang/patches/QTCREATORBUG-15157_Link-with-clazy_llvm.patch @@ -0,0 +1,23 @@ +diff --git a/lib/Transforms/CMakeLists.txt b/lib/Transforms/CMakeLists.txt +index 67bdeb27212..7fcddb15904 100644 +--- a/lib/Transforms/CMakeLists.txt ++++ b/lib/Transforms/CMakeLists.txt +@@ -4,6 +4,5 @@ add_subdirectory(InstCombine) + add_subdirectory(Scalar) + add_subdirectory(IPO) + add_subdirectory(Vectorize) +-add_subdirectory(Hello) + add_subdirectory(ObjCARC) + add_subdirectory(Coroutines) +diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt +index 6cf5103bf44..0b9608a2e52 100644 +--- a/test/CMakeLists.txt ++++ b/test/CMakeLists.txt +@@ -35,7 +35,6 @@ endif() + set(LLVM_TEST_DEPENDS + BugpointPasses + FileCheck +- LLVMHello + UnitTests + bugpoint + count |