genode/repos/base/mk/dep.inc

56 lines
1.8 KiB
PHP
Raw Normal View History

#
# Common parts of dep_prg.mk, dep_lib.mk, and dep_abi.mk
#
# The target/library description file is already included.
# Hence, the LIBS variable contains the library dependencies.
#
.NOTPARALLEL:
##
# Return path to symbol file for a given library name
#
_symbol_file = $(firstword $(wildcard $(addsuffix /$1,\
$(foreach REP,$(REPOSITORIES),$(REP)/lib/symbols))))
include $(LIB_PROGRESS_LOG)
#
# Categorize LIBS into ABIs and actual libraries. Dependencies of libraries
# must be recursively discovered whereas ABIs don't have any dependencies.
#
#
# Pattern rules for generating ABI and library dependencies for var/libdeps
#
generate_abi_dep.%: log_progress
$(VERBOSE_MK)$(MAKE) $(VERBOSE_DIR) -f $(BASE_DIR)/mk/dep_abi.mk SYMBOLS=$(call _symbol_file,$*)
generate_lib_dep.%: log_progress
$(VERBOSE_MK)$(MAKE) $(VERBOSE_DIR) -f $(BASE_DIR)/mk/dep_lib.mk REP_DIR=$(REP_DIR) LIB=$*
generate_missing_ports:
$(if $(DEP_MISSING_PORTS),\
@echo "MISSING_PORTS += $(DEP_MISSING_PORTS)" >> $(LIB_DEP_FILE),\
@true)
generate_dep_lists:
@(echo "$(DEP_A_VAR_NAME) = $(foreach l,$(LIBS),\$${ARCHIVE_NAME($l)} \$$(DEP_A_$l))"; \
echo "$(DEP_SO_VAR_NAME) = $(foreach l,$(LIBS),\$${SO_NAME($l)} \$$(DEP_SO_$l))"; \
echo "") >> $(LIB_DEP_FILE)
log_progress:
generate: log_progress
generate: generate_missing_ports
_unvisited_libs = $(filter-out $(LIBS_READY),$1)
_abis_to_visit = $(foreach L,$(call _unvisited_libs,$1),$(if $(call _symbol_file,$L),$L))
_libs_to_visit = $(filter-out $(call _abis_to_visit,$1),$(call _unvisited_libs,$1))
deps_for_libs = $(addprefix generate_abi_dep.,$(call _abis_to_visit,$1)) \
$(addprefix generate_lib_dep.,$(call _libs_to_visit,$1)) \
$(if $1,generate_dep_lists)
UNSATISFIED_REQUIREMENTS = $(filter-out $(SPECS),$(REQUIRES))