| # 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) |
| |
| set(dir_pw_third_party_nanopb "" CACHE PATH "Path to the Nanopb installation.") |
| option(pw_third_party_nanopb_ADD_SUBDIRECTORY |
| "Whether to add the dir_pw_third_party_nanopb subdirectory" OFF) |
| |
| if("${dir_pw_third_party_nanopb}" STREQUAL "") |
| return() |
| elseif(pw_third_party_nanopb_ADD_SUBDIRECTORY) |
| add_subdirectory("${dir_pw_third_party_nanopb}" third_party/nanopb) |
| endif() |
| |
| set(nanopb_main_library |
| $<IF:$<TARGET_EXISTS:protobuf-nanopb-static>,protobuf-nanopb-static,protobuf-nanopb>) |
| |
| add_library(pw_third_party.nanopb INTERFACE) |
| target_link_libraries(pw_third_party.nanopb INTERFACE "${nanopb_main_library}") |
| target_include_directories(pw_third_party.nanopb |
| INTERFACE |
| "${dir_pw_third_party_nanopb}" |
| ) |
| |
| pw_proto_library(pw_third_party.nanopb.proto |
| SOURCES |
| "${dir_pw_third_party_nanopb}/generator/proto/nanopb.proto" |
| STRIP_PREFIX |
| "${dir_pw_third_party_nanopb}/generator/proto" |
| ) |
| |
| # Generates nanopb_pb2.py, which is needed to compile protobufs with Nanopb. |
| add_custom_command( |
| COMMAND |
| python3 "${CMAKE_CURRENT_LIST_DIR}/generate_nanopb_proto.py" "${dir_pw_third_party_nanopb}" |
| OUTPUT |
| "${dir_pw_third_party_nanopb}/generator/proto/nanopb_pb2.py" |
| ) |
| add_custom_target(pw_third_party.nanopb.generate_proto |
| DEPENDS |
| "${dir_pw_third_party_nanopb}/generator/proto/nanopb_pb2.py" |
| ) |