# -*- Python -*-

import os

# Setup config name.
config.name = 'ShadowCallStack'

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

# Test suffixes.
config.suffixes = ['.c', '.cpp', '.m', '.mm', '.ll', '.test']

# Add clang substitutions.
config.substitutions.append( ("%clang_noscs ", config.clang + ' -O0 -fno-sanitize=shadow-call-stack ' + config.target_cflags + ' ') )

scs_arch_cflags = config.target_cflags
if config.target_arch == 'aarch64':
  scs_arch_cflags += ' -ffixed-x18 '
config.substitutions.append( ("%clang_scs ", config.clang + ' -O0 -fsanitize=shadow-call-stack ' + scs_arch_cflags + ' ') )

if config.host_os not in ['Linux'] or config.target_arch not in ['aarch64']:
   config.unsupported = True
