#
# (C) Alexey R. Buzykaev, buzykaev@inp.nsk.su
#     Dmitry A. Fedorov,   fedorov@inp.nsk.su
#
# $Id: Makefile,v 1.45 2003/07/03 15:18:40 fedorov Exp $

DONT_INCLUDE_CONFIG_MAKE = defined
-include .defs.make

#trace_target = @echo "target: $@"

iterate = set -e; for i in $(SUBDIRS); do $(MAKE) -C $$i $@; done

subdirs_make_cmd  = $(MAKE) -f dfmakefiles/subdirs.make
subdirs_clean_cmd = echo "Removing .subdirs.make"; $(RM) .subdirs.make

defsrules_clean_cmd = echo "Removing .defs.make .rules.make"; \
	$(RM) .defs.make .rules.make
defsrules_link_clean_cmd = \
	echo "Removing symlinks to top .defs.make .rules.make"; \
	set -e; for i in $(SUBDIRS); do \
		$(RM) $$i/.defs.make $$i/.rules.make; \
	done



all:
	$(trace_target)
	$(cmdprefix)$(iterate)

$(filter-out all config configclean distclean subdirs subdirsclean links linksclean,$(MAKECMDGOALS)):
	$(trace_target)
	$(cmdprefix)$(iterate)

config: defsrules_link
	$(trace_target)
	$(cmdprefix)$(iterate)

configclean: defsrules_link
	$(cmdprefix)$(iterate)
	$(cmdprefix)$(defsrules_link_clean_cmd)
	$(cmdprefix)$(defsrules_clean_cmd)
	$(cmdprefix)$(subdirs_clean_cmd)

distclean: defsrules_link
	$(cmdprefix)$(iterate)
	$(cmdprefix)$(defsrules_link_clean_cmd)
	$(cmdprefix)$(defsrules_clean_cmd)
	$(cmdprefix)$(subdirs_clean_cmd)


#+ .subdirs.make

.PHONY: subdirs subdirsclean

subdirs: .subdirs.make
	$(trace_target)

subdirsclean:
	$(trace_target)
	$(cmdprefix)$(subdirs_clean_cmd)

.subdirs.make:
	$(trace_target)
	@$(subdirs_make_cmd)

-include .subdirs.make

#- .subdirs.make


#+ .defs.make

.PHONY: defsrules_clean
.PHONY: defsrules_link defsrules_link_clean
.PHONY: links linksclean

.defs.make:
	$(trace_target)
	@echo "Generating top .defs.make"
	@echo "TOP_DIR := `pwd`"				>  $@
	@echo 'include $$(TOP_DIR)/dfmakefiles/defs.make'	>> $@
	@echo "Generating top .rules.make"
	@echo 'ifndef	dfmakefiles_defs_make'	>  .rules.make
	@echo 'include .defs.make'		>> .rules.make
	@echo 'endif'				>> .rules.make
	@echo 'include $$(dfmake_rules)'	>> .rules.make

defsrules_clean:
	$(trace_target)
	$(cmdprefix)$(defsrules_clean_cmd)

defsrules_link: .defs.make subdirs
	$(trace_target)
	@echo "Making symlinks to top .defs.make .rules.make"
	@set -e; for i in $(SUBDIRS);	\
	do \
		$(RM) $$i/.defs.make $$i/.rules.make;	\
		$(LN_S) $(TOP_DIR)/.defs.make $$i/.defs.make &&	\
		$(LN_S) $(TOP_DIR)/.rules.make $$i/.rules.make;	\
	done

defsrules_link_clean: subdirs
	$(trace_target)
	@$(defsrules_link_clean_cmd)

links: defsrules_link

linksclean: defsrules_link_clean

#- .defs.make

