SOURCE1=datablk.m itemasso.m iterator.m wobject.m
SOURCE2=linebuff.m idxcoltn.m starasso.m stack.m
SOURCE3=objlist.m string.m diction.m llistobj.m
SOURCE4=parser.c lexer.m starpasr.m listofiv.m
SOURCE5=llistdic.m
SOURCE=${SOURCE1} ${SOURCE2} ${SOURCE3} ${SOURCE4} ${SOURCE5} 

OBJS1=datablk.o itemasso.o iterator.o wobject.o
OBJS2=linebuff.o idxcoltn.o starasso.o stack.o
OBJS3=objlist.o string.o diction.o llistobj.o
OBJS4=parser.o lexer.o starpasr.o listofiv.o
OBJS5=llistdic.o
OBJS=${OBJS1} ${OBJS2} ${OBJS3} ${OBJS4} ${OBJS5}  # this is for unix.

# setup directories.

# you need to chang this to your star root directory
STARROOT=${HOME}/weider/ddl1.x

SRCDIR=./..
BINDIR=${STARROOT}/bin
LIBDIR=${STARROOT}/lib

# setup compiler environment.

LIBRARY_DIRS=-L${LIBDIR} -L/usr/local/apps/flex/lib
INCLUDE_DIRS=-I${SRCDIR} 
GCC_CFLAGS= ${LIBRARY_DIRS}
GCC=gcc -g ${INCLUDE_DIRS}
LIBS= -lcif -lcoll -lobjc -lfl
DEPENDFILE=_depend
MAKEDEPEND=makedepend

# setup library environment.

AR=ar
ARFLAGS=rc
RANLIB=ranlib

# suffixe rules

.SUFFIXES: .o .m .c .cc
.m.o: 
	${GCC} -c -fgnu-runtime  $<
	${AR} ${ARFLAGS} ${LIBDIR}/libcif.a $*.o
	${RANLIB} ${LIBDIR}/libcif.a
.c.o: 
	${GCC} -c $<
	${AR} ${ARFLAGS} ${LIBDIR}/libcif.a $*.o
	${RANLIB} ${LIBDIR}/libcif.a

# dependency

all: ${BINDIR}/parser ${BINDIR}/stargrep ${BINDIR}/startuple

${BINDIR}/parser: pasrmain.m ${OBJS}
	${GCC} -o $@ ${LIBRARY_DIRS} pasrmain.m ${LIBS}

${BINDIR}/stargrep: stargrep.m ${OBJS}
	${GCC} -o $@ ${LIBRARY_DIRS} stargrep.m ${LIBS}

${BINDIR}/startuple: startuple.m ${OBJS}
	${GCC} -o $@ ${LIBRARY_DIRS} startuple.m ${LIBS}

${LIBDIR}/libcif.a: ${OBJS}
	${AR} ${ARFLAGS} $@ ${OBJS1}
	${AR} ${ARFLAGS} $@ ${OBJS2}
	${AR} ${ARFLAGS} $@ ${OBJS3}
	${AR} ${ARFLAGS} $@ ${OBJS4}
	${AR} ${ARFLAGS} $@ ${OBJS5}
	${RANLIB} $@
	
lexer.m: lexer.lex parser.c
	flex -t lexer.lex > $@

parser.o: parser.c
	${GCC} -c -x objective-c parser.c	
	${AR} ${ARFLAGS} ${LIBDIR}/libcif.a parser.o
	
parser.c: parser.yac
	bison -d -o parser.c parser.yac

depend:
	${MAKEDEPEND} ${SOURCE}

makefile: basic.mk
	cp basic.mk $@
	echo 'backup:' >>$@
	echo '	cp -r ${STRUCDIR} /pb1/weider/cif/ciflib/src/struc' >> $@
	echo '' >> $@
	echo 'clean:' >> $@
	echo '	rm *~ *.o core' >> $@
	echo '' >> $@
	echo '# Dependencies' >> $@
	echo '# DO NOT DELETE THIS LINE -- make depend depends on it.' >> $@
	${GCC} -M ${SOURCE} >> $@
	
makefiledos: basic.mk
	copy basic.mk makefile
	echo backup: >> makefile
	echo 	replace *.* a:\src\struc /u>> makefile
	echo 	replace *.* a:\src\struc /a>> makefile
	echo # >>makefile
	echo clean: >> makefile
	echo 	del *.??~ >> makefile
	echo 	del *.?~ >> makefile
	echo 	del *.~ >> makefile
	echo 	del *.o >> makefile
	echo # >> makefile
	echo # >> makefile
	echo # DO NOT DELETE THIS LINE -- make depend depends on it.>> makefile
	echo # Dependencies >> makefile
	${GCC} -M ${SOURCE1} >> makefile
	${GCC} -M ${SOURCE2} >> makefile
	${GCC} -M ${SOURCE3} >> makefile
	${GCC} -M ${SOURCE4} >> makefile
	${GCC} -M ${SOURCE5} >> makefile
