|  | # Copyright 2020 The Pigweed Authors | 
|  | # | 
|  | # Licensed under the Apache License, Version 2.0 (the "License"); you may not | 
|  | # use this file except in compliance with the License. You may obtain a copy of | 
|  | # the License at | 
|  | # | 
|  | #     https://www.apache.org/licenses/LICENSE-2.0 | 
|  | # | 
|  | # Unless required by applicable law or agreed to in writing, software | 
|  | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT | 
|  | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the | 
|  | # License for the specific language governing permissions and limitations under | 
|  | # the License. | 
|  |  | 
|  | include($ENV{PW_ROOT}/pw_build/pigweed.cmake) | 
|  |  | 
|  | pw_add_module_library(pw_tokenizer | 
|  | SOURCES | 
|  | encode_args.cc | 
|  | hash.cc | 
|  | tokenize.cc | 
|  | PUBLIC_DEPS | 
|  | pw_polyfill.overrides | 
|  | pw_preprocessor | 
|  | pw_span | 
|  | PRIVATE_DEPS | 
|  | pw_varint | 
|  | ) | 
|  |  | 
|  | if("${CMAKE_SYSTEM_NAME}" STREQUAL "") | 
|  | target_link_options(pw_tokenizer | 
|  | PUBLIC | 
|  | "-T${CMAKE_CURRENT_SOURCE_DIR}/pw_tokenizer_linker_sections.ld" | 
|  | ) | 
|  | elseif("${CMAKE_SYSTEM_NAME}" STREQUAL "Linux") | 
|  | target_link_options(pw_tokenizer | 
|  | PUBLIC | 
|  | "-T${CMAKE_CURRENT_SOURCE_DIR}/add_tokenizer_sections_to_default_script.ld" | 
|  | "-L${CMAKE_CURRENT_SOURCE_DIR}" | 
|  | ) | 
|  | endif() | 
|  |  | 
|  | pw_add_module_library(pw_tokenizer.base64 | 
|  | SOURCES | 
|  | base64.cc | 
|  | PUBLIC_DEPS | 
|  | pw_base64 | 
|  | pw_containers | 
|  | pw_polyfill.overrides | 
|  | pw_preprocessor | 
|  | pw_span | 
|  | ) | 
|  |  | 
|  | pw_add_module_library(pw_tokenizer.decoder | 
|  | SOURCES | 
|  | decode.cc | 
|  | detokenize.cc | 
|  | token_database.cc | 
|  | PUBLIC_DEPS | 
|  | pw_span | 
|  | pw_tokenizer | 
|  | PRIVATE_DEPS | 
|  | pw_varint | 
|  | ) | 
|  |  | 
|  | pw_add_facade(pw_tokenizer.global_handler | 
|  | SOURCES | 
|  | tokenize_to_global_handler.cc | 
|  | PUBLIC_DEPS | 
|  | pw_tokenizer | 
|  | DEFAULT_BACKEND | 
|  | pw_build.empty  # Default to an empty backend so the tests can run. | 
|  | ) | 
|  |  | 
|  | pw_add_facade(pw_tokenizer.global_handler_with_payload | 
|  | SOURCES | 
|  | tokenize_to_global_handler_with_payload.cc | 
|  | PUBLIC_DEPS | 
|  | pw_tokenizer | 
|  | DEFAULT_BACKEND | 
|  | pw_build.empty  # Default to an empty backend so the tests can run. | 
|  | ) | 
|  |  | 
|  | # Executable for generating test data for the C++ and Python detokenizers. This | 
|  | # target should only be built for the host. | 
|  | add_executable(pw_tokenizer.generate_decoding_test_data EXCLUDE_FROM_ALL | 
|  | generate_decoding_test_data.cc) | 
|  | target_link_libraries(pw_tokenizer.generate_decoding_test_data PRIVATE | 
|  | pw_varint pw_tokenizer) | 
|  | target_compile_options(pw_tokenizer.generate_decoding_test_data PRIVATE | 
|  | -Wall -Werror) | 
|  |  | 
|  | # Executable for generating a test ELF file for elf_reader_test.py. A host | 
|  | # version of this binary is checked in for use in elf_reader_test.py. | 
|  | add_executable(pw_tokenizer.elf_reader_test_binary EXCLUDE_FROM_ALL | 
|  | py/elf_reader_test_binary.c) | 
|  | target_link_libraries(pw_tokenizer.elf_reader_test_binary PRIVATE | 
|  | -Wl,--unresolved-symbols=ignore-all)  # main is not defined | 
|  | set_target_properties(pw_tokenizer.elf_reader_test_binary PROPERTIES | 
|  | OUTPUT_NAME elf_reader_test_binary.elf) | 
|  |  | 
|  | pw_add_test(pw_tokenizer.argument_types_test | 
|  | SOURCES | 
|  | argument_types_test_c.c | 
|  | argument_types_test.cc | 
|  | DEPS | 
|  | pw_tokenizer | 
|  | GROUPS | 
|  | modules | 
|  | pw_tokenizer | 
|  | ) | 
|  |  | 
|  | pw_add_test(pw_tokenizer.base64_test | 
|  | SOURCES | 
|  | base64_test.cc | 
|  | DEPS | 
|  | pw_tokenizer.base64 | 
|  | GROUPS | 
|  | modules | 
|  | pw_tokenizer | 
|  | ) | 
|  |  | 
|  | pw_add_test(pw_tokenizer.decode_test | 
|  | SOURCES | 
|  | decode_test.cc | 
|  | DEPS | 
|  | pw_varint | 
|  | pw_tokenizer.decoder | 
|  | GROUPS | 
|  | modules | 
|  | pw_tokenizer | 
|  | ) | 
|  |  | 
|  | pw_add_test(pw_tokenizer.detokenize_test | 
|  | SOURCES | 
|  | detokenize_test.cc | 
|  | DEPS | 
|  | pw_tokenizer.decoder | 
|  | GROUPS | 
|  | modules | 
|  | pw_tokenizer | 
|  | ) | 
|  |  | 
|  | pw_add_test(pw_tokenizer.global_handlers_test | 
|  | SOURCES | 
|  | global_handlers_test_c.c | 
|  | global_handlers_test.cc | 
|  | DEPS | 
|  | pw_tokenizer.global_handler | 
|  | pw_tokenizer.global_handler_with_payload | 
|  | GROUPS | 
|  | modules | 
|  | pw_tokenizer | 
|  | ) | 
|  |  | 
|  | pw_add_test(pw_tokenizer.hash_test | 
|  | SOURCES | 
|  | hash_test.cc | 
|  | DEPS | 
|  | pw_tokenizer | 
|  | GROUPS | 
|  | modules | 
|  | pw_tokenizer | 
|  | ) | 
|  |  | 
|  | pw_add_test(pw_tokenizer.token_database_test | 
|  | SOURCES | 
|  | token_database_test.cc | 
|  | DEPS | 
|  | pw_tokenizer.decoder | 
|  | GROUPS | 
|  | modules | 
|  | pw_tokenizer | 
|  | ) | 
|  |  | 
|  | pw_add_test(pw_tokenizer.tokenize_test | 
|  | SOURCES | 
|  | tokenize_test_c.c | 
|  | tokenize_test.cc | 
|  | DEPS | 
|  | pw_varint | 
|  | pw_tokenizer | 
|  | GROUPS | 
|  | modules | 
|  | pw_tokenizer | 
|  | ) |