1*61c4878aSAndroid Build Coastguard Worker# Copyright 2020 The Pigweed Authors 2*61c4878aSAndroid Build Coastguard Worker# 3*61c4878aSAndroid Build Coastguard Worker# Licensed under the Apache License, Version 2.0 (the "License"); you may not 4*61c4878aSAndroid Build Coastguard Worker# use this file except in compliance with the License. You may obtain a copy of 5*61c4878aSAndroid Build Coastguard Worker# the License at 6*61c4878aSAndroid Build Coastguard Worker# 7*61c4878aSAndroid Build Coastguard Worker# https://www.apache.org/licenses/LICENSE-2.0 8*61c4878aSAndroid Build Coastguard Worker# 9*61c4878aSAndroid Build Coastguard Worker# Unless required by applicable law or agreed to in writing, software 10*61c4878aSAndroid Build Coastguard Worker# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 11*61c4878aSAndroid Build Coastguard Worker# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 12*61c4878aSAndroid Build Coastguard Worker# License for the specific language governing permissions and limitations under 13*61c4878aSAndroid Build Coastguard Worker# the License. 14*61c4878aSAndroid Build Coastguard Worker 15*61c4878aSAndroid Build Coastguard Workerimport("//build_overrides/pigweed.gni") 16*61c4878aSAndroid Build Coastguard Worker 17*61c4878aSAndroid Build Coastguard Workerimport("$dir_pw_arduino_build/arduino.gni") 18*61c4878aSAndroid Build Coastguard Workerimport("$dir_pw_bloat/bloat.gni") 19*61c4878aSAndroid Build Coastguard Workerimport("$dir_pw_build/cc_blob_library.gni") 20*61c4878aSAndroid Build Coastguard Workerimport("$dir_pw_build/module_config.gni") 21*61c4878aSAndroid Build Coastguard Workerimport("$dir_pw_build/target_types.gni") 22*61c4878aSAndroid Build Coastguard Workerimport("$dir_pw_docgen/docs.gni") 23*61c4878aSAndroid Build Coastguard Workerimport("$dir_pw_fuzzer/fuzzer.gni") 24*61c4878aSAndroid Build Coastguard Workerimport("$dir_pw_protobuf_compiler/proto.gni") 25*61c4878aSAndroid Build Coastguard Workerimport("$dir_pw_unit_test/test.gni") 26*61c4878aSAndroid Build Coastguard Worker 27*61c4878aSAndroid Build Coastguard Workerdeclare_args() { 28*61c4878aSAndroid Build Coastguard Worker # The build target that overrides the default configuration options for this 29*61c4878aSAndroid Build Coastguard Worker # module. This should point to a source set that provides defines through a 30*61c4878aSAndroid Build Coastguard Worker # public config (which may -include a file or add defines directly). 31*61c4878aSAndroid Build Coastguard Worker pw_tokenizer_CONFIG = pw_build_DEFAULT_MODULE_CONFIG 32*61c4878aSAndroid Build Coastguard Worker} 33*61c4878aSAndroid Build Coastguard Worker 34*61c4878aSAndroid Build Coastguard Workerconfig("public_include_path") { 35*61c4878aSAndroid Build Coastguard Worker include_dirs = [ "public" ] 36*61c4878aSAndroid Build Coastguard Worker visibility = [ ":*" ] 37*61c4878aSAndroid Build Coastguard Worker} 38*61c4878aSAndroid Build Coastguard Worker 39*61c4878aSAndroid Build Coastguard Workerconfig("linker_script") { 40*61c4878aSAndroid Build Coastguard Worker inputs = [ "pw_tokenizer_linker_sections.ld" ] 41*61c4878aSAndroid Build Coastguard Worker lib_dirs = [ "." ] 42*61c4878aSAndroid Build Coastguard Worker 43*61c4878aSAndroid Build Coastguard Worker # Automatically add the tokenizer linker sections when cross-compiling or 44*61c4878aSAndroid Build Coastguard Worker # building for Linux. macOS and Windows executables are not supported. 45*61c4878aSAndroid Build Coastguard Worker if (current_os == "" || current_os == "freertos") { 46*61c4878aSAndroid Build Coastguard Worker ldflags = [ 47*61c4878aSAndroid Build Coastguard Worker "-T", 48*61c4878aSAndroid Build Coastguard Worker rebase_path("pw_tokenizer_linker_sections.ld", root_build_dir), 49*61c4878aSAndroid Build Coastguard Worker ] 50*61c4878aSAndroid Build Coastguard Worker } else if (current_os == "linux" && !pw_toolchain_OSS_FUZZ_ENABLED) { 51*61c4878aSAndroid Build Coastguard Worker # When building for Linux, the linker provides a default linker script. 52*61c4878aSAndroid Build Coastguard Worker # The add_tokenizer_sections_to_default_script.ld wrapper includes the 53*61c4878aSAndroid Build Coastguard Worker # pw_tokenizer_linker_sections.ld script in a way that appends to the the 54*61c4878aSAndroid Build Coastguard Worker # default linker script instead of overriding it. 55*61c4878aSAndroid Build Coastguard Worker ldflags = [ 56*61c4878aSAndroid Build Coastguard Worker "-T", 57*61c4878aSAndroid Build Coastguard Worker rebase_path("add_tokenizer_sections_to_default_script.ld", 58*61c4878aSAndroid Build Coastguard Worker root_build_dir), 59*61c4878aSAndroid Build Coastguard Worker ] 60*61c4878aSAndroid Build Coastguard Worker 61*61c4878aSAndroid Build Coastguard Worker inputs += [ "add_tokenizer_sections_to_default_script.ld" ] 62*61c4878aSAndroid Build Coastguard Worker } 63*61c4878aSAndroid Build Coastguard Worker visibility = [ ":*" ] 64*61c4878aSAndroid Build Coastguard Worker} 65*61c4878aSAndroid Build Coastguard Worker 66*61c4878aSAndroid Build Coastguard Workerpw_source_set("config") { 67*61c4878aSAndroid Build Coastguard Worker public = [ "public/pw_tokenizer/config.h" ] 68*61c4878aSAndroid Build Coastguard Worker public_configs = [ ":public_include_path" ] 69*61c4878aSAndroid Build Coastguard Worker public_deps = [ pw_tokenizer_CONFIG ] 70*61c4878aSAndroid Build Coastguard Worker} 71*61c4878aSAndroid Build Coastguard Worker 72*61c4878aSAndroid Build Coastguard Workerpw_source_set("pw_tokenizer") { 73*61c4878aSAndroid Build Coastguard Worker public_configs = [ ":public_include_path" ] 74*61c4878aSAndroid Build Coastguard Worker all_dependent_configs = [ ":linker_script" ] 75*61c4878aSAndroid Build Coastguard Worker public_deps = [ 76*61c4878aSAndroid Build Coastguard Worker ":config", 77*61c4878aSAndroid Build Coastguard Worker "$dir_pw_containers:to_array", 78*61c4878aSAndroid Build Coastguard Worker dir_pw_polyfill, 79*61c4878aSAndroid Build Coastguard Worker dir_pw_preprocessor, 80*61c4878aSAndroid Build Coastguard Worker dir_pw_span, 81*61c4878aSAndroid Build Coastguard Worker dir_pw_varint, 82*61c4878aSAndroid Build Coastguard Worker ] 83*61c4878aSAndroid Build Coastguard Worker public = [ 84*61c4878aSAndroid Build Coastguard Worker "public/pw_tokenizer/encode_args.h", 85*61c4878aSAndroid Build Coastguard Worker "public/pw_tokenizer/enum.h", 86*61c4878aSAndroid Build Coastguard Worker "public/pw_tokenizer/hash.h", 87*61c4878aSAndroid Build Coastguard Worker "public/pw_tokenizer/nested_tokenization.h", 88*61c4878aSAndroid Build Coastguard Worker "public/pw_tokenizer/tokenize.h", 89*61c4878aSAndroid Build Coastguard Worker ] 90*61c4878aSAndroid Build Coastguard Worker sources = [ 91*61c4878aSAndroid Build Coastguard Worker "encode_args.cc", 92*61c4878aSAndroid Build Coastguard Worker "hash.cc", 93*61c4878aSAndroid Build Coastguard Worker "public/pw_tokenizer/internal/argument_types.h", 94*61c4878aSAndroid Build Coastguard Worker "public/pw_tokenizer/internal/argument_types_macro_4_byte.h", 95*61c4878aSAndroid Build Coastguard Worker "public/pw_tokenizer/internal/argument_types_macro_8_byte.h", 96*61c4878aSAndroid Build Coastguard Worker "public/pw_tokenizer/internal/enum.h", 97*61c4878aSAndroid Build Coastguard Worker "public/pw_tokenizer/internal/pw_tokenizer_65599_fixed_length_128_hash_macro.h", 98*61c4878aSAndroid Build Coastguard Worker "public/pw_tokenizer/internal/pw_tokenizer_65599_fixed_length_256_hash_macro.h", 99*61c4878aSAndroid Build Coastguard Worker "public/pw_tokenizer/internal/pw_tokenizer_65599_fixed_length_80_hash_macro.h", 100*61c4878aSAndroid Build Coastguard Worker "public/pw_tokenizer/internal/pw_tokenizer_65599_fixed_length_96_hash_macro.h", 101*61c4878aSAndroid Build Coastguard Worker "public/pw_tokenizer/internal/tokenize_string.h", 102*61c4878aSAndroid Build Coastguard Worker "tokenize.cc", 103*61c4878aSAndroid Build Coastguard Worker ] 104*61c4878aSAndroid Build Coastguard Worker friend = [ ":*" ] 105*61c4878aSAndroid Build Coastguard Worker} 106*61c4878aSAndroid Build Coastguard Worker 107*61c4878aSAndroid Build Coastguard Workerpw_source_set("base64") { 108*61c4878aSAndroid Build Coastguard Worker public_configs = [ ":public_include_path" ] 109*61c4878aSAndroid Build Coastguard Worker public = [ "public/pw_tokenizer/base64.h" ] 110*61c4878aSAndroid Build Coastguard Worker sources = [ "base64.cc" ] 111*61c4878aSAndroid Build Coastguard Worker public_deps = [ 112*61c4878aSAndroid Build Coastguard Worker ":pw_tokenizer", 113*61c4878aSAndroid Build Coastguard Worker "$dir_pw_string:string", 114*61c4878aSAndroid Build Coastguard Worker dir_pw_base64, 115*61c4878aSAndroid Build Coastguard Worker dir_pw_preprocessor, 116*61c4878aSAndroid Build Coastguard Worker ] 117*61c4878aSAndroid Build Coastguard Worker} 118*61c4878aSAndroid Build Coastguard Worker 119*61c4878aSAndroid Build Coastguard Workerpw_source_set("decoder") { 120*61c4878aSAndroid Build Coastguard Worker public_configs = [ ":public_include_path" ] 121*61c4878aSAndroid Build Coastguard Worker public_deps = [ 122*61c4878aSAndroid Build Coastguard Worker dir_pw_preprocessor, 123*61c4878aSAndroid Build Coastguard Worker dir_pw_result, 124*61c4878aSAndroid Build Coastguard Worker dir_pw_span, 125*61c4878aSAndroid Build Coastguard Worker dir_pw_stream, 126*61c4878aSAndroid Build Coastguard Worker ] 127*61c4878aSAndroid Build Coastguard Worker deps = [ 128*61c4878aSAndroid Build Coastguard Worker ":base64", 129*61c4878aSAndroid Build Coastguard Worker "$dir_pw_bytes:bit", 130*61c4878aSAndroid Build Coastguard Worker "$dir_pw_elf:reader", 131*61c4878aSAndroid Build Coastguard Worker dir_pw_base64, 132*61c4878aSAndroid Build Coastguard Worker dir_pw_bytes, 133*61c4878aSAndroid Build Coastguard Worker dir_pw_varint, 134*61c4878aSAndroid Build Coastguard Worker ] 135*61c4878aSAndroid Build Coastguard Worker public = [ 136*61c4878aSAndroid Build Coastguard Worker "public/pw_tokenizer/detokenize.h", 137*61c4878aSAndroid Build Coastguard Worker "public/pw_tokenizer/token_database.h", 138*61c4878aSAndroid Build Coastguard Worker ] 139*61c4878aSAndroid Build Coastguard Worker sources = [ 140*61c4878aSAndroid Build Coastguard Worker "decode.cc", 141*61c4878aSAndroid Build Coastguard Worker "detokenize.cc", 142*61c4878aSAndroid Build Coastguard Worker "public/pw_tokenizer/internal/decode.h", 143*61c4878aSAndroid Build Coastguard Worker "token_database.cc", 144*61c4878aSAndroid Build Coastguard Worker ] 145*61c4878aSAndroid Build Coastguard Worker friend = [ ":*" ] 146*61c4878aSAndroid Build Coastguard Worker} 147*61c4878aSAndroid Build Coastguard Worker 148*61c4878aSAndroid Build Coastguard Worker# Executable for generating test data for the C++ and Python detokenizers. This 149*61c4878aSAndroid Build Coastguard Worker# target should only be built for the host. 150*61c4878aSAndroid Build Coastguard Workerpw_executable("generate_decoding_test_data") { 151*61c4878aSAndroid Build Coastguard Worker deps = [ 152*61c4878aSAndroid Build Coastguard Worker ":decoder", 153*61c4878aSAndroid Build Coastguard Worker ":pw_tokenizer", 154*61c4878aSAndroid Build Coastguard Worker dir_pw_varint, 155*61c4878aSAndroid Build Coastguard Worker ] 156*61c4878aSAndroid Build Coastguard Worker sources = [ "generate_decoding_test_data.cc" ] 157*61c4878aSAndroid Build Coastguard Worker} 158*61c4878aSAndroid Build Coastguard Worker 159*61c4878aSAndroid Build Coastguard Worker# Executable for generating a test ELF file for elf_reader_test.py. A host 160*61c4878aSAndroid Build Coastguard Worker# version of this binary is checked in for use in elf_reader_test.py. 161*61c4878aSAndroid Build Coastguard Workerpw_executable("elf_reader_test_binary") { 162*61c4878aSAndroid Build Coastguard Worker deps = [ 163*61c4878aSAndroid Build Coastguard Worker ":pw_tokenizer", 164*61c4878aSAndroid Build Coastguard Worker "$dir_pw_varint", 165*61c4878aSAndroid Build Coastguard Worker ] 166*61c4878aSAndroid Build Coastguard Worker sources = [ "py/elf_reader_test_binary.c" ] 167*61c4878aSAndroid Build Coastguard Worker ldflags = [ "-Wl,--unresolved-symbols=ignore-all" ] # main is not defined 168*61c4878aSAndroid Build Coastguard Worker} 169*61c4878aSAndroid Build Coastguard Worker 170*61c4878aSAndroid Build Coastguard Workerpw_test_group("tests") { 171*61c4878aSAndroid Build Coastguard Worker tests = [ 172*61c4878aSAndroid Build Coastguard Worker ":argument_types_test", 173*61c4878aSAndroid Build Coastguard Worker ":base64_test", 174*61c4878aSAndroid Build Coastguard Worker ":decode_test", 175*61c4878aSAndroid Build Coastguard Worker ":detokenize_test", 176*61c4878aSAndroid Build Coastguard Worker ":enum_test", 177*61c4878aSAndroid Build Coastguard Worker ":encode_args_test", 178*61c4878aSAndroid Build Coastguard Worker ":hash_test", 179*61c4878aSAndroid Build Coastguard Worker ":simple_tokenize_test", 180*61c4878aSAndroid Build Coastguard Worker ":token_database_test", 181*61c4878aSAndroid Build Coastguard Worker ":tokenize_test", 182*61c4878aSAndroid Build Coastguard Worker ":tokenize_c99_test", 183*61c4878aSAndroid Build Coastguard Worker ] 184*61c4878aSAndroid Build Coastguard Worker group_deps = [ 185*61c4878aSAndroid Build Coastguard Worker ":fuzzers", 186*61c4878aSAndroid Build Coastguard Worker "$dir_pw_preprocessor:tests", 187*61c4878aSAndroid Build Coastguard Worker ] 188*61c4878aSAndroid Build Coastguard Worker} 189*61c4878aSAndroid Build Coastguard Worker 190*61c4878aSAndroid Build Coastguard Workerpw_fuzzer_group("fuzzers") { 191*61c4878aSAndroid Build Coastguard Worker fuzzers = [ 192*61c4878aSAndroid Build Coastguard Worker ":detokenize_fuzzer", 193*61c4878aSAndroid Build Coastguard Worker ":token_database_fuzzer", 194*61c4878aSAndroid Build Coastguard Worker ] 195*61c4878aSAndroid Build Coastguard Worker} 196*61c4878aSAndroid Build Coastguard Worker 197*61c4878aSAndroid Build Coastguard Workerpw_test("argument_types_test") { 198*61c4878aSAndroid Build Coastguard Worker sources = [ 199*61c4878aSAndroid Build Coastguard Worker "argument_types_test.cc", 200*61c4878aSAndroid Build Coastguard Worker "argument_types_test_c.c", 201*61c4878aSAndroid Build Coastguard Worker "pw_tokenizer_private/argument_types_test.h", 202*61c4878aSAndroid Build Coastguard Worker ] 203*61c4878aSAndroid Build Coastguard Worker deps = [ ":pw_tokenizer" ] 204*61c4878aSAndroid Build Coastguard Worker 205*61c4878aSAndroid Build Coastguard Worker if (pw_arduino_build_CORE_PATH != "") { 206*61c4878aSAndroid Build Coastguard Worker remove_configs = [ "$dir_pw_build:strict_warnings" ] 207*61c4878aSAndroid Build Coastguard Worker } 208*61c4878aSAndroid Build Coastguard Worker} 209*61c4878aSAndroid Build Coastguard Worker 210*61c4878aSAndroid Build Coastguard Workerpw_test("base64_test") { 211*61c4878aSAndroid Build Coastguard Worker sources = [ "base64_test.cc" ] 212*61c4878aSAndroid Build Coastguard Worker deps = [ 213*61c4878aSAndroid Build Coastguard Worker ":base64", 214*61c4878aSAndroid Build Coastguard Worker dir_pw_span, 215*61c4878aSAndroid Build Coastguard Worker ] 216*61c4878aSAndroid Build Coastguard Worker} 217*61c4878aSAndroid Build Coastguard Worker 218*61c4878aSAndroid Build Coastguard Workerpw_test("decode_test") { 219*61c4878aSAndroid Build Coastguard Worker sources = [ 220*61c4878aSAndroid Build Coastguard Worker "decode_test.cc", 221*61c4878aSAndroid Build Coastguard Worker "pw_tokenizer_private/tokenized_string_decoding_test_data.h", 222*61c4878aSAndroid Build Coastguard Worker "pw_tokenizer_private/varint_decoding_test_data.h", 223*61c4878aSAndroid Build Coastguard Worker ] 224*61c4878aSAndroid Build Coastguard Worker deps = [ 225*61c4878aSAndroid Build Coastguard Worker ":decoder", 226*61c4878aSAndroid Build Coastguard Worker "$dir_pw_varint", 227*61c4878aSAndroid Build Coastguard Worker ] 228*61c4878aSAndroid Build Coastguard Worker 229*61c4878aSAndroid Build Coastguard Worker # TODO(tonymd): This fails on Teensyduino 1.54 beta core. It may be related to 230*61c4878aSAndroid Build Coastguard Worker # linking in stl functions. Will debug when 1.54 is released. 231*61c4878aSAndroid Build Coastguard Worker enable_if = pw_build_EXECUTABLE_TARGET_TYPE != "arduino_executable" 232*61c4878aSAndroid Build Coastguard Worker} 233*61c4878aSAndroid Build Coastguard Worker 234*61c4878aSAndroid Build Coastguard Workerpw_test("detokenize_test") { 235*61c4878aSAndroid Build Coastguard Worker sources = [ "detokenize_test.cc" ] 236*61c4878aSAndroid Build Coastguard Worker deps = [ 237*61c4878aSAndroid Build Coastguard Worker ":decoder", 238*61c4878aSAndroid Build Coastguard Worker ":detokenizer_elf_test_blob", 239*61c4878aSAndroid Build Coastguard Worker dir_pw_stream, 240*61c4878aSAndroid Build Coastguard Worker ] 241*61c4878aSAndroid Build Coastguard Worker 242*61c4878aSAndroid Build Coastguard Worker # TODO(tonymd): This fails on Teensyduino 1.54 beta core. It may be related to 243*61c4878aSAndroid Build Coastguard Worker # linking in stl functions. Will debug when 1.54 is released. 244*61c4878aSAndroid Build Coastguard Worker enable_if = pw_build_EXECUTABLE_TARGET_TYPE != "arduino_executable" 245*61c4878aSAndroid Build Coastguard Worker} 246*61c4878aSAndroid Build Coastguard Worker 247*61c4878aSAndroid Build Coastguard Workerpw_test("encode_args_test") { 248*61c4878aSAndroid Build Coastguard Worker sources = [ "encode_args_test.cc" ] 249*61c4878aSAndroid Build Coastguard Worker deps = [ ":pw_tokenizer" ] 250*61c4878aSAndroid Build Coastguard Worker} 251*61c4878aSAndroid Build Coastguard Worker 252*61c4878aSAndroid Build Coastguard Workerpw_test("enum_test") { 253*61c4878aSAndroid Build Coastguard Worker sources = [ "enum_test.cc" ] 254*61c4878aSAndroid Build Coastguard Worker deps = [ ":pw_tokenizer" ] 255*61c4878aSAndroid Build Coastguard Worker negative_compilation_tests = true 256*61c4878aSAndroid Build Coastguard Worker} 257*61c4878aSAndroid Build Coastguard Worker 258*61c4878aSAndroid Build Coastguard Workerpw_test("hash_test") { 259*61c4878aSAndroid Build Coastguard Worker sources = [ 260*61c4878aSAndroid Build Coastguard Worker "hash_test.cc", 261*61c4878aSAndroid Build Coastguard Worker "pw_tokenizer_private/generated_hash_test_cases.h", 262*61c4878aSAndroid Build Coastguard Worker ] 263*61c4878aSAndroid Build Coastguard Worker deps = [ ":pw_tokenizer" ] 264*61c4878aSAndroid Build Coastguard Worker} 265*61c4878aSAndroid Build Coastguard Worker 266*61c4878aSAndroid Build Coastguard Workerpw_test("simple_tokenize_test") { 267*61c4878aSAndroid Build Coastguard Worker sources = [ "simple_tokenize_test.cc" ] 268*61c4878aSAndroid Build Coastguard Worker deps = [ ":pw_tokenizer" ] 269*61c4878aSAndroid Build Coastguard Worker} 270*61c4878aSAndroid Build Coastguard Worker 271*61c4878aSAndroid Build Coastguard Workerpw_test("token_database_test") { 272*61c4878aSAndroid Build Coastguard Worker sources = [ "token_database_test.cc" ] 273*61c4878aSAndroid Build Coastguard Worker deps = [ ":decoder" ] 274*61c4878aSAndroid Build Coastguard Worker} 275*61c4878aSAndroid Build Coastguard Worker 276*61c4878aSAndroid Build Coastguard Workerpw_test("tokenize_test") { 277*61c4878aSAndroid Build Coastguard Worker sources = [ 278*61c4878aSAndroid Build Coastguard Worker "pw_tokenizer_private/tokenize_test.h", 279*61c4878aSAndroid Build Coastguard Worker "tokenize_test.cc", 280*61c4878aSAndroid Build Coastguard Worker "tokenize_test_c.c", 281*61c4878aSAndroid Build Coastguard Worker ] 282*61c4878aSAndroid Build Coastguard Worker deps = [ 283*61c4878aSAndroid Build Coastguard Worker ":pw_tokenizer", 284*61c4878aSAndroid Build Coastguard Worker "$dir_pw_varint", 285*61c4878aSAndroid Build Coastguard Worker ] 286*61c4878aSAndroid Build Coastguard Worker} 287*61c4878aSAndroid Build Coastguard Worker 288*61c4878aSAndroid Build Coastguard Workerpw_test("tokenize_c99_test") { 289*61c4878aSAndroid Build Coastguard Worker cflags_c = [ 290*61c4878aSAndroid Build Coastguard Worker "-std=c99", 291*61c4878aSAndroid Build Coastguard Worker 292*61c4878aSAndroid Build Coastguard Worker # pw_tokenizer uses static_assert, so this test uses a static_assert to 293*61c4878aSAndroid Build Coastguard Worker # verify that it works. Silence warnings about preadopting C11 features. 294*61c4878aSAndroid Build Coastguard Worker "-Wno-c11-extensions", 295*61c4878aSAndroid Build Coastguard Worker ] 296*61c4878aSAndroid Build Coastguard Worker sources = [ 297*61c4878aSAndroid Build Coastguard Worker "tokenize_c99_test.c", 298*61c4878aSAndroid Build Coastguard Worker "tokenize_c99_test_entry_point.cc", 299*61c4878aSAndroid Build Coastguard Worker ] 300*61c4878aSAndroid Build Coastguard Worker deps = [ 301*61c4878aSAndroid Build Coastguard Worker ":pw_tokenizer", 302*61c4878aSAndroid Build Coastguard Worker "$dir_pw_containers:inline_var_len_entry_queue", 303*61c4878aSAndroid Build Coastguard Worker ] 304*61c4878aSAndroid Build Coastguard Worker} 305*61c4878aSAndroid Build Coastguard Worker 306*61c4878aSAndroid Build Coastguard Workerpw_fuzzer("token_database_fuzzer") { 307*61c4878aSAndroid Build Coastguard Worker sources = [ "token_database_fuzzer.cc" ] 308*61c4878aSAndroid Build Coastguard Worker deps = [ 309*61c4878aSAndroid Build Coastguard Worker ":decoder", 310*61c4878aSAndroid Build Coastguard Worker dir_pw_preprocessor, 311*61c4878aSAndroid Build Coastguard Worker dir_pw_span, 312*61c4878aSAndroid Build Coastguard Worker ] 313*61c4878aSAndroid Build Coastguard Worker} 314*61c4878aSAndroid Build Coastguard Worker 315*61c4878aSAndroid Build Coastguard Workerpw_fuzzer("detokenize_fuzzer") { 316*61c4878aSAndroid Build Coastguard Worker sources = [ "detokenize_fuzzer.cc" ] 317*61c4878aSAndroid Build Coastguard Worker deps = [ 318*61c4878aSAndroid Build Coastguard Worker ":decoder", 319*61c4878aSAndroid Build Coastguard Worker dir_pw_preprocessor, 320*61c4878aSAndroid Build Coastguard Worker ] 321*61c4878aSAndroid Build Coastguard Worker} 322*61c4878aSAndroid Build Coastguard Worker 323*61c4878aSAndroid Build Coastguard Workerpw_proto_library("proto") { 324*61c4878aSAndroid Build Coastguard Worker sources = [ "pw_tokenizer_proto/options.proto" ] 325*61c4878aSAndroid Build Coastguard Worker python_package = "py" 326*61c4878aSAndroid Build Coastguard Worker} 327*61c4878aSAndroid Build Coastguard Worker 328*61c4878aSAndroid Build Coastguard Workerdeclare_args() { 329*61c4878aSAndroid Build Coastguard Worker # pw_JAVA_NATIVE_INTERFACE_INCLUDE_DIRS specifies the paths to use for 330*61c4878aSAndroid Build Coastguard Worker # building Java Native Interface libraries. If no paths are provided, targets 331*61c4878aSAndroid Build Coastguard Worker # that require JNI may not build correctly. 332*61c4878aSAndroid Build Coastguard Worker # 333*61c4878aSAndroid Build Coastguard Worker # Example JNI include paths for a Linux system: 334*61c4878aSAndroid Build Coastguard Worker # 335*61c4878aSAndroid Build Coastguard Worker # pw_JAVA_NATIVE_INTERFACE_INCLUDE_DIRS = [ 336*61c4878aSAndroid Build Coastguard Worker # "/usr/local/buildtools/java/jdk/include/", 337*61c4878aSAndroid Build Coastguard Worker # "/usr/local/buildtools/java/jdk/include/linux", 338*61c4878aSAndroid Build Coastguard Worker # ] 339*61c4878aSAndroid Build Coastguard Worker # 340*61c4878aSAndroid Build Coastguard Worker pw_JAVA_NATIVE_INTERFACE_INCLUDE_DIRS = [] 341*61c4878aSAndroid Build Coastguard Worker} 342*61c4878aSAndroid Build Coastguard Worker 343*61c4878aSAndroid Build Coastguard Worker# Create a shared library for the tokenizer JNI wrapper. The include paths for 344*61c4878aSAndroid Build Coastguard Worker# the JNI headers must be available in the system or provided with the 345*61c4878aSAndroid Build Coastguard Worker# pw_JAVA_NATIVE_INTERFACE_INCLUDE_DIRS variable. 346*61c4878aSAndroid Build Coastguard Workerpw_shared_library("detokenizer_jni") { 347*61c4878aSAndroid Build Coastguard Worker public_configs = [ ":public_include_path" ] 348*61c4878aSAndroid Build Coastguard Worker include_dirs = pw_JAVA_NATIVE_INTERFACE_INCLUDE_DIRS 349*61c4878aSAndroid Build Coastguard Worker sources = [ "java/dev/pigweed/tokenizer/detokenizer.cc" ] 350*61c4878aSAndroid Build Coastguard Worker public_deps = [ 351*61c4878aSAndroid Build Coastguard Worker ":decoder", 352*61c4878aSAndroid Build Coastguard Worker "$dir_pw_preprocessor", 353*61c4878aSAndroid Build Coastguard Worker ] 354*61c4878aSAndroid Build Coastguard Worker deps = [ dir_pw_span ] 355*61c4878aSAndroid Build Coastguard Worker} 356*61c4878aSAndroid Build Coastguard Worker 357*61c4878aSAndroid Build Coastguard Workerpw_doc_group("docs") { 358*61c4878aSAndroid Build Coastguard Worker inputs = [ 359*61c4878aSAndroid Build Coastguard Worker "Kconfig", 360*61c4878aSAndroid Build Coastguard Worker "py/pw_tokenizer/encode.py", 361*61c4878aSAndroid Build Coastguard Worker ] 362*61c4878aSAndroid Build Coastguard Worker sources = [ 363*61c4878aSAndroid Build Coastguard Worker "api.rst", 364*61c4878aSAndroid Build Coastguard Worker "detokenization.rst", 365*61c4878aSAndroid Build Coastguard Worker "docs.rst", 366*61c4878aSAndroid Build Coastguard Worker "get_started.rst", 367*61c4878aSAndroid Build Coastguard Worker "token_databases.rst", 368*61c4878aSAndroid Build Coastguard Worker "tokenization.rst", 369*61c4878aSAndroid Build Coastguard Worker ] 370*61c4878aSAndroid Build Coastguard Worker report_deps = [ ":tokenizer_size_report" ] 371*61c4878aSAndroid Build Coastguard Worker} 372*61c4878aSAndroid Build Coastguard Worker 373*61c4878aSAndroid Build Coastguard Worker# Pigweed tokenizer size report. 374*61c4878aSAndroid Build Coastguard Workerpw_size_diff("tokenizer_size_report") { 375*61c4878aSAndroid Build Coastguard Worker title = "Pigweed tokenizer size report" 376*61c4878aSAndroid Build Coastguard Worker binaries = [ 377*61c4878aSAndroid Build Coastguard Worker { 378*61c4878aSAndroid Build Coastguard Worker target = "size_report:tokenize_string" 379*61c4878aSAndroid Build Coastguard Worker base = "size_report:tokenize_string_base" 380*61c4878aSAndroid Build Coastguard Worker label = "tokenize a string" 381*61c4878aSAndroid Build Coastguard Worker }, 382*61c4878aSAndroid Build Coastguard Worker { 383*61c4878aSAndroid Build Coastguard Worker target = "size_report:tokenize_string_expr" 384*61c4878aSAndroid Build Coastguard Worker base = "size_report:tokenize_string_expr_base" 385*61c4878aSAndroid Build Coastguard Worker label = "tokenize a string expression" 386*61c4878aSAndroid Build Coastguard Worker }, 387*61c4878aSAndroid Build Coastguard Worker ] 388*61c4878aSAndroid Build Coastguard Worker} 389*61c4878aSAndroid Build Coastguard Worker 390*61c4878aSAndroid Build Coastguard Workerpw_cc_blob_library("detokenizer_elf_test_blob") { 391*61c4878aSAndroid Build Coastguard Worker out_header = "pw_tokenizer/example_binary_with_tokenized_strings.h" 392*61c4878aSAndroid Build Coastguard Worker namespace = "test::ns" 393*61c4878aSAndroid Build Coastguard Worker blobs = [ 394*61c4878aSAndroid Build Coastguard Worker { 395*61c4878aSAndroid Build Coastguard Worker file_path = "py/example_binary_with_tokenized_strings.elf" 396*61c4878aSAndroid Build Coastguard Worker symbol_name = "kElfSection" 397*61c4878aSAndroid Build Coastguard Worker }, 398*61c4878aSAndroid Build Coastguard Worker ] 399*61c4878aSAndroid Build Coastguard Worker visibility = [ ":*" ] 400*61c4878aSAndroid Build Coastguard Worker} 401