553 lines
17 KiB
Plaintext
553 lines
17 KiB
Plaintext
|
|
package {
|
||
|
|
// See: http://go/android-license-faq
|
||
|
|
// A large-scale-change added 'default_applicable_licenses' to import
|
||
|
|
// all of the 'license_kinds' from "system_bt_license"
|
||
|
|
// to get the below license kinds:
|
||
|
|
// SPDX-license-identifier-Apache-2.0
|
||
|
|
default_applicable_licenses: ["system_bt_license"],
|
||
|
|
}
|
||
|
|
|
||
|
|
rust_defaults {
|
||
|
|
name: "pdl_defaults",
|
||
|
|
// LINT.IfChange
|
||
|
|
rustlibs: [
|
||
|
|
"libargh",
|
||
|
|
"libcodespan_reporting",
|
||
|
|
"libheck",
|
||
|
|
"libpest",
|
||
|
|
"libproc_macro2",
|
||
|
|
"libquote",
|
||
|
|
"libserde",
|
||
|
|
"libserde_json",
|
||
|
|
"libsyn",
|
||
|
|
"libtempfile",
|
||
|
|
],
|
||
|
|
proc_macros: [
|
||
|
|
"libpest_derive",
|
||
|
|
],
|
||
|
|
// LINT.ThenChange(Cargo.toml)
|
||
|
|
}
|
||
|
|
|
||
|
|
rust_binary_host {
|
||
|
|
name: "pdl",
|
||
|
|
defaults: ["pdl_defaults"],
|
||
|
|
srcs: ["src/main.rs"],
|
||
|
|
visibility: [
|
||
|
|
"//external/uwb/src",
|
||
|
|
"//packages/modules/Bluetooth:__subpackages__",
|
||
|
|
],
|
||
|
|
}
|
||
|
|
|
||
|
|
filegroup {
|
||
|
|
name: "pdl_generated_files",
|
||
|
|
srcs: [
|
||
|
|
"tests/generated/enum_declaration_big_endian.rs",
|
||
|
|
"tests/generated/enum_declaration_little_endian.rs",
|
||
|
|
"tests/generated/packet_decl_8bit_enum_array_big_endian.rs",
|
||
|
|
"tests/generated/packet_decl_8bit_enum_array_little_endian.rs",
|
||
|
|
"tests/generated/packet_decl_8bit_enum_big_endian.rs",
|
||
|
|
"tests/generated/packet_decl_8bit_enum_little_endian.rs",
|
||
|
|
"tests/generated/packet_decl_8bit_scalar_array_big_endian.rs",
|
||
|
|
"tests/generated/packet_decl_8bit_scalar_array_little_endian.rs",
|
||
|
|
"tests/generated/packet_decl_8bit_scalar_big_endian.rs",
|
||
|
|
"tests/generated/packet_decl_8bit_scalar_little_endian.rs",
|
||
|
|
"tests/generated/packet_decl_24bit_enum_array_big_endian.rs",
|
||
|
|
"tests/generated/packet_decl_24bit_enum_array_little_endian.rs",
|
||
|
|
"tests/generated/packet_decl_24bit_enum_big_endian.rs",
|
||
|
|
"tests/generated/packet_decl_24bit_enum_little_endian.rs",
|
||
|
|
"tests/generated/packet_decl_24bit_scalar_array_big_endian.rs",
|
||
|
|
"tests/generated/packet_decl_24bit_scalar_array_little_endian.rs",
|
||
|
|
"tests/generated/packet_decl_24bit_scalar_big_endian.rs",
|
||
|
|
"tests/generated/packet_decl_24bit_scalar_little_endian.rs",
|
||
|
|
"tests/generated/packet_decl_64bit_enum_array_big_endian.rs",
|
||
|
|
"tests/generated/packet_decl_64bit_enum_array_little_endian.rs",
|
||
|
|
"tests/generated/packet_decl_64bit_enum_big_endian.rs",
|
||
|
|
"tests/generated/packet_decl_64bit_enum_little_endian.rs",
|
||
|
|
"tests/generated/packet_decl_64bit_scalar_array_big_endian.rs",
|
||
|
|
"tests/generated/packet_decl_64bit_scalar_array_little_endian.rs",
|
||
|
|
"tests/generated/packet_decl_64bit_scalar_big_endian.rs",
|
||
|
|
"tests/generated/packet_decl_64bit_scalar_little_endian.rs",
|
||
|
|
"tests/generated/packet_decl_array_dynamic_count_big_endian.rs",
|
||
|
|
"tests/generated/packet_decl_array_dynamic_count_little_endian.rs",
|
||
|
|
"tests/generated/packet_decl_array_dynamic_size_big_endian.rs",
|
||
|
|
"tests/generated/packet_decl_array_dynamic_size_little_endian.rs",
|
||
|
|
"tests/generated/packet_decl_array_unknown_element_width_dynamic_count_big_endian.rs",
|
||
|
|
"tests/generated/packet_decl_array_unknown_element_width_dynamic_count_little_endian.rs",
|
||
|
|
"tests/generated/packet_decl_array_unknown_element_width_dynamic_size_big_endian.rs",
|
||
|
|
"tests/generated/packet_decl_array_unknown_element_width_dynamic_size_little_endian.rs",
|
||
|
|
"tests/generated/packet_decl_child_packets_big_endian.rs",
|
||
|
|
"tests/generated/packet_decl_child_packets_little_endian.rs",
|
||
|
|
"tests/generated/packet_decl_complex_scalars_big_endian.rs",
|
||
|
|
"tests/generated/packet_decl_complex_scalars_little_endian.rs",
|
||
|
|
"tests/generated/packet_decl_empty_big_endian.rs",
|
||
|
|
"tests/generated/packet_decl_empty_little_endian.rs",
|
||
|
|
"tests/generated/packet_decl_fixed_enum_field_big_endian.rs",
|
||
|
|
"tests/generated/packet_decl_fixed_enum_field_little_endian.rs",
|
||
|
|
"tests/generated/packet_decl_fixed_scalar_field_big_endian.rs",
|
||
|
|
"tests/generated/packet_decl_fixed_scalar_field_little_endian.rs",
|
||
|
|
"tests/generated/packet_decl_grand_children_big_endian.rs",
|
||
|
|
"tests/generated/packet_decl_grand_children_little_endian.rs",
|
||
|
|
"tests/generated/packet_decl_mask_scalar_value_big_endian.rs",
|
||
|
|
"tests/generated/packet_decl_mask_scalar_value_little_endian.rs",
|
||
|
|
"tests/generated/packet_decl_mixed_scalars_enums_big_endian.rs",
|
||
|
|
"tests/generated/packet_decl_mixed_scalars_enums_little_endian.rs",
|
||
|
|
"tests/generated/packet_decl_payload_field_unknown_size_big_endian.rs",
|
||
|
|
"tests/generated/packet_decl_payload_field_unknown_size_little_endian.rs",
|
||
|
|
"tests/generated/packet_decl_payload_field_unknown_size_terminal_big_endian.rs",
|
||
|
|
"tests/generated/packet_decl_payload_field_unknown_size_terminal_little_endian.rs",
|
||
|
|
"tests/generated/packet_decl_payload_field_variable_size_big_endian.rs",
|
||
|
|
"tests/generated/packet_decl_payload_field_variable_size_little_endian.rs",
|
||
|
|
"tests/generated/packet_decl_reserved_field_big_endian.rs",
|
||
|
|
"tests/generated/packet_decl_reserved_field_little_endian.rs",
|
||
|
|
"tests/generated/packet_decl_simple_scalars_big_endian.rs",
|
||
|
|
"tests/generated/packet_decl_simple_scalars_little_endian.rs",
|
||
|
|
"tests/generated/preamble.rs",
|
||
|
|
"tests/generated/struct_decl_complex_scalars_big_endian.rs",
|
||
|
|
"tests/generated/struct_decl_complex_scalars_little_endian.rs",
|
||
|
|
],
|
||
|
|
}
|
||
|
|
|
||
|
|
rust_test_host {
|
||
|
|
name: "pdl_tests",
|
||
|
|
defaults: ["pdl_defaults"],
|
||
|
|
srcs: ["src/main.rs"],
|
||
|
|
proc_macros: [
|
||
|
|
"libpaste",
|
||
|
|
],
|
||
|
|
test_suites: ["general-tests"],
|
||
|
|
enabled: false, // rustfmt is only available on x86.
|
||
|
|
arch: {
|
||
|
|
x86_64: {
|
||
|
|
enabled: true,
|
||
|
|
},
|
||
|
|
},
|
||
|
|
data: [
|
||
|
|
":rustfmt",
|
||
|
|
":rustfmt.toml",
|
||
|
|
":pdl_generated_files",
|
||
|
|
],
|
||
|
|
}
|
||
|
|
|
||
|
|
genrule {
|
||
|
|
name: "pdl_generated_files_compile_rs",
|
||
|
|
cmd: "$(location tests/generated_files_compile.sh) $(in) > $(out)",
|
||
|
|
srcs: [":pdl_generated_files"],
|
||
|
|
out: ["generated_files_compile.rs"],
|
||
|
|
tool_files: ["tests/generated_files_compile.sh"],
|
||
|
|
}
|
||
|
|
|
||
|
|
rust_test_host {
|
||
|
|
name: "pdl_generated_files_compile",
|
||
|
|
srcs: [":pdl_generated_files_compile_rs"],
|
||
|
|
test_suites: ["general-tests"],
|
||
|
|
clippy_lints: "none",
|
||
|
|
lints: "none",
|
||
|
|
defaults: ["pdl_backend_defaults"],
|
||
|
|
}
|
||
|
|
|
||
|
|
genrule_defaults {
|
||
|
|
name: "pdl_rust_generator_defaults",
|
||
|
|
cmd: "set -o pipefail;" +
|
||
|
|
" $(location :pdl) --output-format rust $(in) |" +
|
||
|
|
" $(location :rustfmt) > $(out)",
|
||
|
|
tools: [
|
||
|
|
":pdl",
|
||
|
|
":rustfmt",
|
||
|
|
],
|
||
|
|
defaults_visibility: [
|
||
|
|
"//external/uwb/src",
|
||
|
|
"//packages/modules/Bluetooth:__subpackages__",
|
||
|
|
],
|
||
|
|
}
|
||
|
|
|
||
|
|
// The generators support more features for LE packets than for BE
|
||
|
|
// packets. We use a single input written for LE packets and remove
|
||
|
|
// the parts that don't work for BE packets. We do this by removing
|
||
|
|
// everything between
|
||
|
|
//
|
||
|
|
// // Start: little_endian_only
|
||
|
|
//
|
||
|
|
// and
|
||
|
|
//
|
||
|
|
// // End: little_endian_only
|
||
|
|
//
|
||
|
|
// from the LE packet input.
|
||
|
|
genrule_defaults {
|
||
|
|
name: "pdl_be_test_file_defaults",
|
||
|
|
cmd: "sed -e 's/little_endian_packets/big_endian_packets/' " +
|
||
|
|
" -e '/Start: little_endian_only/,/End: little_endian_only/d' " +
|
||
|
|
" < $(in) > $(out)",
|
||
|
|
}
|
||
|
|
|
||
|
|
genrule {
|
||
|
|
name: "pdl_be_rust_test_file",
|
||
|
|
defaults: ["pdl_be_test_file_defaults"],
|
||
|
|
srcs: ["tests/canonical/le_rust_test_file.pdl"],
|
||
|
|
out: ["be_rust_test_file.pdl"],
|
||
|
|
}
|
||
|
|
|
||
|
|
genrule {
|
||
|
|
name: "pdl_be_test_file",
|
||
|
|
defaults: ["pdl_be_test_file_defaults"],
|
||
|
|
srcs: ["tests/canonical/le_test_file.pdl"],
|
||
|
|
out: ["be_test_file.pdl"],
|
||
|
|
}
|
||
|
|
|
||
|
|
// Generate the Rust parser+serializer backends.
|
||
|
|
genrule {
|
||
|
|
name: "pdl_le_backend",
|
||
|
|
defaults: ["pdl_rust_generator_defaults"],
|
||
|
|
srcs: ["tests/canonical/le_rust_test_file.pdl"],
|
||
|
|
out: ["le_backend.rs"],
|
||
|
|
}
|
||
|
|
|
||
|
|
genrule {
|
||
|
|
name: "pdl_be_backend",
|
||
|
|
defaults: ["pdl_rust_generator_defaults"],
|
||
|
|
srcs: [":pdl_be_rust_test_file"],
|
||
|
|
out: ["be_backend.rs"],
|
||
|
|
}
|
||
|
|
|
||
|
|
rust_defaults {
|
||
|
|
name: "pdl_backend_defaults",
|
||
|
|
features: ["serde"],
|
||
|
|
rustlibs: [
|
||
|
|
"libbytes",
|
||
|
|
"libnum_traits",
|
||
|
|
"libserde",
|
||
|
|
"libtempfile",
|
||
|
|
"libthiserror",
|
||
|
|
],
|
||
|
|
proc_macros: [
|
||
|
|
"libnum_derive",
|
||
|
|
"libserde_derive",
|
||
|
|
],
|
||
|
|
}
|
||
|
|
|
||
|
|
rust_library_host {
|
||
|
|
name: "libpdl_le_backend",
|
||
|
|
crate_name: "pdl_le_backend",
|
||
|
|
srcs: [":pdl_le_backend"],
|
||
|
|
defaults: ["pdl_backend_defaults"],
|
||
|
|
clippy_lints: "none",
|
||
|
|
lints: "none",
|
||
|
|
}
|
||
|
|
|
||
|
|
rust_library_host {
|
||
|
|
name: "libpdl_be_backend",
|
||
|
|
crate_name: "pdl_be_backend",
|
||
|
|
srcs: [":pdl_be_backend"],
|
||
|
|
defaults: ["pdl_backend_defaults"],
|
||
|
|
clippy_lints: "none",
|
||
|
|
lints: "none",
|
||
|
|
}
|
||
|
|
|
||
|
|
rust_binary_host {
|
||
|
|
name: "pdl_generate_tests",
|
||
|
|
srcs: ["src/bin/generate-canonical-tests.rs"],
|
||
|
|
rustlibs: [
|
||
|
|
"libproc_macro2",
|
||
|
|
"libquote",
|
||
|
|
"libserde",
|
||
|
|
"libserde_json",
|
||
|
|
"libsyn",
|
||
|
|
"libtempfile",
|
||
|
|
],
|
||
|
|
}
|
||
|
|
|
||
|
|
genrule_defaults {
|
||
|
|
name: "pdl_rust_generator_src_defaults",
|
||
|
|
tools: [
|
||
|
|
":pdl_generate_tests",
|
||
|
|
":rustfmt",
|
||
|
|
],
|
||
|
|
}
|
||
|
|
|
||
|
|
genrule {
|
||
|
|
name: "pdl_rust_generator_tests_le_src",
|
||
|
|
cmd: "set -o pipefail;" +
|
||
|
|
" $(location :pdl_generate_tests) $(in) pdl_le_backend |" +
|
||
|
|
" $(location :rustfmt) > $(out)",
|
||
|
|
srcs: ["tests/canonical/le_test_vectors.json"],
|
||
|
|
out: ["le_canonical.rs"],
|
||
|
|
defaults: ["pdl_rust_generator_src_defaults"],
|
||
|
|
}
|
||
|
|
|
||
|
|
genrule {
|
||
|
|
name: "pdl_rust_generator_tests_be_src",
|
||
|
|
cmd: "set -o pipefail;" +
|
||
|
|
" $(location :pdl_generate_tests) $(in) pdl_be_backend |" +
|
||
|
|
" $(location :rustfmt) > $(out)",
|
||
|
|
srcs: ["tests/canonical/be_test_vectors.json"],
|
||
|
|
out: ["be_canonical.rs"],
|
||
|
|
defaults: ["pdl_rust_generator_src_defaults"],
|
||
|
|
}
|
||
|
|
|
||
|
|
rust_test_host {
|
||
|
|
name: "pdl_rust_generator_tests_le",
|
||
|
|
srcs: [":pdl_rust_generator_tests_le_src"],
|
||
|
|
test_suites: ["general-tests"],
|
||
|
|
rustlibs: [
|
||
|
|
"libnum_traits",
|
||
|
|
"libpdl_le_backend",
|
||
|
|
"libserde_json",
|
||
|
|
],
|
||
|
|
clippy_lints: "none",
|
||
|
|
lints: "none",
|
||
|
|
}
|
||
|
|
|
||
|
|
rust_test_host {
|
||
|
|
name: "pdl_rust_generator_tests_be",
|
||
|
|
srcs: [":pdl_rust_generator_tests_be_src"],
|
||
|
|
test_suites: ["general-tests"],
|
||
|
|
rustlibs: [
|
||
|
|
"libnum_traits",
|
||
|
|
"libpdl_be_backend",
|
||
|
|
"libserde_json",
|
||
|
|
],
|
||
|
|
clippy_lints: "none",
|
||
|
|
lints: "none",
|
||
|
|
}
|
||
|
|
|
||
|
|
// Defaults for PDL python backend generation.
|
||
|
|
genrule_defaults {
|
||
|
|
name: "pdl_python_generator_defaults",
|
||
|
|
tools: [
|
||
|
|
":pdl",
|
||
|
|
":pdl_python_generator",
|
||
|
|
],
|
||
|
|
}
|
||
|
|
|
||
|
|
// Defaults for PDL python backend generation.
|
||
|
|
genrule_defaults {
|
||
|
|
name: "pdl_cxx_generator_defaults",
|
||
|
|
tools: [
|
||
|
|
":pdl",
|
||
|
|
":pdl_cxx_generator",
|
||
|
|
],
|
||
|
|
}
|
||
|
|
|
||
|
|
// Generate the python parser+serializer backend for the
|
||
|
|
// little endian test file located at tests/canonical/le_test_file.pdl.
|
||
|
|
genrule {
|
||
|
|
name: "pdl_python_generator_le_test_gen",
|
||
|
|
defaults: ["pdl_python_generator_defaults"],
|
||
|
|
cmd: "set -o pipefail;" +
|
||
|
|
" $(location :pdl) $(in) |" +
|
||
|
|
" $(location :pdl_python_generator)" +
|
||
|
|
" --output $(out) --custom-type-location tests.custom_types",
|
||
|
|
tool_files: [
|
||
|
|
"tests/custom_types.py",
|
||
|
|
],
|
||
|
|
srcs: [
|
||
|
|
"tests/canonical/le_test_file.pdl",
|
||
|
|
],
|
||
|
|
out: [
|
||
|
|
"le_pdl_test.py",
|
||
|
|
],
|
||
|
|
}
|
||
|
|
|
||
|
|
// Generate the python parser+serializer backend for a big endian test
|
||
|
|
// file derived from tests/canonical/le_test_file.pdl.
|
||
|
|
genrule {
|
||
|
|
name: "pdl_python_generator_be_test_gen",
|
||
|
|
defaults: ["pdl_python_generator_defaults"],
|
||
|
|
cmd: "set -o pipefail;" +
|
||
|
|
" $(location :pdl) $(in) |" +
|
||
|
|
" $(location :pdl_python_generator)" +
|
||
|
|
" --output $(out) --custom-type-location tests.custom_types",
|
||
|
|
tool_files: [
|
||
|
|
"tests/custom_types.py",
|
||
|
|
],
|
||
|
|
srcs: [
|
||
|
|
":pdl_be_test_file",
|
||
|
|
],
|
||
|
|
out: [
|
||
|
|
"be_pdl_test.py",
|
||
|
|
],
|
||
|
|
}
|
||
|
|
|
||
|
|
// Test the generated python parser+serializer against
|
||
|
|
// pre-generated binary inputs.
|
||
|
|
python_test_host {
|
||
|
|
name: "pdl_python_generator_test",
|
||
|
|
main: "tests/python_generator_test.py",
|
||
|
|
srcs: [
|
||
|
|
":pdl_python_generator_be_test_gen",
|
||
|
|
":pdl_python_generator_le_test_gen",
|
||
|
|
"tests/custom_types.py",
|
||
|
|
"tests/python_generator_test.py",
|
||
|
|
],
|
||
|
|
data: [
|
||
|
|
"tests/canonical/be_test_vectors.json",
|
||
|
|
"tests/canonical/le_test_vectors.json",
|
||
|
|
],
|
||
|
|
libs: [
|
||
|
|
"typing_extensions",
|
||
|
|
],
|
||
|
|
test_options: {
|
||
|
|
unit_test: true,
|
||
|
|
},
|
||
|
|
version: {
|
||
|
|
py3: {
|
||
|
|
embedded_launcher: true,
|
||
|
|
},
|
||
|
|
},
|
||
|
|
}
|
||
|
|
|
||
|
|
// Defaults for the rust_noalloc backend
|
||
|
|
genrule_defaults {
|
||
|
|
name: "pdl_rust_noalloc_generator_defaults",
|
||
|
|
cmd: "set -o pipefail;" +
|
||
|
|
" $(location :pdl) --output-format rust_no_alloc $(in) |" +
|
||
|
|
" $(location :rustfmt) > $(out)",
|
||
|
|
tools: [
|
||
|
|
":pdl",
|
||
|
|
":rustfmt",
|
||
|
|
],
|
||
|
|
}
|
||
|
|
|
||
|
|
// Generate the rust_noalloc backend srcs against the little-endian test vectors
|
||
|
|
genrule {
|
||
|
|
name: "pdl_rust_noalloc_le_test_backend_srcs",
|
||
|
|
defaults: ["pdl_rust_noalloc_generator_defaults"],
|
||
|
|
srcs: ["tests/canonical/le_rust_noalloc_test_file.pdl"],
|
||
|
|
out: ["_packets.rs"],
|
||
|
|
}
|
||
|
|
|
||
|
|
// Generate the rust_noalloc test harness srcs for the supplied test vectors
|
||
|
|
genrule {
|
||
|
|
name: "pdl_rust_noalloc_le_test_gen_harness",
|
||
|
|
cmd: "set -o pipefail;" +
|
||
|
|
" $(location :pdl) $(in) --output-format rust_no_alloc_test" +
|
||
|
|
" > $(out)",
|
||
|
|
srcs: ["tests/canonical/le_rust_noalloc_test_file.pdl"],
|
||
|
|
out: ["test_rust_noalloc_parser.rs"],
|
||
|
|
tools: [":pdl"],
|
||
|
|
}
|
||
|
|
|
||
|
|
// The test target for rust_noalloc
|
||
|
|
rust_test_host {
|
||
|
|
name: "pdl_rust_noalloc_le_test",
|
||
|
|
srcs: [
|
||
|
|
":pdl_rust_noalloc_le_test_gen_harness",
|
||
|
|
|
||
|
|
":pdl_rust_noalloc_le_test_backend_srcs",
|
||
|
|
],
|
||
|
|
test_suites: ["general-tests"],
|
||
|
|
}
|
||
|
|
|
||
|
|
// Generate the C++ parser+serializer backend for the
|
||
|
|
// little endian test file located at tests/canonical/le_test_file.pdl.
|
||
|
|
genrule {
|
||
|
|
name: "pdl_cxx_canonical_le_src_gen",
|
||
|
|
defaults: ["pdl_cxx_generator_defaults"],
|
||
|
|
cmd: "set -o pipefail;" +
|
||
|
|
" $(location :pdl) $(in) |" +
|
||
|
|
" $(location :pdl_cxx_generator)" +
|
||
|
|
" --namespace le_test" +
|
||
|
|
" --output $(out)",
|
||
|
|
srcs: [
|
||
|
|
"tests/canonical/le_test_file.pdl",
|
||
|
|
],
|
||
|
|
out: [
|
||
|
|
"canonical_le_test_file.h",
|
||
|
|
],
|
||
|
|
}
|
||
|
|
|
||
|
|
// Generate the C++ parser+serializer backend tests for the
|
||
|
|
// little endian test file located at tests/canonical/le_test_file.pdl.
|
||
|
|
genrule {
|
||
|
|
name: "pdl_cxx_canonical_le_test_gen",
|
||
|
|
cmd: "set -o pipefail;" +
|
||
|
|
" inputs=( $(in) ) &&" +
|
||
|
|
" $(location :pdl) $${inputs[0]} |" +
|
||
|
|
" $(location :pdl_cxx_unittest_generator)" +
|
||
|
|
" --output $(out)" +
|
||
|
|
" --test-vectors $${inputs[1]}" +
|
||
|
|
" --include-header $$(basename $${inputs[2]})" +
|
||
|
|
" --using-namespace le_test" +
|
||
|
|
" --namespace le_test" +
|
||
|
|
" --parser-test-suite LeParserTest" +
|
||
|
|
" --serializer-test-suite LeSerializerTest",
|
||
|
|
tools: [
|
||
|
|
":pdl",
|
||
|
|
":pdl_cxx_unittest_generator",
|
||
|
|
],
|
||
|
|
srcs: [
|
||
|
|
"tests/canonical/le_test_file.pdl",
|
||
|
|
"tests/canonical/le_test_vectors.json",
|
||
|
|
":pdl_cxx_canonical_le_src_gen",
|
||
|
|
],
|
||
|
|
out: [
|
||
|
|
"canonical_le_test.cc",
|
||
|
|
],
|
||
|
|
}
|
||
|
|
|
||
|
|
// Generate the C++ parser+serializer backend for the
|
||
|
|
// big endian test file.
|
||
|
|
genrule {
|
||
|
|
name: "pdl_cxx_canonical_be_src_gen",
|
||
|
|
defaults: ["pdl_cxx_generator_defaults"],
|
||
|
|
cmd: "set -o pipefail;" +
|
||
|
|
" $(location :pdl) $(in) |" +
|
||
|
|
" $(location :pdl_cxx_generator)" +
|
||
|
|
" --namespace be_test" +
|
||
|
|
" --output $(out)",
|
||
|
|
srcs: [
|
||
|
|
":pdl_be_test_file",
|
||
|
|
],
|
||
|
|
out: [
|
||
|
|
"canonical_be_test_file.h",
|
||
|
|
],
|
||
|
|
}
|
||
|
|
|
||
|
|
// Generate the C++ parser+serializer backend tests for the
|
||
|
|
// big endian test file.
|
||
|
|
genrule {
|
||
|
|
name: "pdl_cxx_canonical_be_test_gen",
|
||
|
|
cmd: "set -o pipefail;" +
|
||
|
|
" inputs=( $(in) ) &&" +
|
||
|
|
" $(location :pdl) $${inputs[0]} |" +
|
||
|
|
" $(location :pdl_cxx_unittest_generator)" +
|
||
|
|
" --output $(out)" +
|
||
|
|
" --test-vectors $${inputs[1]}" +
|
||
|
|
" --include-header $$(basename $${inputs[2]})" +
|
||
|
|
" --using-namespace be_test" +
|
||
|
|
" --namespace be_test" +
|
||
|
|
" --parser-test-suite BeParserTest" +
|
||
|
|
" --serializer-test-suite BeSerializerTest",
|
||
|
|
tools: [
|
||
|
|
":pdl",
|
||
|
|
":pdl_cxx_unittest_generator",
|
||
|
|
],
|
||
|
|
srcs: [
|
||
|
|
":pdl_be_test_file",
|
||
|
|
"tests/canonical/be_test_vectors.json",
|
||
|
|
":pdl_cxx_canonical_be_src_gen",
|
||
|
|
],
|
||
|
|
out: [
|
||
|
|
"canonical_be_test.cc",
|
||
|
|
],
|
||
|
|
}
|
||
|
|
|
||
|
|
// Test the generated C++ parser+serializer against
|
||
|
|
// pre-generated binary inputs.
|
||
|
|
cc_test_host {
|
||
|
|
name: "pdl_cxx_generator_test",
|
||
|
|
local_include_dirs: [
|
||
|
|
"scripts",
|
||
|
|
],
|
||
|
|
generated_headers: [
|
||
|
|
"pdl_cxx_canonical_le_src_gen",
|
||
|
|
"pdl_cxx_canonical_be_src_gen",
|
||
|
|
],
|
||
|
|
generated_sources: [
|
||
|
|
"pdl_cxx_canonical_le_test_gen",
|
||
|
|
"pdl_cxx_canonical_be_test_gen",
|
||
|
|
],
|
||
|
|
static_libs: [
|
||
|
|
"libgtest",
|
||
|
|
],
|
||
|
|
}
|