1*84e33947SAndroid Build Coastguard Worker# 2*84e33947SAndroid Build Coastguard Worker# Nanoapp/CHRE NanoPB and Pigweed RPC Makefile 3*84e33947SAndroid Build Coastguard Worker# 4*84e33947SAndroid Build Coastguard Worker# Include this file in your nanoapp Makefile to generate .c source and .h header 5*84e33947SAndroid Build Coastguard Worker# files. ($NANOPB_EXTENSION.c and $NANOPB_EXTENSION.h if $NANOPB_EXTENSION 6*84e33947SAndroid Build Coastguard Worker# is defined) for .proto files specified in the NANOPB_SRCS and PW_RPC_SRCS 7*84e33947SAndroid Build Coastguard Worker# variables. 8*84e33947SAndroid Build Coastguard Worker# 9*84e33947SAndroid Build Coastguard Worker# The generated source files are automatically added to the COMMON_SRCS variable 10*84e33947SAndroid Build Coastguard Worker# for the nanoapp build. 11*84e33947SAndroid Build Coastguard Worker# 12*84e33947SAndroid Build Coastguard Worker# The path to the generated header files is similarly added to the COMMON_CFLAGS. 13*84e33947SAndroid Build Coastguard Worker# 14*84e33947SAndroid Build Coastguard Worker# The NANOPB_OPTIONS variable can be used to supply an .options file to use when 15*84e33947SAndroid Build Coastguard Worker# generating code for all .proto files. Alternatively, if an .options file has 16*84e33947SAndroid Build Coastguard Worker# the same name as a .proto file, it'll be automatically picked up when generating 17*84e33947SAndroid Build Coastguard Worker# code **only** for that .proto file. 18*84e33947SAndroid Build Coastguard Worker# 19*84e33947SAndroid Build Coastguard Worker# NANOPB_FLAGS can be used to supply additional command line arguments to the 20*84e33947SAndroid Build Coastguard Worker# nanopb compiler. Note that this is global and applies to all protobuf 21*84e33947SAndroid Build Coastguard Worker# generated source. 22*84e33947SAndroid Build Coastguard Worker# 23*84e33947SAndroid Build Coastguard Worker# NANOPB_INCLUDES may optionally be used to automatically add one or more 24*84e33947SAndroid Build Coastguard Worker# include path prefixes for C/C++ source and .proto files. For example, if the 25*84e33947SAndroid Build Coastguard Worker# file myprefix/proto/foo.proto is added to NANOPB_SRCS, but you'd like to use 26*84e33947SAndroid Build Coastguard Worker# #include "proto/foo.pb.h" in your source (rather than myprefix/proto/foo.pb.h) 27*84e33947SAndroid Build Coastguard Worker# and/or import "proto/foo.proto" in your .proto files, then set NANOPB_INCLUDES 28*84e33947SAndroid Build Coastguard Worker# to myprefix. 29*84e33947SAndroid Build Coastguard Worker 30*84e33947SAndroid Build Coastguard Worker# Environment Checks ########################################################### 31*84e33947SAndroid Build Coastguard Worker 32*84e33947SAndroid Build Coastguard WorkerHAS_PROTO_SRC = false 33*84e33947SAndroid Build Coastguard Worker 34*84e33947SAndroid Build Coastguard Workerifneq ($(NANOPB_SRCS),) 35*84e33947SAndroid Build Coastguard Workerifeq ($(NANOPB_PREFIX),) 36*84e33947SAndroid Build Coastguard Worker$(error "NANOPB_SRCS is non-empty. You must supply a NANOPB_PREFIX environment \ 37*84e33947SAndroid Build Coastguard Worker variable containing a path to the nanopb project. Example: \ 38*84e33947SAndroid Build Coastguard Worker export NANOPB_PREFIX=$$HOME/path/to/nanopb/nanopb-c") 39*84e33947SAndroid Build Coastguard Workerendif 40*84e33947SAndroid Build Coastguard WorkerHAS_PROTO_SRC = true 41*84e33947SAndroid Build Coastguard Workerendif 42*84e33947SAndroid Build Coastguard Worker 43*84e33947SAndroid Build Coastguard Workerifneq ($(PW_RPC_SRCS),) 44*84e33947SAndroid Build Coastguard Workerifeq ($(NANOPB_PREFIX),) 45*84e33947SAndroid Build Coastguard Worker$(error "PW_RPC_SRCS is non-empty. You must supply a NANOPB_PREFIX environment \ 46*84e33947SAndroid Build Coastguard Worker variable containing a path to the nanopb project. Example: \ 47*84e33947SAndroid Build Coastguard Worker export NANOPB_PREFIX=$$HOME/path/to/nanopb/nanopb-c") 48*84e33947SAndroid Build Coastguard Workerendif 49*84e33947SAndroid Build Coastguard WorkerHAS_PROTO_SRC = true 50*84e33947SAndroid Build Coastguard Workerendif 51*84e33947SAndroid Build Coastguard Worker 52*84e33947SAndroid Build Coastguard Worker################################################################################ 53*84e33947SAndroid Build Coastguard Worker# Common ####################################################################### 54*84e33947SAndroid Build Coastguard Worker################################################################################ 55*84e33947SAndroid Build Coastguard Worker 56*84e33947SAndroid Build Coastguard Workerifeq ($(PROTOC),) 57*84e33947SAndroid Build Coastguard WorkerPROTOC=protoc 58*84e33947SAndroid Build Coastguard Workerendif 59*84e33947SAndroid Build Coastguard Worker 60*84e33947SAndroid Build Coastguard WorkerNANOPB_GEN_PATH = $(OUT)/nanopb_gen 61*84e33947SAndroid Build Coastguard Worker 62*84e33947SAndroid Build Coastguard Workerifeq ($(NANOPB_EXTENSION),) 63*84e33947SAndroid Build Coastguard WorkerNANOPB_EXTENSION = pb 64*84e33947SAndroid Build Coastguard Workerelse 65*84e33947SAndroid Build Coastguard WorkerNANOPB_GENERATOR_FLAGS = --extension=.$(NANOPB_EXTENSION) 66*84e33947SAndroid Build Coastguard Workerendif 67*84e33947SAndroid Build Coastguard Worker 68*84e33947SAndroid Build Coastguard WorkerNANOPB_GEN_SRCS += $(patsubst %.proto, \ 69*84e33947SAndroid Build Coastguard Worker $(NANOPB_GEN_PATH)/%.$(NANOPB_EXTENSION).c, \ 70*84e33947SAndroid Build Coastguard Worker $(NANOPB_SRCS)) 71*84e33947SAndroid Build Coastguard Worker 72*84e33947SAndroid Build Coastguard Worker# Add Google proto well-known types. See https://protobuf.dev/reference/protobuf/google.protobuf/. 73*84e33947SAndroid Build Coastguard WorkerPROTOBUF_DIR = $(ANDROID_BUILD_TOP)/external/protobuf 74*84e33947SAndroid Build Coastguard WorkerCOMMON_CFLAGS += -I$(NANOPB_GEN_PATH)/$(PROTOBUF_DIR)/src 75*84e33947SAndroid Build Coastguard Worker 76*84e33947SAndroid Build Coastguard Worker################################################################################ 77*84e33947SAndroid Build Coastguard Worker# Common to nanopb & rpc ####################################################### 78*84e33947SAndroid Build Coastguard Worker################################################################################ 79*84e33947SAndroid Build Coastguard Worker 80*84e33947SAndroid Build Coastguard Workerifeq ($(HAS_PROTO_SRC),true) 81*84e33947SAndroid Build Coastguard WorkerCOMMON_CFLAGS += -I$(NANOPB_PREFIX) 82*84e33947SAndroid Build Coastguard Worker 83*84e33947SAndroid Build Coastguard Workerifneq ($(NANOPB_INCLUDE_LIBRARY),false) 84*84e33947SAndroid Build Coastguard WorkerCOMMON_SRCS += $(NANOPB_PREFIX)/pb_common.c 85*84e33947SAndroid Build Coastguard WorkerCOMMON_SRCS += $(NANOPB_PREFIX)/pb_decode.c 86*84e33947SAndroid Build Coastguard WorkerCOMMON_SRCS += $(NANOPB_PREFIX)/pb_encode.c 87*84e33947SAndroid Build Coastguard Workerendif 88*84e33947SAndroid Build Coastguard Worker 89*84e33947SAndroid Build Coastguard Worker# NanoPB Compiler Flags 90*84e33947SAndroid Build Coastguard Workerifneq ($(NANOPB_INCLUDE_LIBRARY),false) 91*84e33947SAndroid Build Coastguard WorkerCOMMON_CFLAGS += -DPB_NO_PACKED_STRUCTS=1 92*84e33947SAndroid Build Coastguard Workerendif 93*84e33947SAndroid Build Coastguard Worker 94*84e33947SAndroid Build Coastguard WorkerNANOPB_PROTOC = $(NANOPB_PREFIX)/generator/protoc-gen-nanopb 95*84e33947SAndroid Build Coastguard Worker 96*84e33947SAndroid Build Coastguard Workerendif # ifeq ($(HAS_PROTO_SRC),true) 97*84e33947SAndroid Build Coastguard Worker 98*84e33947SAndroid Build Coastguard Worker################################################################################ 99*84e33947SAndroid Build Coastguard Worker# nanopb ####################################################################### 100*84e33947SAndroid Build Coastguard Worker################################################################################ 101*84e33947SAndroid Build Coastguard Worker 102*84e33947SAndroid Build Coastguard Workerifneq ($(NANOPB_GEN_SRCS),) 103*84e33947SAndroid Build Coastguard WorkerCOMMON_CFLAGS += -I$(NANOPB_GEN_PATH) 104*84e33947SAndroid Build Coastguard WorkerCOMMON_CFLAGS += $(addprefix -I$(NANOPB_GEN_PATH)/, $(NANOPB_INCLUDES)) 105*84e33947SAndroid Build Coastguard Workerendif 106*84e33947SAndroid Build Coastguard Worker 107*84e33947SAndroid Build Coastguard Worker# NanoPB Generator Setup ####################################################### 108*84e33947SAndroid Build Coastguard Worker 109*84e33947SAndroid Build Coastguard WorkerNANOPB_GENERATOR_SRCS = $(NANOPB_PREFIX)/generator/proto/nanopb_pb2.py 110*84e33947SAndroid Build Coastguard WorkerNANOPB_GENERATOR_SRCS += $(NANOPB_PREFIX)/generator/proto/plugin_pb2.py 111*84e33947SAndroid Build Coastguard Worker 112*84e33947SAndroid Build Coastguard Worker$(NANOPB_GENERATOR_SRCS): 113*84e33947SAndroid Build Coastguard Worker cd $(NANOPB_PREFIX)/generator/proto && $(MAKE) 114*84e33947SAndroid Build Coastguard Worker 115*84e33947SAndroid Build Coastguard Workerifneq ($(NANOPB_OPTIONS),) 116*84e33947SAndroid Build Coastguard WorkerNANOPB_OPTIONS_FLAG = --options-file=$(NANOPB_OPTIONS) 117*84e33947SAndroid Build Coastguard Workerelse 118*84e33947SAndroid Build Coastguard WorkerNANOPB_OPTIONS_FLAG = 119*84e33947SAndroid Build Coastguard Workerendif 120*84e33947SAndroid Build Coastguard Worker 121*84e33947SAndroid Build Coastguard WorkerNANOPB_FLAGS += $(addprefix --proto_path=, $(abspath $(NANOPB_INCLUDES))) 122*84e33947SAndroid Build Coastguard Worker 123*84e33947SAndroid Build Coastguard Worker# Generate NanoPB Sources ###################################################### 124*84e33947SAndroid Build Coastguard Worker 125*84e33947SAndroid Build Coastguard WorkerCOMMON_SRCS += $(NANOPB_GEN_SRCS) 126*84e33947SAndroid Build Coastguard Worker 127*84e33947SAndroid Build Coastguard WorkerNANOPB_PROTOC = $(NANOPB_PREFIX)/generator/protoc-gen-nanopb 128*84e33947SAndroid Build Coastguard Worker 129*84e33947SAndroid Build Coastguard Worker$(NANOPB_GEN_PATH)/%.$(NANOPB_EXTENSION).c \ 130*84e33947SAndroid Build Coastguard Worker $(NANOPB_GEN_PATH)/%.$(NANOPB_EXTENSION).h: %.proto \ 131*84e33947SAndroid Build Coastguard Worker %.options \ 132*84e33947SAndroid Build Coastguard Worker $(NANOPB_GENERATOR_SRCS) 133*84e33947SAndroid Build Coastguard Worker @echo " [NANOPB] $<" 134*84e33947SAndroid Build Coastguard Worker $(V)mkdir -p $(dir $@) 135*84e33947SAndroid Build Coastguard Worker $(V)PYTHONPATH=$(PYTHONPATH) $(PROTOC) \ 136*84e33947SAndroid Build Coastguard Worker --plugin=protoc-gen-nanopb=$(NANOPB_PROTOC) \ 137*84e33947SAndroid Build Coastguard Worker --proto_path=$(abspath $(dir $<)) \ 138*84e33947SAndroid Build Coastguard Worker $(NANOPB_FLAGS) \ 139*84e33947SAndroid Build Coastguard Worker --nanopb_out="$(NANOPB_GENERATOR_FLAGS) \ 140*84e33947SAndroid Build Coastguard Worker --options-file=$(basename $<).options:$(dir $@)" \ 141*84e33947SAndroid Build Coastguard Worker $(abspath $<) 142*84e33947SAndroid Build Coastguard Worker 143*84e33947SAndroid Build Coastguard Worker$(NANOPB_GEN_PATH)/%.$(NANOPB_EXTENSION).c \ 144*84e33947SAndroid Build Coastguard Worker $(NANOPB_GEN_PATH)/%.$(NANOPB_EXTENSION).h: %.proto \ 145*84e33947SAndroid Build Coastguard Worker $(NANOPB_OPTIONS) \ 146*84e33947SAndroid Build Coastguard Worker $(NANOPB_GENERATOR_SRCS) 147*84e33947SAndroid Build Coastguard Worker @echo " [NANOPB] $<" 148*84e33947SAndroid Build Coastguard Worker $(V)mkdir -p $(dir $@) 149*84e33947SAndroid Build Coastguard Worker $(V)PYTHONPATH=$(PYTHONPATH) $(PROTOC) \ 150*84e33947SAndroid Build Coastguard Worker --plugin=protoc-gen-nanopb=$(NANOPB_PROTOC) \ 151*84e33947SAndroid Build Coastguard Worker --proto_path=$(abspath $(dir $<)) \ 152*84e33947SAndroid Build Coastguard Worker $(NANOPB_FLAGS) \ 153*84e33947SAndroid Build Coastguard Worker --nanopb_out="$(NANOPB_GENERATOR_FLAGS) $(NANOPB_OPTIONS_FLAG):$(dir $@)" \ 154*84e33947SAndroid Build Coastguard Worker $(abspath $<) 155*84e33947SAndroid Build Coastguard Worker 156*84e33947SAndroid Build Coastguard Worker################################################################################ 157*84e33947SAndroid Build Coastguard Worker# Specific to pigweed RPC ###################################################### 158*84e33947SAndroid Build Coastguard Worker################################################################################ 159*84e33947SAndroid Build Coastguard Workerifneq ($(PW_RPC_SRCS),) 160*84e33947SAndroid Build Coastguard Worker 161*84e33947SAndroid Build Coastguard Worker# Location of various Pigweed modules 162*84e33947SAndroid Build Coastguard WorkerPIGWEED_DIR = $(ANDROID_BUILD_TOP)/external/pigweed 163*84e33947SAndroid Build Coastguard WorkerPROTOBUF_DIR = $(ANDROID_BUILD_TOP)/external/protobuf 164*84e33947SAndroid Build Coastguard WorkerCHRE_PREFIX = $(ANDROID_BUILD_TOP)/system/chre 165*84e33947SAndroid Build Coastguard WorkerCHRE_UTIL_DIR = $(CHRE_PREFIX)/util 166*84e33947SAndroid Build Coastguard WorkerCHRE_API_DIR = $(CHRE_PREFIX)/chre_api 167*84e33947SAndroid Build Coastguard WorkerPIGWEED_CHRE_DIR=$(CHRE_PREFIX)/external/pigweed 168*84e33947SAndroid Build Coastguard WorkerPIGWEED_CHRE_UTIL_DIR = $(CHRE_UTIL_DIR)/pigweed 169*84e33947SAndroid Build Coastguard Worker 170*84e33947SAndroid Build Coastguard WorkerPW_RPC_GEN_PATH = $(OUT)/pw_rpc_gen 171*84e33947SAndroid Build Coastguard Worker 172*84e33947SAndroid Build Coastguard Worker# Create proto used for header generation ###################################### 173*84e33947SAndroid Build Coastguard Worker 174*84e33947SAndroid Build Coastguard WorkerPW_RPC_PROTO_GENERATOR = $(PIGWEED_DIR)/pw_protobuf_compiler/py/pw_protobuf_compiler/generate_protos.py 175*84e33947SAndroid Build Coastguard WorkerPW_RPC_GENERATOR_PROTO = $(PIGWEED_DIR)/pw_rpc/internal/packet.proto 176*84e33947SAndroid Build Coastguard WorkerPW_RPC_GENERATOR_COMPILED_PROTO = $(PW_RPC_GEN_PATH)/py/pw_rpc/internal/packet_pb2.py 177*84e33947SAndroid Build Coastguard WorkerPW_PROTOBUF_PROTOS = $(PIGWEED_DIR)/pw_protobuf/pw_protobuf_protos/common.proto \ 178*84e33947SAndroid Build Coastguard Worker $(PIGWEED_DIR)/pw_protobuf/pw_protobuf_protos/field_options.proto \ 179*84e33947SAndroid Build Coastguard Worker $(PIGWEED_DIR)/pw_protobuf/pw_protobuf_protos/status.proto 180*84e33947SAndroid Build Coastguard Worker 181*84e33947SAndroid Build Coastguard Worker# Modifies PYTHONPATH so that python can see all of pigweed's modules used by 182*84e33947SAndroid Build Coastguard Worker# their protoc plugins 183*84e33947SAndroid Build Coastguard WorkerPW_RPC_GENERATOR_CMD = PYTHONPATH=$$PYTHONPATH:$(PW_RPC_GEN_PATH)/py:$\ 184*84e33947SAndroid Build Coastguard Worker $(PIGWEED_DIR)/pw_status/py:$(PIGWEED_DIR)/pw_protobuf/py:$\ 185*84e33947SAndroid Build Coastguard Worker $(PIGWEED_DIR)/pw_protobuf_compiler/py $(PYTHON) 186*84e33947SAndroid Build Coastguard Worker 187*84e33947SAndroid Build Coastguard Worker$(PW_RPC_GENERATOR_COMPILED_PROTO): $(PW_RPC_GENERATOR_PROTO) 188*84e33947SAndroid Build Coastguard Worker @echo " [PW_RPC] $<" 189*84e33947SAndroid Build Coastguard Worker $(V)mkdir -p $(PW_RPC_GEN_PATH)/py/pw_rpc/internal 190*84e33947SAndroid Build Coastguard Worker $(V)mkdir -p $(PW_RPC_GEN_PATH)/py/pw_protobuf_codegen_protos 191*84e33947SAndroid Build Coastguard Worker $(V)mkdir -p $(PW_RPC_GEN_PATH)/py/pw_protobuf_protos 192*84e33947SAndroid Build Coastguard Worker $(V)cp -R $(PIGWEED_DIR)/pw_rpc/py/pw_rpc $(PW_RPC_GEN_PATH)/py/ 193*84e33947SAndroid Build Coastguard Worker 194*84e33947SAndroid Build Coastguard Worker $(PROTOC) -I$(PIGWEED_DIR)/pw_protobuf/pw_protobuf_protos \ 195*84e33947SAndroid Build Coastguard Worker --experimental_allow_proto3_optional \ 196*84e33947SAndroid Build Coastguard Worker --python_out=$(PW_RPC_GEN_PATH)/py/pw_protobuf_protos \ 197*84e33947SAndroid Build Coastguard Worker $(PW_PROTOBUF_PROTOS) 198*84e33947SAndroid Build Coastguard Worker 199*84e33947SAndroid Build Coastguard Worker $(PROTOC) -I$(PIGWEED_DIR)/pw_protobuf/pw_protobuf_codegen_protos \ 200*84e33947SAndroid Build Coastguard Worker --experimental_allow_proto3_optional \ 201*84e33947SAndroid Build Coastguard Worker --python_out=$(PW_RPC_GEN_PATH)/py/pw_protobuf_codegen_protos \ 202*84e33947SAndroid Build Coastguard Worker $(PIGWEED_DIR)/pw_protobuf/pw_protobuf_codegen_protos/codegen_options.proto 203*84e33947SAndroid Build Coastguard Worker 204*84e33947SAndroid Build Coastguard Worker $(V)$(PW_RPC_GENERATOR_CMD) $(PW_RPC_PROTO_GENERATOR) \ 205*84e33947SAndroid Build Coastguard Worker --out-dir=$(PW_RPC_GEN_PATH)/py/pw_rpc/internal \ 206*84e33947SAndroid Build Coastguard Worker --compile-dir=$(dir $<) --sources $(PW_RPC_GENERATOR_PROTO) \ 207*84e33947SAndroid Build Coastguard Worker --language python \ 208*84e33947SAndroid Build Coastguard Worker --no-experimental-editions 209*84e33947SAndroid Build Coastguard Worker 210*84e33947SAndroid Build Coastguard Worker $(V)$(PW_RPC_GENERATOR_CMD) $(PW_RPC_PROTO_GENERATOR) \ 211*84e33947SAndroid Build Coastguard Worker --out-dir=$(PW_RPC_GEN_PATH)/$(dir $<) \ 212*84e33947SAndroid Build Coastguard Worker --plugin-path=$(PIGWEED_DIR)/pw_protobuf/py/pw_protobuf/plugin.py \ 213*84e33947SAndroid Build Coastguard Worker --compile-dir=$(dir $<) --sources $(PW_RPC_GENERATOR_PROTO) \ 214*84e33947SAndroid Build Coastguard Worker --language pwpb \ 215*84e33947SAndroid Build Coastguard Worker --no-experimental-editions 216*84e33947SAndroid Build Coastguard Worker 217*84e33947SAndroid Build Coastguard Worker# Generated PW RPC Files ####################################################### 218*84e33947SAndroid Build Coastguard Worker 219*84e33947SAndroid Build Coastguard WorkerPW_RPC_GEN_SRCS = $(patsubst %.proto, \ 220*84e33947SAndroid Build Coastguard Worker $(PW_RPC_GEN_PATH)/%.pb.c, \ 221*84e33947SAndroid Build Coastguard Worker $(PW_RPC_SRCS)) 222*84e33947SAndroid Build Coastguard Worker 223*84e33947SAndroid Build Coastguard Worker# Include to-be-generated files 224*84e33947SAndroid Build Coastguard WorkerCOMMON_CFLAGS += -I$(PW_RPC_GEN_PATH) 225*84e33947SAndroid Build Coastguard WorkerCOMMON_CFLAGS += -I$(PW_RPC_GEN_PATH)/$(PIGWEED_DIR) 226*84e33947SAndroid Build Coastguard Worker 227*84e33947SAndroid Build Coastguard Worker# Add include paths to reference protos directly 228*84e33947SAndroid Build Coastguard WorkerCOMMON_CFLAGS += $(addprefix -I$(PW_RPC_GEN_PATH)/, $(abspath $(dir $(PW_RPC_SRCS)))) 229*84e33947SAndroid Build Coastguard Worker 230*84e33947SAndroid Build Coastguard Worker# Add include paths to import protos 231*84e33947SAndroid Build Coastguard Workerifneq ($(PW_RPC_INCLUDE_DIRS),) 232*84e33947SAndroid Build Coastguard WorkerCOMMON_CFLAGS += $(addprefix -I$(PW_RPC_GEN_PATH)/, $(abspath $(PW_RPC_INCLUDE_DIRS))) 233*84e33947SAndroid Build Coastguard Workerendif 234*84e33947SAndroid Build Coastguard Worker 235*84e33947SAndroid Build Coastguard Worker# Add Google proto well-known types. See https://protobuf.dev/reference/protobuf/google.protobuf/. 236*84e33947SAndroid Build Coastguard WorkerCOMMON_CFLAGS += -I$(PW_RPC_GEN_PATH)/$(PROTOBUF_DIR)/src 237*84e33947SAndroid Build Coastguard Worker 238*84e33947SAndroid Build Coastguard WorkerCOMMON_SRCS += $(PW_RPC_GEN_SRCS) 239*84e33947SAndroid Build Coastguard Worker 240*84e33947SAndroid Build Coastguard Worker# PW RPC library ############################################################### 241*84e33947SAndroid Build Coastguard Worker 242*84e33947SAndroid Build Coastguard Worker# Pigweed RPC include paths 243*84e33947SAndroid Build Coastguard WorkerCOMMON_CFLAGS += -I$(PIGWEED_DIR)/pw_assert/public 244*84e33947SAndroid Build Coastguard WorkerCOMMON_CFLAGS += -I$(PIGWEED_DIR)/pw_bytes/public 245*84e33947SAndroid Build Coastguard WorkerCOMMON_CFLAGS += -I$(PIGWEED_DIR)/pw_containers/public 246*84e33947SAndroid Build Coastguard WorkerCOMMON_CFLAGS += -I$(PIGWEED_DIR)/pw_function/public 247*84e33947SAndroid Build Coastguard WorkerCOMMON_CFLAGS += -I$(PIGWEED_DIR)/pw_log/public 248*84e33947SAndroid Build Coastguard WorkerCOMMON_CFLAGS += -I$(PIGWEED_DIR)/pw_polyfill/public 249*84e33947SAndroid Build Coastguard WorkerCOMMON_CFLAGS += -I$(PIGWEED_DIR)/pw_polyfill/public_overrides 250*84e33947SAndroid Build Coastguard WorkerCOMMON_CFLAGS += -I$(PIGWEED_DIR)/pw_polyfill/standard_library_public 251*84e33947SAndroid Build Coastguard WorkerCOMMON_CFLAGS += -I$(PIGWEED_DIR)/pw_preprocessor/public 252*84e33947SAndroid Build Coastguard WorkerCOMMON_CFLAGS += -I$(PIGWEED_DIR)/pw_protobuf/public 253*84e33947SAndroid Build Coastguard WorkerCOMMON_CFLAGS += -I$(PIGWEED_DIR)/pw_result/public 254*84e33947SAndroid Build Coastguard WorkerCOMMON_CFLAGS += -I$(PIGWEED_DIR)/pw_rpc/nanopb/public 255*84e33947SAndroid Build Coastguard WorkerCOMMON_CFLAGS += -I$(PIGWEED_DIR)/pw_rpc/public 256*84e33947SAndroid Build Coastguard WorkerCOMMON_CFLAGS += -I$(PIGWEED_DIR)/pw_rpc/pwpb/public 257*84e33947SAndroid Build Coastguard WorkerCOMMON_CFLAGS += -I$(PIGWEED_DIR)/pw_rpc/raw/public 258*84e33947SAndroid Build Coastguard WorkerCOMMON_CFLAGS += -I$(PIGWEED_DIR)/pw_span/public 259*84e33947SAndroid Build Coastguard WorkerCOMMON_CFLAGS += -I$(PIGWEED_DIR)/pw_span/public_overrides 260*84e33947SAndroid Build Coastguard WorkerCOMMON_CFLAGS += -I$(PIGWEED_DIR)/pw_status/public 261*84e33947SAndroid Build Coastguard WorkerCOMMON_CFLAGS += -I$(PIGWEED_DIR)/pw_stream/public 262*84e33947SAndroid Build Coastguard WorkerCOMMON_CFLAGS += -I$(PIGWEED_DIR)/pw_string/public 263*84e33947SAndroid Build Coastguard WorkerCOMMON_CFLAGS += -I$(PIGWEED_DIR)/pw_sync/public 264*84e33947SAndroid Build Coastguard WorkerCOMMON_CFLAGS += -I$(PIGWEED_DIR)/pw_toolchain/public 265*84e33947SAndroid Build Coastguard WorkerCOMMON_CFLAGS += -I$(PIGWEED_DIR)/pw_varint/public 266*84e33947SAndroid Build Coastguard WorkerCOMMON_CFLAGS += -I$(PIGWEED_DIR)/third_party/fuchsia/repo/sdk/lib/fit/include 267*84e33947SAndroid Build Coastguard WorkerCOMMON_CFLAGS += -I$(PIGWEED_DIR)/third_party/fuchsia/repo/sdk/lib/stdcompat/include 268*84e33947SAndroid Build Coastguard Worker 269*84e33947SAndroid Build Coastguard Worker# Pigweed RPC sources 270*84e33947SAndroid Build Coastguard WorkerCOMMON_SRCS += $(PIGWEED_DIR)/pw_assert_log/assert_log.cc 271*84e33947SAndroid Build Coastguard WorkerCOMMON_SRCS += $(PIGWEED_DIR)/pw_containers/intrusive_item.cc 272*84e33947SAndroid Build Coastguard WorkerCOMMON_SRCS += $(PIGWEED_DIR)/pw_protobuf/decoder.cc 273*84e33947SAndroid Build Coastguard WorkerCOMMON_SRCS += $(PIGWEED_DIR)/pw_protobuf/encoder.cc 274*84e33947SAndroid Build Coastguard WorkerCOMMON_SRCS += $(PIGWEED_DIR)/pw_protobuf/stream_decoder.cc 275*84e33947SAndroid Build Coastguard WorkerCOMMON_SRCS += $(PIGWEED_DIR)/pw_rpc/call.cc 276*84e33947SAndroid Build Coastguard WorkerCOMMON_SRCS += $(PIGWEED_DIR)/pw_rpc/channel.cc 277*84e33947SAndroid Build Coastguard WorkerCOMMON_SRCS += $(PIGWEED_DIR)/pw_rpc/channel_list.cc 278*84e33947SAndroid Build Coastguard WorkerCOMMON_SRCS += $(PIGWEED_DIR)/pw_rpc/client.cc 279*84e33947SAndroid Build Coastguard WorkerCOMMON_SRCS += $(PIGWEED_DIR)/pw_rpc/client_call.cc 280*84e33947SAndroid Build Coastguard WorkerCOMMON_SRCS += $(PIGWEED_DIR)/pw_rpc/endpoint.cc 281*84e33947SAndroid Build Coastguard WorkerCOMMON_SRCS += $(PIGWEED_DIR)/pw_rpc/packet.cc 282*84e33947SAndroid Build Coastguard WorkerCOMMON_SRCS += $(PIGWEED_DIR)/pw_rpc/server.cc 283*84e33947SAndroid Build Coastguard WorkerCOMMON_SRCS += $(PIGWEED_DIR)/pw_rpc/server_call.cc 284*84e33947SAndroid Build Coastguard WorkerCOMMON_SRCS += $(PIGWEED_DIR)/pw_rpc/service.cc 285*84e33947SAndroid Build Coastguard WorkerCOMMON_SRCS += $(PIGWEED_DIR)/pw_rpc/nanopb/common.cc 286*84e33947SAndroid Build Coastguard WorkerCOMMON_SRCS += $(PIGWEED_DIR)/pw_rpc/nanopb/method.cc 287*84e33947SAndroid Build Coastguard WorkerCOMMON_SRCS += $(PIGWEED_DIR)/pw_rpc/nanopb/server_reader_writer.cc 288*84e33947SAndroid Build Coastguard WorkerCOMMON_SRCS += $(PIGWEED_DIR)/pw_rpc/pwpb/server_reader_writer.cc 289*84e33947SAndroid Build Coastguard WorkerCOMMON_SRCS += $(PIGWEED_DIR)/pw_status/status.cc 290*84e33947SAndroid Build Coastguard WorkerCOMMON_SRCS += $(PIGWEED_DIR)/pw_stream/memory_stream.cc 291*84e33947SAndroid Build Coastguard WorkerCOMMON_SRCS += $(PIGWEED_DIR)/pw_varint/stream.cc 292*84e33947SAndroid Build Coastguard WorkerCOMMON_SRCS += $(PIGWEED_DIR)/pw_varint/varint_c.c 293*84e33947SAndroid Build Coastguard WorkerCOMMON_SRCS += $(PIGWEED_DIR)/pw_varint/varint.cc 294*84e33947SAndroid Build Coastguard Worker# Pigweed configuration 295*84e33947SAndroid Build Coastguard WorkerCOMMON_CFLAGS += -DPW_RPC_USE_GLOBAL_MUTEX=0 296*84e33947SAndroid Build Coastguard WorkerCOMMON_CFLAGS += -DPW_RPC_YIELD_MODE=PW_RPC_YIELD_MODE_BUSY_LOOP 297*84e33947SAndroid Build Coastguard Worker 298*84e33947SAndroid Build Coastguard Worker# Enable closing a client stream. 299*84e33947SAndroid Build Coastguard WorkerCOMMON_CFLAGS += -DPW_RPC_COMPLETION_REQUEST_CALLBACK 300*84e33947SAndroid Build Coastguard Worker 301*84e33947SAndroid Build Coastguard Worker# Use dynamic channel allocation 302*84e33947SAndroid Build Coastguard WorkerCOMMON_CFLAGS += -DPW_RPC_DYNAMIC_ALLOCATION 303*84e33947SAndroid Build Coastguard WorkerCOMMON_CFLAGS += -DPW_RPC_DYNAMIC_CONTAINER\(type\)="chre::DynamicVector<type>" 304*84e33947SAndroid Build Coastguard WorkerCOMMON_CFLAGS += -DPW_RPC_DYNAMIC_CONTAINER_INCLUDE='"chre/util/dynamic_vector.h"' 305*84e33947SAndroid Build Coastguard Worker 306*84e33947SAndroid Build Coastguard Worker# Add CHRE Pigweed util sources since nanoapps should always use these 307*84e33947SAndroid Build Coastguard WorkerCOMMON_SRCS += $(PIGWEED_CHRE_UTIL_DIR)/chre_channel_output.cc 308*84e33947SAndroid Build Coastguard WorkerCOMMON_SRCS += $(PIGWEED_CHRE_UTIL_DIR)/rpc_client.cc 309*84e33947SAndroid Build Coastguard WorkerCOMMON_SRCS += $(PIGWEED_CHRE_UTIL_DIR)/rpc_helper.cc 310*84e33947SAndroid Build Coastguard WorkerCOMMON_SRCS += $(PIGWEED_CHRE_UTIL_DIR)/rpc_server.cc 311*84e33947SAndroid Build Coastguard WorkerCOMMON_SRCS += $(CHRE_UTIL_DIR)/nanoapp/callbacks.cc 312*84e33947SAndroid Build Coastguard WorkerCOMMON_SRCS += $(CHRE_UTIL_DIR)/dynamic_vector_base.cc 313*84e33947SAndroid Build Coastguard Worker 314*84e33947SAndroid Build Coastguard Worker# CHRE Pigweed overrides 315*84e33947SAndroid Build Coastguard WorkerCOMMON_CFLAGS += -I$(PIGWEED_CHRE_DIR)/pw_log_nanoapp/public_overrides 316*84e33947SAndroid Build Coastguard WorkerCOMMON_CFLAGS += -I$(PIGWEED_CHRE_DIR)/pw_assert_nanoapp/public_overrides 317*84e33947SAndroid Build Coastguard Worker 318*84e33947SAndroid Build Coastguard Worker# Generate PW RPC headers ###################################################### 319*84e33947SAndroid Build Coastguard Worker 320*84e33947SAndroid Build Coastguard Worker$(PW_RPC_GEN_PATH)/%.pb.c \ 321*84e33947SAndroid Build Coastguard Worker $(PW_RPC_GEN_PATH)/%.pb.h \ 322*84e33947SAndroid Build Coastguard Worker $(PW_RPC_GEN_PATH)/%.rpc.pb.h \ 323*84e33947SAndroid Build Coastguard Worker $(PW_RPC_GEN_PATH)/%.raw_rpc.pb.h: %.proto \ 324*84e33947SAndroid Build Coastguard Worker %.options \ 325*84e33947SAndroid Build Coastguard Worker $(NANOPB_GENERATOR_SRCS) \ 326*84e33947SAndroid Build Coastguard Worker $(PW_RPC_GENERATOR_COMPILED_PROTO) 327*84e33947SAndroid Build Coastguard Worker @echo " [PW_RPC] $<" 328*84e33947SAndroid Build Coastguard Worker $(V)$(PW_RPC_GENERATOR_CMD) $(PW_RPC_PROTO_GENERATOR) \ 329*84e33947SAndroid Build Coastguard Worker --plugin-path=$(NANOPB_PROTOC) \ 330*84e33947SAndroid Build Coastguard Worker --out-dir=$(PW_RPC_GEN_PATH)/$(dir $<) --compile-dir=$(dir $<) --language nanopb \ 331*84e33947SAndroid Build Coastguard Worker --no-experimental-editions \ 332*84e33947SAndroid Build Coastguard Worker --sources $< 333*84e33947SAndroid Build Coastguard Worker 334*84e33947SAndroid Build Coastguard Worker $(V)$(PW_RPC_GENERATOR_CMD) $(PW_RPC_PROTO_GENERATOR) \ 335*84e33947SAndroid Build Coastguard Worker --plugin-path=$(PIGWEED_DIR)/pw_protobuf/py/pw_protobuf/plugin.py \ 336*84e33947SAndroid Build Coastguard Worker --out-dir=$(PW_RPC_GEN_PATH)/$(dir $<) --compile-dir=$(dir $<) --language pwpb \ 337*84e33947SAndroid Build Coastguard Worker --no-experimental-editions \ 338*84e33947SAndroid Build Coastguard Worker --sources $< 339*84e33947SAndroid Build Coastguard Worker 340*84e33947SAndroid Build Coastguard Worker $(V)$(PW_RPC_GENERATOR_CMD) $(PW_RPC_PROTO_GENERATOR) \ 341*84e33947SAndroid Build Coastguard Worker --plugin-path=$(PIGWEED_DIR)/pw_rpc/py/pw_rpc/plugin_nanopb.py \ 342*84e33947SAndroid Build Coastguard Worker --out-dir=$(PW_RPC_GEN_PATH)/$(dir $<) --compile-dir=$(dir $<) --language nanopb_rpc \ 343*84e33947SAndroid Build Coastguard Worker --no-experimental-editions \ 344*84e33947SAndroid Build Coastguard Worker --sources $< 345*84e33947SAndroid Build Coastguard Worker 346*84e33947SAndroid Build Coastguard Worker $(V)$(PW_RPC_GENERATOR_CMD) $(PW_RPC_PROTO_GENERATOR) \ 347*84e33947SAndroid Build Coastguard Worker --plugin-path=$(PIGWEED_DIR)/pw_rpc/py/pw_rpc/plugin_raw.py \ 348*84e33947SAndroid Build Coastguard Worker --out-dir=$(PW_RPC_GEN_PATH)/$(dir $<) --compile-dir=$(dir $<) --language raw_rpc \ 349*84e33947SAndroid Build Coastguard Worker --no-experimental-editions \ 350*84e33947SAndroid Build Coastguard Worker --sources $< 351*84e33947SAndroid Build Coastguard Worker 352*84e33947SAndroid Build Coastguard Worker $(V)$(PW_RPC_GENERATOR_CMD) $(PW_RPC_PROTO_GENERATOR) \ 353*84e33947SAndroid Build Coastguard Worker --plugin-path=$(PIGWEED_DIR)/pw_rpc/py/pw_rpc/plugin_pwpb.py \ 354*84e33947SAndroid Build Coastguard Worker --out-dir=$(PW_RPC_GEN_PATH)/$(dir $<) --compile-dir=$(dir $<) --language pwpb_rpc \ 355*84e33947SAndroid Build Coastguard Worker --no-experimental-editions \ 356*84e33947SAndroid Build Coastguard Worker --sources $< 357*84e33947SAndroid Build Coastguard Worker 358*84e33947SAndroid Build Coastguard Worker$(PW_RPC_GEN_PATH)/%.pb.c \ 359*84e33947SAndroid Build Coastguard Worker $(PW_RPC_GEN_PATH)/%.pb.h \ 360*84e33947SAndroid Build Coastguard Worker $(PW_RPC_GEN_PATH)/%.rpc.pb.h \ 361*84e33947SAndroid Build Coastguard Worker $(PW_RPC_GEN_PATH)/%.raw_rpc.pb.h: %.proto \ 362*84e33947SAndroid Build Coastguard Worker $(NANOPB_OPTIONS) \ 363*84e33947SAndroid Build Coastguard Worker $(NANOPB_GENERATOR_SRCS) \ 364*84e33947SAndroid Build Coastguard Worker $(PW_RPC_GENERATOR_COMPILED_PROTO) 365*84e33947SAndroid Build Coastguard Worker @echo " [PW_RPC] $<" 366*84e33947SAndroid Build Coastguard Worker $(V)$(PW_RPC_GENERATOR_CMD) $(PW_RPC_PROTO_GENERATOR) \ 367*84e33947SAndroid Build Coastguard Worker --plugin-path=$(NANOPB_PROTOC) \ 368*84e33947SAndroid Build Coastguard Worker --out-dir=$(PW_RPC_GEN_PATH)/$(dir $<) --compile-dir=$(dir $<) --language nanopb \ 369*84e33947SAndroid Build Coastguard Worker --no-experimental-editions \ 370*84e33947SAndroid Build Coastguard Worker --sources $< 371*84e33947SAndroid Build Coastguard Worker 372*84e33947SAndroid Build Coastguard Worker $(V)$(PW_RPC_GENERATOR_CMD) $(PW_RPC_PROTO_GENERATOR) \ 373*84e33947SAndroid Build Coastguard Worker --plugin-path=$(PIGWEED_DIR)/pw_protobuf/py/pw_protobuf/plugin.py \ 374*84e33947SAndroid Build Coastguard Worker --out-dir=$(PW_RPC_GEN_PATH)/$(dir $<) --compile-dir=$(dir $<) --language pwpb \ 375*84e33947SAndroid Build Coastguard Worker --no-experimental-editions \ 376*84e33947SAndroid Build Coastguard Worker --sources $< 377*84e33947SAndroid Build Coastguard Worker 378*84e33947SAndroid Build Coastguard Worker $(V)$(PW_RPC_GENERATOR_CMD) $(PW_RPC_PROTO_GENERATOR) \ 379*84e33947SAndroid Build Coastguard Worker --plugin-path=$(PIGWEED_DIR)/pw_rpc/py/pw_rpc/plugin_nanopb.py \ 380*84e33947SAndroid Build Coastguard Worker --out-dir=$(PW_RPC_GEN_PATH)/$(dir $<) --compile-dir=$(dir $<) --language nanopb_rpc \ 381*84e33947SAndroid Build Coastguard Worker --no-experimental-editions \ 382*84e33947SAndroid Build Coastguard Worker --sources $< 383*84e33947SAndroid Build Coastguard Worker 384*84e33947SAndroid Build Coastguard Worker $(V)$(PW_RPC_GENERATOR_CMD) $(PW_RPC_PROTO_GENERATOR) \ 385*84e33947SAndroid Build Coastguard Worker --plugin-path=$(PIGWEED_DIR)/pw_rpc/py/pw_rpc/plugin_raw.py \ 386*84e33947SAndroid Build Coastguard Worker --out-dir=$(PW_RPC_GEN_PATH)/$(dir $<) --compile-dir=$(dir $<) --language raw_rpc \ 387*84e33947SAndroid Build Coastguard Worker --no-experimental-editions \ 388*84e33947SAndroid Build Coastguard Worker --sources $< 389*84e33947SAndroid Build Coastguard Worker 390*84e33947SAndroid Build Coastguard Worker $(V)$(PW_RPC_GENERATOR_CMD) $(PW_RPC_PROTO_GENERATOR) \ 391*84e33947SAndroid Build Coastguard Worker --plugin-path=$(PIGWEED_DIR)/pw_rpc/py/pw_rpc/plugin_pwpb.py \ 392*84e33947SAndroid Build Coastguard Worker --out-dir=$(PW_RPC_GEN_PATH)/$(dir $<) --compile-dir=$(dir $<) --language pwpb_rpc \ 393*84e33947SAndroid Build Coastguard Worker --no-experimental-editions \ 394*84e33947SAndroid Build Coastguard Worker --sources $< 395*84e33947SAndroid Build Coastguard Worker 396*84e33947SAndroid Build Coastguard Workerendif # ifneq ($(PW_RPC_SRCS),) 397