#
#	Makefile for ChaSen
#
#	by k-chinen@is.aist-nara.ac.jp, Jun. 1994
#	last modified by akira-k@is.aist-nara.ac.jp, Sep. 1996
#
# Note:
#	you must execute make in ChaSen's top directory.
#

# --- commands & flags
CC	 = gcc
CFLAGS	 = -O2
CCOUT    = 
LDFLAGS  =
RM       = rm -f
CP       = cp
RANLIB   = `cat ../ranlibcmd`

# --- installation files and directories
CHASEN = chasen
BINDIR = /usr/local/bin
LIBDIR = /usr/local/lib/chasen
MKDICDIR = $(LIBDIR)/mkchadic
DICDIR = $(LIBDIR)/dic

# --- user definitions
#NO_MMAP = -DNO_MMAP        # your OS does not have mmap()
#CHASEN_PORT = -DCHASEN_PORT=31000

VGRAM   = -DVGRAM          # variable-gram support
#KOCHA   = -DKOCHA2 -DVGRAM # Korean language version
#SJIS	 = -DSJIS

RCPATH   = $(DICDIR)/chasenrc
SYSVER   = 2.01
DICNAME  = ipadic
DICVER   = 2.0
CONFIG_H = lib/config.h
PROTTEST = ./prottest.sh
NETLIBS = `cat ../netlibs`
SHELL    = /bin/sh
DEFS     = $(KOCHA) $(VGRAM) $(SJIS) $(NO_MMAP)
MAKE     = make
MFLAGS   = CC="$(CC)" CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" RM="$(RM)" \
	   YACC="$(YACC)" CHASEN="$(CHASEN)" CCOUT="$(CCOUT)" \
	   NETLIBS="$(NETLIBS)" CHASEN_PORT="$(CHASEN_PORT)" \
	   RANLIB="$(RANLIB)"

all: $(CONFIG_H) netlibs ranlibcmd chasen

win:
	nmake MAKE="nmake" CC="cl" RANLIB="ranlib" CCOUT="-Fo$@" SJIS=-DSJIS NO_MMAP=-DNO_MMAP PROTTEST="echo" NETLIBS="wsock32.lib" config.win chasen.win

$(CONFIG_H): Makefile
	echo '#define RCPATH "$(RCPATH)"' > $(CONFIG_H)
	echo '#define VERSION "$(SYSVER)"' >> $(CONFIG_H)
	$(PROTTEST) "$(CC)" "$(RM)" $(CONFIG_H)

config.win:
	echo #define RCPATH "$(RCPATH)" > $(CONFIG_H)
	echo #define VERSION "$(SYSVER)" >> $(CONFIG_H)

netlibs: Makefile
	./chklibs.sh "$(CC)" "$(RM)" nsl socket > netlibs

ranlibcmd: Makefile
	./mkranlib.sh > ranlibcmd

vgram:
	$(MAKE) VGRAM=-DVGRAM

bigram:
	$(MAKE) VGRAM=

chasen::
	cd lib;      $(MAKE) $(MFLAGS) DEFS="$(DEFS)"
	cd mkchadic; $(MAKE) $(MFLAGS) DEFS="$(DEFS)"
	cd chasen;   $(MAKE) $(MFLAGS) DEFS="$(DEFS)"

chasen.win::
	cd lib
	$(MAKE) $(MFLAGS) DEFS="$(DEFS)" win
	cd ..\mkchadic
	$(MAKE) $(MFLAGS) DEFS="$(DEFS)" win
	cd ..\chasen
	$(MAKE) $(MFLAGS) DEFS="$(DEFS)" win
	cd ..

dic::
	cd dic;      $(MAKE) $(MFLAGS)

dic.win::
	cd dic
	$(MAKE) $(MFLAGS)
	cd ..

install:
	-mkdir -p $(LIBDIR)
	@if [ -f $(RCPATH) ]; then \
	  echo "$(RM) $(RCPATH)"; \
	  $(RM) $(RCPATH); fi
	cd chasen;   $(MAKE) CP="$(CP)" BINDIR="$(BINDIR)" install
	cd mkchadic; $(MAKE) CP="$(CP)" MKDICDIR="$(MKDICDIR)" install
	cd dic;      $(MAKE) CP="$(CP)" LIBDIR="$(LIBDIR)" MKDICDIR="$(MKDICDIR)" DICDIR="$(DICDIR)" install

clean:
	$(RM) $(CONFIG_H) netlibs ranlibcmd
	cd lib;      $(MAKE) RM="$(RM)" clean
	cd mkchadic; $(MAKE) RM="$(RM)" clean
	cd chasen;   $(MAKE) RM="$(RM)" clean

# for debug
sjis:
	qkc -s lib/chadic.h
	$(MAKE) SJIS=-DSJIS
	cp chasen/chasen chasen/chasen.sjis
	qkc -e lib/chadic.h

SYSFILES = Makefile README README.jp CHANGES prottest.sh \
	chklibs.sh chasen/Makefile chasen/*.[ch] chasen/chasen.el \
	lib/Makefile mkranlib.sh lib/*.[ch] \
	mkchadic/Makefile mkchadic/*.[ch] \
        prolog perl dic/Makefile dic/chasenrc \
	doc/*.tex doc/*.pdf
# doc/*.eps doc/tech/*.tex doc/tech/*.eps
DICFILES = dic/*.cha dic/*.dic dic/CHANGES dic/README.jp \
	dic/chasenrc dic/Makefile
WINFILES = README.txt Makefile.WIN chasen/Makefile.WIN lib/Makefile.WIN \
	mkchadic/Makefile.WIN wincha/*
LZHTMP = chasen.lzh.tmp

tar:
	$(RM) lib/config.h
	mkdir $(CHASEN)-$(SYSVER)
	-/usr/local/bin/cp -Ppr $(SYSFILES) $(DICFILES) $(CHASEN)-$(SYSVER)
	/usr/local/bin/tar czf $(CHASEN)-sys$(SYSVER)-$(DICNAME)$(DICVER).tar.gz $(CHASEN)-$(SYSVER)
	rm -rf $(CHASEN)-$(SYSVER)

tar.sys:
	$(RM) lib/config.h
	mkdir $(CHASEN)-$(SYSVER)
	-/usr/local/bin/cp -Ppr $(SYSFILES) $(CHASEN)-$(SYSVER)
	/usr/local/bin/tar czf $(CHASEN)-sys$(SYSVER).tar.gz $(CHASEN)-$(SYSVER)
	rm -rf $(CHASEN)-$(SYSVER)

tar.dic:
	tar cf $(CHASEN)-$(DICNAME)$(DICVER).tar $(DICFILES)

tar.src:
	tar cf $(CHASEN)-`date +%y%m%d`.src.tar $(SYSFILES) \
	CHANGES.memo

lzh.src:
	-mkdir $(LZHTMP)
	tar cf - $(SYSFILES) $(WINFILES) | tar xf - -C $(LZHTMP)
	(cd $(LZHTMP); \
	bison -y mkchadic/transdic.y; \
	mv y.tab.c mkchadic/transdic.c; \
	qkc -ms * */* */*/*.tech; \
	lha a $(CHASEN)-`date +%y%m%d`.lzh $(SYSFILES) $(WINFILES) mkchadic/transdic.c)
	mv $(LZHTMP)/($CHASEN)-`date +%y%m%d`.lzh .
	rm -rf $(LZHTMP)
