
SOURCES_CLASSE_PRINCIPALE = src/fr/histoiremondiale/histoire/HistoireMondiale.java
ENCODAGE_SOURCES          = utf-8

REP_BASE_EXECUTION = $(shell pwd)
REP_PREPARATION    = rep-preparation--
NUM_VERSION        = 2.1
NOM_FICS_BASE      = histoiremondiale-$(NUM_VERSION)
NOM_PAQUETS_BASE   = histoiremondiale
NOM_FICS_ARCHIVES  = $(NOM_FICS_BASE)-src
NOM_FICS_INSTALL   = $(NOM_FICS_BASE)
NOM_JAR_EXECUTABLE = histoiremondiale.jar

REP_SCRIPT_LANCEMENT  = /usr/bin/
REP_INSTALL_DONNEES   = /usr/share/histoiremondiale/
REP_INSTALL_PROGRAMME = /usr/share/java/histoiremondiale/
REP_INSTALL_LANCEUR   = /usr/share/applications/
REP_INSTALL_LICENCES  = /usr/share/licenses/histoiremondiale/


# Cible par défaut
all: compil


# Nettoyage des répertoires générés
nettoyage:
	rm -rf bin
	rm -rf $(REP_PREPARATION)
	rm -f  $(NOM_JAR_EXECUTABLE)
	rm -f  $(NOM_FICS_ARCHIVES).tar.gz
	rm -f  $(NOM_FICS_ARCHIVES).zip
	rm -f  $(NOM_FICS_INSTALL).tar.gz
	rm -f  $(NOM_FICS_INSTALL).zip
	rm -f  $(NOM_PAQUETS_BASE)-$(NUM_VERSION).deb
	rm -f  $(NOM_PAQUETS_BASE)-$(NUM_VERSION)-*-any.pkg.tar.xz


# Génération des archives du projet (non exécutables : sources, doc, ...)
archives-sources: nettoyage
	#
	# Préparation des sources et fichiers de données...
	#
	mkdir -p $(REP_PREPARATION)/$(NOM_FICS_ARCHIVES)
	mkdir -p $(REP_PREPARATION)/$(NOM_FICS_ARCHIVES)/donnees
	mkdir -p $(REP_PREPARATION)/$(NOM_FICS_ARCHIVES)/icones
	mkdir -p $(REP_PREPARATION)/$(NOM_FICS_ARCHIVES)/src
	chmod 755 distribution/execution/histoiremondiale
	chmod 755 distribution/execution/*.sh
	chmod 444 donnees/histoire/base/*.mv.db
	chmod 755 configure
	cp -r bib                               $(REP_PREPARATION)/$(NOM_FICS_ARCHIVES)/
	cp -r distribution                      $(REP_PREPARATION)/$(NOM_FICS_ARCHIVES)/
	cp -r docs                              $(REP_PREPARATION)/$(NOM_FICS_ARCHIVES)/
	cp -r donnees/histoire/                 $(REP_PREPARATION)/$(NOM_FICS_ARCHIVES)/donnees/
	cp -r icones/histoire/                  $(REP_PREPARATION)/$(NOM_FICS_ARCHIVES)/icones/
	cp -r icones/licences/                  $(REP_PREPARATION)/$(NOM_FICS_ARCHIVES)/icones/
	cp -r licence                           $(REP_PREPARATION)/$(NOM_FICS_ARCHIVES)/
	cp -r src/fr                            $(REP_PREPARATION)/$(NOM_FICS_ARCHIVES)/src
	cp    configure                         $(REP_PREPARATION)/$(NOM_FICS_ARCHIVES)/
	cp    Makefile                          $(REP_PREPARATION)/$(NOM_FICS_ARCHIVES)/
	cp    '%notes de version.txt'           $(REP_PREPARATION)/$(NOM_FICS_ARCHIVES)/
	# (pas le site, qui contient de nombreux fichiers et ne présente pas vraiment d'intérêt ici)

	#
	# Archives tar.gz et zip
	#
	cd $(REP_PREPARATION)/ ; tar -czf ../$(NOM_FICS_ARCHIVES).tar.gz *
	cd $(REP_PREPARATION)/ ; zip -qr9 ../$(NOM_FICS_ARCHIVES).zip *
    

# Génération des exécutables
compil: nettoyage
	mkdir bin
	javac $(SOURCES_CLASSE_PRINCIPALE) -d bin -sourcepath src -encoding $(ENCODAGE_SOURCES) -source 8 -target 8 -cp bib/commons-lang-2.4.jar:bib/h2-1.4.199.jar

	#
	# Génération du jar exécutable...
	#
	jar cfm $(NOM_JAR_EXECUTABLE) distribution/execution/MANIFEST.MF -C bin/ .
	# (rajouter un v pour avoir plus d'infos sur la génération, par exemple en cas de problème)


# Génération des formes compilées portables
archives-executables: nettoyage compil
	#
	# Préparation des données à empaqueter
	#
	mkdir -p $(REP_PREPARATION)/$(NOM_FICS_INSTALL)
	mkdir -p $(REP_PREPARATION)/$(NOM_FICS_INSTALL)/donnees
	mkdir -p $(REP_PREPARATION)/$(NOM_FICS_INSTALL)/icones
	mkdir -p $(REP_PREPARATION)/$(NOM_FICS_INSTALL)/src
	chmod 755 distribution/execution/histoiremondiale
	chmod 755 distribution/execution/*.sh
	cp -r bib                                         $(REP_PREPARATION)/$(NOM_FICS_INSTALL)/
	cp -r donnees/histoire/                           $(REP_PREPARATION)/$(NOM_FICS_INSTALL)/donnees/
	cp -r icones/histoire/                            $(REP_PREPARATION)/$(NOM_FICS_INSTALL)/icones/
	cp -r icones/licences/                            $(REP_PREPARATION)/$(NOM_FICS_INSTALL)/icones/
	cp -r licence                                     $(REP_PREPARATION)/$(NOM_FICS_INSTALL)/
	cp    $(NOM_JAR_EXECUTABLE)                       $(REP_PREPARATION)/$(NOM_FICS_INSTALL)/
	cp    distribution/execution/histoiremondiale.sh  $(REP_PREPARATION)/$(NOM_FICS_INSTALL)/
	cp    distribution/execution/histoiremondiale.bat $(REP_PREPARATION)/$(NOM_FICS_INSTALL)/
	cp    '%notes de version.txt'                     $(REP_PREPARATION)/$(NOM_FICS_INSTALL)/
	# (pas le site, qui contient des archives, ... et ne présente pas vraiment d'intérêt ici)

	#
	# Versions sans installation : tar.gz et zip
	#
	cd $(REP_PREPARATION)/ ; tar -czf ../$(NOM_FICS_INSTALL).tar.gz *
	cd $(REP_PREPARATION)/ ; zip -qr9 ../$(NOM_FICS_INSTALL).zip *


# Installation du programme
install:
	mkdir -p $(DESTDIR)$(REP_SCRIPT_LANCEMENT)
	mkdir -p $(DESTDIR)$(REP_INSTALL_PROGRAMME)
	mkdir -p $(DESTDIR)$(REP_INSTALL_LANCEUR)
	mkdir -p $(DESTDIR)$(REP_INSTALL_DONNEES)
	mkdir -p $(DESTDIR)$(REP_INSTALL_LICENCES)
	cp -r donnees                                         $(DESTDIR)$(REP_INSTALL_DONNEES)
	cp -r icones                                          $(DESTDIR)$(REP_INSTALL_DONNEES)
	cp    distribution/execution/histoiremondiale         $(DESTDIR)$(REP_SCRIPT_LANCEMENT)
	cp    distribution/execution/histoiremondiale.desktop $(DESTDIR)$(REP_INSTALL_LANCEUR)
	cp    *.jar                                           $(DESTDIR)$(REP_INSTALL_PROGRAMME)
	cp -r bib                                             $(DESTDIR)$(REP_INSTALL_PROGRAMME)
	cp    '%notes de version.txt'                         $(DESTDIR)$(REP_INSTALL_DONNEES)
	cp    licence/licence*.txt                            $(DESTDIR)$(REP_INSTALL_LICENCES)


# Création du paquet Debian
paquet-debian: archives-sources
	cd distribution/creation-paquets/debian ; ./creer-paquet.sh $(NOM_FICS_BASE) $(REP_BASE_EXECUTION)/$(NOM_FICS_ARCHIVES).tar.gz $(REP_BASE_EXECUTION)


# Création du paquet Archlinux
paquet-archlinux: archives-sources
	cd distribution/creation-paquets/archlinux ; ./creer-paquet.sh $(NOM_FICS_BASE) $(REP_BASE_EXECUTION)/$(NOM_FICS_ARCHIVES).tar.gz $(REP_BASE_EXECUTION)


# Création des différents paquets Linux
paquets-linux: paquet-debian paquet-archlinux
	# Paquets créés
