# Copyright (c) 1994 Sun Wu, Udi Manber, Burra Gopal.  All Rights Reserved.

# To compile for structured queries, make "all: Sall" and "STRUCTURED_QUERIES=1".
#STRUCTURED_QUERIES = 0
STRUCTURED_QUERIES = 1

#all:		NOTSall notswgconvert
all:		Sall wgconvert

# Define HAVE_DIRENT_H to be 1 when you don't have <sys/dir.h> else define it to be 0 (in this case, one of the other 3 flags may need to be defined to be 1).
HAVE_DIRENT_H	= 1
HAVE_SYS_DIR_H	= 0
HAVE_SYS_NDIR_H	= 0
HAVE_NDIR_H	= 0

# Define UTIME to be 1 if you have the utime() routine on your system. Else define it to be 0.
UTIME = 1

# Define ISO_CHAR_SET to be 1 if you want to use the international 8bit character set. Else define it to be 0.
ISO_CHAR_SET = 0

# You might have to change this depending on your machine configuration.
CC	      = gcc -traditional	#cc

SHELL = /bin/sh

# For compatibility with SFS, define this flag (internal only)
SFS_COMPAT	= 0

# YOU DON'T HAVE TO CHANGE ANYTHING BELOW THIS LINE

# The binaries will be made in ../bin/. and the agrep library is assumed to
# be in ../lib . You normally don't have to change them.
# NOTE: INDEXDIR can be a relative or absolute path name.
BINDIR		= ../bin
AGREPDIR	= ../agrep
INDEXDIR	= ../index
TEMPLATEDIR	= ../libtemplate
LIBAGREPDIR	= ../lib
LIBTEMPLATEDIR	= $(TEMPLATEDIR)/lib
LIBAGREP	= agrep
LIBTEMPLATE	= template
LIBUTIL		= util
OTHERLIBS	=

PROG		= glimpseindex
NOTSPROG	= nots$(PROG)
CASTPROG	= buildcast
NOTSCASTPROG	= nots$(CASTPROG)

# Include flags is not a part of CLFAGS and LINKFLAGS since path names from subdirs can be different
OPTIMIZEFLAGS	= -O
#PROFILEFLAGS	= -p
#DEBUGFLAGS	= -g -DBG_DEBUG=1 -DDEBUG=1
INCLUDEFLAGS	= -I$(INDEXDIR) -I$(AGREPDIR) -I$(TEMPLATEDIR)/include 
DEFINEFLAGS	= -DSTRUCTURED_QUERIES=$(STRUCTURED_QUERIES) -DHAVE_DIRENT_H=$(HAVE_DIRENT_H) -DHAVE_SYS_DIR_H=$(HAVE_SYS_DIR_H) \
		  -DHAVE_SYS_NDIR_H=$(HAVE_SYS_NDIR_H) -DHAVE_NDIR_H=$(HAVE_NDIR_H) -DUTIME=$(UTIME) -DISO_CHAR_SET=$(ISO_CHAR_SET) \
		  -DDONTUSESORT_T_OPTION=1 -DSFS_COMPAT=$(SFS_COMPAT)
SUBDIRCFLAGS	= -c $(DEFINEFLAGS) $(OPTIMIZEFLAGS) $(PROFILEFLAGS) $(DEBUGFLAGS)
CFLAGS		= $(INCLUDEFLAGS) $(SUBDIRCFLAGS)
SUBDIRLINKFLAGS	= $(PROFILEFLAGS)
LINKFLAGS	= $(INCLUDEFLAGS) $(SUBDIRLINKFLAGS)

TEST	      =	test
OBJS	      =	region.o \
		dir.o	\
		io.o\
		build_in.o		\
		filetype.o	\
		simpletest.o\
		getword.o	\
		memlook.o		\
		lib.o	\
		partition.o	

Sall:		$(CASTPROG) $(PROG)

NOTSall:	$(NOTSCASTPROG) $(NOTSPROG)

#$(TEST):	test.o $(LIBTEMPLATEDIR)/lib$(LIBTEMPLATE).a $(LIBTEMPLATEDIR)/lib$(LIBUTIL).a
#	$(CC) $(LINKFLAGS) -L$(LIBTEMPLATEDIR) -o $@ test.c -l$(LIBTEMPLATE) -l$(LIBUTIL) $(OTHERLIBS)

$(CASTPROG):	buildcast.o $(OBJS) $(LIBAGREPDIR)/lib$(LIBAGREP).a $(LIBTEMPLATEDIR)/lib$(LIBTEMPLATE).a $(LIBTEMPLATEDIR)/lib$(LIBUTIL).a
	$(CC) $(LINKFLAGS) -L$(LIBAGREPDIR) -L$(LIBTEMPLATEDIR) -o $(CASTPROG) buildcast.o $(OBJS) -l$(LIBAGREP) -l$(LIBTEMPLATE) -l$(LIBUTIL) $(OTHERLIBS)
	cp $(CASTPROG) $(BINDIR)/.

$(NOTSCASTPROG):	buildcast.o $(OBJS) $(LIBAGREPDIR)/lib$(LIBAGREP).a
	$(CC) $(LINKFLAGS) -L$(LIBAGREPDIR) -o $(CASTPROG) buildcast.o $(OBJS) -l$(LIBAGREP) $(OTHERLIBS)
	cp $(CASTPROG) $(BINDIR)/.

$(PROG):	glimpse.o $(OBJS) $(LIBAGREPDIR)/lib$(LIBAGREP).a $(LIBTEMPLATEDIR)/lib$(LIBTEMPLATE).a $(LIBTEMPLATEDIR)/lib$(LIBUTIL).a
	$(CC) $(LINKFLAGS) -L$(LIBAGREPDIR) -L$(LIBTEMPLATEDIR) -o $(PROG) glimpse.o $(OBJS) -l$(LIBAGREP) -l$(LIBTEMPLATE) -l$(LIBUTIL) $(OTHERLIBS)
	cp $(PROG) $(BINDIR)/.

$(NOTSPROG):	glimpse.o $(OBJS) $(LIBAGREPDIR)/lib$(LIBAGREP).a
	$(CC) $(LINKFLAGS) -L$(LIBAGREPDIR) -o $(PROG) glimpse.o $(OBJS) -l$(LIBAGREP) $(OTHERLIBS)
	cp $(PROG) $(BINDIR)/.

wgconvert:	convert.o io.o simpletest.o filetype.o region.o memlook.o getword.o $(LIBAGREPDIR)/lib$(LIBAGREP).a $(LIBTEMPLATEDIR)/lib$(LIBTEMPLATE).a $(LIBTEMPLATEDIR)/lib$(LIBUTIL).a
	$(CC) $(LINKFLAGS) -L$(LIBAGREPDIR) -L$(LIBTEMPLATEDIR) -o wgconvert convert.o io.o simpletest.o filetype.o region.o memlook.o getword.o -l$(LIBAGREP) -l$(LIBTEMPLATE) -l$(LIBUTIL) $(OTHERLIBS)
	cp wgconvert $(BINDIR)/.

notswgconvert:	convert.o io.o simpletest.o filetype.o region.o memlook.o getword.o $(LIBAGREPDIR)/lib$(LIBAGREP).a
	$(CC) $(LINKFLAGS) -L$(LIBAGREPDIR) -o wgconvert convert.o io.o simpletest.o filetype.o region.o memlook.o getword.o -l$(LIBAGREP) $(OTHERLIBS)
	cp wgconvert $(BINDIR)/.

$(LIBTEMPLATEDIR)/lib$(LIBTEMPLATE).a:
	cd $(TEMPLATEDIR) ; $(MAKE) CC="$(CC)" SUBDIRCFLAGS="$(SUBDIRCFLAGS)" SUBDIRLINKFLAGS="$(SUBDIRLINKFLAGS)" SHELL="$(SHELL)" HAVE_DIRENT_H="$(HAVE_DIRENT_H)" HAVE_SYS_DIR_H="$(HAVE_SYS_DIR_H)" HAVE_SYS_NDIR_H="$(HAVE_SYS_NDIR_H)" HAVE_NDIR_H="$(HAVE_NDIR_H)" UTIME="$(UTIME)" STRUCTURED_QUERIES="$(STRUCTURED_QUERIES)" ISO_CHAR_SET="$(ISO_CHAR_SET)" SFS_COMPAT="$(SFS_COMPAT)"

$(LIBTEMPLATEDIR)/lib$(LIBUTIL).a:
	cd $(TEMPLATEDIR) ; $(MAKE) CC="$(CC)" SUBDIRCFLAGS="$(SUBDIRCFLAGS)" SUBDIRLINKFLAGS="$(SUBDIRLINKFLAGS)" SHELL="$(SHELL)" HAVE_DIRENT_H="$(HAVE_DIRENT_H)" HAVE_SYS_DIR_H="$(HAVE_SYS_DIR_H)" HAVE_SYS_NDIR_H="$(HAVE_SYS_NDIR_H)" HAVE_NDIR_H="$(HAVE_NDIR_H)" UTIME="$(UTIME)" STRUCTURED_QUERIES="$(STRUCTURED_QUERIES)" ISO_CHAR_SET="$(ISO_CHAR_SET)" SFS_COMPAT="$(SFS_COMPAT)"

$(LIBAGREPDIR)/lib$(LIBAGREP).a:
	cd $(AGREPDIR) ; $(MAKE) CC="$(CC)" SUBDIRCFLAGS="$(SUBDIRCFLAGS)" SUBDIRLINKFLAGS="$(SUBDIRLINKFLAGS)" SHELL="$(SHELL)" HAVE_DIRENT_H="$(HAVE_DIRENT_H)" HAVE_SYS_DIR_H="$(HAVE_SYS_DIR_H)" HAVE_SYS_NDIR_H="$(HAVE_SYS_NDIR_H)" HAVE_NDIR_H="$(HAVE_NDIR_H)" UTIME="$(UTIME)" STRUCTURED_QUERIES="$(STRUCTURED_QUERIES)" ISO_CHAR_SET="$(ISO_CHAR_SET)" SFS_COMPAT="$(SFS_COMPAT)"

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

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

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

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

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

glimpse.o: glimpse.c glimpse.h region.h
	$(CC) -c $(CFLAGS) -DBUILDCAST=0 glimpse.c

buildcast.o: glimpse.c glimpse.h region.h
	cp glimpse.c buildcast.c
	$(CC) -c $(CFLAGS) -DBUILDCAST=1 -o buildcast.o buildcast.c

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

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

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

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

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

clean:
	-rm -f $(OBJS) glimpse.o convert.o buildcast.o buildcast.c core a.out $(PROG) $(CASTPROG) wgconvert

$(OBJS): glimpse.h region.h

