INTFDIRS = interfaces/TimeSource interfaces/ConfigSource \
	interfaces/ImgDisplay interfaces/StatusSource \
	apps/repoman apps/repomon apps/iserver_set

SUBDIRS =  utils $(INTFDIRS) Display
ALLDIRS = $(SUBDIRS) communications/ipt pkgs/fltk pkgs/SWIG pkgs/libavcodec \
	CannedVideo
HOMEDIR = $(shell pwd)
TOOLFILES = fltk ipt bc635 Module ModUtils Display CannedVideo avcodec
MAKETOOLS = \
  $(foreach file,$(TOOLFILES), $(INSTALL_DIR)/include/maketools/$(file).mk)
MAKEFILES = utils/UtilsFlags.mk $(foreach dir,$(SUBDIRS), $(dir)/Makefile) 

ifndef PLATFORM
  PLATFORM := $(shell configaux/config.guess)
  $(warning PLATFORM not defined, please set to '$(PLATFORM)')
endif

all:  makehome $(MAKETOOLS) $(MAKEFILES) 
	@for dir in $(SUBDIRS); \
	do \
		echo Making $$dir, '$(MAKE) PLATFORM=$(PLATFORM)'; \
		cd $$dir; $(MAKE) PLATFORM=$(PLATFORM); cd $(HOMEDIR) ; \
	done

clean: $(MAKEFILES) 
	@for dir in $(ALLDIRS); \
	do \
		cd $$dir; $(MAKE) PLATFORM=$(PLATFORM) clean >& /dev/null; cd $(HOMEDIR) ; \
	done

distclean: 
	@for dir in $(ALLDIRS); \
	do \
		cd $$dir; $(MAKE) PLATFORM=$(PLATFORM) distclean >& /dev/null; cd $(HOMEDIR) ; \
	done;

install: makehome $(MAKETOOLS) $(MAKEFILES) 
	@for dir in $(SUBDIRS); \
	do \
		cd $$dir; $(MAKE) PLATFORM=$(PLATFORM) install; cd $(HOMEDIR) ; \
	done

.PHONY: makehome
makehome:
	@if test ! -d $(INSTALL_DIR)/include; then \
		mkdir $(INSTALL_DIR)/include; \
	fi; 
	@if test ! -d $(INSTALL_DIR)/include/maketools; then \
		mkdir $(INSTALL_DIR)/include/maketools; \
	fi;
	@if test $(UTILS_DIR)/ModUtils -ef $(HOMEDIR) ; then \
		echo "UTILS_HOME ?= $(UTILS_DIR)/ModUtils" > $(INSTALL_DIR)/include/maketools/ModUtilsHome.mk; \
	else \
		echo "UTILS_HOME ?= $(HOMEDIR)" > $(INSTALL_DIR)/include/maketools/ModUtilsHome.mk; \
	fi;

utils/UtilsFlags.mk: utils/UtilsFlags.mk.in
	cd utils; ./configure

apps/mgr/Makefile: apps/mgr/Makefile.pre.in
	cd apps/mgr; make -f Makefile.pre.in boot

apps/repoman/Makefile: apps/repoman/Makefile.pre.in
	cd apps/repoman; make -f Makefile.pre.in boot

.PHONY: minimal
minimal:
	. utils/reconfigure minimal

cleandeps:
	find . -name \*.d -exec rm {} \;

.PHONY: standard
standard:
	. utils/reconfigure in

.PHONY: jeep
jeep:
	. utils/reconfigure jeep

.PHONY: reconfigure
reconfigure:
	cd utils; ./configure
	cd communications/ipt; ./configure

%/Makefile: %/Makefile.in $(INSTALL_DIR)/include/maketools/Makefile.in
	cd $*; $(MAKE) PLATFORM=$(PLATFORM) -f Makefile.in boot

$(INSTALL_DIR)/include/maketools/Makefile.in:
	cd utils; $(MAKE) PLATFORM=$(PLATFORM) install

$(INSTALL_DIR)/include/maketools/%.mk: maketools/%.mk
	@if test ! -d $(INSTALL_DIR)/include; then \
		echo "Creating directory $(INSTALL_DIR)/include"; \
		mkdir -p $(INSTALL_DIR)/include; \
	fi; 
	@if test ! -d $(INSTALL_DIR)/include/maketools; then \
		echo "Creating directory $(INSTALL_DIR)/include/maketools"; \
		mkdir -p $(INSTALL_DIR)/include/maketools; \
	fi; 
	install $< $@

.PHONY: update
update:
	cvs update -dP

