# 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) include($ENV{PW_ROOT}/pw_protobuf_compiler/proto.cmake) pw_add_module_config(pw_tokenizer_CONFIG) pw_add_module_library(pw_tokenizer.config HEADERS public/pw_tokenizer/config.h PUBLIC_INCLUDES public PUBLIC_DEPS ${pw_tokenizer_CONFIG} ) pw_add_module_library(pw_tokenizer HEADERS public/pw_tokenizer/encode_args.h public/pw_tokenizer/hash.h public/pw_tokenizer/tokenize.h PUBLIC_INCLUDES public PUBLIC_DEPS pw_containers pw_polyfill.span pw_preprocessor pw_tokenizer.config SOURCES encode_args.cc hash.cc public/pw_tokenizer/internal/argument_types.h public/pw_tokenizer/internal/argument_types_macro_4_byte.h public/pw_tokenizer/internal/argument_types_macro_8_byte.h public/pw_tokenizer/internal/pw_tokenizer_65599_fixed_length_128_hash_macro.h public/pw_tokenizer/internal/pw_tokenizer_65599_fixed_length_256_hash_macro.h public/pw_tokenizer/internal/pw_tokenizer_65599_fixed_length_80_hash_macro.h public/pw_tokenizer/internal/pw_tokenizer_65599_fixed_length_96_hash_macro.h public/pw_tokenizer/internal/tokenize_string.h tokenize.cc 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 HEADERS public/pw_tokenizer/base64.h PUBLIC_INCLUDES public PUBLIC_DEPS pw_base64 pw_polyfill.cstddef pw_polyfill.span pw_tokenizer pw_tokenizer.config SOURCES base64.cc ) pw_add_module_library(pw_tokenizer.decoder HEADERS public/pw_tokenizer/detokenize.h public/pw_tokenizer/token_database.h PUBLIC_INCLUDES public PUBLIC_DEPS pw_polyfill.span pw_tokenizer SOURCES decode.cc detokenize.cc public/pw_tokenizer/internal/decode.h token_database.cc PRIVATE_DEPS pw_varint ) pw_add_facade(pw_tokenizer.global_handler DEFAULT_BACKEND pw_build.empty # Default to an empty backend so the tests can run. HEADERS public/pw_tokenizer/tokenize_to_global_handler.h PUBLIC_INCLUDES public PUBLIC_DEPS pw_preprocessor pw_tokenizer SOURCES tokenize_to_global_handler.cc ) pw_add_facade(pw_tokenizer.global_handler_with_payload DEFAULT_BACKEND pw_build.empty # Default to an empty backend so the tests can run. HEADERS public/pw_tokenizer/tokenize_to_global_handler_with_payload.h PUBLIC_INCLUDES public PUBLIC_DEPS pw_preprocessor pw_tokenizer SOURCES tokenize_to_global_handler_with_payload.cc ) pw_proto_library(pw_tokenizer.proto SOURCES options.proto PREFIX pw_tokenizer/proto ) # 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 )