# -*- Python -*-

import os

# Setup config name.
config.name = 'MemorySanitizer'

# Setup source root.
config.test_source_root = os.path.dirname(__file__)

# Setup default compiler flags used with -fsanitize=memory option.
clang_msan_cflags = ["-fsanitize=memory",
                     "-mno-omit-leaf-frame-pointer",
                     "-fno-omit-frame-pointer",
                     "-fno-optimize-sibling-calls",
                     "-m64"] + config.debug_info_flags
# Some Msan tests leverage backtrace() which requires libexecinfo on FreeBSD.
if config.host_os == 'FreeBSD':
  clang_msan_cflags += ["-lexecinfo"]
clang_msan_cxxflags = config.cxx_mode_flags + clang_msan_cflags

def build_invocation(compile_flags):
  return " " + " ".join([config.clang] + compile_flags) + " "

config.substitutions.append( ("%clang_msan ", build_invocation(clang_msan_cflags)) )
config.substitutions.append( ("%clangxx_msan ", build_invocation(clang_msan_cxxflags)) )

# Default test suffixes.
config.suffixes = ['.c', '.cc', '.cpp']

# MemorySanitizer tests are currently supported on Linux only.
if config.host_os not in ['Linux']:
  config.unsupported = True
