
#To make Ada projects.
#2016-05-12
#Makefile version 1.3.1

Project_Name=`./head 1 Project.default`

Sub_Projects_Names=`./tail 2 Project.default`

libs=`for j in \`./tail 2 Project.default\`; do echo -aI\`./head 1 Project.default\`/$$j/src/lib; done`

allsources=`for k in \`./tail 2 Project.default\`; do find \`./head 1 Project.default\`/$$k/src/lib -name "*.ad?"; done`

default:
	@echo "Par defaut, rien a faire pour etre bon."
	@echo "Cibles restantes : "
	@echo "'info' pour avoir les informations sur le projet ;"
	@echo "'prepare' pour fabriquer les repertoires du projet ;"
	@echo "'update' pour updater la version Versions.default ;; et ranger le workspace (a la main)."
	@echo "'all' pour compiler le projet ;"
	@echo "'enlight-sources' pour collorier les sources en sequence d'echappement"
	@echo "'mrproper' pour supprimer les fichiers objets obtenus avec make all ;"
	@echo "'clean' pour supprimer les anciens fichiers sources et les fichier objets sauf le fichier programme principal ;"
	@echo "'help' appelle le programme with '-h' option ;"
	@echo "'version' appelle le program with '-v' option ;"
	@echo "'validate' appelle les cibles info, help and version."
	@echo "'arch' pour archiver et compresser l'archive avec la derniere version dans Versions.default ;"
	@echo ""
	@echo "'perfect' permet d'appeller la suite de cible suivante dans l'odre d'apparition :"
	@echo ""
	@echo ""
	@echo "all afin de produire le programme"
	@echo "clean afin de supprimer les vieux fichers si la compilation a produit le programme."
	@echo "validate afin de pouvoir comparer la version du projet et la version du programme."


tail:
	gnatmake tail.adb -D obj
head:
	gnatmake head.adb -D obj


info:
	@echo Project Name = $(Project_Name) ;
	@echo Sub Projects Names = $(Sub_Projects_Names) ;
	@echo Project Version = `./tail -1 Versions.default`

prepare:
	@if [ ! -d $(Project_Name) ]; then \
		mkdir -p $(Project_Name)/bin; \
	fi;
	@mkdir -p Documentations/sources/enlighted;
	@mkdir -p Documentations/sources/html;
	@if [ -d $(Project_Name) ]; then \
		for i in $(Sub_Projects_Names) ; do \
			if [ ! -d  $(Project_Name)/$$i ]; then \
				mkdir -p $(Project_Name)/$$i; \
				mkdir -p $(Project_Name)/$$i/src/lib; \
				mkdir -p $(Project_Name)/$$i/obj; \
			fi; \
		done; \
	fi

all:
	@echo "Making graphical project : $(Project_Name)..."
	@for i in $(Sub_Projects_Names) ; do \
		if [ -f $(Project_Name)/$$i/src/$$i.adb ]; then \
			gnatmake -q -Wall -gnatW8 -gnat12 $(Project_Name)/$$i/src/$$i.adb $(libs) \
			-aIPragmARC -aI/usr/share/ada/adainclude/aws -aO./AWS \
			-aI/usr/share/ada/adainclude/templates_parser -D $(Project_Name)/$$i/obj/ \
			-o $(Project_Name)/bin/$$i \
			-aI/usr/share/ada/adainclude/florist -aO/usr/lib/ada/adalib/florist \
			-aI/usr/share/ada/adainclude/gtkada -A/usr/lib/x86_64-linux-gnu/libgtkada \
			-A/usr/lib/x86_64-linux-gnu/ \
			-A/usr/lib/x86_64-linux-gnu/ada/adalib/gtkada \
			-largs -lcairo -lpango-1.0 -lglib-2.0 -lgobject-2.0 -lgdk-3 -lgdk_pixbuf-2.0 -lgio-2.0 \
			-lpangocairo-1.0 -lgtkada; \
		fi; \
	done


	if [ -x $(Project_Name)/bin/$(Project_Name) ]; then \
		strip $(Project_Name)/bin/$(Project_Name); \
	fi;
	@echo "done."


enlight-sources:
	@if [ -d $(Project_Name) ]; then \
		if [ -d Documentations/sources/enlighted ]; then \
			for l in $(allsources); do \
				echo $$l; \
				source-highlight -s Ada -f ESC -o Documentations/sources/enlighted/`basename $$l`.txt -i $$l; \
				source-highlight -s Ada -f html -o Documentations/sources/html/`basename $$l`.html -i $$l; \
			done; \
		fi; \
		if [ -f $(Project_Name)/$(Project_Name)/src/$(Project_Name).adb ]; then \
			source-highlight -s Ada -f ESC -o Documentations/sources/enlighted/$(Project_Name).adb.txt \
			-i $(Project_Name)/$(Project_Name)/src/$(Project_Name).adb; \
			source-highlight -s Ada -f html -o Documentations/sources/html/$(Project_Name).adb.html \
			-i $(Project_Name)/$(Project_Name)/src/$(Project_Name).adb; \
		fi; \
	fi;

mrproper:
	for i in $(Sub_Projects_Names) ; do \
		rm -f $(Project_Name)/$$i/obj/*; \
		rm -f $(Project_Name)/$$i/src/lib/*~; \
		rm -f $(Project_Name)/$$i/src/*~; \
		rm -f $(Project_Name)/bin/$(Project_Name); \
	done

clean:
	if [ -x ./$(Project_Name)/bin/$(Project_Name) ]; then \
		for i in $(Sub_Projects_Names) ; do \
			rm -f $(Project_Name)/$$i/obj/*; \
		done; \
	fi;

validate: info help version

help:
	if [ -x ./$(Project_Name)/bin/$(Project_Name) ]; then \
		$(Project_Name)/bin/$(Project_Name) -h; \
	fi;
version:
	if [ -x ./$(Project_Name)/bin/$(Project_Name) ]; then \
		echo "$(Project_Name) version : "; $(Project_Name)/bin/$(Project_Name) -v; \
	fi;

update:
	./tail -1 Versions.default >> History.txt
arch:
	tar -c -v -z -f $(Project_Name)-`./tail -1 Versions.default`.tgz \
	$(Project_Name) \
	Makefile Project.default Versions.default gpl.txt History.txt \
	Documentations Howto.txt Abstract.txt Config_File.txt head.adb tail.adb; \

perfect: all clean validate
