#------------------------------------------------------------------------------- # Filename: Makefile # Description: LaTeX compilation flow #------------------------------------------------------------------------------- include ${MORPHEO_TOPLEVEL}/Makefile.tools #-------------------------------------------------------------------------------- # User-defined options : #-------------------------------------------------------------------------------- TYPE_DOC = ("doc" "ppt" "poster") DEFAULT_LANG = fr FILE_SOURCE_SED = file_source.sed FILE_SOURCE_STY = file_source.sty FILE_SOURCE_TEX = file_source.tex #-------------------------------------------------------------------------------- # Directory #-------------------------------------------------------------------------------- VERSION = "1.3" # 2007/07/18 DIR_DOCUMENTATION = .. DIR_INCLUDE = Include DIR_PACKAGE = Info DIR_DOCUMENTS = Documents DIR_LANGUAGE = Info DIR_TYPE = Info DIR_GRAPH = Graph DIR_SCHEMA = Schema DIR_SCHEMA_EPS = Schema_eps DIR_SCHEMA_PNG = Schema_png DIR_TEX = Source #-------------------------------------------------------------------------------- # Directory #-------------------------------------------------------------------------------- ENV_LATEX = export TEXINPUTS=$(DIR_INCLUDE):$$TEXINPUTS LATEX_WITH_ENV = $(ENV_LATEX); $(LATEX) #-------------------------------------------------------------------------------- # File #-------------------------------------------------------------------------------- ALL_FILES = $(wildcard $(DIR_TYPE)/*.type) TEX_FILES = $(wildcard $(DIR_TEX)/*.tex) FILES = $(patsubst $(DIR_TEX)/%.tex,% ,$(TEX_FILES)) DVI_FILES = $(patsubst $(DIR_TEX)/%.tex,%.dvi,$(TEX_FILES)) PS_FILES = $(patsubst $(DIR_TEX)/%.tex,%.ps ,$(TEX_FILES)) PDF_FILES = $(patsubst $(DIR_TEX)/%.tex,%.pdf,$(TEX_FILES)) PNG_FILES = $(patsubst $(DIR_GRAPH)/%.p,$(DIR_SCHEMA_PNG)/%.png,$(wildcard $(DIR_GRAPH)/*.p)) \ $(patsubst $(DIR_SCHEMA)/%.fig,$(DIR_SCHEMA_PNG)/%.png,$(wildcard $(DIR_SCHEMA)/*.fig)) \ $(patsubst $(DIR_SCHEMA)/%.eps,$(DIR_SCHEMA_PNG)/%.png,$(wildcard $(DIR_SCHEMA)/*.eps)) #-------------------------------------------------------------------------------- # The reset of this file shall not be editted #-------------------------------------------------------------------------------- .PHONY : all clean view help doc doc_all new delete .SECONDARY : $(DVI_FILES) $(PS_FILES) $(PDF_FILES) $(PNG_FILES) $(DIR_SCHEMA_EPS) $(DIR_SCHEMA_PNG) .PRECIOUS : %.pdf %.ps %.dvi $(DIR_SCHEMA_PNG)/%.png $(DIR_SCHEMA_EPS)/%.eps all : help doc : $(PNG_FILES) $(DIR_TEX) @\ for file in $(ALL_FILES); do \ file=`$(BASENAME) $$file .type`; \ type=`$(CAT) $(DIR_TYPE)/$$file.type`; \ \ for lang in `$(CAT) $(DIR_LANGUAGE)/$$file.lang`; do \ if $(TEST) ! -f "$(DIR_TEX)/$$file-$$lang.tex"; then \ $(ECHO) "s/@LANG/$$lang/" > $$$$; \ $(ECHO) "s/@FILE/$$file/" >> $$$$; \ $(ECHO) "s/@DIRPACKAGE/$(DIR_PACKAGE)/" >> $$$$; \ $(ECHO) "s/@DIRDOC/$(DIR_DOCUMENTS)\/$$file/" >> $$$$; \ $(ECHO) "s/@DIRSCHEMA/$(DIR_SCHEMA_EPS)/" >> $$$$; \ $(CAT) $(DIR_INCLUDE)/$$type-$(FILE_SOURCE_SED) | $(SED) -f $$$$ > $(DIR_TEX)/$$file-$$lang.tex; \ $(RM) $$$$; \ fi; \ done; \ done; \ $(MAKE) doc_all; doc_all : $(PDF_FILES) #-------------------------------------------------------------------------------- # Generation of the formatted text: # regular flow tex -> dvi -> ps -> pdf. #-------------------------------------------------------------------------------- %.pdf : %.ps @\ $(ECHO) "Génération du fichier $*.pdf"; \ $(PS2PDF) $< $@; \ $(CP) $@ $(DIR_DOCUMENTATION); %.ps : %.dvi @\ $(ECHO) "Génération du fichier $*.ps"; \ $(DVIPS) -o $@ $<; %.dvi : $(DIR_TEX)/%.tex @\ $(ECHO) "Génération du fichier $*.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; #-------------------------------------------------------------------------------- # New - Delete - Rename #-------------------------------------------------------------------------------- new : @ \ $(ECHO) ""; \ $(ECHO) "Choose a type of a document : (0 is default)"; \ CPT=0; \ declare -a type_doc=$(TYPE_DOC); \ for type in $${type_doc[@]}; do \ $(ECHO) "$$CPT) $$type"; \ CPT=$$(($$CPT+1)); \ done; \ declare -i NUM_TYPE; \ read NUM_TYPE; \ \ if $(TEST) "$$NUM_TYPE" -ge "$$CPT"; then \ NUM_TYPE=0; \ fi; \ declare TYPE=$${type_doc[$$NUM_TYPE]}; \ \ declare FILENAME; \ $(ECHO) ""; \ $(ECHO) "Give the name of the documents :"; \ read FILENAME; \ \ if $(TEST) -z "$$FILENAME" -o -d "$(DIR_TYPE)/$$FILENAME.type"; \ then \ $(ECHO) "Invalid name : string is empty, or filename is already used"; \ exit; \ fi; \ \ $(ECHO) "Create file : $(DIR_LANGUAGE)/$$FILENAME.lang"; \ $(ECHO) " (Default language : $(DEFAULT_LANG))"; \ $(ECHO) "$(DEFAULT_LANG)" > $(DIR_LANGUAGE)/$$FILENAME.lang; \ \ $(ECHO) "Create file : $(DIR_TYPE)/$$FILENAME.type"; \ $(ECHO) $$TYPE > $(DIR_TYPE)/$$FILENAME.type; \ \ $(ECHO) "Create file : $(DIR_PACKAGE)/$$FILENAME.sty"; \ $(CP) $(DIR_INCLUDE)/$$TYPE-$(FILE_SOURCE_STY) $(DIR_PACKAGE)/$$FILENAME.sty; \ \ $(ECHO) "Create file : $(DIR_PACKAGE)/$$FILENAME.tex"; \ $(CP) $(DIR_INCLUDE)/$$TYPE-$(FILE_SOURCE_TEX) $(DIR_PACKAGE)/$$FILENAME.tex; \ \ $(ECHO) "Create directory : $(DIR_DOCUMENTS)/$$FILENAME"; \ $(ECHO) "Create directory : $(DIR_DOCUMENTS)/$$FILENAME/common"; \ $(ECHO) "Create directory : $(DIR_DOCUMENTS)/$$FILENAME/$(DEFAULT_LANG)"; \ $(MKDIR) $(DIR_DOCUMENTS)/$$FILENAME/common; \ $(MKDIR) $(DIR_DOCUMENTS)/$$FILENAME/$(DEFAULT_LANG); \ \ $(ECHO) "Create file : $(DIR_DOCUMENTS)/$$FILENAME/$(DEFAULT_LANG)/root.tex"; \ $(TOUCH) $(DIR_DOCUMENTS)/$$FILENAME/$(DEFAULT_LANG)/root.tex delete : @ \ declare -a FILES; \ declare -i CPT; \ declare -i NUM_FILE; \ declare -i NUM_FILE_CONFIRM; \ \ $(ECHO) ""; \ $(ECHO) "Choose a document : (0 by default)"; \ $(ECHO) "0) ( none )"; \ \ CPT=1; \ for files in $(ALL_FILES); do \ files=`$(BASENAME) $$files .type`; \ $(ECHO) "$$CPT) $$files"; \ FILES[$$CPT]=$$files; \ CPT=$$(($$CPT+1)); \ done; \ read NUM_FILE; \ \ if $(TEST) "$$NUM_FILE" -ge "$$CPT"; then \ NUM_FILE=0; \ fi; \ \ $(ECHO) "Please reenter the document id to confirm the delete"; \ read NUM_FILE_CONFIRM; \ \ if $(TEST) "$$NUM_FILE" -eq "0" -o "$$NUM_FILE" -ne "$$NUM_FILE_CONFIRM"; then \ $(ECHO) "Delete cancelled"; \ exit; \ fi; \ \ declare FILENAME; \ FILENAME=$${FILES[$$NUM_FILE]}; \ \ $(ECHO) "Delete file : $(DIR_TYPE)/$$FILENAME.type"; \ $(RM) $(DIR_TYPE)/$$FILENAME.type; \ \ $(ECHO) "Delete file : $(DIR_LANGUAGE)/$$FILENAME.lang"; \ $(RM) $(DIR_LANGUAGE)/$$FILENAME.lang; \ \ $(ECHO) "Delete file : $(DIR_PACKAGE)/$$FILENAME.sty"; \ $(RM) $(DIR_PACKAGE)/$$FILENAME.sty; \ \ $(ECHO) "Delete file : $(DIR_PACKAGE)/$$FILENAME.tex"; \ $(RM) $(DIR_PACKAGE)/$$FILENAME.tex; \ \ $(ECHO) "Delete directory : $(DIR_DOCUMENTS)/$$FILENAME"; \ $(RM) $(DIR_DOCUMENTS)/$$FILENAME; rename : @ \ declare -a FILES; \ declare -i CPT; \ declare -i NUM_FILE; \ \ $(ECHO) ""; \ $(ECHO) "Choose a document : (0 by default)"; \ $(ECHO) "0) ( none )"; \ \ CPT=1; \ for files in $(ALL_FILES); do \ files=`$(BASENAME) $$files .type`; \ $(ECHO) "$$CPT) $$files"; \ FILES[$$CPT]=$$files; \ CPT=$$(($$CPT+1)); \ done; \ read NUM_FILE; \ \ if $(TEST) "$$NUM_FILE" -ge "$$CPT"; then \ NUM_FILE=0; \ fi; \ \ if $(TEST) "$$NUM_FILE" -eq "0"; then \ $(ECHO) "Rename cancelled"; \ exit; \ fi; \ \ declare FILENAME_SRC; \ declare FILENAME_DEST; \ FILENAME_SRC=$${FILES[$$NUM_FILE]}; \ \ $(ECHO) "Give the new name of the documents :"; \ read FILENAME_DEST; \ \ if $(TEST) -z "$$FILENAME_DEST" -o -d "$(DIR_TYPE)/$$FILENAME_DEST.type"; \ then \ $(ECHO) "Invalid name : string is empty, or filename is already used"; \ exit; \ fi; \ \ $(ECHO) "Rename file : $(DIR_LANGUAGE)/$$FILENAME_SRC.lang"; \ $(MV) $(DIR_LANGUAGE)/$$FILENAME_SRC.lang $(DIR_LANGUAGE)/$$FILENAME_DEST.lang; \ \ $(ECHO) "Rename file : $(DIR_TYPE)/$$FILENAME_SRC.type"; \ $(MV) $(DIR_TYPE)/$$FILENAME_SRC.type $(DIR_TYPE)/$$FILENAME_DEST.type; \ \ $(ECHO) "Rename file : $(DIR_PACKAGE)/$$FILENAME_SRC.sty"; \ $(MV) $(DIR_PACKAGE)/$$FILENAME_SRC.sty $(DIR_PACKAGE)/$$FILENAME_DEST.sty; \ \ $(ECHO) "Rename file : $(DIR_PACKAGE)/$$FILENAME_SRC.tex"; \ $(MV) $(DIR_PACKAGE)/$$FILENAME_SRC.tex $(DIR_PACKAGE)/$$FILENAME_DEST.tex; \ \ $(ECHO) "Rename directory : $(DIR_DOCUMENTS)/$$FILENAME_SRC"; \ $(MV) $(DIR_DOCUMENTS)/$$FILENAME_SRC $(DIR_DOCUMENTS)/$$FILENAME_DEST; #-------------------------------------------------------------------------------- # View #-------------------------------------------------------------------------------- view : doc @\ declare SELECT_FILE; \ declare SELECT_LANG; \ 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 $(ALL_FILES); do \ files=`$(BASENAME) $$files .type`; \ type=`$(CAT) $(DIR_TYPE)/$$files.type`; \ $(ECHO) "$$CPT) $$type - $$files"; \ FILES[$$CPT]=$$files; \ CPT=$$(($$CPT+1)); \ done; \ 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 language : (0 by default)"; \ \ declare -i NUM_LANG; \ declare -a LANG; \ \ CPT=0; \ for lang in `$(CAT) $(DIR_LANGUAGE)/$$SELECT_FILE.lang`; do \ $(ECHO) "$$CPT) $$lang"; \ LANG[$$CPT]=$$lang; \ CPT=$$(($$CPT+1)); \ done; \ read NUM_LANG; \ \ if $(TEST) "$$NUM_LANG" -ge "$$CPT"; then \ NUM_LANG=0; \ fi; \ \ SELECT_LANG=$${LANG[$$NUM_LANG]}; \ $(ECHO) "Language selected : $$SELECT_LANG"; \ $(ECHO) ""; \ \ \ \ $(ECHO) "Choose a format : (0 by default)"; \ \ declare -i NUM_FORMAT; \ declare -a FORMAT; \ declare -a VIEWER; \ \ FORMAT=("pdf" "pdf" "ps" "dvi"); \ VIEWER=("$(VIEWPDF_FS)" "$(VIEWPDF)" "$(VIEWPS)" "$(VIEWDVI)"); \ \ CPT=0; \ while [ $$CPT -lt $${#FORMAT[*]} ]; do \ $(ECHO) "$$CPT) $${FORMAT[$$CPT]} ($${VIEWER[$$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_LANG.$$SELECT_FORMAT" & \ \ $(ECHO) ""; #-------------------------------------------------------------------------------- # The figures directory #-------------------------------------------------------------------------------- $(DIR_SCHEMA_EPS) : @\ $(ECHO) "Make directory : $@"; \ $(MKDIR) $@; $(DIR_SCHEMA_PNG) : @\ $(ECHO) "Make directory : $@"; \ $(MKDIR) $@; $(DIR_TEX) : @\ $(ECHO) "Make directory : $@"; \ $(MKDIR) $@; $(DIR_SCHEMA_PNG)/%.png : $(DIR_SCHEMA_EPS)/%.eps $(DIR_SCHEMA_PNG) @\ $(ECHO) "Generate files : $*.png"; \ $(EPS2PNG) $< $@; $(DIR_SCHEMA_EPS)/%.eps : $(DIR_SCHEMA)/%.eps $(DIR_SCHEMA_EPS) @\ $(ECHO) "Generate files : $*.eps"; \ $(CP) $(DIR_SCHEMA)/$*.eps $(DIR_SCHEMA_EPS); $(DIR_SCHEMA_EPS)/%.eps : $(DIR_SCHEMA)/%.fig $(DIR_SCHEMA_EPS) @\ $(ECHO) "Generate files : $*.eps"; \ $(FIG2EPS) $< $@; $(DIR_SCHEMA_EPS)/%.eps : $(DIR_GRAPH)/%.p $(DIR_SCHEMA_EPS) @\ $(ECHO) "Generate files : $*.eps"; \ cd $(DIR_GRAPH); $(GNUPLOT) $*.p; #-------------------------------------------------------------------------------- # Cleaning #-------------------------------------------------------------------------------- clean : @\ $(ECHO) "Delete temporary files "$(PWD); \ $(RM) $(DIR_SCHEMA_EPS) $(DIR_SCHEMA_PNG) $(DIR_TEX) $(DIR_PACKAGE)/*.aux; \ $(RM) $(DVI_FILES) $(PS_FILES) $(PDF_FILES); \ $(RM) a0header.ps; \ $(MAKE) clean_rec DIR_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)/*.snm \ $(DIR_CLEAN)/*.maf \ $(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; clean_all : clean @\ $(ECHO) "Delete temporary files (all)"; \ $(RM) $(DIR_DOCUMENTATION)/*.pdf; #-------------------------------------------------------------------------------- # Help #-------------------------------------------------------------------------------- help : @\ $(ECHO) "Environnement to generate documents and presentations"; \ $(ECHO) "Version : $(VERSION)"; \ $(ECHO) ""; \ $(ECHO) "List of rules :"; \ $(ECHO) " * all : Cf rules \"help\""; \ $(ECHO) " * clean : Erase generate files"; \ $(ECHO) " * clean_all : Erase all generate files"; \ $(ECHO) " * delete : Erase all file and directory of a document"; \ $(ECHO) " * doc : Generate all documents"; \ $(ECHO) " * help : Print this message"; \ $(ECHO) " * new : Create all file and directy for a new document"; \ $(ECHO) " * rename : Rename a document"; \ $(ECHO) " * view : List all document to view"; \ $(ECHO) "";