#-----[ Directory ]----------------------------------------------------
DIR_LIB			= Library

#-----[ Usual Commands ]-----------------------------------------------

RM        		= rm
ECHO			= echo -e
CD                  	= cd
LS              	= ls
PWD                 	= `pwd`
TEST			= test
MAKE			= make -s
BASENAME		= basename
CAT			= cat
MKDIR			= mkdir

#-----[ Particular Commands ]------------------------------------------

#-----[ Options ]------------------------------------------------------
DIR_DOC			= Documentation/Source

PREFIXE_PATH		= "."
SUFFIXE_PATH            = ".txt"

#-----[ Rules ]--------------------------------------------------------
.PHONY			: all help

all			: help

doc			:
			@$(ECHO) ""
			@$(ECHO) "=====[ doc ]====================================="
			@$(ECHO) ""
			@$(MAKE) -C $(DIR_DOC) view

path			:
			@$(ECHO) ""
			@$(ECHO) "=====[ path ]===================================="
			@$(ECHO) "";
			@$(ECHO) -n "+ ";
			@$(BASENAME) $(PWD);
			@$(ECHO) "| <Top Level>";
			@$(ECHO) "|";
			@$(MAKE) path_rec TAB="|    " DIR_PATH=.

path_rec			:
			@												\
															\
			for files in `$(LS) $(DIR_PATH)`; do								\
			    	if $(TEST) -d $(DIR_PATH)/$$files; 							\
				then 											\
					$(ECHO) "$(TAB)+ $$files";							\
															\
					if test -f $(DIR_PATH)/$(PREFIXE_PATH)`$(BASENAME) $$files`$(SUFFIXE_PATH);	\
					then										\
						$(ECHO) "$(TAB)| <\c";							\
						$(CAT) $(DIR_PATH)/$(PREFIXE_PATH)`$(BASENAME) $$files`$(SUFFIXE_PATH);	\
						$(ECHO) ">";								\
					else										\
						$(ECHO) "$(TAB)| <No description>";					\
					fi;										\
					$(ECHO) "$(TAB)|"; 								\
															\
					$(MAKE) path_rec TAB="$(TAB)|    " DIR_PATH=$(DIR_PATH)/$$files;		\
				fi;											\
			done;

#~~~~~[ Lib ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

lib 			:
			@$(ECHO) ""
			@$(ECHO) "=====[ lib ]====================================="
			@$(ECHO) ""
			@$(ECHO) " Function unimplemented"
			@$(ECHO) ""
			@$(ECHO) " The library is generate into the directory : $(PWD)/$(DIR_LIB)"

#~~~~~[ Maintenance ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

clean 			:
			@$(ECHO) ""
			@$(ECHO) "=====[ clean ]==================================="
			@$(ECHO) ""
			@$(ECHO) "Delete     temporary files              "$(PWD)
			@$(MAKE) clean_rec DIR_CLEAN=.

#Clean recursive
clean_rec		:
			@$(ECHO) "Delete     temporary files in directory $(DIR_CLEAN)"
			@$(RM) -f $(DIR_CLEAN)/*~
			@										\
			if $(TEST) -f $(DIR_CLEAN)/Makefile -a "$(DIR_CLEAN)" != ".";			\
			then 										\
		       		($(CD) $(DIR_CLEAN); $(MAKE) clean;)                    		\
			else										\
				for files in `$(LS) $(DIR_CLEAN)`; do					\
				    	if $(TEST) -d $(DIR_CLEAN)/$$files; 				\
					then 								\
						$(MAKE) clean_rec DIR_CLEAN=$(DIR_CLEAN)/$$files;	\
					fi;								\
				done;									\
			fi;

#~~~~~[ Help ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

help			:
			@$(ECHO) ""
			@$(ECHO) "=====[ help ]===================================="
			@$(ECHO) ""
			@$(ECHO) " Rules              Description"
			@$(ECHO) ""
			@$(ECHO) " all                cf rule \"help\""
			@$(ECHO) " clean              Delete temporary files"
			@$(ECHO) " doc                View documentation files"
			@$(ECHO) " lib                Generate the library to include"
			@$(ECHO) " help               Print this message"
			@$(ECHO) " path               Print a little description of each directory"
			@$(ECHO) ""

