89 lines · plain
1import("//compiler-rt/lib/builtins/sources.gni")2import("//compiler-rt/target.gni")3import("//compiler-rt/test/test.gni")4import("//llvm/lib/Target/targets.gni")5import("//llvm/utils/gn/build/toolchain/compiler.gni")6import("//llvm/utils/gn/build/write_cmake_config.gni")7import("//llvm/version.gni")8 9write_cmake_config("builtins_mode_cfg") {10 input = "Unit/lit.site.cfg.py.in"11 output =12 "$target_gen_dir/${crt_current_target_arch}BuiltinsConfig/lit.site.cfg.py"13 values = [14 "BUILTINS_TEST_CONFIG_SUFFIX=$crt_current_target_suffix",15 "BUILTINS_LIT_SOURCE_DIR=" + rebase_path("."),16 "BUILTINS_TEST_TARGET_ARCH=$crt_current_target_arch",17 "SANITIZER_TEST_CXX_LIBNAME=libc++",18 "COMPILER_RT_BUILD_CRT_PYBOOL=False",19 "MSVC_PYBOOL=False",20 "BUILTINS_IS_MSVC_PYBOOL=False",21 22 "COMPILER_RT_BINARY_DIR=" + rebase_path("$root_gen_dir/compiler-rt"),23 "LIT_SITE_CFG_IN_HEADER=## Autogenerated from $input, do not edit",24 ]25 26 features = ""27 foreach(source, builtins_sources) {28 if (features != "") {29 features += ";"30 }31 features += "librt_has_" + get_path_info(source, "name")32 }33 values += [ "BUILTINS_LIT_SOURCE_FEATURES=$features" ]34 35 cflags = ""36 foreach(define, builtins_defines) {37 cflags += " -D$define"38 }39 values += [ "BUILTINS_TEST_TARGET_CFLAGS=$cflags" ]40}41 42if (current_toolchain != host_toolchain) {43 group("builtins_toolchain") {44 deps = [45 ":builtins_mode_cfg",46 "//compiler-rt/include($host_toolchain)",47 "//compiler-rt/lib/builtins",48 "//compiler-rt/test:lit_common_configured",49 "//llvm/utils/not($host_toolchain)",50 ]51 }52}53 54supported_toolchains = []55if (host_os == "linux") {56 supported_toolchains += [ "//llvm/utils/gn/build/toolchain:stage2_unix" ]57}58 59group("builtins") {60 deps = []61 foreach(toolchain, supported_toolchains) {62 deps += [ ":builtins_toolchain($toolchain)" ]63 }64}65 66if (supported_toolchains != []) {67 action("check-builtins") {68 script = "$root_build_dir/bin/llvm-lit"69 args = [ "-sv" ]70 foreach(toolchain, supported_toolchains) {71 test_dir = rebase_path(72 get_label_info(":lit_site_cfg($toolchain)", "target_gen_dir"),73 root_build_dir)74 args += [ test_dir + "/${crt_current_target_arch}BuiltinsConfig" ]75 }76 outputs = [ "$target_gen_dir/run-lit" ] # Non-existing, so that ninja runs77 # it each time.78 79 # Since check-builtins is always dirty, //:default doesn't depend on it so80 # that it's not part of the default ninja target. Hence, check-builtins81 # shouldn't have any deps except :builtins. so that the default target is82 # sure to build all the deps.83 deps = [ ":builtins" ]84 testonly = true85 86 pool = "//:console"87 }88}89