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