summaryrefslogtreecommitdiffstats
path: root/build/clang-plugin/moz.build
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--build/clang-plugin/moz.build129
1 files changed, 129 insertions, 0 deletions
diff --git a/build/clang-plugin/moz.build b/build/clang-plugin/moz.build
new file mode 100644
index 0000000000..c9c2c520db
--- /dev/null
+++ b/build/clang-plugin/moz.build
@@ -0,0 +1,129 @@
+# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+HostSharedLibrary("clang-plugin")
+
+HOST_SOURCES += ["!ThirdPartyPaths.cpp"]
+
+HOST_SOURCES += [
+ "ArithmeticArgChecker.cpp",
+ "AssertAssignmentChecker.cpp",
+ "CanRunScriptChecker.cpp",
+ "CustomAttributes.cpp",
+ "CustomTypeAnnotation.cpp",
+ "DanglingOnTemporaryChecker.cpp",
+ "DiagnosticsMatcher.cpp",
+ "ExplicitImplicitChecker.cpp",
+ "ExplicitOperatorBoolChecker.cpp",
+ "JSHandleRootedTypedefChecker.cpp",
+ "KnownLiveChecker.cpp",
+ "KungFuDeathGripChecker.cpp",
+ "MozCheckAction.cpp",
+ "MustOverrideChecker.cpp",
+ "MustReturnFromCallerChecker.cpp",
+ "NaNExprChecker.cpp",
+ "NeedsNoVTableTypeChecker.cpp",
+ "NoAddRefReleaseOnReturnChecker.cpp",
+ "NoAutoTypeChecker.cpp",
+ "NoDuplicateRefCntMemberChecker.cpp",
+ "NoExplicitMoveConstructorChecker.cpp",
+ "NoNewThreadsChecker.cpp",
+ "NonMemMovableMemberChecker.cpp",
+ "NonMemMovableTemplateArgChecker.cpp",
+ "NonParamInsideFunctionDeclChecker.cpp",
+ "NonTrivialTypeInFfiChecker.cpp",
+ "NoPrincipalGetURI.cpp",
+ "NoUsingNamespaceMozillaJavaChecker.cpp",
+ "OverrideBaseCallChecker.cpp",
+ "OverrideBaseCallUsageChecker.cpp",
+ "ParamTraitsEnumChecker.cpp",
+ "RefCountedCopyConstructorChecker.cpp",
+ "RefCountedInsideLambdaChecker.cpp",
+ "RefCountedThisInsideConstructorChecker.cpp",
+ "ScopeChecker.cpp",
+ "SprintfLiteralChecker.cpp",
+ "TrivialCtorDtorChecker.cpp",
+ "TrivialDtorChecker.cpp",
+ "VariableUsageHelpers.cpp",
+]
+
+# Ideally, we wouldn't have compile-time choices wrt checks. bug 1617153.
+if CONFIG["OS_ARCH"] == "WINNT":
+ HOST_DEFINES["TARGET_IS_WINDOWS"] = True
+ HOST_SOURCES += [
+ "FopenUsageChecker.cpp",
+ "LoadLibraryUsageChecker.cpp",
+ ]
+
+if CONFIG["ENABLE_MOZSEARCH_PLUGIN"]:
+ HOST_SOURCES += [
+ "mozsearch-plugin/BindingOperations.cpp",
+ "mozsearch-plugin/FileOperations.cpp",
+ "mozsearch-plugin/from-clangd/HeuristicResolver.cpp",
+ "mozsearch-plugin/MozsearchIndexer.cpp",
+ "mozsearch-plugin/StringOperations.cpp",
+ ]
+
+GeneratedFile(
+ "ThirdPartyPaths.cpp",
+ script="ThirdPartyPaths.py",
+ entry_point="generate",
+ inputs=[
+ "/tools/rewriting/ThirdPartyPaths.txt",
+ "/tools/rewriting/Generated.txt",
+ ],
+)
+
+GeneratedFile(
+ "ThreadAllows.h",
+ script="ThreadAllows.py",
+ entry_point="generate_file",
+ inputs=[
+ "/build/clang-plugin/ThreadAllows.txt",
+ "/build/clang-plugin/ThreadFileAllows.txt",
+ ],
+)
+
+HOST_COMPILE_FLAGS["STL"] = []
+HOST_COMPILE_FLAGS["VISIBILITY"] = []
+
+# libc++ is required to build plugins against clang on OS X.
+if CONFIG["HOST_OS_ARCH"] == "Darwin":
+ HOST_CXXFLAGS += ["-stdlib=libc++"]
+
+# As of clang 8, llvm-config doesn't output the flags used to build clang
+# itself, so we don't end up with -fPIC as a side effect. llvm.org/PR8220
+if CONFIG["HOST_OS_ARCH"] != "WINNT":
+ HOST_CXXFLAGS += ["-fPIC"]
+
+DIRS += [
+ "tests",
+]
+
+include("external/sources.mozbuild")
+
+if CONFIG["ENABLE_CLANG_PLUGIN_ALPHA"]:
+ HOST_DEFINES["MOZ_CLANG_PLUGIN_ALPHA"] = "1"
+ include("alpha/sources.mozbuild")
+
+# In the current moz.build world, we need to override essentially every
+# variable to limit ourselves to what we need to build the clang plugin.
+if CONFIG["HOST_OS_ARCH"] == "WINNT":
+ extra_cxxflags = ["-GR-", "-EHsc"]
+ # Clang 14 headers enforce a requirement upon Visual Studio 2019 headers,
+ # for support of newer C++ versions, which is necessary for clang itself,
+ # but as of writing, it's not necessary for the plugin code, so enable
+ # the escape hatch, at least until we generally upgrade to VS 2019.
+ HOST_DEFINES["LLVM_FORCE_USE_OLD_TOOLCHAIN"] = True
+else:
+ extra_cxxflags = ["-fno-rtti", "-fno-exceptions"]
+
+if CONFIG["LLVM_CXXFLAGS"]:
+ HOST_COMPILE_FLAGS["HOST_CXXFLAGS"] = CONFIG["LLVM_CXXFLAGS"] + extra_cxxflags
+
+# Avoid -DDEBUG=1 on the command line, which conflicts with a #define
+# DEBUG(...) in llvm headers.
+DEFINES["DEBUG"] = False