#*****************************************************************************
#  FILE     : Makefile
#  SHORTNAME: Makefile

#  PURPOSE  : Makefile for SNNS kernel, user interface or Nessus compiler
#  NOTES    : Don't change this file manually!!!!
#           : it is generated automatically from configure script

#  AUTHOR   : Tilman Sommer, Niels Mache, Thomas Korb, Ralf Huebner
#  DATE     : 17.12.1991

#             (c) 1990-92 by SNNS-Group
#             Institut fuer parallele und verteilte Hoechstleistungsrechner
#             Universitaet Stuttgart
#*****************************************************************************






# Created by vogt at Wed Sep 23 18:00:50 MET DST 1992

# -- SNNS  Installation  Directories  &  Libraries --
SNNSDIR = /usr/local/bv/SNNSv2.1.distr
MACHINE = sun4
CCFLAGS = -O4
FPOPTIONS = -fsingle
MACHINENAME= sparc
XDIR = /usr/local/X11R5/lib
XH = /usr/local/X11R5/include
KERNELBINDIR	= $(SNNSDIR)/kernel/bin/$(MACHINENAME)
KERNELDEMODIR	= $(SNNSDIR)/kernel/bin/$(MACHINENAME)
KERNELLIBDIR	= $(SNNSDIR)/kernel/bin/$(MACHINENAME)


# -- C-Compiler Configuration --

CC = cc
CFLAGS = $(CCFLAGS) $(FPOPTIONS)

# -- Archive Configuration --

AR              = ar
ARFLAGS 	= rc
RANLIB          = ranlib

# -- Libraries --

LIBKERNEL	= libkernel.a
LIBFUNCS	= libfunc.a

# -- Source files --

DEMOSOURCE	= netlearn.c\
		netperf.c snnsbat.c

UTILIY_SOURCE	= make_tbl.c calc_err.c

SOURCES 	= func_mac.h func_tbl.c glob_typ.h init_f.c\
		kernel.c kernel.h kr_const.h kr_def.h kr_funcs.c\
		kr_funcs.h kr_io.c kr_io.h kr_mac.h kr_mem.c kr_mem.h\
		kr_typ.h kr_ui.c kr_ui.h krui_typ.h learn_f.c\
		netperf.c version.h random.h snnsbat.c strdup.c\
		trans_f.c update_f.c tbl_func.c sigmoid.tbl\
                kr_inversion.h kr_inversion.c matrix.h matrix.c ext_typ.h\
		$(DEMOSOURCE) $(UTILIY_SOURCE)

# -- Object files --

KERNELOBJECTS	= kr_mem.o kernel.o kr_ui.o kr_io.o kr_inversion.o
USR_FUNC_OBJECTS= kr_funcs.o trans_f.o update_f.o init_f.o learn_f.o tbl_func.o\
		func_tbl.o matrix.o
DEMOOBJECTS	= $(DEMOSOURCE:.c=.o)

# -- Demo programs  --
KERNELDEMO	= $(DEMOSOURCE:.c=)



# Rules

.KEEP_STATE:

default:  $(LIBKERNEL) $(LIBFUNCS)

$(LIBKERNEL): $(KERNELOBJECTS)
	$(AR) $(ARFLAGS) $(LIBKERNEL) $(KERNELOBJECTS)
	$(RANLIB) $(LIBKERNEL)

$(LIBFUNCS): $(USR_FUNC_OBJECTS)
	$(AR) $(ARFLAGS) $(LIBFUNCS) $(USR_FUNC_OBJECTS)
	$(RANLIB) $(LIBFUNCS)

$(KERNELDEMO): $(LIBKERNEL) $(LIBFUNCS) $(DEMOOBJECTS)
	$(CC) $@.o $(LIBKERNEL) $(LIBFUNCS) -lm -o $@

demo:	$(KERNELDEMO)

all:	$(KERNELDEMO)

install:
	strip $(KERNELDEMO)
	cp $(KERNELDEMO) $(KERNELBINDIR)
	cp $(LIBKERNEL) $(KERNELLIBDIR)
	cp $(LIBFUNCS) $(KERNELLIBDIR)
	cp $(KERNELDEMO) $(KERNELDEMODIR)
	$(RANLIB) $(KERNELLIBDIR)/$(LIBKERNEL)
	$(RANLIB) $(KERNELLIBDIR)/$(LIBFUNCS)
# because of checking of timestamps this is neccessary !

list:
	cat $(SOURCES) > kernelsrc.all

clean:
	/bin/rm -f $(KERNELOBJECTS) $(USR_FUNC_OBJECTS) $(DEMOOBJECTS) \
	$(LIBKERNEL) $(LIBFUNCS) $(KERNELDEMO)

tarfile:
	tar cvf kernel.tar $(SOURCES) Makefile*
	compress kernel.tar


# Dependencies

kr_funcs.o: kr_typ.h glob_typ.h kr_def.h kr_funcs.h

trans_f.o : kr_typ.h glob_typ.h kr_def.h func_mac.h

update_f.o: kr_typ.h glob_typ.h kr_def.h kr_mac.h kr_const.h kernel.h kr_mem.h\
	random.h

init_f.o  : kr_typ.h glob_typ.h kr_def.h kr_mac.h kr_const.h random.h

learn_f.o : kr_typ.h glob_typ.h kr_def.h kr_mac.h kr_const.h kernel.h

tbl_func.o: kr_typ.h glob_typ.h kr_def.h func_mac.h sigmoid.tbl

func_tbl.o: kr_typ.h glob_typ.h kr_def.h

kr_mem.o  : kr_typ.h kr_const.h kr_def.h kr_mem.h strdup.c glob_typ.h\
	kr_mac.h

kernel.o  : kr_typ.h kr_const.h kr_def.h random.h kernel.h kr_mem.h\
	kr_funcs.h glob_typ.h kr_mac.h

kr_ui.o   : kr_typ.h kr_const.h kr_io.h random.h kr_ui.h kr_funcs.h\
	kr_mem.h kernel.h glob_typ.h version.h kr_mac.h

kr_io.o   : kr_typ.h kr_const.h kr_def.h kr_ui.h kernel.h kr_mem.h\
	kr_io.h glob_typ.h version.h

matrix.o  : glob_typ.h matrix.h
