56 lines
2.0 KiB
CMake
56 lines
2.0 KiB
CMake
# 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"
|
|
)
|