1 | //===- ClangTidyForceLinker.h - clang-tidy --------------------------------===// |
2 | // |
3 | // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. |
4 | // See https://llvm.org/LICENSE.txt for license information. |
5 | // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception |
6 | // |
7 | //===----------------------------------------------------------------------===// |
8 | |
9 | #ifndef LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_CLANGTIDYFORCELINKER_H |
10 | #define |
11 | |
12 | #include "clang-tidy-config.h" |
13 | #include "llvm/Support/Compiler.h" |
14 | |
15 | namespace clang::tidy { |
16 | |
17 | // This anchor is used to force the linker to link the AbseilModule. |
18 | extern volatile int AbseilModuleAnchorSource; |
19 | static int LLVM_ATTRIBUTE_UNUSED AbseilModuleAnchorDestination = |
20 | AbseilModuleAnchorSource; |
21 | |
22 | // This anchor is used to force the linker to link the AlteraModule. |
23 | extern volatile int AlteraModuleAnchorSource; |
24 | static int LLVM_ATTRIBUTE_UNUSED AlteraModuleAnchorDestination = |
25 | AlteraModuleAnchorSource; |
26 | |
27 | // This anchor is used to force the linker to link the AndroidModule. |
28 | extern volatile int AndroidModuleAnchorSource; |
29 | static int LLVM_ATTRIBUTE_UNUSED AndroidModuleAnchorDestination = |
30 | AndroidModuleAnchorSource; |
31 | |
32 | // This anchor is used to force the linker to link the BoostModule. |
33 | extern volatile int BoostModuleAnchorSource; |
34 | static int LLVM_ATTRIBUTE_UNUSED BoostModuleAnchorDestination = |
35 | BoostModuleAnchorSource; |
36 | |
37 | // This anchor is used to force the linker to link the BugproneModule. |
38 | extern volatile int BugproneModuleAnchorSource; |
39 | static int LLVM_ATTRIBUTE_UNUSED BugproneModuleAnchorDestination = |
40 | BugproneModuleAnchorSource; |
41 | |
42 | // This anchor is used to force the linker to link the CERTModule. |
43 | extern volatile int CERTModuleAnchorSource; |
44 | static int LLVM_ATTRIBUTE_UNUSED CERTModuleAnchorDestination = |
45 | CERTModuleAnchorSource; |
46 | |
47 | // This anchor is used to force the linker to link the ConcurrencyModule. |
48 | extern volatile int ConcurrencyModuleAnchorSource; |
49 | static int LLVM_ATTRIBUTE_UNUSED ConcurrencyModuleAnchorDestination = |
50 | ConcurrencyModuleAnchorSource; |
51 | |
52 | // This anchor is used to force the linker to link the CppCoreGuidelinesModule. |
53 | extern volatile int CppCoreGuidelinesModuleAnchorSource; |
54 | static int LLVM_ATTRIBUTE_UNUSED CppCoreGuidelinesModuleAnchorDestination = |
55 | CppCoreGuidelinesModuleAnchorSource; |
56 | |
57 | // This anchor is used to force the linker to link the DarwinModule. |
58 | extern volatile int DarwinModuleAnchorSource; |
59 | static int LLVM_ATTRIBUTE_UNUSED DarwinModuleAnchorDestination = |
60 | DarwinModuleAnchorSource; |
61 | |
62 | // This anchor is used to force the linker to link the FuchsiaModule. |
63 | extern volatile int FuchsiaModuleAnchorSource; |
64 | static int LLVM_ATTRIBUTE_UNUSED FuchsiaModuleAnchorDestination = |
65 | FuchsiaModuleAnchorSource; |
66 | |
67 | // This anchor is used to force the linker to link the GoogleModule. |
68 | extern volatile int GoogleModuleAnchorSource; |
69 | static int LLVM_ATTRIBUTE_UNUSED GoogleModuleAnchorDestination = |
70 | GoogleModuleAnchorSource; |
71 | |
72 | // This anchor is used to force the linker to link the HICPPModule. |
73 | extern volatile int HICPPModuleAnchorSource; |
74 | static int LLVM_ATTRIBUTE_UNUSED HICPPModuleAnchorDestination = |
75 | HICPPModuleAnchorSource; |
76 | |
77 | // This anchor is used to force the linker to link the LinuxKernelModule. |
78 | extern volatile int LinuxKernelModuleAnchorSource; |
79 | static int LLVM_ATTRIBUTE_UNUSED LinuxKernelModuleAnchorDestination = |
80 | LinuxKernelModuleAnchorSource; |
81 | |
82 | // This anchor is used to force the linker to link the LLVMModule. |
83 | extern volatile int LLVMModuleAnchorSource; |
84 | static int LLVM_ATTRIBUTE_UNUSED LLVMModuleAnchorDestination = |
85 | LLVMModuleAnchorSource; |
86 | |
87 | // This anchor is used to force the linker to link the LLVMLibcModule. |
88 | extern volatile int LLVMLibcModuleAnchorSource; |
89 | static int LLVM_ATTRIBUTE_UNUSED LLVMLibcModuleAnchorDestination = |
90 | LLVMLibcModuleAnchorSource; |
91 | |
92 | // This anchor is used to force the linker to link the MiscModule. |
93 | extern volatile int MiscModuleAnchorSource; |
94 | static int LLVM_ATTRIBUTE_UNUSED MiscModuleAnchorDestination = |
95 | MiscModuleAnchorSource; |
96 | |
97 | // This anchor is used to force the linker to link the ModernizeModule. |
98 | extern volatile int ModernizeModuleAnchorSource; |
99 | static int LLVM_ATTRIBUTE_UNUSED ModernizeModuleAnchorDestination = |
100 | ModernizeModuleAnchorSource; |
101 | |
102 | #if CLANG_TIDY_ENABLE_STATIC_ANALYZER && \ |
103 | !defined(CLANG_TIDY_DISABLE_STATIC_ANALYZER_CHECKS) |
104 | // This anchor is used to force the linker to link the MPIModule. |
105 | extern volatile int MPIModuleAnchorSource; |
106 | static int LLVM_ATTRIBUTE_UNUSED MPIModuleAnchorDestination = |
107 | MPIModuleAnchorSource; |
108 | #endif |
109 | |
110 | // This anchor is used to force the linker to link the ObjCModule. |
111 | extern volatile int ObjCModuleAnchorSource; |
112 | static int LLVM_ATTRIBUTE_UNUSED ObjCModuleAnchorDestination = |
113 | ObjCModuleAnchorSource; |
114 | |
115 | // This anchor is used to force the linker to link the OpenMPModule. |
116 | extern volatile int OpenMPModuleAnchorSource; |
117 | static int LLVM_ATTRIBUTE_UNUSED OpenMPModuleAnchorDestination = |
118 | OpenMPModuleAnchorSource; |
119 | |
120 | // This anchor is used to force the linker to link the PerformanceModule. |
121 | extern volatile int PerformanceModuleAnchorSource; |
122 | static int LLVM_ATTRIBUTE_UNUSED PerformanceModuleAnchorDestination = |
123 | PerformanceModuleAnchorSource; |
124 | |
125 | // This anchor is used to force the linker to link the PortabilityModule. |
126 | extern volatile int PortabilityModuleAnchorSource; |
127 | static int LLVM_ATTRIBUTE_UNUSED PortabilityModuleAnchorDestination = |
128 | PortabilityModuleAnchorSource; |
129 | |
130 | // This anchor is used to force the linker to link the ReadabilityModule. |
131 | extern volatile int ReadabilityModuleAnchorSource; |
132 | static int LLVM_ATTRIBUTE_UNUSED ReadabilityModuleAnchorDestination = |
133 | ReadabilityModuleAnchorSource; |
134 | |
135 | // This anchor is used to force the linker to link the ZirconModule. |
136 | extern volatile int ZirconModuleAnchorSource; |
137 | static int LLVM_ATTRIBUTE_UNUSED ZirconModuleAnchorDestination = |
138 | ZirconModuleAnchorSource; |
139 | |
140 | } // namespace clang::tidy |
141 | |
142 | #endif |
143 | |