.PHONY: all pre-build

PROTOC := protoc-c
PROTOC_ARGS := -I=proto -I=proto/chirpstack-api --c_out=./src

GOOGLE_PROTOBUF_REQUIREMENTS =
GOOGLE_PROTOBUF_REQUIREMENTS += timestamp.proto
GOOGLE_PROTOBUF_REQUIREMENTS += duration.proto
GOOGLE_PROTOBUF_REQUIREMENTS += struct.proto
GOOGLE_PROTOBUF_REQUIREMENTS += empty.proto
GOOGLE_PROTOBUF_REQUIREMENTS += descriptor.proto
GOOGLE_PROTOBUF_OUTPUT = $(patsubst %.proto, src/google/protobuf/%.pb-c.h, $(GOOGLE_PROTOBUF_REQUIREMENTS))

all: pre-build $(GOOGLE_PROTOBUF_OUTPUT) build

pre-build:
	rm -rf proto src
	mkdir -p proto/chirpstack-api
	mkdir -p proto/google/protobuf
	cp -r ../proto/* proto/chirpstack-api/
	mv proto/chirpstack-api/google/api proto/google/api
	mkdir -p src
	sed -i \
		-r 's/(\s+bytes std)(in|out|err)(\s+=.*)/\1_\2\3/' \
		proto/chirpstack-api/gw/gw.proto

src/google/protobuf/%.pb-c.h: /protobuf/src/google/protobuf/%.proto
	cp $< proto/google/protobuf/

build:
	find proto \
		-name '*.proto' \
		-type f \
		-exec $(PROTOC) $(PROTOC_ARGS) {} \;