| # Copyright 2019 The Fuchsia Authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| import("//build/host.gni") |
| import("//build/rust/rustc_binary.gni") |
| import("//build/rust/rustc_test.gni") |
| import("//build/test/test_package.gni") |
| import("//build/testing/host_test_data.gni") |
| |
| if (host_toolchain == current_toolchain) { |
| common_sources = [ |
| "src/fidljson.rs", |
| "src/main.rs", |
| "src/simple_logger.rs", |
| "src/templates/html/mod.rs", |
| "src/templates/markdown/mod.rs", |
| "src/templates/mod.rs", |
| ] |
| |
| common_inputs = [ |
| "src/templates/markdown/partials/header.hbs", |
| "src/templates/markdown/partials/types/filename.hbs", |
| "src/templates/html/interface.hbs", |
| "src/templates/markdown/interface.hbs", |
| "src/templates/markdown/partials/header_dir.hbs", |
| "src/templates/markdown/partials/declarations/tables.hbs", |
| "src/templates/markdown/partials/declarations/enums.hbs", |
| "src/templates/markdown/partials/types/vector.hbs", |
| "src/templates/markdown/partials/declarations/constants.hbs", |
| "src/templates/html/main.hbs", |
| "src/templates/markdown/partials/declarations/type_aliases.hbs", |
| "src/templates/markdown/partials/declarations/protocols.hbs", |
| "src/templates/markdown/partials/types/doc.hbs", |
| "src/templates/markdown/partials/footer.hbs", |
| "src/templates/markdown/partials/declarations/bits.hbs", |
| "src/templates/markdown/partials/declarations/unions.hbs", |
| "src/templates/markdown/main.hbs", |
| "src/templates/markdown/toc.hbs", |
| "src/templates/markdown/partials/types/type.hbs", |
| "src/templates/markdown/partials/declarations/structs.hbs", |
| ] |
| |
| rustc_binary("fidldoc_bin") { |
| name = "fidldoc" |
| edition = "2018" |
| deps = [ ":rust_crates" ] |
| |
| sources = common_sources |
| |
| inputs = common_inputs |
| } |
| |
| copy("fidldoc_copy_config") { |
| sources = [ "src/fidldoc.config.json" ] |
| outputs = [ "${host_tools_dir}/fidldoc.config.json" ] |
| } |
| |
| rustc_test("fidldoc_bin_test") { |
| source_root = "src/main.rs" |
| deps = [ |
| ":fidldoc_bin", |
| ":rust_crates", |
| ] |
| non_rust_deps = [ |
| ":copy_jsonir_goldens", |
| ":copy_markdown_goldens", |
| ] |
| |
| sources = common_sources |
| |
| inputs = common_inputs + [ |
| "src/templates/markdown/testdata/README.md", |
| "src/templates/markdown/testdata/_toc.yaml", |
| "src/fidldoc.config.json", |
| ] |
| } |
| |
| host_test_data("copy_jsonir_goldens") { |
| sources = |
| rebase_path(read_file("//zircon/tools/fidl/goldens/jsonir_goldens.txt", |
| "list lines"), |
| ".", |
| "//zircon/tools/fidl/goldens/") |
| outputs = [ "$root_out_dir/test_data/fidldoc/{{source_name_part}}.golden" ] |
| } |
| |
| # Markdown goldens have the same filename as JSON IR goldens with a ".md" extension |
| host_test_data("copy_markdown_goldens") { |
| exec_script("markdown_goldens.py", |
| [ |
| "--input", |
| rebase_path("//zircon/tools/fidl/goldens/jsonir_goldens.txt"), |
| "--goldens", |
| rebase_path("src/templates/markdown/testdata/"), |
| ]) |
| sources = [] |
| foreach(jsonir, |
| read_file("//zircon/tools/fidl/goldens/jsonir_goldens.txt", |
| "list lines")) { |
| sources += [ rebase_path(jsonir + ".md", |
| ".", |
| "src/templates/markdown/testdata/") ] |
| } |
| outputs = [ "$root_out_dir/test_data/fidldoc/{{source_name_part}}.md" ] |
| } |
| |
| group("rust_crates") { |
| deps = [ |
| "//third_party/rust_crates:anyhow", |
| "//third_party/rust_crates:argh", |
| "//third_party/rust_crates:glob", |
| "//third_party/rust_crates:handlebars", |
| "//third_party/rust_crates:lazy_static", |
| "//third_party/rust_crates:log", |
| "//third_party/rust_crates:pulldown-cmark", |
| "//third_party/rust_crates:rayon", |
| "//third_party/rust_crates:regex", |
| "//third_party/rust_crates:serde", |
| "//third_party/rust_crates:serde_json", |
| "//third_party/rust_crates:tempfile", |
| ] |
| } |
| } |
| |
| install_host_tools("fidldoc") { |
| deps = [ |
| ":fidldoc_bin($host_toolchain)", |
| ":fidldoc_copy_config($host_toolchain)", |
| ] |
| |
| outputs = [ "fidldoc" ] |
| } |
| |
| group("tests") { |
| testonly = true |
| |
| deps = [ ":fidldoc_bin_test($host_toolchain)" ] |
| } |