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) fidl modules must use MODULE_FIDL_DEPS)
9endif
10
11# build static library
12$(MODULE_LIBNAME).a: $(MODULE_FIDL_OBJS)
13	@$(MKDIR)
14	$(call BUILDECHO,linking $@)
15	@rm -f -- "$@"
16	$(call BUILDCMD,$(AR),cr $@ $^)
17
18# always build all libraries
19EXTRA_BUILDDEPS += $(MODULE_LIBNAME).a make/module-fidl.mk
20GENERATED += $(MODULE_LIBNAME).a
21
22MODULE_RULESMK := $(MODULE_SRCDIR)/rules.mk
23
24ifeq ($(filter fidl,$(MODULE_EXPORT)),fidl)
25MODULE_PACKAGE += $(sort $(MODULE_PACKAGE) fidl)
26endif
27
28ifneq ($(strip $(MODULE_PACKAGE)),)
29
30MODULE_PKG_FILE := $(MODULE_BUILDDIR)/$(MODULE_NAME).pkg
31MODULE_EXP_FILE := $(BUILDDIR)/export/$(MODULE_NAME).pkg
32
33MODULE_PKG_SRCS := $(MODULE_SRCS)
34MODULE_PKG_DEPS := $(MODULE_FIDL_DEPS)
35
36ifneq ($(strip $(MODULE_PKG_DEPS)),)
37MODULE_PKG_DEPS := $(foreach dep,$(MODULE_FIDL_DEPS),$(patsubst system/fidl/%,%,$(dep))=SOURCE/$(dep))
38endif
39
40ifneq ($(strip $(MODULE_PKG_SRCS)),)
41MODULE_PKG_SRCS := $(foreach src,$(MODULE_PKG_SRCS),$(patsubst $(MODULE_SRCDIR)/%,%,$(src))=SOURCE/$(src))
42MODULE_PKG_TAG := "[fidl]"
43endif
44
45$(MODULE_PKG_FILE): _NAME := $(MODULE_NAME)
46$(MODULE_PKG_FILE): _LIBRARY := $(MODULE_FIDL_LIBRARY)
47$(MODULE_PKG_FILE): _SRCS := $(if $(MODULE_PKG_SRCS),$(MODULE_PKG_TAG) $(sort $(MODULE_PKG_SRCS)))
48$(MODULE_PKG_FILE): _DEPS := $(if $(MODULE_PKG_DEPS),"[fidl-deps]" $(sort $(MODULE_PKG_DEPS)))
49$(MODULE_PKG_FILE): $(MODULE_RULESMK) make/module-fidl.mk
50	@$(call BUILDECHO,creating fidl library package $@ ;)\
51	$(MKDIR) ;\
52	echo "[package]" > $@ ;\
53	echo "name=$(_NAME)" >> $@ ;\
54	echo "library=$(_LIBRARY)" >> $@ ;\
55	echo "arch=fidl" >> $@ ;\
56	echo "type=fidl" >> $@ ;\
57	for i in $(_SRCS) ; do echo $$i >> $@ ; done ;\
58	for i in $(_DEPS) ; do echo $$i >> $@ ; done
59
60
61$(MODULE_EXP_FILE): $(MODULE_PKG_FILE)
62	@$(MKDIR) ;\
63	if [ -f "$@" ]; then \
64		if ! cmp "$<" "$@" >/dev/null 2>&1; then \
65			$(if $(BUILDECHO),echo installing $@ ;)\
66			cp -f $< $@; \
67		fi \
68	else \
69		$(if $(BUILDECHO),echo installing $@ ;)\
70		cp -f $< $@; \
71	fi
72GENERATED += $(MODULE_EXP_FILE) $(MODULE_PKG_FILE)
73ALLPKGS += $(MODULE_EXP_FILE)
74
75endif # // ifneq ($(strip $(MODULE_PACKAGE)),)
76