gecko-dev/build/clang-plugin/moz.build

97 строки
3.0 KiB
Python

# -*- 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',
'KungFuDeathGripChecker.cpp',
'MozCheckAction.cpp',
'MustOverrideChecker.cpp',
'MustReturnFromCallerChecker.cpp',
'MustUseChecker.cpp',
'NaNExprChecker.cpp',
'NeedsNoVTableTypeChecker.cpp',
'NoAddRefReleaseOnReturnChecker.cpp',
'NoAutoTypeChecker.cpp',
'NoDuplicateRefCntMemberChecker.cpp',
'NoExplicitMoveConstructorChecker.cpp',
'NonMemMovableMemberChecker.cpp',
'NonMemMovableTemplateArgChecker.cpp',
'NonParamInsideFunctionDeclChecker.cpp',
'OverrideBaseCallChecker.cpp',
'OverrideBaseCallUsageChecker.cpp',
'ParamTraitsEnumChecker.cpp',
'RefCountedCopyConstructorChecker.cpp',
'RefCountedInsideLambdaChecker.cpp',
'ScopeChecker.cpp',
'SprintfLiteralChecker.cpp',
'TrivialCtorDtorChecker.cpp',
'TrivialDtorChecker.cpp',
'VariableUsageHelpers.cpp',
]
if CONFIG['OS_ARCH'] == 'WINNT':
HOST_SOURCES += [
'LoadLibraryUsageChecker.cpp',
]
if CONFIG['ENABLE_MOZSEARCH_PLUGIN']:
HOST_SOURCES += [
'mozsearch-plugin/FileOperations.cpp',
'mozsearch-plugin/JSONFormatter.cpp',
'mozsearch-plugin/MozsearchIndexer.cpp',
'mozsearch-plugin/StringOperations.cpp',
]
GENERATED_FILES += ['ThirdPartyPaths.cpp']
third_party_paths = GENERATED_FILES['ThirdPartyPaths.cpp']
third_party_paths.script = "ThirdPartyPaths.py:generate"
third_party_paths.inputs = [
'/tools/rewriting/ThirdPartyPaths.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'] != 'Windows':
HOST_CXXFLAGS += ['-fPIC']
DIRS += [
'tests',
]
# 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']
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