
#*****************************************************************************
# FILE           : $Source: /usr/local/bv/SNNS/SNNSv4.1/configuration/RCS/toolstuff,v $
# SHORTNAME      : Makefile body
# SNNS VERSION   : 4.1
#
# PURPOSE        : Body of the SNNS tools Makefile
# NOTES          : Do not change Makefiles manually
#
# AUTHOR         : Michael Vogt
# DATE           : 25.4.94
#
# CHANGED BY     : 
# IDENTIFICATION : $State: Exp $ $Locker:  $
# RCS VERSION    : $Revision: 2.13 $
# LAST CHANGE    : $Date: 1995/08/24 11:41:45 $
#
#            Copyright (c) 1990-1995  SNNS Group, IPVR, Univ. Stuttgart, FRG
#
#*****************************************************************************

TOOLSBINDIR	= $(SNNSDIR)/tools/bin/$(MACHINENAME)
KERNELLIBDIR	= $(SNNSDIR)/kernel/bin/$(MACHINENAME)
KERNELSOURCES	= $(SNNSDIR)/kernel/sources

# -- C-Compiler Configuration --

CC              = $(COMPILER)
CPPFLAGS        = -I$(KERNELSOURCES)
CFLAGS          = $(CDEBUG) $(CCFLAGS) $(FPOPTIONS) $(CPPFLAGS)
CDEPFLG         = -MM

# -- Archive Configuration --

CP		= cp
PATHDEL		= /
AR              = ar
ARFLAGS 	= rc
RANLIB          = $(RLIB)

# -- Libraries --

LIBKERNEL	= $(KERNELLIBDIR)/libkernel.a $(KERNELLIBDIR)/libfunc.a

# -- Source files --
#
# important notes:
#
# NO_LIB_SOURCE:  each .c file produces one executable program
# USE_LIB_SOURCE: each .c file produces one executable program with 
#                 linked kernel libraries
# SNNS2C_SOURCE:  all .c files together produce one single program (snns2c) 
#                 with linked kernel libraries
#

default: snns2c netlearn bignet netperf snnsbat feedback-gennet convert2snns \
	isnns analyze pat_sel mkhead mkout mkpat batchman


#
# -- snns2c sources --
#

snns2c.o: snns2c.c templates.h functions.h snns2clib.h
	$(CC) -c snns2c.c $(CFLAGS)

snns2clib.o: snns2clib.c templates.h functions.h snns2clib.h
	$(CC) -c snns2clib.c $(CFLAGS)

snns2c: snns2c.o snns2clib.o
	$(CC) snns2c.o snns2clib.o $(LIBKERNEL) -lm $(LEXLIB) -o snns2c


# -- single programs --

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

netlearn: netlearn.o
	$(CC) netlearn.o $(LIBKERNEL) -lm $(LEXLIB) -o netlearn

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

bignet: bignet.o
	$(CC) bignet.o $(LIBKERNEL) -lm $(LEXLIB) -o bignet

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

netperf: netperf.o
	$(CC) netperf.o $(LIBKERNEL) -lm $(LEXLIB) -o netperf

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

snnsbat: snnsbat.o
	$(CC) snnsbat.o $(LIBKERNEL) -lm $(LEXLIB) -o snnsbat

feedback-gennet.o: feedback-gennet.c
	$(CC) feedback-gennet.c -c $(CFLAGS)

feedback-gennet: feedback-gennet.o
	$(CC) feedback-gennet.o $(LIBKERNEL) -lm $(LEXLIB) -o feedback-gennet

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

convert2snns: convert2snns.o
	$(CC) convert2snns.o $(LIBKERNEL) -lm $(LEXLIB) -o convert2snns

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

isnns: isnns.o
	$(CC) isnns.o $(LIBKERNEL) -lm $(LEXLIB) -o isnns

analyze: analyze.c
	$(CC) analyze.c $(CFLAGS) -lm -o analyze

pat_sel: pat_sel.c
	$(CC) pat_sel.c $(CFLAGS) -lm -o pat_sel

mkhead: mkhead.c
	$(CC) mkhead.c $(CFLAGS) -lm -o mkhead

mkout: mkout.c
	$(CC) mkout.c $(CFLAFS) -lm -o mkout

mkpat: mkpat.c
	$(CC) mkpat.c $(CFLAGS) -lm -o mkpat

#
# -- batchman sources --
#

lex.yyz.c: scan1.l
	$(LEX) -Pyyz scan1.l

lex.yyz.o: lex.yyz.c symtab.h ictab.h backpatch.h gram1.tab.h error.h batchman.h
	$(CC) $(CFLAGS) -c lex.yyz.c

lex.yyy.c: scan2.l
	$(LEX) -Pyyy scan2.l

lex.yyy.o: lex.yyy.c symtab.h error.h
	$(CC) $(CFLAGS) -c lex.yyy.c

gram1.tab.c: gram1.y
	bison --debug -v -p yyz -d -t gram1.y

gram1.tab.o: gram1.tab.c gram1.tab.h symtab.h ictab.h icopjmp.h backpatch.h arglist.h error.h
	$(CC) $(CFLAGS) -c gram1.tab.c

symtab.o: symtab.c symtab.ph arglist.h special_jacket.h snns_intfce.h \
	error.h memory.h
	$(CC) $(OPTIONS) $(CFLAGS) -c symtab.c

ictab.o: ictab.c ictab.ph symtab.h error.h memory.h
	$(CC) $(OPTIONS) $(CFLAGS) -c ictab.c

icopjmp.o: icopjmp.c icopjmp.ph symtab.h ictab.h error.h 
	$(CC) $(OPTIONS) $(CFLAGS) -c icopjmp.c

ic_snns.o: ic_snns.c ic_snns.ph symtab.h batchman.h ictab.h error.h 
	$(CC) $(OPTIONS) $(CFLAGS) -I$(SNNSDIR)/xgui/sources \
	-I$(XH) -c ic_snns.c

arglist.o: arglist.c arglist.ph symtab.h ictab.h error.h 
	$(CC) $(OPTIONS) $(CFLAGS) -c arglist.c

error.o: error.c error.ph symtab.h ictab.h batchman.h 
	$(CC) $(OPTIONS) $(CFLAGS) -c error.c

backpatch.o: backpatch.c backpatch.ph symtab.h ictab.h error.h
	$(CC) $(OPTIONS) $(CFLAGS) -c backpatch.c

memory.o: memory.c memory.ph symtab.h ictab.h error.h
	$(CC) $(OPTIONS) $(CFLAGS) -c memory.c

snns_intfce.o: snns_intfce.c snns_intfce.ph symtab.h ic_snns.h
	$(CC) $(OPTIONS) $(CFLAGS) -c snns_intfce.c

special_jacket.o: special_jacket.c special_jacket.ph symtab.h batchman.h \
	ictab.h error.h scan2.h
	$(CC) $(OPTIONS) $(CFLAGS) -c special_jacket.c

batchman.o: batchman.c batchman.ph symtab.h ictab.h scan1.h
	$(CC) $(OPTIONS) $(CFLAGS) -c batchman.c

batchman: batchman.o gram1.tab.o lex.yyz.o icopjmp.o ictab.o symtab.o \
	backpatch.o memory.o ic_snns.o error.o arglist.o snns_intfce.o \
	special_jacket.o lex.yyy.o
	$(CC) batchman.o gram1.tab.o lex.yyz.o icopjmp.o ictab.o symtab.o \
	backpatch.o memory.o ic_snns.o error.o arglist.o snns_intfce.o \
	special_jacket.o lex.yyy.o -L$(KERNELLIBDIR) -lkernel -lfunc -lm \
	$(LEXLIB) -o batchman

# -- Rules --

all: snns2c netlearn bignet netperf snnsbat feedback-gennet convert2snns \
	isnns analyze pat_sel mkhead mkout mkpat batchman

install: snns2c netlearn bignet netperf snnsbat feedback-gennet convert2snns \
	isnns analyze pat_sel mkhead mkout mkpat batchman
	$(CP) snns2c netlearn bignet netperf snnsbat feedback-gennet \
	 convert2snns isnns analyze pat_sel mkhead mkout mkpat\
	 batchman $(TOOLSBINDIR) 

list:
	cat $(SOURCES) > toolssrc.all

clean:
	/bin/rm -f *.o

