ifeq ($(origin MORPHEO_TOPLEVEL), undefined) $(error "variable MORPHEO_TOPLEVEL is undefined"); else include $(MORPHEO_TOPLEVEL)/Makefile.tools endif #-------------------------------------------------------------------------------- #-----[ Variable ]--------------------------------------------------------------- #-------------------------------------------------------------------------------- ENV_LATEX = export TEXINPUTS=$(DIR_INCLUDE):$$TEXINPUTS LATEX_WITH_ENV = $(ENV_LATEX); $(LATEX) #-------------------------------------------------------------------------------- #-----[ Directory ]-------------------------------------------------------------- #-------------------------------------------------------------------------------- # DIR_DOCUMENTATION must be set previously DIR_TOPLEVEL = $(DIR_DOCUMENTATION) DIR_TOPLEVEL_SCHEMA = $(DIR_TOPLEVEL)/fig DIR_TOPLEVEL_GRAPH = $(DIR_TOPLEVEL)/dot DIR_TOPLEVEL_PDF = $(DIR_TOPLEVEL)/pdf DIR_DOC = . DIR_TEX = ./tex DIR_SCHEMA = ./fig DIR_GRAPH = ./dot DIR_SCHEMA_EPS = ./eps #-------------------------------------------------------------------------------- #-----[ Files ]------------------------------------------------------------------ #-------------------------------------------------------------------------------- TEX_FILES = $(wildcard $(DIR_DOC)/*.tex) DVI_FILES = $(patsubst $(DIR_DOC)/%.tex,%.dvi,$(TEX_FILES)) PS_FILES = $(patsubst $(DIR_DOC)/%.tex,%.ps ,$(TEX_FILES)) PDF_FILES = $(patsubst $(DIR_DOC)/%.tex,%.pdf,$(TEX_FILES)) EPS_FILES = $(patsubst $(DIR_GRAPH)/%.dot,$(DIR_SCHEMA_EPS)/%.eps,$(wildcard $(DIR_GRAPH)/*.dot)) \ $(patsubst $(DIR_SCHEMA)/%.fig,$(DIR_SCHEMA_EPS)/%.eps,$(wildcard $(DIR_SCHEMA)/*.fig)) \ $(patsubst $(DIR_SCHEMA)/%.eps,$(DIR_SCHEMA_EPS)/%.eps,$(wildcard $(DIR_SCHEMA)/*.eps)) \ $(patsubst $(DIR_TOPLEVEL_GRAPH)/%.dot,$(DIR_SCHEMA_EPS)/%.eps,$(wildcard $(DIR_TOPLEVEL_GRAPH)/*.dot)) \ $(patsubst $(DIR_TOPLEVEL_SCHEMA)/%.fig,$(DIR_SCHEMA_EPS)/%.eps,$(wildcard $(DIR_TOPLEVEL_SCHEMA)/*.fig)) \ $(patsubst $(DIR_TOPLEVEL_SCHEMA)/%.eps,$(DIR_SCHEMA_EPS)/%.eps,$(wildcard $(DIR_TOPLEVEL_SCHEMA)/*.eps)) #-------------------------------------------------------------------------------- #-----[ Rules ]------------------------------------------------------------------ #-------------------------------------------------------------------------------- #-------------------------------------------------------------------------------- # The reset of this file shall not be editted #-------------------------------------------------------------------------------- vpath %.tex $(DIR_TEX) vpath %.dot $(DIR_GRAPH):$(DIR_TOPLEVEL_GRAPH) vpath %.fig $(DIR_SCHEMA):$(DIR_TOPLEVEL_SCHEMA) vpath %.eps $(DIR_SCHEMA):$(DIR_TOPLEVEL_SCHEMA) .PHONY : all view view_global view_local clean help .SECONDARY : $(DVI_FILES) $(PS_FILES) $(PDF_FILES) $(EPS_FILES) $(DIR_SCHEMA_EPS) all_documentation : $(EPS_FILES) @\ $(MAKE) $(PDF_FILES) #-------------------------------------------------------------------------------- # Generation of the formatted text: # regular flow tex -> dvi -> ps -> pdf. #-------------------------------------------------------------------------------- %.pdf : %.ps $(DIR_TOPLEVEL_PDF) @\ $(ECHO) "Generate files : $*.pdf"; \ $(PS2PDF) $< $@; \ $(CP) $@ $(DIR_TOPLEVEL_PDF); %.ps : %.dvi @\ $(ECHO) "Generate files : $*.ps"; \ $(DVIPS) -o $@ $<; %.dvi : %.tex $(DIR_TEX)/* @\ $(ECHO) "Generate files : $*.dvi"; \ $(LATEX_WITH_ENV) $<; \ if $(TEST) $$? -eq 0; then \ $(LATEX_WITH_ENV) $< > /dev/null; \ citation=`$(GREP) "citation" $*.aux`; \ if $(TEST) -n "$$citation" ; then \ $(BIBTEX) $* ; \ fi; \ $(LATEX_WITH_ENV) $< > /dev/null; \ $(LATEX_WITH_ENV) $< > /dev/null; \ fi; #-------------------------------------------------------------------------------- # The figures directory #-------------------------------------------------------------------------------- $(DIR_SCHEMA_EPS) : @\ $(ECHO) "Make directory : $@"; \ $(MKDIR) $@; $(DIR_TOPLEVEL_PDF) : @\ $(ECHO) "Make directory : $@"; \ $(MKDIR) $@; $(DIR_SCHEMA_EPS)/%.eps : %.eps $(DIR_SCHEMA_EPS) @\ $(ECHO) "Generate files : $*.eps"; \ $(CP) $< $(DIR_SCHEMA_EPS); $(DIR_SCHEMA_EPS)/%.eps : %.fig $(DIR_SCHEMA_EPS) @\ $(ECHO) "Generate files : $*.eps"; \ $(FIG2EPS) $< $@; $(DIR_SCHEMA_EPS)/%.eps : %.dot $(DIR_SCHEMA_EPS) @\ $(ECHO) "Generate files : $*.eps"; \ $(DOT) -Tfig -o $(DIR_SCHEMA_EPS)/${*}.fig $<; \ $(FIG2EPS) $(DIR_SCHEMA_EPS)/${*}.fig $@; \ $(RM) $(DIR_SCHEMA_EPS)/${*}.fig; #-------------------------------------------------------------------------------- # View #-------------------------------------------------------------------------------- view_local : all @\ declare SELECT_FILE; \ declare SELECT_FORMAT; \ declare SELECT_VIEWER; \ \ \ $(ECHO) ""; \ $(ECHO) "Choose a document : (0 by default)"; \ \ declare -i CPT; \ declare -i NUM_FILE; \ declare -a FILES; \ \ CPT=0; \ for files in $(PDF_FILES); do \ files=`$(BASENAME) $$files .pdf`; \ $(ECHO) "$$CPT) $$files"; \ FILES[$$CPT]=$$files; \ CPT=$$(($$CPT+1)); \ done; \ \ if $(TEST) "$$CPT" -eq "0"; then \ $(ECHO) "None document found"; \ exit; \ fi; \ \ read NUM_FILE; \ \ if $(TEST) "$$NUM_FILE" -ge "$$CPT"; then \ NUM_FILE=0; \ fi; \ \ SELECT_FILE=$${FILES[$$NUM_FILE]}; \ \ \ $(ECHO) "Document selected : $$SELECT_FILE"; \ $(ECHO) ""; \ $(ECHO) "Choose a format : (0 by default)"; \ \ declare -i NUM_FORMAT; \ declare -a FORMAT; \ declare -a VIEWER; \ \ PRINT=( "pdf (fullscreen)" "pdf" "ps" "dvi"); \ FORMAT=("pdf" "pdf" "ps" "dvi"); \ VIEWER=("$(VIEWPDF_FS)" "$(VIEWPDF)" "$(VIEWPS)" "$(VIEWDVI)"); \ \ CPT=0; \ while [ $$CPT -lt $${#FORMAT[*]} ]; do \ $(ECHO) "$$CPT) $${PRINT[$$CPT]}"; \ CPT=$$(($$CPT+1)); \ done; \ read NUM_FORMAT; \ \ if $(TEST) "$$NUM_FORMAT" -ge "$$CPT"; then \ NUM_FORMAT=0; \ fi; \ \ SELECT_FORMAT=$${FORMAT[$$NUM_FORMAT]}; \ SELECT_VIEWER=$${VIEWER[$$NUM_FORMAT]}; \ $(ECHO) "Format selected : $$SELECT_FORMAT"; \ $(ECHO) ""; \ \ $$SELECT_VIEWER "$$SELECT_FILE.$$SELECT_FORMAT" & \ \ $(ECHO) ""; view_global : all @\ declare SELECT_FILE; \ declare SELECT_FORMAT; \ declare SELECT_VIEWER; \ \ \ $(ECHO) ""; \ $(ECHO) "Choose a document : (0 by default)"; \ \ declare -i CPT; \ declare -i NUM_FILE; \ declare -a FILES; \ \ CPT=0; \ for files in $(wildcard $(DIR_TOPLEVEL_PDF)/*.pdf); do \ files=`$(BASENAME) $$files .pdf`; \ $(ECHO) "$$CPT) $$files"; \ FILES[$$CPT]=$(DIR_TOPLEVEL_PDF)/$$files; \ CPT=$$(($$CPT+1)); \ done; \ \ if $(TEST) "$$CPT" -eq "0"; then \ $(ECHO) "None document found"; \ exit; \ fi; \ \ read NUM_FILE; \ \ if $(TEST) "$$NUM_FILE" -ge "$$CPT"; then \ NUM_FILE=0; \ fi; \ \ SELECT_FILE=$${FILES[$$NUM_FILE]}; \ \ \ $(ECHO) "Document selected : $$SELECT_FILE"; \ $(ECHO) ""; \ $(ECHO) "Choose a format : (0 by default)"; \ \ declare -i NUM_FORMAT; \ declare -a FORMAT; \ declare -a VIEWER; \ \ PRINT=( "pdf (fullscreen)" "pdf" ); \ FORMAT=("pdf" "pdf" ); \ VIEWER=("$(VIEWPDF_FS)" "$(VIEWPDF)"); \ \ CPT=0; \ while [ $$CPT -lt $${#FORMAT[*]} ]; do \ $(ECHO) "$$CPT) $${PRINT[$$CPT]}"; \ CPT=$$(($$CPT+1)); \ done; \ read NUM_FORMAT; \ \ if $(TEST) "$$NUM_FORMAT" -ge "$$CPT"; then \ NUM_FORMAT=0; \ fi; \ \ SELECT_FORMAT=$${FORMAT[$$NUM_FORMAT]}; \ SELECT_VIEWER=$${VIEWER[$$NUM_FORMAT]}; \ $(ECHO) "Format selected : $$SELECT_FORMAT"; \ $(ECHO) ""; \ \ $$SELECT_VIEWER "$$SELECT_FILE.$$SELECT_FORMAT" & \ \ $(ECHO) ""; #-------------------------------------------------------------------------------- # Cleaning #-------------------------------------------------------------------------------- clean : local_clean @\ $(ECHO) "Delete temporary files "$(PWD); \ $(RM) $(DIR_SCHEMA_EPS); \ $(RM) $(DVI_FILES) $(PS_FILES) $(PDF_FILES); \ $(MAKE) clean_rec DIR_CLEAN=$(PWD); clean_all : clean #Clean recursive clean_rec : @\ $(ECHO) "Delete temporary files in directory $(DIR_CLEAN)"; \ $(RM) $(DIR_CLEAN)/*~ \ $(DIR_CLEAN)/*.bak \ $(DIR_CLEAN)/*.aux \ $(DIR_CLEAN)/*.bbl \ $(DIR_CLEAN)/*.blg \ $(DIR_CLEAN)/*.bmt \ $(DIR_CLEAN)/*.log \ $(DIR_CLEAN)/*.mtc* \ $(DIR_CLEAN)/*.toc \ $(DIR_CLEAN)/*.idx \ $(DIR_CLEAN)/*.ilg \ $(DIR_CLEAN)/*.ind \ $(DIR_CLEAN)/*.out \ $(DIR_CLEAN)/*.nav \ $(DIR_CLEAN)/*.maf \ $(DIR_CLEAN)/*.snm \ $(DIR_CLEAN)/missfont.log; \ for files in `$(LS) $(DIR_CLEAN)`; do \ if $(TEST) -d $(DIR_CLEAN)/$$files; \ then \ $(MAKE) clean_rec DIR_CLEAN=$(DIR_CLEAN)/$$files; \ fi; \ done; #-------------------------------------------------------------------------------- # Help #-------------------------------------------------------------------------------- help : @\ $(ECHO) " -----[ Documentation ]------------------------------";\ $(ECHO) ""; \ $(ECHO) " * all_documentation : Generate all documents"; \ $(ECHO) " * clean : Erase all generated files"; \ $(ECHO) " * clean_all : cf clean"; \ $(ECHO) " * help : Print this message"; \ $(ECHO) " * view : View local documents"; \ $(ECHO) " * view_view : View all documents"; \ $(ECHO) "";