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 Workerinclude($ENV{PW_ROOT}/pw_build/pigweed.cmake) 16*61c4878aSAndroid Build Coastguard Workerinclude($ENV{PW_ROOT}/pw_protobuf_compiler/proto.cmake) 17*61c4878aSAndroid Build Coastguard Workerinclude($ENV{PW_ROOT}/pw_build/cc_blob_library.cmake) 18*61c4878aSAndroid Build Coastguard Worker 19*61c4878aSAndroid Build Coastguard Workerpw_add_module_config(pw_tokenizer_CONFIG) 20*61c4878aSAndroid Build Coastguard Worker 21*61c4878aSAndroid Build Coastguard Workerpw_add_library(pw_tokenizer.config INTERFACE 22*61c4878aSAndroid Build Coastguard Worker HEADERS 23*61c4878aSAndroid Build Coastguard Worker public/pw_tokenizer/config.h 24*61c4878aSAndroid Build Coastguard Worker PUBLIC_INCLUDES 25*61c4878aSAndroid Build Coastguard Worker public 26*61c4878aSAndroid Build Coastguard Worker PUBLIC_DEPS 27*61c4878aSAndroid Build Coastguard Worker ${pw_tokenizer_CONFIG} 28*61c4878aSAndroid Build Coastguard Worker) 29*61c4878aSAndroid Build Coastguard Worker 30*61c4878aSAndroid Build Coastguard Workerpw_add_library(pw_tokenizer STATIC 31*61c4878aSAndroid Build Coastguard Worker HEADERS 32*61c4878aSAndroid Build Coastguard Worker public/pw_tokenizer/encode_args.h 33*61c4878aSAndroid Build Coastguard Worker public/pw_tokenizer/hash.h 34*61c4878aSAndroid Build Coastguard Worker public/pw_tokenizer/nested_tokenization.h 35*61c4878aSAndroid Build Coastguard Worker public/pw_tokenizer/tokenize.h 36*61c4878aSAndroid Build Coastguard Worker PUBLIC_INCLUDES 37*61c4878aSAndroid Build Coastguard Worker public 38*61c4878aSAndroid Build Coastguard Worker PUBLIC_DEPS 39*61c4878aSAndroid Build Coastguard Worker pw_base64 40*61c4878aSAndroid Build Coastguard Worker pw_containers 41*61c4878aSAndroid Build Coastguard Worker pw_result 42*61c4878aSAndroid Build Coastguard Worker pw_span 43*61c4878aSAndroid Build Coastguard Worker pw_preprocessor 44*61c4878aSAndroid Build Coastguard Worker pw_tokenizer.config 45*61c4878aSAndroid Build Coastguard Worker pw_varint 46*61c4878aSAndroid Build Coastguard Worker SOURCES 47*61c4878aSAndroid Build Coastguard Worker encode_args.cc 48*61c4878aSAndroid Build Coastguard Worker hash.cc 49*61c4878aSAndroid Build Coastguard Worker public/pw_tokenizer/internal/argument_types.h 50*61c4878aSAndroid Build Coastguard Worker public/pw_tokenizer/internal/argument_types_macro_4_byte.h 51*61c4878aSAndroid Build Coastguard Worker public/pw_tokenizer/internal/argument_types_macro_8_byte.h 52*61c4878aSAndroid Build Coastguard Worker public/pw_tokenizer/internal/pw_tokenizer_65599_fixed_length_128_hash_macro.h 53*61c4878aSAndroid Build Coastguard Worker public/pw_tokenizer/internal/pw_tokenizer_65599_fixed_length_256_hash_macro.h 54*61c4878aSAndroid Build Coastguard Worker public/pw_tokenizer/internal/pw_tokenizer_65599_fixed_length_80_hash_macro.h 55*61c4878aSAndroid Build Coastguard Worker public/pw_tokenizer/internal/pw_tokenizer_65599_fixed_length_96_hash_macro.h 56*61c4878aSAndroid Build Coastguard Worker public/pw_tokenizer/internal/tokenize_string.h 57*61c4878aSAndroid Build Coastguard Worker tokenize.cc 58*61c4878aSAndroid Build Coastguard Worker) 59*61c4878aSAndroid Build Coastguard Worker 60*61c4878aSAndroid Build Coastguard Workerif(Zephyr_FOUND AND CONFIG_PIGWEED_TOKENIZER) 61*61c4878aSAndroid Build Coastguard Worker zephyr_linker_sources(SECTIONS "${CMAKE_CURRENT_SOURCE_DIR}/pw_tokenizer_zephyr.ld") 62*61c4878aSAndroid Build Coastguard Workerelseif("${CMAKE_SYSTEM_NAME}" STREQUAL "") 63*61c4878aSAndroid Build Coastguard Worker target_link_options(pw_tokenizer 64*61c4878aSAndroid Build Coastguard Worker PUBLIC 65*61c4878aSAndroid Build Coastguard Worker "-T${CMAKE_CURRENT_SOURCE_DIR}/pw_tokenizer_linker_sections.ld" 66*61c4878aSAndroid Build Coastguard Worker "-L${CMAKE_CURRENT_SOURCE_DIR}" 67*61c4878aSAndroid Build Coastguard Worker ) 68*61c4878aSAndroid Build Coastguard Workerelseif("${CMAKE_SYSTEM_NAME}" STREQUAL "Linux") 69*61c4878aSAndroid Build Coastguard Worker target_link_options(pw_tokenizer 70*61c4878aSAndroid Build Coastguard Worker PUBLIC 71*61c4878aSAndroid Build Coastguard Worker "-T${CMAKE_CURRENT_SOURCE_DIR}/add_tokenizer_sections_to_default_script.ld" 72*61c4878aSAndroid Build Coastguard Worker "-L${CMAKE_CURRENT_SOURCE_DIR}" 73*61c4878aSAndroid Build Coastguard Worker ) 74*61c4878aSAndroid Build Coastguard Workerendif() 75*61c4878aSAndroid Build Coastguard Worker 76*61c4878aSAndroid Build Coastguard Workerpw_add_library(pw_tokenizer.base64 STATIC 77*61c4878aSAndroid Build Coastguard Worker HEADERS 78*61c4878aSAndroid Build Coastguard Worker public/pw_tokenizer/base64.h 79*61c4878aSAndroid Build Coastguard Worker PUBLIC_INCLUDES 80*61c4878aSAndroid Build Coastguard Worker public 81*61c4878aSAndroid Build Coastguard Worker PUBLIC_DEPS 82*61c4878aSAndroid Build Coastguard Worker pw_base64 83*61c4878aSAndroid Build Coastguard Worker pw_span 84*61c4878aSAndroid Build Coastguard Worker pw_string.string 85*61c4878aSAndroid Build Coastguard Worker pw_tokenizer 86*61c4878aSAndroid Build Coastguard Worker pw_tokenizer.config 87*61c4878aSAndroid Build Coastguard Worker SOURCES 88*61c4878aSAndroid Build Coastguard Worker base64.cc 89*61c4878aSAndroid Build Coastguard Worker) 90*61c4878aSAndroid Build Coastguard Worker 91*61c4878aSAndroid Build Coastguard Workerpw_add_library(pw_tokenizer.decoder STATIC 92*61c4878aSAndroid Build Coastguard Worker HEADERS 93*61c4878aSAndroid Build Coastguard Worker public/pw_tokenizer/detokenize.h 94*61c4878aSAndroid Build Coastguard Worker public/pw_tokenizer/token_database.h 95*61c4878aSAndroid Build Coastguard Worker PUBLIC_INCLUDES 96*61c4878aSAndroid Build Coastguard Worker public 97*61c4878aSAndroid Build Coastguard Worker PUBLIC_DEPS 98*61c4878aSAndroid Build Coastguard Worker pw_span 99*61c4878aSAndroid Build Coastguard Worker pw_stream 100*61c4878aSAndroid Build Coastguard Worker pw_tokenizer 101*61c4878aSAndroid Build Coastguard Worker pw_tokenizer.base64 102*61c4878aSAndroid Build Coastguard Worker SOURCES 103*61c4878aSAndroid Build Coastguard Worker decode.cc 104*61c4878aSAndroid Build Coastguard Worker detokenize.cc 105*61c4878aSAndroid Build Coastguard Worker public/pw_tokenizer/internal/decode.h 106*61c4878aSAndroid Build Coastguard Worker token_database.cc 107*61c4878aSAndroid Build Coastguard Worker PRIVATE_DEPS 108*61c4878aSAndroid Build Coastguard Worker pw_bytes 109*61c4878aSAndroid Build Coastguard Worker pw_bytes.bit 110*61c4878aSAndroid Build Coastguard Worker pw_elf.reader 111*61c4878aSAndroid Build Coastguard Worker pw_varint 112*61c4878aSAndroid Build Coastguard Worker) 113*61c4878aSAndroid Build Coastguard Worker 114*61c4878aSAndroid Build Coastguard Workerpw_proto_library(pw_tokenizer.proto 115*61c4878aSAndroid Build Coastguard Worker SOURCES 116*61c4878aSAndroid Build Coastguard Worker pw_tokenizer_proto/options.proto 117*61c4878aSAndroid Build Coastguard Worker) 118*61c4878aSAndroid Build Coastguard Worker 119*61c4878aSAndroid Build Coastguard Worker# Executable for generating test data for the C++ and Python detokenizers. This 120*61c4878aSAndroid Build Coastguard Worker# target should only be built for the host. 121*61c4878aSAndroid Build Coastguard Workeradd_executable(pw_tokenizer.generate_decoding_test_data EXCLUDE_FROM_ALL 122*61c4878aSAndroid Build Coastguard Worker generate_decoding_test_data.cc) 123*61c4878aSAndroid Build Coastguard Workertarget_link_libraries(pw_tokenizer.generate_decoding_test_data PRIVATE 124*61c4878aSAndroid Build Coastguard Worker pw_varint pw_tokenizer) 125*61c4878aSAndroid Build Coastguard Workertarget_compile_options(pw_tokenizer.generate_decoding_test_data PRIVATE 126*61c4878aSAndroid Build Coastguard Worker -Wall -Werror) 127*61c4878aSAndroid Build Coastguard Worker 128*61c4878aSAndroid Build Coastguard Worker# Executable for generating a test ELF file for elf_reader_test.py. A host 129*61c4878aSAndroid Build Coastguard Worker# version of this binary is checked in for use in elf_reader_test.py. 130*61c4878aSAndroid Build Coastguard Workeradd_executable(pw_tokenizer.elf_reader_test_binary EXCLUDE_FROM_ALL 131*61c4878aSAndroid Build Coastguard Worker py/elf_reader_test_binary.c) 132*61c4878aSAndroid Build Coastguard Workertarget_link_libraries(pw_tokenizer.elf_reader_test_binary PRIVATE 133*61c4878aSAndroid Build Coastguard Worker -Wl,--unresolved-symbols=ignore-all) # main is not defined 134*61c4878aSAndroid Build Coastguard Workerset_target_properties(pw_tokenizer.elf_reader_test_binary PROPERTIES 135*61c4878aSAndroid Build Coastguard Worker OUTPUT_NAME elf_reader_test_binary.elf) 136*61c4878aSAndroid Build Coastguard Worker 137*61c4878aSAndroid Build Coastguard Workerpw_add_test(pw_tokenizer.argument_types_test 138*61c4878aSAndroid Build Coastguard Worker SOURCES 139*61c4878aSAndroid Build Coastguard Worker argument_types_test_c.c 140*61c4878aSAndroid Build Coastguard Worker argument_types_test.cc 141*61c4878aSAndroid Build Coastguard Worker PRIVATE_DEPS 142*61c4878aSAndroid Build Coastguard Worker pw_tokenizer 143*61c4878aSAndroid Build Coastguard Worker GROUPS 144*61c4878aSAndroid Build Coastguard Worker modules 145*61c4878aSAndroid Build Coastguard Worker pw_tokenizer 146*61c4878aSAndroid Build Coastguard Worker) 147*61c4878aSAndroid Build Coastguard Worker 148*61c4878aSAndroid Build Coastguard Workerpw_add_test(pw_tokenizer.base64_test 149*61c4878aSAndroid Build Coastguard Worker SOURCES 150*61c4878aSAndroid Build Coastguard Worker base64_test.cc 151*61c4878aSAndroid Build Coastguard Worker PRIVATE_DEPS 152*61c4878aSAndroid Build Coastguard Worker pw_tokenizer.base64 153*61c4878aSAndroid Build Coastguard Worker GROUPS 154*61c4878aSAndroid Build Coastguard Worker modules 155*61c4878aSAndroid Build Coastguard Worker pw_tokenizer 156*61c4878aSAndroid Build Coastguard Worker) 157*61c4878aSAndroid Build Coastguard Worker 158*61c4878aSAndroid Build Coastguard Workerpw_add_test(pw_tokenizer.decode_test 159*61c4878aSAndroid Build Coastguard Worker SOURCES 160*61c4878aSAndroid Build Coastguard Worker decode_test.cc 161*61c4878aSAndroid Build Coastguard Worker PRIVATE_DEPS 162*61c4878aSAndroid Build Coastguard Worker pw_varint 163*61c4878aSAndroid Build Coastguard Worker pw_tokenizer.decoder 164*61c4878aSAndroid Build Coastguard Worker GROUPS 165*61c4878aSAndroid Build Coastguard Worker modules 166*61c4878aSAndroid Build Coastguard Worker pw_tokenizer 167*61c4878aSAndroid Build Coastguard Worker) 168*61c4878aSAndroid Build Coastguard Worker 169*61c4878aSAndroid Build Coastguard Workerpw_add_test(pw_tokenizer.detokenize_test 170*61c4878aSAndroid Build Coastguard Worker SOURCES 171*61c4878aSAndroid Build Coastguard Worker detokenize_test.cc 172*61c4878aSAndroid Build Coastguard Worker PRIVATE_DEPS 173*61c4878aSAndroid Build Coastguard Worker pw_tokenizer.decoder 174*61c4878aSAndroid Build Coastguard Worker pw_build.detokenizer_elf_test_blob 175*61c4878aSAndroid Build Coastguard Worker pw_stream 176*61c4878aSAndroid Build Coastguard Worker GROUPS 177*61c4878aSAndroid Build Coastguard Worker modules 178*61c4878aSAndroid Build Coastguard Worker pw_tokenizer 179*61c4878aSAndroid Build Coastguard Worker) 180*61c4878aSAndroid Build Coastguard Worker 181*61c4878aSAndroid Build Coastguard Workerpw_add_test(pw_tokenizer.encode_args_test 182*61c4878aSAndroid Build Coastguard Worker SOURCES 183*61c4878aSAndroid Build Coastguard Worker encode_args_test.cc 184*61c4878aSAndroid Build Coastguard Worker PRIVATE_DEPS 185*61c4878aSAndroid Build Coastguard Worker pw_tokenizer 186*61c4878aSAndroid Build Coastguard Worker GROUPS 187*61c4878aSAndroid Build Coastguard Worker modules 188*61c4878aSAndroid Build Coastguard Worker pw_tokenizer 189*61c4878aSAndroid Build Coastguard Worker) 190*61c4878aSAndroid Build Coastguard Worker 191*61c4878aSAndroid Build Coastguard Workerpw_add_test(pw_tokenizer.hash_test 192*61c4878aSAndroid Build Coastguard Worker SOURCES 193*61c4878aSAndroid Build Coastguard Worker hash_test.cc 194*61c4878aSAndroid Build Coastguard Worker PRIVATE_DEPS 195*61c4878aSAndroid Build Coastguard Worker pw_tokenizer 196*61c4878aSAndroid Build Coastguard Worker GROUPS 197*61c4878aSAndroid Build Coastguard Worker modules 198*61c4878aSAndroid Build Coastguard Worker pw_tokenizer 199*61c4878aSAndroid Build Coastguard Worker) 200*61c4878aSAndroid Build Coastguard Worker 201*61c4878aSAndroid Build Coastguard Workerpw_add_test(pw_tokenizer.token_database_test 202*61c4878aSAndroid Build Coastguard Worker SOURCES 203*61c4878aSAndroid Build Coastguard Worker token_database_test.cc 204*61c4878aSAndroid Build Coastguard Worker PRIVATE_DEPS 205*61c4878aSAndroid Build Coastguard Worker pw_tokenizer.decoder 206*61c4878aSAndroid Build Coastguard Worker GROUPS 207*61c4878aSAndroid Build Coastguard Worker modules 208*61c4878aSAndroid Build Coastguard Worker pw_tokenizer 209*61c4878aSAndroid Build Coastguard Worker) 210*61c4878aSAndroid Build Coastguard Worker 211*61c4878aSAndroid Build Coastguard Workerpw_add_test(pw_tokenizer.tokenize_test 212*61c4878aSAndroid Build Coastguard Worker SOURCES 213*61c4878aSAndroid Build Coastguard Worker tokenize_test_c.c 214*61c4878aSAndroid Build Coastguard Worker tokenize_test.cc 215*61c4878aSAndroid Build Coastguard Worker PRIVATE_DEPS 216*61c4878aSAndroid Build Coastguard Worker pw_varint 217*61c4878aSAndroid Build Coastguard Worker pw_tokenizer 218*61c4878aSAndroid Build Coastguard Worker GROUPS 219*61c4878aSAndroid Build Coastguard Worker modules 220*61c4878aSAndroid Build Coastguard Worker pw_tokenizer 221*61c4878aSAndroid Build Coastguard Worker) 222*61c4878aSAndroid Build Coastguard Worker 223*61c4878aSAndroid Build Coastguard Workerpw_cc_blob_library(pw_build.detokenizer_elf_test_blob 224*61c4878aSAndroid Build Coastguard Worker HEADER 225*61c4878aSAndroid Build Coastguard Worker pw_tokenizer/example_binary_with_tokenized_strings.h 226*61c4878aSAndroid Build Coastguard Worker NAMESPACE 227*61c4878aSAndroid Build Coastguard Worker test::ns 228*61c4878aSAndroid Build Coastguard Worker BLOB 229*61c4878aSAndroid Build Coastguard Worker SYMBOL_NAME kElfSection 230*61c4878aSAndroid Build Coastguard Worker PATH py/example_binary_with_tokenized_strings.elf 231*61c4878aSAndroid Build Coastguard Worker) 232*61c4878aSAndroid Build Coastguard Worker 233*61c4878aSAndroid Build Coastguard Workerif(Zephyr_FOUND) 234*61c4878aSAndroid Build Coastguard Worker zephyr_link_libraries_ifdef(CONFIG_PIGWEED_TOKENIZER pw_tokenizer) 235*61c4878aSAndroid Build Coastguard Worker zephyr_link_libraries_ifdef(CONFIG_PIGWEED_TOKENIZER_BASE64 pw_tokenizer.base64) 236*61c4878aSAndroid Build Coastguard Worker zephyr_link_libraries_ifdef(CONFIG_PIGWEED_DETOKENIZER pw_tokenizer.decoder) 237*61c4878aSAndroid Build Coastguard Workerendif() 238