#Main makefile

#Export the general commands
export CC = cc
export GPP = g++
export CFLAGS = -g -Wall -O3 
export LDFLAGS = -lm 
export OPT = -Wall -ansi -pedantic -Wno-deprecated -Wno-long-long -lcfitsio
export FRAMEWORKS = -framework OpenGL -framework GLUT -framework Foundation

#Use the makefile in Synthesis
SYNTHESIS_DIR=Synthesis
EXEC_SYNTHESIS=$(SYNTHESIS_DIR)/synthesis

#Use the makefile in Filter
FILTER_DIR=Filter
EXEC_FILTER=$(FILTER_DIR)/filter

#Use the makefile in Elevation_map
MAP_DIR=Elevation_map
EXEC_MAP=$(MAP_DIR)/map

#Use the makefiles in Meshes
EQUIANG_DIR=Meshes/Equiangulaire
EXEC_EQUIANG=$(EQUIANG_DIR)/equiangulaire
HEALPIX_DIR=Meshes/Healpix
EXEC_HEALPIX=$(HEALPIX_DIR)/healpix
SUB_DIR=Meshes/Subdivision
EXEC_SUB=$(SUB_DIR)/subdivision

#Use the makefile in Spherical_Harmonics
YLM_DIR= Spherical_Harmonics
EXEC_YLM=$(YLM_DIR)/Ylm

#Use the makefile in Torus
TORUS_DIR= Torus
EXEC_TORUS=$(TORUS_DIR)/torus

#Use the makefile in Visualization
VISU_DIR= Visualization
EXEC_VISU=$(TORUS_DIR)/visu


#Set of runnables
EXEC=$(EXEC_SYNTHESIS) $(EXEC_FILTER) $(EXEC_MAP) $(EXEC_EQUIANG) $(EXEC_HEALPIX) $(EXEC_SUB) $(EXEC_YLM) $(EXEC_TORUS) $(EXEC_VISU)

#Compilation of all runnables
all: $(EXEC)

$(EXEC):
	@(cd $(SYNTHESIS_DIR) && $(MAKE))
	@(cd $(FILTER_DIR) && $(MAKE))
	@(cd $(MAP_DIR) && $(MAKE))
	@(cd $(EQUIANG_DIR) && $(MAKE))
	@(cd $(HEALPIX_DIR) && $(MAKE))
	@(cd $(SUB_DIR) && $(MAKE))
	@(cd $(YLM_DIR) && $(MAKE))
	@(cd $(TORUS_DIR) && $(MAKE))
	@(cd $(VISU_DIR) && $(MAKE))



#Clean
.PHONY: clean $(EXEC)

clean:
	@(cd $(SYNTHESIS_DIR) && $(MAKE) $@) 
	@(cd $(FILTER_DIR) && $(MAKE) $@)
	@(cd $(MAP_DIR) && $(MAKE) $@)
	@(cd $(EQUIANG_DIR) && $(MAKE) $@)
	@(cd $(HEALPIX_DIR) && $(MAKE) $@)
	@(cd $(SUB_DIR) && $(MAKE) $@)
	@(cd $(YLM_DIR) && $(MAKE) $@)
	@(cd $(TORUS_DIR) && $(MAKE) $@)
	@(cd $(VISU_DIR) && $(MAKE) $@)



