aboutsummaryrefslogtreecommitdiffstats
path: root/dist
diff options
context:
space:
mode:
authorIvan Donchevskii <ivan.donchevskii@qt.io>2018-01-04 08:59:28 +0100
committerIvan Donchevskii <ivan.donchevskii@qt.io>2018-01-04 11:30:26 +0000
commit4f9b664d131927717860a8e42f371839af5583f0 (patch)
treece8c25da82196a6c84e9e5ea7785adda02fc1992 /dist
parentf8f882ecdf1b3a4a87ed7dcabbd3eeedcaaf0374 (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')
-rw-r--r--dist/clang/patches/QTCREATORBUG-15157_Link-with-clazy.patch134
-rw-r--r--dist/clang/patches/QTCREATORBUG-15157_Link-with-clazy_clang.patch25
-rw-r--r--dist/clang/patches/QTCREATORBUG-15157_Link-with-clazy_extra.patch13
-rw-r--r--dist/clang/patches/QTCREATORBUG-15157_Link-with-clazy_llvm.patch23
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 e7489ee1b7..0000000000
--- 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 0000000000..20c2d33e53
--- /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 0000000000..f481376fbc
--- /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 0000000000..8862c35f5c
--- /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