SHELL=/bin/sh

# Makefile for WordNet 2.0 grinder program "wn"

WN_ROOT = /usr/local/WordNet-2.0
WN_INSTALLDIR = $(WN_ROOT)/bin
WN_INCDIR = $(WN_ROOT)/include
WN_LIBDIR = $(WN_ROOT)/lib

CC = gcc
LOCAL_CFLAGS = -O -DUNIX
CFLAGS = -I$(WN_INCDIR) $(LOCAL_CFLAGS)
YFLAGS = -dl
# Need this flag for Linux
#LFLAGS = -l
LFLAGS = 
LDFLAGS= -L$(WN_LIBDIR)
LIBS = -ll -lwn

WN_FILES = grind
SRC = graux.c create.c files.c globals.c grind.c makedb.c resolve.c wnparse.y wnlex.l
OBJ = graux.o create.o files.o globals.o grind.o makedb.o resolve.o wnparse.o wnlex.o

all: $(WN_FILES)

wnparse.c:
	yacc $(YFLAGS) wnparse.y
	mv y.tab.c wnparse.c
	mv y.tab.h wnparse.h

wnlex.c wnlex.l:
	lex $(LFLAGS) wnlex.l
	mv lex.yy.c wnlex.c

grind: $(OBJ)
	$(CC) -o grind $(LDFLAGS) $(OBJ) $(LIBS)

install: $(WN_FILES)
	@if [ ! -d $(WN_INSTALLDIR) ] ; then \
		echo "Making directory $(WN_INSTALLDIR)" ; \
		mkdir -p $(WN_INSTALLDIR) ; \
		chmod 755 $(WN_INSTALLDIR) ; \
	fi ; 
	@for file in $(WN_FILES) ; \
	 do \
		filename=$(WN_INSTALLDIR)/$$file ; \
		if [ -f $$filename ] ; then \
			echo "Cannot install $$filename: file exists" ; \
		else \
			echo "Installing $$filename" ; \
			cp -p $$file $$filename ; \
			chmod 555 $$filename ; \
		fi ; \
	 done ;
	@echo "Done installing grinder in $(WN_INSTALLDIR)"

uninstall:
	@for file in $(WN_FILES) ; \
	 do \
		filename=$(WN_INSTALLDIR)/$$file ; \
		if [ ! -f $$filename ] ; then \
			echo "Cannot uninstall $$filename: not present" ; \
		else \
			echo "Uninstalling $$filename" ; \
			rm -f $$filename ; \
		fi ; \
	 done ;
	@echo "Done uninstalling grinder from $(WN_INSTALLDIR)"

clean:
	@rm -f $(OBJ) grind core *~ "#"*

veryclean: clean
	@rm wnlex.c wnparse.c

distclean: uninstall clean
