UebelAndre | 26fa5a1 | 2022-04-26 07:50:23 -0700 | [diff] [blame] | 1 | load("@rules_cc//cc:defs.bzl", "cc_binary") |
Chris Fredrickson | 2f5253f | 2022-02-18 08:35:40 -0500 | [diff] [blame] | 2 | load("//rust:defs.bzl", "rust_library", "rust_proc_macro", "rust_test") |
| 3 | |
Chris Fredrickson | 3db49e8 | 2022-02-22 12:07:33 -0500 | [diff] [blame] | 4 | # buildifier: disable=bzl-visibility |
Marcel Hlopko | 86d47a1 | 2022-03-16 16:46:41 +0100 | [diff] [blame] | 5 | load("//rust/private:transitions.bzl", "alias_with_import_macro_bootstrapping_mode") |
Chris Fredrickson | 3db49e8 | 2022-02-22 12:07:33 -0500 | [diff] [blame] | 6 | |
Marcel Hlopko | 86d47a1 | 2022-03-16 16:46:41 +0100 | [diff] [blame] | 7 | alias_with_import_macro_bootstrapping_mode( |
Chris Fredrickson | 3db49e8 | 2022-02-22 12:07:33 -0500 | [diff] [blame] | 8 | name = "import_macro", |
Marcel Hlopko | 86d47a1 | 2022-03-16 16:46:41 +0100 | [diff] [blame] | 9 | actual = ":import_macro_impl", |
Chris Fredrickson | 3db49e8 | 2022-02-22 12:07:33 -0500 | [diff] [blame] | 10 | ) |
| 11 | |
Chris Fredrickson | 2f5253f | 2022-02-18 08:35:40 -0500 | [diff] [blame] | 12 | rust_proc_macro( |
Chris Fredrickson | 3db49e8 | 2022-02-22 12:07:33 -0500 | [diff] [blame] | 13 | name = "import_macro_impl", |
Chris Fredrickson | 2f5253f | 2022-02-18 08:35:40 -0500 | [diff] [blame] | 14 | srcs = [ |
| 15 | "import.rs", |
| 16 | ], |
Chris Fredrickson | 3db49e8 | 2022-02-22 12:07:33 -0500 | [diff] [blame] | 17 | crate_name = "import", |
David Tolnay | 03a7079 | 2022-04-25 08:47:31 -0700 | [diff] [blame] | 18 | edition = "2018", |
Chris Fredrickson | 2f5253f | 2022-02-18 08:35:40 -0500 | [diff] [blame] | 19 | deps = [ |
| 20 | ":import_internal", |
UebelAndre | 0ffde97 | 2022-08-02 06:16:10 -0700 | [diff] [blame] | 21 | "//util/import/3rdparty/crates:syn", |
Chris Fredrickson | 2f5253f | 2022-02-18 08:35:40 -0500 | [diff] [blame] | 22 | ], |
| 23 | ) |
| 24 | |
| 25 | rust_library( |
| 26 | name = "import_internal", |
| 27 | srcs = [ |
| 28 | "import_internal.rs", |
| 29 | ], |
David Tolnay | 03a7079 | 2022-04-25 08:47:31 -0700 | [diff] [blame] | 30 | edition = "2018", |
Chris Fredrickson | 2f5253f | 2022-02-18 08:35:40 -0500 | [diff] [blame] | 31 | deps = [ |
UebelAndre | 0ffde97 | 2022-08-02 06:16:10 -0700 | [diff] [blame] | 32 | "//util/import/3rdparty/crates:aho-corasick", |
| 33 | "//util/import/3rdparty/crates:lazy_static", |
| 34 | "//util/import/3rdparty/crates:proc-macro2", |
| 35 | "//util/import/3rdparty/crates:quote", |
| 36 | "//util/import/3rdparty/crates:syn", |
Chris Fredrickson | 2f5253f | 2022-02-18 08:35:40 -0500 | [diff] [blame] | 37 | "//util/label", |
| 38 | ], |
| 39 | ) |
| 40 | |
| 41 | rust_test( |
| 42 | name = "import_internal_test", |
| 43 | crate = ":import_internal", |
David Tolnay | 03a7079 | 2022-04-25 08:47:31 -0700 | [diff] [blame] | 44 | edition = "2018", |
UebelAndre | bd64711 | 2022-12-06 08:35:44 -0800 | [diff] [blame] | 45 | # TODO: https://github.com/bazelbuild/rules_rust/issues/1672 |
| 46 | tags = ["manual"], |
Chris Fredrickson | 2f5253f | 2022-02-18 08:35:40 -0500 | [diff] [blame] | 47 | deps = [ |
UebelAndre | 0ffde97 | 2022-08-02 06:16:10 -0700 | [diff] [blame] | 48 | "//util/import/3rdparty/crates:quickcheck", |
Chris Fredrickson | 2f5253f | 2022-02-18 08:35:40 -0500 | [diff] [blame] | 49 | ], |
| 50 | ) |
Chris Fredrickson | 3db49e8 | 2022-02-22 12:07:33 -0500 | [diff] [blame] | 51 | |
| 52 | alias( |
| 53 | name = "import", |
| 54 | actual = select({ |
| 55 | ":use_fake_import_macro": ":fake_import_macro_impl", |
Marcel Hlopko | e5fefdc | 2022-03-08 22:12:34 +0100 | [diff] [blame] | 56 | "//conditions:default": ":import_macro_label", |
Chris Fredrickson | 3db49e8 | 2022-02-22 12:07:33 -0500 | [diff] [blame] | 57 | }), |
| 58 | visibility = ["//visibility:public"], |
| 59 | ) |
| 60 | |
Marcel Hlopko | e5fefdc | 2022-03-08 22:12:34 +0100 | [diff] [blame] | 61 | # This is there to cut the loading-time dependency on the import macro dependencies |
| 62 | # (so users who don't use the macro don't need to add those deps to their WORKSPACE |
| 63 | # file). Bazel in the loading phase doesn't "see" through `label_flag`. |
| 64 | label_flag( |
| 65 | name = "import_macro_label", |
| 66 | build_setting_default = "import_macro", |
| 67 | ) |
| 68 | |
Chris Fredrickson | 3db49e8 | 2022-02-22 12:07:33 -0500 | [diff] [blame] | 69 | config_setting( |
| 70 | name = "use_fake_import_macro", |
| 71 | flag_values = { |
| 72 | "@rules_rust//rust/settings:use_real_import_macro": "False", |
| 73 | }, |
| 74 | ) |
| 75 | |
UebelAndre | 26fa5a1 | 2022-04-26 07:50:23 -0700 | [diff] [blame] | 76 | cc_binary( |
Chris Fredrickson | 3db49e8 | 2022-02-22 12:07:33 -0500 | [diff] [blame] | 77 | name = "fake_import_macro_impl", |
UebelAndre | 26fa5a1 | 2022-04-26 07:50:23 -0700 | [diff] [blame] | 78 | srcs = ["fake_import_macro_impl.cc"], |
Chris Fredrickson | 3db49e8 | 2022-02-22 12:07:33 -0500 | [diff] [blame] | 79 | ) |