# -*- 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', '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