# $Id: Makefile,v 1.18 2005/03/21 15:02:01 zlb Exp $

#------------- For Linux/UNIX ('-DNOPROTOTYPES' to suppress func. prototypes)
CFLAGS=-O2 -g -Wall -DUNIX -DUSE_KPSE -DuseCJKform #-DDEBUG
OBJS=
LIBS=-lkpathsea
CC=gcc

#------------- For DOS/Windows using CrossDJGPP ('#ifdef GO32')
DOS_CFLAGS=-O2 -Wall -DuseCJKform #-DDEBUG
DOS_OBJS=fullpath.o
DOS_LIBS=
DOS_CC=dos-gcc

#------------- For Windows using MinGW32 ('#ifdef __MINGW32__')
W32_CFLAGS=-O2 -Wall -DuseCJKform #-DDEBUG
W32_OBJS=fullpath.o
W32_LIBS=
W32_CC=i386-mingw32-gcc

#-------------
prefix = /usr/local
install_root = /

prefix_win32 = "C:\\CTeX"
install_root_win32 = /dosc

ALL = cct uncct cctinit text2dvi cctspace cctconv gbk2uni patchdvi \
	bmf2pcx bmf2tif fonttest charcnt gb2wncyr cctmkind
#ALL = cctmkind cctmkind-ist

ALL_TEX = CCT047.cfg CCT047.sty CCT.sty CCT.cfg CJKCCT.sty cct.dat \
	  cctart.cls cctbase.sty cctbook.cls hzcmd.sty cctspace.cfg \
	  clib256e.tbl gbkdef.tbl CCTty.sty everb.sty GBKkern.cfg

default: cct.zip

all: $(ALL) corners.pfb

cct.zip: * .cvsignore
	make -s clean || true
	-@zip -9 -u -y $@ * -x@.cvsignore -x 'CVS/*' || true
	-@zip -9 -u -y $@ .cvsignore || true

clean:
	@/bin/rm -f $(ALL) wedt-yap roman-number cctmkind-ist ctextemp_* \
		*.o *.bak *.dvi *.log *.aux *.toc *.pdf *.ps *.exe \
		core* toto* *~ *.afm *.pfm *.enc *.ttf *.pfb *.tfm

install: all
	mkdir -p $(install_root)$(prefix)/bin
	mkdir -p $(install_root)$(prefix)/share/texmf/fonts/tfm/cct
	mkdir -p $(install_root)$(prefix)/share/texmf/tex/cct
	mkdir -p $(install_root)$(prefix)/share/doc/cct
	mkdir -p $(install_root)$(prefix)/share/texmf/makeindex/cct

	@echo 1>&2 "Installing binaries in $(install_root)$(prefix)/bin ..."
	@strip $(ALL)
	@/bin/cp -pf $(ALL) cct.ini $(install_root)$(prefix)/bin
	@echo "-H$(prefix)/share/texmf/tex/cct" \
	      "-T$(prefix)/share/texmf/fonts/tfm/cct/" \
		> $(install_root)$(prefix)/bin/cctinit.ini
	@chmod 0644 $(install_root)$(prefix)/bin/cctinit.ini

	@echo 1>&2 "Installing in $(install_root)$(prefix)/share/doc/cct ..."
	@/bin/cp -pf gbk2uni.tex cctmkind-sample.tex \
       		$(install_root)$(prefix)/share/doc/cct/.

	@echo 1>&2 "Installing TeX packages ..."
	@/bin/cp -pf $(ALL_TEX) $(install_root)$(prefix)/share/texmf/tex/cct
	@/bin/cp -pf cct.ist cctglo.ist \
		$(install_root)$(prefix)/share/texmf/makeindex/cct

	@echo 1>&2 "Installing the 'corners' font ..."
	@echo "corners corners <corners.pfb" >corners.map
	@for f in "tfm fonts/tfm/cct" "afm fonts/afm/cct" \
		  "pfb fonts/type1/cct" "ttf fonts/truetype/cct" \
		  "enc dvips/cct" "map dvips/cct"; do \
	    set -- $$f; \
	    mkdir -p $(install_root)$(prefix)/share/texmf/$$2; \
	    /bin/cp -p corners.$$1 $(install_root)$(prefix)/share/texmf/$$2; \
	done

# --- change '\' to '/', strip leading 'drive:' part
prefix_win32_ = `echo $(prefix_win32) | sed -e 's/\\\\/\\//g' -e 's/^.*://g'`
w32localtexmf = $(install_root_win32)$(prefix_win32_)/localtexmf
install_win32:
	@echo 1>&2 "Building WIN32 distribution ..."
	@echo 1>&2 "Compiling WIN32 binaries ..."
	@make prefix=$(prefix_win32) win32

	@echo 1>&2 "Installing in $(w32localtexmf)/cct/bin/ ..."
	@mkdir -p $(w32localtexmf)/cct/bin
	@/bin/cp -pf `echo $(ALL).exe | sed -e 's/ /.exe /g'` \
		$(w32localtexmf)/cct/bin
	@/bin/cp -pf cct.ini $(w32localtexmf)/cct/bin/cct.ini
	@echo "-H$(prefix_win32)\\localtexmf\\tex\\latex\\cct" \
	      "-T$(prefix_win32)\\localtexmf\\fonts\\tfm\\cct" \
		> $(w32localtexmf)/cct/bin/cctinit.ini

	@echo 1>&2 "Installing in" "$(w32localtexmf)/tex/latex/cct/ ..."
	@mkdir -p $(w32localtexmf)/tex/latex/cct/.
	@/bin/cp -pf $(ALL_TEX) $(w32localtexmf)/tex/latex/cct/.
	@/bin/mv -f $(w32localtexmf)/tex/latex/cct/cctspace.cfg \
		$(w32localtexmf)/cct/bin/.
	@/bin/mv -f $(w32localtexmf)/tex/latex/cct/cct.dat \
		$(w32localtexmf)/tex/latex/cct/cct.dat-dist

	@echo 1>&2 "Installing in $(w32localtexmf)/makeindex/cct/ ..."
	@mkdir -p $(w32localtexmf)/makeindex/cct
	@/bin/cp -pf cct.ist cctglo.ist $(w32localtexmf)/makeindex/cct

	@echo 1>&2 "Installing in $(w32localtexmf)/cct/doc/ ..."
	@mkdir -p $(w32localtexmf)/cct/doc/
	@/bin/cp -pf gbk2uni.tex cctmkind-sample.tex $(w32localtexmf)/cct/doc/.

	@echo 1>&2 "Installing the 'corners' font ..."
	@echo "corners corners <corners.pfb" >corners.map
	@for f in "tfm fonts/tfm/cct" "afm fonts/afm/cct" \
		  "pfb fonts/type1/cct" "ttf fonts/truetype/cct" \
		  "enc dvips/cct" "map dvips/cct"; do \
	    set -- $$f; \
	    mkdir -p $(w32localtexmf)/$$2; \
	    /bin/cp -p corners.$$1 $(w32localtexmf)/$$2; \
	done

	@#echo 1>&2 "Installing in $(w32localtexmf)/cct/src/ ..."
	@#mkdir -p $(w32localtexmf)/cct/src/
	@#/bin/cp -af `pwd` $(w32localtexmf)/cct/src/.
	@#(cd $(w32localtexmf)/cct/src/$${PWD##*/}; make -s clean)

dos: DOS
DOS: corners.pfb
	@#make -s clean
	@make CC="$(DOS_CC)" CFLAGS="$(DOS_CFLAGS)" LIBS="$(DOS_LIBS)" \
		prefix=$(prefix) OBJS="$(DOS_OBJS)" all
	dos-strip *.exe

win32: WIN32
WIN32: corners.pfb
	@#make -s clean
	@make CC="$(W32_CC)" CFLAGS="$(W32_CFLAGS)" LIBS="$(W32_LIBS)" \
		prefix=$(prefix) OBJS="$(W32_OBJS)" ALL="$(ALL)" all
	@sh -c 'for f in $(ALL); do mv $$f $${f}.exe; done'
	i386-mingw32-strip *.exe

corners: corners.pfb
corners.pfb: corners.sfd fontgen.pe
	@# This will create corners.tfm and corners.enc
	@./fontgen.pe corners
	@/bin/mv -f corners.tfm-hack corners.tfm

cct: cct.o fullpath.o
	$(CC) $(CFLAGS) -o cct cct.o fullpath.o

cctinit: cctinit.o fullpath.o
	$(CC) $(CFLAGS) -o cctinit cctinit.o fullpath.o

cctspace: cctspace.o $(OBJS)
	$(CC) $(CFLAGS) -o cctspace cctspace.o $(OBJS) $(LIBS)

fonttest: fontdrvc.c encoding.h
	$(CC) $(CFLAGS) -DTEST -o fonttest fontdrvc.c

patchdvi: patchdvi.o fontdrvc.o string-utils.o
	$(CC) $(CFLAGS) -o patchdvi patchdvi.o fontdrvc.o string-utils.o

patchdvi.o: patchdvi.c patchdvi.h
	$(CC) $(CFLAGS) -c patchdvi.c

cctmkind: cctmkind.o string-utils.o GBK-utils.o roman-number.o cctmkind-ist.o \
		$(OBJS)
	$(CC) $(CFLAGS) -o cctmkind cctmkind.o string-utils.o GBK-utils.o \
		roman-number.o cctmkind-ist.o $(OBJS) $(LIBS)

cctmkind.o: cctmkind.c cctmkind-ist.h cctmkind-specs.h
	$(CC) $(CFLAGS) -c cctmkind.c

cctmkind-ist.o: cctmkind-ist.c cctmkind-specs.h
	$(CC) $(CFLAGS) -c cctmkind-ist.c

# For testing
cctmkind-ist: cctmkind-ist.c cctmkind-specs.h $(OBJS)
	$(CC) $(CFLAGS) -DTEST -o cctmkind-ist cctmkind-ist.c $(OBJS) $(LIBS)

string-utils.o: string-utils.c string-utils.h
	$(CC) $(CFLAGS) -c string-utils.c

GBK-utils.o: GBK-utils.c GBK-utils.h GBK-pinyin.h GBK-strokes.h
	$(CC) $(CFLAGS) -c GBK-utils.c

bmf2pcx: bmf2img.c bmf2pcx.h bmf.inc proto.h
	$(CC) $(CFLAGS) -DIMGTYPE=1 -o bmf2pcx bmf2img.c

bmf2tif: bmf2img.c bmf2tif.h bmf.inc proto.h
	$(CC) $(CFLAGS) -DIMGTYPE=0 -o bmf2tif bmf2img.c

wedt-yap: wedt-yap.o fullpath.o
	$(CC) $(CFLAGS) -o wedt-yap wedt-yap.o fullpath.o

roman-number: roman-number.c
	$(CC) $(CFLAGS) -DTEST -o $@ $^

.c.o:
	$(CC) $(CFLAGS) -c $*.c

.c:
	$(CC) $(CFLAGS) -o $@ $*.c
