CODEGEN_INPUTS  = protocol.yaml codegen/gen.mjs
CODEGEN_OUTPUTS = c-backend/generated/protocol.h \
                  c-backend/generated/protocol.c \
                  node-server/src/generated/protocol.mjs

.PHONY: all generate c-backend node-install clean

all: generate c-backend node-install

generate: $(CODEGEN_OUTPUTS)

$(CODEGEN_OUTPUTS): $(CODEGEN_INPUTS) | codegen/node_modules
	node codegen/gen.mjs

codegen/node_modules: codegen/package.json
	cd codegen && npm install
	@touch codegen/node_modules

c-backend: generate
	$(MAKE) -C c-backend

node-install: node-server/node_modules

node-server/node_modules: node-server/package.json
	cd node-server && npm install
	@touch node-server/node_modules

clean:
	$(MAKE) -C c-backend clean
	rm -f $(CODEGEN_OUTPUTS)
