1# Copyright 2016 The Fuchsia Authors
2#
3# Use of this source code is governed by a MIT-style
4# license that can be found in the LICENSE file or at
5# https://opensource.org/licenses/MIT
6
7ifneq ($(MODULE_DEPS)$(MODULE_HOST_LIBS)$(MODULE_HOST_SYSLIBS),)
8$(error $(MODULE) $(MODULE_TYPE) banjo modules must use MODULE_BANJO_DEPS)
9endif
10
11MODULE_RULESMK := $(MODULE_SRCDIR)/rules.mk
12
13ifeq ($(filter banjo,$(MODULE_EXPORT)),banjo)
14MODULE_PACKAGE += $(sort $(MODULE_PACKAGE) banjo)
15endif
16
17# TODO(mcgrathr): make this error after bogons are fixed
18ifneq ($(MODULE_BANJO_LIBRARY),$(subst -,.,$(notdir $(MODULE))))
19$(error system/banjo/foo-bar-baz name must match library name foo.bar.baz)
20$(error $(MODULE_BANJO_LIBRARY) vs $(notdir $(MODULE)) should be $(subst .,-,$(notdir $(MODULE_BANJO_LIBRARY))))
21endif
22
23ifneq ($(strip $(MODULE_PACKAGE)),)
24
25MODULE_PKG_FILE := $(MODULE_BUILDDIR)/$(MODULE_NAME).pkg
26MODULE_EXP_FILE := $(BUILDDIR)/export/$(MODULE_NAME).pkg
27
28MODULE_PKG_SRCS := $(MODULE_SRCS)
29MODULE_PKG_DEPS := $(MODULE_BANJO_DEPS)
30
31ifneq ($(strip $(MODULE_PKG_DEPS)),)
32MODULE_PKG_DEPS := $(foreach dep,$(MODULE_BANJO_DEPS),$(patsubst system/banjo/%,%,$(dep))=SOURCE/$(dep))
33endif
34
35ifneq ($(strip $(MODULE_PKG_SRCS)),)
36MODULE_PKG_SRCS := $(foreach src,$(MODULE_PKG_SRCS),$(patsubst $(MODULE_SRCDIR)/%,%,$(src))=SOURCE/$(src))
37MODULE_PKG_TAG := "[banjo]"
38endif
39
40$(MODULE_PKG_FILE): _NAME := $(MODULE_NAME)
41$(MODULE_PKG_FILE): _LIBRARY := $(MODULE_BANJO_LIBRARY)
42$(MODULE_PKG_FILE): _SRCS := $(if $(MODULE_PKG_SRCS),$(MODULE_PKG_TAG) $(sort $(MODULE_PKG_SRCS)))
43$(MODULE_PKG_FILE): _DEPS := $(if $(MODULE_PKG_DEPS),"[banjo-deps]" $(sort $(MODULE_PKG_DEPS)))
44$(MODULE_PKG_FILE): $(MODULE_RULESMK) make/module-banjo.mk
45	@$(call BUILDECHO,creating banjo library package $@ ;)\
46	$(MKDIR) ;\
47	echo "[package]" > $@ ;\
48	echo "name=$(_NAME)" >> $@ ;\
49	echo "library=$(_LIBRARY)" >> $@ ;\
50	echo "arch=banjo" >> $@ ;\
51	echo "type=banjo" >> $@ ;\
52	for i in $(_SRCS) ; do echo "$$i" >> $@ ; done ;\
53	for i in $(_DEPS) ; do echo "$$i" >> $@ ; done
54
55
56$(MODULE_EXP_FILE): $(MODULE_PKG_FILE)
57	@$(MKDIR) ;\
58	if [ -f "$@" ]; then \
59		if ! cmp "$<" "$@" >/dev/null 2>&1; then \
60			$(if $(BUILDECHO),echo installing $@ ;)\
61			cp -f $< $@; \
62		fi \
63	else \
64		$(if $(BUILDECHO),echo installing $@ ;)\
65		cp -f $< $@; \
66	fi
67GENERATED += $(MODULE_EXP_FILE) $(MODULE_PKG_FILE)
68ALLPKGS += $(MODULE_EXP_FILE)
69
70endif # // ifneq ($(strip $(MODULE_PACKAGE)),)
71