| # -*- 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) + ' ' | 
 |  | 
 | # Assume that llvm-xray is in the config.llvm_tools_dir. | 
 | llvm_xray = os.path.join(config.llvm_tools_dir, 'llvm-xray') | 
 |  | 
 | # Setup substitutions. | 
 | if config.host_os == "Linux": | 
 |   libdl_flag = "-ldl" | 
 | else: | 
 |   libdl_flag = "" | 
 |  | 
 | 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))) | 
 | config.substitutions.append( | 
 |     ('%llvm_xray', llvm_xray)) | 
 | config.substitutions.append( | 
 |     ('%xraylib', | 
 |         ('-lm -lpthread %s -lrt -L%s ' | 
 |          '-Wl,-whole-archive -lclang_rt.xray%s -Wl,-no-whole-archive') | 
 |         % (libdl_flag, config.compiler_rt_libdir, config.target_suffix))) | 
 |  | 
 | # Default test suffixes. | 
 | config.suffixes = ['.c', '.cc', '.cpp'] | 
 |  | 
 | if config.host_os not in ['FreeBSD', 'Linux', 'NetBSD', 'OpenBSD']: | 
 |   config.unsupported = True | 
 | elif '64' not in config.host_arch: | 
 |   if 'arm' in config.host_arch: | 
 |     if '-mthumb' in config.target_cflags: | 
 |       config.unsupported = True | 
 |   else: | 
 |     config.unsupported = True |