# -*- 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] # If libc++ was used to build XRAY libraries, libc++ is needed. Fix applied # to Linux only since -rpath may not be portable. This can be extended to # other platforms. if config.libcxx_used == "1" and config.host_os == "Linux": clang_xray_cflags = clang_xray_cflags + ( ["-L%s -lc++ -Wl,-rpath=%s" % (config.llvm_shlib_dir, config.llvm_shlib_dir)] ) 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", ".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 if config.host_os == "NetBSD": config.substitutions.insert(0, ("%run", config.netbsd_nomprotect_prefix))