| # Copyright 2018 The Fuchsia Authors |
| # Copyright (c) 2008-2015 Travis Geiselbrecht |
| # |
| # Use of this source code is governed by a MIT-style |
| # license that can be found in the LICENSE file or at |
| # https://opensource.org/licenses/MIT |
| |
| MODULE_BANJOSRCS := $(filter %.banjo,$(MODULE_SRCS)) |
| |
| MODULE_BANJO_FILE_LIST := $(MODULE_GENDIR)/banjo-files |
| MODULE_BANJO_RSP := $(MODULE_GENDIR)/banjo.rsp |
| MODULE_BANJO_INCLUDE := $(MODULE_GENDIR)/include |
| MODULE_BANJO_C_HEADER := $(MODULE_BANJO_INCLUDE)/ddk/protocol/$(MODULE_BANJO_NAME).h |
| MODULE_BANJO_CPP_HEADER := $(MODULE_BANJO_INCLUDE)/ddktl/protocol/$(MODULE_BANJO_NAME).h |
| MODULE_BANJO_CPP_INTERNAL_HEADER := $(MODULE_BANJO_INCLUDE)/ddktl/protocol/$(MODULE_BANJO_NAME)-internal.h |
| |
| MODULE_SRCDEPS += $(MODULE_BANJO_C_HEADER) $(MODULE_BANJO_CPP_HEADER) $(MODULE_BANJO_CPP_INTERNAL_HEADER) |
| MODULE_GEN_HDR += $(MODULE_BANJO_C_HEADER) $(MODULE_BANJO_CPP_HEADER) $(MODULE_BANJO_CPP_INTERNAL_HEADER) |
| |
| # There is probably a more correct way to express this dependency, but having |
| # this dependency here makes the build non-flakey. |
| MODULE_SRCDEPS += $(BUILDDIR)/gen/abigen-stamp |
| |
| #$(info MODULE_BANJOSRCS = $(MODULE_BANJOSRCS)) |
| |
| $(MODULE_BANJO_FILE_LIST): BANJO_SRCS:=$(MODULE_BANJOSRCS) |
| $(MODULE_BANJO_FILE_LIST): |
| @$(MKDIR) |
| $(NOECHO)echo $(BANJO_SRCS) > $@ |
| |
| $(MODULE_BANJO_RSP): BANJO_DEPS:=$(MODULE_BANJO_DEPS) |
| $(MODULE_BANJO_RSP): BANJO_NAME:=$(MODULE_BANJO_LIBRARY) |
| $(MODULE_BANJO_RSP): BANJO_C_HEADER:=$(MODULE_BANJO_C_HEADER) |
| $(MODULE_BANJO_RSP): BANJO_CPP_HEADER:=$(MODULE_BANJO_CPP_HEADER) |
| $(MODULE_BANJO_RSP): BANJO_SRCS:=$(MODULE_BANJOSRCS) |
| $(MODULE_BANJO_RSP): $(foreach dep,$(MODULE_BANJO_DEPS),$(call TOBUILDDIR,$(dep))/gen/banjo-files) $(MODULE_BANJOSRCS) make/bcompile.mk |
| @$(MKDIR) |
| $(NOECHO)echo --name $(BANJO_NAME) --ddk-header $(BANJO_C_HEADER) --ddktl-header $(BANJO_CPP_HEADER) $(foreach dep,$(BANJO_DEPS),--files $(shell cat $(call TOBUILDDIR,$(dep))/gen/banjo-files)) --files $(BANJO_SRCS) > $@ |
| |
| # $@ only lists one of the multiple targets, so we use $< (first dep) to |
| # compute the (related) destination directories to create |
| %/gen/include/ddk/protocol/$(MODULE_BANJO_NAME).h %/gen/include/ddktl/protocol/$(MODULE_BANJO_NAME).h %/gen/include/ddktl/protocol/$(MODULE_BANJO_NAME)-internal.h: %/gen/banjo.rsp $(BANJO) |
| $(call BUILDECHO, generating banjo from $<) |
| @mkdir -p $(<D)/include/ddk/protocol $(<D)/include/ddktl/protocol |
| $(NOECHO)$(BANJO) @$< |
| |
| EXTRA_BUILDDEPS += make/bcompile.mk |
| GENERATED += $(MODULE_BANJO_C_HEADER) $(MODULE_BANJO_CPP_HEADER) $(MODULE_BANJO_CPP_INTERNAL_HEADER) |
| |
| # clear some variables we set here |
| MODULE_BANJOSRCS := |
| MODULE_BANJO_INCLUDE := |
| MODULE_BANJO_C_HEADER := |
| MODULE_BANJO_CPP_HEADER := |
| MODULE_BANJO_CPP_INTERNAL_HEADER := |
| MODULE_BANJO_RSP := |