# Makefile
# ex.  > make PLATFORM_BITS=64
#

ifeq ($(OS),Windows_NT)
    UNAME := Windows
else
    UNAME := $(shell uname -s)
endif

NAME = mecab
DATE_TAG:=`date +%Y%m%d`

ifeq ($(AZ_PACKAGING),true)
INST_PREFIX = /usr
else
INST_PREFIX = /usr/local
endif

ifeq ($(UNAME),Darwin)
	CCOPT = -I.   -I$(INST_PREFIX)/include -fno-strict-aliasing
	SOEXT := dylib
	OPT_SOLINK := -dynamiclib -Wl,-undefined -Wl,dynamic_lookup
else
	CCOPT = -I.   -I$(INST_PREFIX)/include
	SOEXT := so
	OPT_SOLINK := -shared -dynamiclib
endif

LDOPT =  -L$(INST_PREFIX)/lib
CFLAGS = -Wall -O2 $(CCOPT) -DAZMECAB_ENC_UTF8

AZ_CCOPT = -Wall -O2 $(CCOPT) -DAZMECAB_ENC_UTF8
AZPC_LIBS = mecab
AZPC_OBJS = aze_cenc.o aze_api.o  -L$(INST_PREFIX)/lib
AZ_LIB_EXT = $(INST_PREFIX)/lib/azprolog/ext
AZ_LIB_OBJ = $(INST_PREFIX)/lib/azprolog/obj

EXEC_TARGETS = azcabocha azmecab mecab

default: mecab.$(SOEXT) lib_mecab.a

mecab: mecab_userfile.c
	$(CC) $(CFLAGS) -c $<
	$(CC) -o $@ mecab_userfile.o $(AZ_LIB_OBJ)/azpi.o $(AZ_LIB_OBJ)/curses.o -L$(AZ_LIB_EXT) -lazp -l_mecab -lmecab -lcurses -lm -ldl

mecab.$(SOEXT): mecab.c aze_cenc.c aze_api.c
	$(CC) $(CFLAGS) -fPIC -o mecab.o    -c mecab.c
	$(CC) $(CFLAGS) -fPIC -o aze_cenc.o -c aze_cenc.c
	$(CC) $(CFLAGS) -fPIC -o aze_api.o  -c aze_api.c
	$(CC) $(OPT_SOLINK) -o $@ mecab.o aze_cenc.o aze_api.o $(LDOPT) -lmecab
	chmod 644 $@
	rm -f *.o

lib_mecab.a: mecab.c aze_cenc.c aze_api.c
	$(CC) $(CFLAGS) -o mecab.o    -c mecab.c
	$(CC) $(CFLAGS) -o aze_cenc.o -c aze_cenc.c
	$(CC) $(CFLAGS) -o aze_api.o  -c aze_api.c
	ar rv $@ mecab.o
	ar rv $@ aze_cenc.o
	ar rv $@ aze_api.o
	ranlib $@
	rm -f *.o

cabocha.$(SOEXT): cabocha.c mecab.c aze_cenc.c aze_api.c
	$(CC) $(CFLAGS) -fPIC -o cabocha.o  -c cabocha.c
	$(CC) $(CFLAGS) -fPIC -o mecab.o    -c mecab.c
	$(CC) $(CFLAGS) -fPIC -o aze_cenc.o -c aze_cenc.c
	$(CC) $(CFLAGS) -fPIC -o aze_api.o  -c aze_api.c
	$(CC) $(OPT_SOLINK) -o $@ cabocha.o mecab.o aze_cenc.o aze_api.o $(LDOPT) -lcabocha -lmecab
	chmod 644 $@

lib_cabocha.a: cabocha.c mecab.c aze_cenc.c aze_api.c
	$(CC) $(CFLAGS) -o cabocha.o  -c cabocha.c
	$(CC) $(CFLAGS) -o mecab.o    -c mecab.c
	$(CC) $(CFLAGS) -o aze_cenc.o -c aze_cenc.c
	$(CC) $(CFLAGS) -o aze_api.o  -c aze_api.c
	ar rv $@ cabocha.o
	ar rv $@ mecab.o
	ar rv $@ aze_cenc.o
	ar rv $@ aze_api.o
	ranlib $@
	rm -f *.o

azcabocha: cabocha.c mecab.c aze_cenc.o aze_api.o
	azpc -p cabocha.c mecab.c /i /e $@ /curses  /ccopt "$(AZ_CCOPT)"  /link_opt2 "$(AZPC_OBJS) -lcabocha -lmecab"
	rm -f *.o

azmecab: mecab.c aze_cenc.o aze_api.o
	azpc -p $< /i /e $@ /curses  /ccopt "$(AZ_CCOPT)"  /link_opt2 "$(AZPC_OBJS)" /lib $(AZPC_LIBS)
	rm -f *.o

aze_api.o: aze_api.c aze_api.h

aze_cenc.o: aze_cenc.c aze_api.h

install:
	cp -p mecab.$(SOEXT) lib_mecab.a $(AZ_LIB_EXT)

clean:
	rm -f *~ .*~ *.o mkaz userfile.c $(EXEC_TARGETS) *.$(SOEXT) *.a

tar:
	cd ..; tar -cvf $(NAME)-$(DATE_TAG).tar $(NAME)
	gzip ../$(NAME)-$(DATE_TAG).tar
