# -*- makefile -*-
# SPDX-License-Identifier: BSD-2-Clause
# Copyright 1996-20xx The NASM Authors - All Rights Reserved

#
# UNIX Makefile for NASM documentation
#

@SET_MAKE@

PACKAGE_NAME    = @PACKAGE_NAME@
PACKAGE_TARNAME = @PACKAGE_TARNAME@

top_srcdir	= @top_srcdir@
srcdir		= @srcdir@
objdir		= @builddir@
VPATH		= @srcdir@
prefix		= @prefix@
exec_prefix	= @exec_prefix@
bindir		= @bindir@
mandir		= @mandir@
datarootdir	= @datarootdir@
datadir		= @datadir@
mydatadir       = $(datadir)/$(PACKAGE_TARNAME)
docdir          = @docdir@
htmldir         = @htmldir@
pdfdir          = @pdfdir@
psdir           = @psdir@
emacsdir        = $(datarootdir)/emacs/site-lisp
jsondir         = $(mydatadir)

INSTALL		= @INSTALL@
INSTALL_PROGRAM	= @INSTALL_PROGRAM@
INSTALL_DATA	= @INSTALL_DATA@

PERL		= perl
RUNPERL		= $(PERL) -I$(top_srcdir)/perllib -I$(srcdir)

PDFOPT		= @PDFOPT@

MKDIR_P		= @MKDIR_P@
RM_F		= rm -f
RM_RF		= rm -rf
CP_F		= cp -f
CP_UF		= cp -uf

# Optional tools
XZ		= @XZ@

# Optional targets
XZFILES         = @XZFILES@

# Auxiliary files referenced by the HTML files
HTMLAUX		= nasmdoc.css local.css nasmlogw.png

# Generated input files
GENSRC		= insns.src version.src pptok.src perlbreq.src

# Top-level input file
SRCS		= nasmdoc.src

# All input files (except auto-dependencies)
ALLSRCS		= $(SRCS) $(GENSRC)

OUT		= html nasmdoc.txt nasmdoc.pdf $(XZFILES)
XZOUT           = nasmdoc.pdf.xz

# Use "make install PDFZ=.xz" to install pdf.xz
PDF             =

# Don't delete intermediate files
.SECONDARY:

# Delete files on error
.DELETE_ON_ERROR:

.SUFFIXES:
.SUFFIXES: .pfa .ph

.PHONY: all xzfiles html clean spotless install

all: $(OUT)

xzfiles: $(XZOUT)

insns.src: inslist.pl ../x86/insns.xda
	$(RUNPERL) $^ $@

# A representative HTML file
htmltarget=html/nasm00.html

html: $(HTMLAUX)
	$(MKDIR_P) html
	for f in $(HTMLAUX); do $(CP_F) "$(srcdir)/$$f" html/; done
	$(MAKE) $(htmltarget)

RDSRC = $(RUNPERL) $(srcdir)/rdsrc.pl -I$(srcdir) -M$(@F).dep

$(htmltarget): $(ALLSRCS) rdsrc.pl
	$(RM_F) html/*.html
	$(RDSRC) -ohtml html $<

nasmdoc.dip: $(ALLSRCS) rdsrc.pl
	$(RDSRC) dip $<

nasmdoc.txt: $(ALLSRCS) rdsrc.pl
	$(RDSRC) txt $<

version.src: $(top_srcdir)/version.pl $(top_srcdir)/version
	$(RUNPERL) $(top_srcdir)/version.pl docsrc \
		< $(top_srcdir)/version > version.src

nasmdoc.ps: nasmdoc.dip genps.pl afmmetrics.ph ttfmetrics.ph \
	pswidth.ph nasmlogo.eps psfonts.ph head.ps
	$(RUNPERL) $(srcdir)/genps.pl -epsdir "$(srcdir)" \
		-headps $(srcdir)/head.ps \
		-fontpath fontpath \
		-fontmap Fontmap \
		nasmdoc.dip > nasmdoc.ps

fontpath: nasmdoc.ps
	@: Generated by side effect

Fontmap: nasmdoc.ps
	@: Generated by side effect

nasmdoc.pdf: nasmdoc.ps pspdf.pl fontpath
	$(RUNPERL) $(srcdir)/pspdf.pl \
		$(PDFOPT) $< $@ fontpath

nasmdoc-raw.pdf: nasmdoc.ps pspdf.pl fontpath
	$(RUNPERL) $(srcdir)/pspdf.pl -nocompress \
		$(PDFOPT) $< $@ fontpath

nasmdoc.pdf.xz: nasmdoc-raw.pdf
	$(RM_F) $@
	$(XZ) -9e < $< > $@

clean:
	-$(RM_F) *.rtf *.hpj *.texi *.gid *.ipf *.dip *.dep
	-$(RM_F) *.aux *.cp *.fn *.ky *.pg *.log *.toc *.tp *.vr
	-$(RM_F) $(GENSRC) fontpath Fontmap
	-$(RM_F) nasmdoc*.ps nasmdoc-raw.pdf

spotless: clean
	-$(RM_RF) html info
	-$(RM_F) *.hlp nasmdoc.txt *.inf *.pdf *.pdf.xz *.dvi

install_html: html
	html='$(htmldir)' ; \
	if [ x"$$html" = x'$(docdir)' ]; then \
	    html="$$html/html" ; \
	fi ; \
	$(MKDIR_P) $(DESTDIR)"$$html" ; \
	$(INSTALL_DATA) html/* $(DESTDIR)"$$html"

install_pdf: nasmdoc.pdf$(PDFZ)
	$(MKDIR_P) $(DESTDIR)$(pdfdir)
	$(INSTALL_DATA) nasmdoc.pdf$(PDFZ) $(DESTDIR)$(pdfdir)

install: install_html install_pdf

#
# Dummy rules that changes make behavior
# (at end to avoid confusing non-GNU makes)
#
.SECONDARY:

.DELETE_ON_ERROR:

# Generated dependencies
-include *.dep
