CSIM=csim-1.0
NMC=circuit-tool-1.0
LSM=learning-tool-1.0

# define which folders go with csim
CSIMSUBDIRS=lsm/csim lsm/utilities

# define which folder go with nmc
NMCSUBDIRS=lsm/csim lsm/inputs lsm/circuits lsm/utilities

# define which folder go with lsm
LSMSUBDIRS=lsm/csim lsm/inputs lsm/circuits lsm/learning lsm/utilities

# define into which folder to recurse
SUBDIRS=develop csim circuits learning utilities/mutual_information

default: subdirs

subdirs: $(SUBDIRS)
	@(for i in develop $(SUBDIRS); do $(MAKE) -C $$i; done)

dist: csim-dist nmc-dist lsm-dist

.lsm.lnk:
	@ln -f -s . lsm
	@date > .lsm.lnk

csim-dist: .lsm.lnk 
	@rm -f $(CSIM).zip $(CSIM).tar.gz
	@echo generating $(CSIM).zip and $(CSIM).tar.gz
        #
        # make file list for zip
        #
	@find lsm/ -maxdepth 1 -name "*.m" > .file-list
	@(find $(CSIMSUBDIRS) ! -path "*CVS*" ! -name '*.o' ! -name '*.obj' \
                        ! -name 'fields-*' ! -name 'class*.tex' \
                        ! -name '??-fields-*.tex' ! -name 'fields-*.tex' \
                        ! -name 'desc-*.tex' ! -name 'um_class_ref.tex' \
                        ! -name '*.brf'  ! -name '*.ps.gz' ! -name '*.pdf' >> .file-list );
	@cat .file-list | zip -q $(CSIM).zip -@
        #
        # make exclude file list for tar
        #
	@(find $(CSIMSUBDIRS) -path "*CVS*" -o -name '*.o' -o -name '*.obj' \
                        -o -name 'fields-*' -o -name 'class*.tex' \
                        -o -name '??-fields-*.tex' -o -name 'fields-*.tex' \
                        -o -name 'desc-*.tex' -o -name 'um_class_ref.tex' \
                        -o -name '*.brf' -o -name '*.ps.gz' -o -name '*.pdf' > .exclude-file-list );
	@tar cz -X .exclude-file-list -f $(CSIM).tar.gz lsm/*.m $(CSIMSUBDIRS) 
        # remove temporary files
	@rm .file-list .exclude-file-list
        # make reference.zip
	@find lsm/csim/documentation/reference ! -path "*CVS*"  | zip -q $(CSIM)-reference.zip -@
        # make reference.tar.gz
	@find lsm/csim/documentation/reference -path "*CVS*"  > .exclude-file-list
	@tar cz -X .exclude-file-list -f $(CSIM)-reference.tar.gz  lsm/csim/documentation/reference
	@rm .exclude-file-list
        # make binary zip only
	@tar chzf $(CSIM).mexglx.tar.gz lsm/csim/csim.mexglx
	-zip $(CSIM).dll.zip lsm/csim/csim.dll
	-cp csim/documentation/usermanual/usermanual.pdf $(CSIM)-usermanual.pdf

nmc-dist: .lsm.lnk
	@rm -f $(NMC).zip $(NMC).tar.gz
	@echo generating $(NMC).zip and $(NMC).tar.gz
        #
        # make file list for zip
        #
	@find lsm/ -maxdepth 1 -name "*.m" > .file-list
	@(find $(NMCSUBDIRS) ! -path "*CVS*" ! -name '*.o' ! -name '*.obj' \
                        ! -name 'fields-*' ! -name 'class*.tex' \
                        ! -name '??-fields-*.tex' ! -name 'fields-*.tex' \
                        ! -name 'desc-*.tex' ! -name 'um_class_ref.tex' \
                        ! -name '*.brf' ! -name '*.eps' ! -name '*.tex' \
		        ! -name '*.ps.gz' ! -name '*.pdf' >> .file-list );
        # 
        # zip it
        #
	@cat .file-list | zip -q $(NMC).zip -@
        #
        # make exclude file list for tar and tar circuits
        #
	@(find  $(NMCSUBDIRS) -path "*CVS*" -o -name '*.o' -o -name '*.obj' \
                        -o -name 'fields-*' -o -name 'class*.tex' \
                        -o -name '??-fields-*.tex' -o -name 'fields-*.tex' \
                        -o -name 'desc-*.tex' -o -name 'um_class_ref.tex' \
                        -o -name '*.brf' -o -name '*.eps' -o -name '*.tex' \
                        -o -name '*.ps.gz' -o -name '*.pdf' > .exclude-file-list );
        # 
        # tar it
        #
	@tar cz -X .exclude-file-list -f $(NMC).tar.gz lsm/*.m $(NMCSUBDIRS)
        # remove temporary files
	@rm .file-list .exclude-file-list
	cp circuits/documentation/usermanual/usermanual.pdf $(NMC)-manual.pdf

lsm-dist: .lsm.lnk
	@rm -f $(LSM).zip $(LSM).tar.gz
	@echo generating $(LSM).zip and $(LSM).tar.gz
        #
        # make file list for zip
        #
	@find lsm/ -maxdepth 1 -name "*.m" > .file-list
	@(find $(LSMSUBDIRS) ! -path "*CVS*" ! -name '*.o' ! -name '*.obj' \
                        ! -name 'fields-*' ! -name 'class*.tex' \
                        ! -name '??-fields-*.tex' ! -name 'fields-*.tex' \
                        ! -name 'desc-*.tex' ! -name 'um_class_ref.tex' \
                        ! -name '*.brf' ! -name '*.eps' ! -name '*.tex' \
			! -name '*.ps.gz' ! -name '*.pdf' >> .file-list ); 
        # 
        # zip it
        #
	@cat .file-list | zip -q $(LSM).zip -@
        #
        # make exclude file list for tar and tar circuits
        #
	@(find  $(LSMSUBDIRS) -path "*CVS*" -o -name '*.o' -o -name '*.obj' \
                        -o -name 'fields-*' -o -name 'class*.tex' \
                        -o -name '??-fields-*.tex' -o -name 'fields-*.tex' \
                        -o -name 'desc-*.tex' -o -name 'um_class_ref.tex' \
                        -o -name '*.brf' -o -name '*.eps' -o -name '*.tex' \
                        -o -name '*.ps.gz' -o -name '*.pdf' > .exclude-file-list );
        # 
        # tar it
        #
	@tar cz -X .exclude-file-list -f $(LSM).tar.gz lsm/*.m $(LSMSUBDIRS)
        # remove temporary files
	@rm .file-list .exclude-file-list
	-cp learning/documentation/usermanual/usermanual.pdf $(LSM)-manual.pdf

clean:
	@(for i in $(SUBDIRS); do $(MAKE) -C $$i clean; done)

mrproper: $(SUBDIRS)
	@(for i in $(SUBDIRS); do $(MAKE) -C $$i mrproper; done)
	@rm -f lsm *.zip *.tgz *.tar.gz *.pdf .lsm.lnk


