load("@bazel_skylib//rules:common_settings.bzl", "bool_flag") load("@bazel_skylib//rules:write_file.bzl", "write_file") load("@rules_rust//rust:defs.bzl", "rust_binary", "rust_library", "rust_test") load(":input_from_different_cfg.bzl", "input_from_different_cfg") write_file( name = "gen_src", out = "src.rs", content = """ #[cfg(not(generated_file_as_root))] pub fn forty_two() -> i32 { 42 } #[cfg(generated_file_as_root)] mod lib_for_src; #[cfg(generated_file_as_root)] pub fn get_forty_two_as_string() -> String { format!("{}", lib_for_src::forty_two()) } """.splitlines(), newline = "unix", ) write_file( name = "gen_src_generated", out = "src/generated.rs", content = """ mod submodule; #[cfg(test)] #[test] fn test_foo() { assert_eq!(submodule::foo(), "foo"); } """.splitlines(), newline = "unix", ) rust_library( name = "libgensrc", srcs = [ "lib.rs", "submodule/mod.rs", ":src.rs", ], edition = "2018", tags = ["norustfmt"], ) rust_library( name = "libgensrc_with_crate_root", srcs = [ "lib.rs", "submodule/mod.rs", ":src.rs", ], crate_root = "lib.rs", edition = "2018", tags = ["norustfmt"], visibility = ["//visibility:public"], ) rust_library( name = "libgensrc_as_crate_root", srcs = [ "lib.rs", "lib_for_src.rs", ":src.rs", ], crate_root = ":src.rs", edition = "2018", rustc_flags = ["--cfg=generated_file_as_root"], tags = ["norustfmt"], ) rust_library( name = "lib_with_crate_root_in_subdir", srcs = [ "src/generated.rs", "src/generated/submodule.rs", "src/lib.rs", ], crate_root = "src/lib.rs", edition = "2018", tags = ["norustfmt"], ) rust_test( name = "lib_with_srcs_in_subdir_test", srcs = [ "src/generated.rs", "src/generated/submodule.rs", "src/lib.rs", ], edition = "2018", tags = ["norustfmt"], ) rust_test( name = "lib_with_crate_root_in_subdir_test", crate = "lib_with_crate_root_in_subdir", edition = "2018", tags = ["norustfmt"], ) # When no lib.rs, main.rs file exists, we try to use the file that carries # the target's name as a crate_root. rust_library( name = "src", srcs = [ "lib_for_src.rs", ":src.rs", ], edition = "2018", rustc_flags = ["--cfg=generated_file_as_root"], tags = ["norustfmt"], ) rust_test( name = "gensrc_test", crate = ":libgensrc_with_crate_root", edition = "2018", tags = ["norustfmt"], ) rust_binary( name = "print_42", srcs = [ "main.rs", ":src.rs", ], edition = "2018", tags = ["norustfmt"], ) input_from_different_cfg( name = "generated_in_different_cfg", ) filegroup( name = "input_from_different_cfg", srcs = [":generated_in_different_cfg"], output_group = "generated_file", ) rust_library( name = "gen_src_in_different_cfg_as_root", srcs = [":input_from_different_cfg"], edition = "2018", tags = ["norustfmt"], ) rust_test( name = "gen_src_in_different_cfg_as_root_test", crate = "gen_src_in_different_cfg_as_root", edition = "2018", tags = ["norustfmt"], ) rust_library( name = "gen_src_in_different_cfg", srcs = [ "root.rs", ":input_from_different_cfg", ], crate_root = "root.rs", edition = "2018", tags = ["norustfmt"], ) rust_test( name = "gen_src_in_different_cfg_test", crate = "gen_src_in_different_cfg", edition = "2018", tags = ["norustfmt"], ) bool_flag( name = "change_cfg", build_setting_default = False, ) rust_test( name = "gen_inputs_external_repo_test", # This is regression testing a specific failure case for generated files _not_ in the root # of an external repository. crate = "@generated_inputs_in_external_repo//lib:generated_inputs_external_repo", edition = "2021", )