#
# Copyright 2017 the original author or 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
#
#      http://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.
#

# Makefile to build all protobuf and gRPC related artifacts

default: build

PROTO_FILES := $(wildcard *.proto)
PROTO_ALL_FILES := $(PROTO_FILES) $(PROTO_GOOGLE_API)
PROTO_PB2_FILES := $(foreach f,$(PROTO_FILES),$(subst .proto,_pb2.py,$(f)))
PROTO_PB2_GOOGLE_API := $(foreach f,$(PROTO_GOOGLE_API),$(subst .proto,_pb2.py,$(f)))
PROTO_All_PB2_C_FILES := $(foreach f,$(PROTO_ALL_FILES),$(subst .proto,_pb2.pyc,$(f)))
PROTO_ALL_PB2_GPRC_FILES := $(foreach f,$(PROTO_ALL_FILES),$(subst .proto,_pb2_grpc.py,$(f)))
PROTO_ALL_DESC_FILES := $(foreach f,$(PROTO_ALL_FILES),$(subst .proto,.desc,$(f)))

# Google API needs to be built from within the third party directory
#
google_api:
	python -m grpc.tools.protoc \
	    -I. \
            --python_out=. \
            --grpc_python_out=. \
            --descriptor_set_out=google/api/annotations.desc \
            --include_imports \
            --include_source_info \
        google/api/annotations.proto google/api/http.proto

build: $(PROTO_PB2_FILES)

%_pb2.py: %.proto
	python -m grpc.tools.protoc \
                -I. \
                -I/protos \
                --python_out=. \
                --grpc_python_out=. \
                --descriptor_set_out=$(basename $<).desc \
                --include_imports \
                --include_source_info \
                $<

clean:
	rm -f $(PROTO_PB2_FILES) \
		$(PROTO_ALL_DESC_FILES) \
		$(PROTO_ALL_PB2_GPRC_FILES) \
		$(PROTO_All_PB2_C_FILES) \
		$(PROTO_PB2_GOOGLE_API)
