# -*- Python -*-

import os

# Setup config name.
config.name = 'XRay' + config.name_suffix

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

# Setup default compiler flags use with -fxray-instrument option.
clang_xray_cflags = (['-fxray-instrument', config.target_cflags])
clang_xray_cxxflags = config.cxx_mode_flags + clang_xray_cflags


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

# Setup substitutions.
config.substitutions.append(
    ('%clang ', build_invocation([config.target_cflags])))
config.substitutions.append(
    ('%clangxx ',
     build_invocation(config.cxx_mode_flags + [config.target_cflags])))
config.substitutions.append(
    ('%clang_xray ', build_invocation(clang_xray_cflags)))
config.substitutions.append(
    ('%clangxx_xray', build_invocation(clang_xray_cxxflags)))

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

if config.host_os not in ['Linux'] or config.host_arch.find('64') == -1:
  config.unsupported = True
