# $Id: Makefile,v 1.11 2001/03/07 20:53:54 yotam Exp yotam $
#
# Yotam Medini
# 

OPTFLAGS = -O2 -fno-exceptions
# OPTFLAGS = -g
# PICFLAGS = -fPIC
PICFLAGS = -fpic
#
# Wish installed Python would have a query for it
# to automate this Makefile.
PYTHONVER = 1.5
PYTHONINCDIR = /usr/include/python$(PYTHONVER)
PYTHONLIB = -L/usr/lib/python$(PYTHONVER)/config -lpython$(PYTHONVER)
IFLAGS += -I$(PYTHONINCDIR)

# Gtk/Gdk/Gnome
GLIBCFLAGS := $(shell glib-config  --cflags)
GLIBLFLAGS := $(shell glib-config  --libs)
GDKLFLAGS := $(shell gdk-pixbuf-config   --libs)
# GNOMECANVPIXBUFFLAGS := $(gnome-config --libs gnomecanvaspixbuf)
GNOMECANVPIXBUFFLAGS := -lgnomecanvaspixbuf
IFLAGS += $(GLIBCFLAGS)

########################################################################
# Call with: make emv=MakeVariable     e.g. make emv=FITOUT
ifneq ($(emv),)
emv:
	@echo $($(emv))
endif

prefix = /usr
SRCS := $(wildcard *.cc)
HDRS := $(wildcard *.h)
PYS := $(wildcard *.py) about.pyp
OBJS = $(patsubst %.cc,%.o, $(SRCS))
TEST_SRCS = $(wildcard test*.cc)
PY_SRCS = $(wildcard *py.cc)
TEST_OBJS = $(patsubst %.cc,%.o, $(TEST_SRCS))
PY_OBJS = $(patsubst %.cc,%.o, $(PY_SRCS))
LOBJS = $(filter-out $(TEST_OBJS), $(OBJS))
NONPYLOBJS = $(filter-out $(PY_OBJS), $(LOBJS))

all: tfmpkl.so tfmpk

objs: $(OBJS)
lobjs: $(LOBJS)

libdir = $(prefix)/lib/tfmpk
tfmpk: Makefile
	rm -f $@
	@echo "#!/bin/sh" >> $@
	@echo "exec $(libdir)/tfmpk.py -- " '$$*' >> $@
	chmod +x $@
	ls -l $@; cat $@

# -Lgnomecanvaspixbuf
tfmpkl.so: $(LOBJS) Makefile
	rm -f $@ $@.new
	g++ -shared -o $@.new $(LOBJS) $(GDKLFLAGS) $(GNOMECANVPIXBUFFLAGS)
	mv $@.new $@
	ldd $@
	ls -l $@

install: tfmpk tfmpkl.so Makefile about.pyp
	mkdir -p $(prefix)/bin
	cp tfmpk $(prefix)/bin
	rm -rf $(libdir)
	mkdir -p $(libdir)
	tar cf - tfmpkl.so *.py mfbk.png | (cd $(libdir); tar xvf -)
	sed s/VERSION/$(VERSION)/ < about.pyp > $(libdir)/about.py



# -fhonor-std -ansi -pedantic -Wunused
# DBGFLAGS = -DDEBUG=1
%.o: %.cc
	g++ -c $(OPTFLAGS) $(IFLAGS) -Wall $(DBGFLAGS) $(PICFLAGS) $<


# of this packacge
VERSION = $(shell basename `pwd` | cut -d- -f2)
TGZ = tfmpk-$(VERSION).tar.gz
SRC_CONTROLABLE = \
	Makefile $(SRCS) $(HDRS) $(PYS)  README about.tex

RELEASEFILES = $(SRC_CONTROLABLE) mfbk.png

TARFILES = $(RELEASEFILES:%=tfmpk-$(VERSION)/%)

.PHONY: checkin
checkin:
	ci -l $(SRC_CONTROLABLE)


release: $(TGZ)

$(TGZ) : $(SRC_CONTROLABLE)
	(cd ..; tar cvf - $(TARFILES)) | gzip -9 > $(TGZ)
	ls -l $(TGZ)

clean:
	rm -f $(OBJS)

# Dependencies
-include dep.mak
# My own McDep sparkprogram
mcdep:
	mcdep $(SRCS) > dep.mak

# Optional personal override
-include ../Make.local

########################################################################
########################################################################
# Document

%.dvi: %.tex
	latex $<

%.ps: %.dvi
	dvips -o $@ $(DVIPSPARAMS) $<

%.pdf: %.tex
	pdflatex $<

#  -html_version 4.0,math,frame 
DATE = $(shell date "+%B %d, %Y")
L2HADDRESS = "<A href="http://yotam.freehosting.net">Yotam Medini</A> $(DATE)" 
L2HPARAMS = \
	-local_icons -html_version 4.0 \
	-address $(L2HADDRESS) \
	$(L2HMOREPARAMS)

%.html: %.tex
	latex2html -dir html -mkdir $(L2HPARAMS) $<

INPLINES = /tmp/inplines
image-inps: Makefile about.tex
	rm -f $(INPLINES)
	grep '\input{' about.tex > $(INPLINES)
	cat $(INPLINES)
        line="dum"
	while 1; do \
           echo line=$line; \
	   line=""; \
	endw

doc-clean-html:
	rm -rf html
doc-clean-snaps:
	rm -rf snaps
doc-clean: doc-clean-html doc-clean-snaps

doc-all: snapshots snap-ps about.ps about.html

### For snapshots use:
#  kpsewhich cmr5.tfm
#  kpsewhich cmr5.pk
#  tfmpk -snap


# The following fonts are used in the about.tex  documentation.
SNAPFONTS = cmex7 cmr5 logo8
snapshots:
	mkdir -p snaps
	@for font in $(SNAPFONTS); do \
	  echo Makefing $$font snapshots; \
	  tfm=`kpsewhich $$font.tfm`; \
	  pk=`kpsewhich $$font.pk`; \
	  cmd="tfmpk -load $$tfm $$pk -snap $$font"; \
	  echo tfm=$$tfm; echo  pk=$$pk; \
	  echo $$cmd; \
	  (cd snaps; $$cmd || true); \
	  ls -l snaps/$$font-*.jpeg; \
	done

snap-ps:
	@for jpeg in snaps/*.jpeg; do \
	   ps=`echo $$jpeg | sed s/jpeg/ps/`; \
	   cmd="convert $$jpeg $$ps"; \
	   echo $$cmd; \
	   $$cmd; ls -l $$ps; \
	done

snapshots-clean:
	rm -rf snaps


########################################################################
########################################################################
# Tests

TESTLISTDIROBJS = testListDir.o ListDir.o ChildDir.o PushDir.o debug.o
testListDir: $(TESTLISTDIROBJS)
	rm -f $@ $@.new
	g++ -g -o $@.new $(TESTLISTDIROBJS)
	mv $@.new $@
	ldd $@; ls -l $@


LSDOBJS = lsdpy.o ListDir.o ChildDir.o PushDir.o debug.o
_lsdmodule.so: $(LSDOBJS) Makefile
	rm -f $@
	g++ -shared -o $@ $(LSDOBJS)

TFMOBJS = tfmpy.o TeXtfm.o BifStream.o pygoods.o debug.o
_tfmmodule.so: $(TFMOBJS) Makefile
	rm -f $@
	g++ -shared -o $@ $(TFMOBJS)

PKOBJS = pkpy.o TeXpk.o BifStream.o pygoods.o debug.o
_pkmodule.so: $(PKOBJS) Makefile
	rm -f $@
	g++ -shared -o $@ $(PKOBJS)

TESTTFMOBJS = testtfm.o TeXtfm.o BifStream.o debug.o
testtfm: $(TESTTFMOBJS)
	rm -f $@ $@.new
	g++ -g -o $@.new $(TESTTFMOBJS)
	mv $@.new $@

TESTPKOBJS = testpk.o TeXpk.o BifStream.o debug.o
testpk: $(TESTPKOBJS)
	rm -f $@ $@.new
	g++ -g -o $@.new $(TESTPKOBJS)
	mv $@.new $@

test-tfm: _tfmmodule.so tfm.py testtfm.py
	testtfm.py

test-pk: _pkmodule.so pk.py testpk.py
	testpk.py

# EMBEDOBJS = embed.o $(PKOBJS)
EMBEDOBJS = testembed.o $(LOBJS)
testembed: $(EMBEDOBJS) Makefile
	rm -f $@ $@.new
	g++ -g -o $@.new $(EMBEDOBJS) $(PYTHONLIB) -ldl -lpthread
	mv $@.new $@
	ldd $@; ls -l $@
