# Variables.

HTML = .html # Cambie esto por .htm si es necesario
INFO = .info # Cambie esto por .inf si es necesario
TEXI = .texi # Cambie esto por .txi si es necesario
VPATH += src/makedoc

ifdef DJDIR
	EXE =.exe
	FLAGS = -s -O3 -ffast-math -fomit-frame-pointer
else
	INFODIR = /usr/local/info/
endif

# Mdulos a partir de los cuales se genera todo
MODULOS = ahack abi api allegro const changes faq gracias help thanks
SRC = $(addprefix src/,$(addsuffix ._tx,$(MODULOS)))

DIRTXT = ./txt
DESTTXT = $(addprefix $(DIRTXT)/,$(addsuffix .txt,allegro abi faq help ahack) \
		AUTHORS CHANGES AUTORES GRACIAS THANKS)

DIRHTML = ./html
DESTHTML = $(addprefix $(DIRHTML)/,$(addsuffix $(HTML), $(MODULOS)))

DIRCHM = ./chm
DESTCHM = $(addprefix $(DIRCHM)/,$(addsuffix $(HTML), $(MODULOS)))

DIRRTF = ./rtf
DESTRTF = $(addprefix $(DIRRTF)/,$(addsuffix .rtf,allegro))

DIRINFO = ./info
DESTINFO = $(addprefix $(DIRINFO)/, allegroes$(INFO))

DIRTEXI = ./texi
DESTTEXI = $(addprefix $(DIRTEXI)/, allegro$(TEXI))

CLEANDEST = $(DESTTXT) $(DESTHTML) $(DESTRTF) $(DESTINFO) $(DESTTEXI) \
       $(DESTCHM)


.PHONY : txt html rtf info texi todo _info chm

# Programa que genera los ficheros
MAKEDOC = obj/makedoc$(EXE)

_info:
	@echo Para generar la documentacin tiene varias opciones del make:
	@echo txt, html, rtf, info, texi, chm, todo
	@echo Por ejemplo, si slo quiere la documentacin html y rtf teclee:
	@echo make html rtf
	@echo Para limpiar dispone de las opciones clean y veryclean
	@echo Para instalar la documentacin, pruebe con install o uninstall

# Dependencias de cada opcin del Makefile
txt: $(MAKEDOC) $(DESTTXT)
	@echo Documentacin en formato txt generada en $(DIRTXT)
html: $(MAKEDOC) $(DESTHTML)
	@echo Documentacin en formato html generada en $(DIRHTML)

ifdef DJDIR
chm: $(MAKEDOC) $(DIRCHM)/allegro.chm
	@echo Documentacin en formato chm generada en $(DIRCHM)
else
chm:
	@echo La documentacin chm slo puede generarse bajo Windows.
endif

rtf: $(MAKEDOC)  $(DESTRTF)
	@echo Documentacin en formato rtf generada en $(DIRRTF)
info: $(MAKEDOC) $(DESTINFO)
	@echo Documentacin en formato info generada en $(DIRINFO)
texi: $(MAKEDOC) $(DESTTEXI)
	@echo Documentacin en formato texi generada en $(DIRTEXI)
todo: html txt rtf texi info chm
	@echo Documentacin completa generada.

# Reglas para generar ficheros
$(DIRHTML)/%$(HTML): src/%._tx $(MAKEDOC)
	@$(MAKEDOC) -html $@ $<

$(DIRCHM)/allegro.chm: src/*._tx $(DESTCHM) $(MAKEDOC)
	$(MAKEDOC) -chm chm/allegro$(HTML) src/allegro._tx
	-hhc chm/allegro.hhp

$(DIRCHM)/%$(HTML): src/%._tx $(MAKEDOC)
	@$(MAKEDOC) -ochm -html $@ $<

$(DIRTXT)/%.txt: src/%._tx $(MAKEDOC)
	@$(MAKEDOC) -ascii $@ $<
#	@$(MAKEDOC) -warn -ascii $@ $<

$(DIRTXT)/AUTHORS: src/thanks._tx $(MAKEDOC)
	@$(MAKEDOC) -part -ascii $@ $<

$(DIRTXT)/CHANGES: src/changes._tx $(MAKEDOC)
	@$(MAKEDOC) -ascii $@ $<

$(DIRTXT)/AUTORES: src/gracias._tx $(MAKEDOC)
	@$(MAKEDOC) -part -ascii $@ $<

$(DIRTXT)/GRACIAS: src/gracias._tx $(MAKEDOC)
	@$(MAKEDOC) -part -ascii $@ $<

$(DIRTXT)/THANKS: src/thanks._tx $(MAKEDOC)
	@$(MAKEDOC) -part -ascii $@ $<

$(DIRRTF)/%.rtf: src/%._tx $(MAKEDOC)
	@$(MAKEDOC) -rtf $@ $<

$(DIRTEXI)/%$(TEXI): src/%._tx $(MAKEDOC)
	@$(MAKEDOC) -txi $@ $<

$(DIRINFO)/%es$(INFO): $(DIRTEXI)/%$(TEXI) $(MAKEDOC)
	makeinfo --no-split -o $@ $<

$(MAKEDOC): makedoc.c makechm.c makehtml.c makeman.c makemisc.c makertf.c maketexi.c maketxt.c
	gcc $(FLAGS) -o $@ $^ -lm

	

# Regla para limpiar cosas
RM = rm -f
RMDIR = rmdir

clean:
	$(RM) $(CLEANDEST)
	$(RM) $(DIRHTML)/*$(HTML) $(DIRCHM)/*$(HTML) $(DIRCHM)/allegro.*
	@echo Documentos borrados. Teclee make veryclean para limpiar el generador.

veryclean: clean
	$(RM) $(MAKEDOC)
#	$(RMDIR) $(DIRTXT) $(DIRHTML) parece que no hay forma estndar de hacer esto...
	@echo Generador eliminado.

# Regla para instalar la documentacin
install:
ifdef DJDIR
	-cp $(DESTINFO) $(DJDIR)/info/allegsp$(INFO)
	-install-info $(DJDIR)/info/allegsp$(INFO) $(DJDIR)/info/dir
else
	install-info --section Development -- $(DESTINFO)
endif


# Regla para desinstalar la documentacin
uninstall:
ifdef DJDIR
	-install-info --delete $(DJDIR)/info/allegsp$(INFO) $(DJDIR)/info/dir
	-rm $(DJDIR)/info/allegsp$(INFO)
else
	install-info --remove $(DESTINFO)
endif

