#*************************************************************************
# EPICS BASE is distributed subject to a Software License Agreement found
# in file LICENSE that is included with this distribution.
#*************************************************************************

# Support modules can use these rules to build submodules too.
#
# The requirements to do so are:
#    1. Create a file CONFIG_SITE.local in the same directory as the
#       Makefile, which defines these variables (the last one is empty):
#           PARENT_MODULE - The name submodules call their parent
#           INSTALL_LOCATION := $($(PARENT_MODULE))
#           CONFIG_INSTALLS =
#    2. The Makefile must set TOP and include $(TOP)/configure/CONFIG and
#       CONFIG_SITE.local
#    3. Submodules are added to the SUBMODULES variable in the Makefile
#    4. Dependencies between submodules must be set using
#           <name>_DEPEND_DIRS = <prerequisites>
#    5. The Makefile must end by including $(TOP)/configure/RULES_MODULES
#    6. Submodules must have a configure/RELEASE file that contains
#           -include $(TOP)/../RELEASE.$(EPICS_HOST_ARCH).local
#    7. Submodules must have a configure/CONFIG_SITE file that contains
#           -include $(TOP)/../CONFIG_SITE.local

# Add checked-out submodules to DIRS, unless INSTALL_LOCATION is empty
LIVE_SUBMODULES = $(subst /Makefile,, \
    $(wildcard $(addsuffix /Makefile, $(SUBMODULES))))
live = $(if $(wildcard $(INSTALL_CONFIG)/RULES_TOP),LIVE,DEAD)
DIRS += $($(live)_SUBMODULES)

include $(CONFIG)/RULES_DIRS

RELEASE_LOCAL := RELEASE.$(EPICS_HOST_ARCH).local

# Ensure that RELEASE.<host>.local exists before doing anything else
all host $(DIRS) $(ARCHS) $(ACTIONS) $(dirActionTargets) $(dirArchTargets) \
    $(dirActionArchTargets) $(actionArchTargets): | $(RELEASE_LOCAL)

# Convenience target
RELEASE.host: $(RELEASE_LOCAL)

$(RELEASE_LOCAL): Makefile $(CONFIG)/CONFIG_SITE \
    $(wildcard $(CONFIG)/CONFIG_SITE.local)
	$(ECHO) Creating $@ with
	$(ECHO) "    $(PARENT_MODULE) = $(INSTALL_ABSOLUTE)"
	@echo $(PARENT_MODULE) = $(INSTALL_ABSOLUTE)> $@

.PHONY: RELEASE.host

# Testing: Combine test failure logs from the live submodules
TESTS_FAILED_LOGS = $(wildcard $(addsuffix /$(TESTS_FAILED_LOG), \
    $(LIVE_SUBMODULES)))
runtests test-results: % : | $(addsuffix $(DIVIDER)%, $(LIVE_SUBMODULES))
	$(if $(TESTS_FAILED_LOGS), \
	    @$(CAT) $(TESTS_FAILED_LOGS)>> $(TESTS_FAILED_PATH))
