# Build the pdf library as byte code and native code
# Outputs camlpdf.cmxa, camlpdf.cma
# and dllcamlpdf_stubs.so, libcamlpdf_stubs.a or similar 
# OCaml and C source and interface files. Order matters.
SOURCES = utility.ml utility.mli \
	  istring.ml istring.mli \
	  io.ml io.mli \
	  unzip.ml unzip.mli \
	  pdfio.ml pdfio.mli \
	  cgenlex.ml cgenlex.mli \
	  zlib.ml zlib.mli \
	  zlibstubs.c \
	  transform.ml transform.mli \
	  units.ml units.mli \
	  paper.ml paper.mli \
	  pdf.ml pdf.mli \
	  pdfcrypt.ml pdfcrypt.mli \
	  pdfwrite.ml pdfwrite.mli \
	  pdfcodec.ml pdfcodec.mli \
	  pdfread.ml pdfread.mli \
	  pdfpages.ml pdfpages.mli \
	  pdfdoc.ml pdfdoc.mli \
	  pdfannot.ml pdfannot.mli \
	  pdffun.ml pdffun.mli \
	  pdfspace.ml pdfspace.mli \
	  pdfimage.ml pdfimage.mli \
	  glyphlist.ml glyphlist.mli \
	  pdftext.ml pdftext.mli \
	  fonttables.ml fonttables.mli \
	  pdfgraphics.ml pdfgraphics.mli \
	  pdfmarks.ml pdfmarks.mli \
	  cff.ml cff.mli

RESULT = camlpdf

TRASH = tl prog.tex camlpdf.tex camlpdf.aux camlpdf.log camlpdf.toc 

# ML Libraries
LIBS = unix bigarray str

CLIBS = z

#Uncomment for debug build
#OCAMLNCFLAGS = -g
#OCAMLBCFLAGS = -g
#CAMLLDFLAGS = -g

#Uncomment if you have these compilers
#OCAMLOPT = ocamlopt.opt
#OCAMLC = ocamlc.opt

#Remove native-code-library if you don't have native compilers
all : byte-code-library native-code-library

# Predefined generic makefile
-include OCamlMakefile

# Build .NET DLL with FSharp
fsharp: utility.mli utility.ml istring.mli istring.ml io.mli io.ml unzip.mli unzip.ml pdfio.mli pdfio.ml cgenlex.mli cgenlex.ml transform.mli transform.ml units.mli units.ml paper.mli paper.ml pdf.mli pdf.ml pdfcrypt.mli pdfcrypt.ml pdfwrite.mli pdfwrite.ml pdfcodec.mli pdfcodec.ml pdfread.mli pdfread.ml pdfpages.mli pdfpages.ml pdfdoc.mli pdfannot.ml pdfannot.mli pdfdoc.ml pdffun.mli pdffun.ml pdfspace.mli pdfspace.ml pdfimage.mli pdfimage.ml glyphlist.mli glyphlist.ml pdftext.mli pdftext.ml fonttables.mli fonttables.ml pdfmarks.mli pdfmarks.ml
	fsc -a --version 1.4.0.0 --out camlpdf.dll --nowarn 62 --nologo -r ICSharpCode.SharpZipLib.dll -r FSharp.PowerPack.dll utility.mli utility.ml istring.mli istring.ml io.mli io.ml unzip.mli unzip.ml pdfio.mli pdfio.ml cgenlex.mli cgenlex.ml transform.mli transform.ml units.mli units.ml paper.mli paper.ml pdf.mli pdf.ml pdfcrypt.mli pdfcrypt.ml pdfwrite.mli pdfwrite.ml pdfcodec.mli pdfcodec.ml pdfread.mli pdfread.ml pdfpages.mli pdfpages.ml pdfdoc.mli pdfdoc.ml pdfannot.mli pdfannot.ml pdffun.mli pdffun.ml pdfspace.mli pdfspace.ml pdfimage.mli pdfimage.ml glyphlist.mli glyphlist.ml pdftext.mli pdftext.ml fonttables.mli fonttables.ml pdfmarks.mli pdfmarks.ml

# Build the reference
documents: utility.mli pdfio.mli transform.mli units.mli paper.mli pdf.mli pdfcrypt.mli pdfwrite.mli pdfcodec.mli pdfread.mli pdfpages.mli pdfdoc.mli pdffun.mli pdfimage.mli glyphlist.mli pdftext.mli pdfmarks.mli pdfannot.ml pdfspace.ml fonttables.mli cff.mli
	mkdir -p doc/camlpdf/html; ocamldoc -html -d doc/camlpdf/html utility.mli pdfio.mli transform.mli units.mli paper.mli pdf.mli pdfcrypt.mli pdfwrite.mli pdfcodec.mli pdfread.mli pdfpages.mli pdfdoc.mli pdffun.mli pdfimage.mli glyphlist.mli pdftext.mli pdfmarks.mli pdfannot.mli pdfspace.mli fonttables.mli cff.mli

# Build the literate program
literate:
	ocamlweb --noweb --header -o prog.tex \
	utility.ml pdfio.ml io.ml pdf.ml pdfcrypt.ml pdfdoc.ml pdfcodec.ml pdfwrite.ml pdfread.ml pdfpages.ml pdffun.ml pdfimage.ml pdftext.ml pdfspace.ml pdfmarks.ml fonttables.ml glyphlist.ml transform.ml units.ml paper.ml pdfmarks.ml pdfannot.ml pdfgraphics.ml pdfspace.ml pdfhello.ml pdfdecomp.ml pdftest.ml pdfmerge.ml pdfdraft.ml;
	tail -n +8 prog.tex > tl; cat headpdf.tex tl > camlpdfo.tex; \
	sed -e 's/F\#//g' camlpdfo.tex > camlpdf.tex; \
	pdflatex camlpdf.tex;

# Finish up literate program, getting references, table of contents etc. correct
litfinish:
	pdflatex camlpdf.tex; pdflatex camlpdf.tex

