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

#  PURPOSE  : Makefile for SNNS v 3.0 kernel or  user interface

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

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






# Created by huebner at Tue Mar 16 15:23:09 MET 1993

# -- SNNS  Installation  Directories  &  Libraries --
SNNSDIR = /usr/SNNSv3.0
MACHINE = sun4
MACHINENAME= sparc
COMPILER = gcc
CCFLAGS = -O4 -ansi
FPOPTIONS = 
XDIR = /usr/lib
XH = /usr/include
KERNELBINDIR	= $(SNNSDIR)/kernel/bin/$(MACHINENAME)
KERNELDEMODIR	= $(SNNSDIR)/kernel/bin/$(MACHINENAME)
KERNELLIBDIR	= $(SNNSDIR)/kernel/bin/$(MACHINENAME)


# -- C-Compiler Configuration --

CC = $(COMPILER)
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

M_ART_SOURCE	= m_art.c
M_ART_MOD_SRC   = m_art1.c m_art2.c m_artmap.c
ART_SOURCE	= $(M_ART_SOURCE) $(M_ART_MOD_SRC)


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\
		strdup.c strdup.h kr_td.c kr_td.h\
		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\
		kr_art.h krart_df.h\
		kr_art.c art_typ.h art_ui.c art_ui.h arttr_f.c\
                kr_art1.c kr_art1.h kr_art2.c kr_art2.h kr_amap.c kr_amap.h\
		cc_learn.c cc_learn.h rcc_learn.c rcc_learn.h\
		cc_rcc.c cc_rcc.h cc_rcc_topo.c cc_rcc_topo.h\
                dlvq_learn.c dlvq_learn.h\
		$(DEMOSOURCE) $(UTILIY_SOURCE) $(ART_SOURCE)

# -- Object files --

KERNELOBJECTS	= strdup.o kr_mem.o kernel.o kr_ui.o kr_io.o\
		kr_inversion.o\
		kr_art.o art_ui.o kr_art1.o kr_art2.o kr_amap.o

USR_FUNC_OBJECTS= kr_funcs.o trans_f.o update_f.o init_f.o learn_f.o\
		kr_td.o\
		tbl_func.o func_tbl.o matrix.o arttr_f.o cc_learn.o\
		rcc_learn.o cc_rcc.o cc_rcc_topo.o\
                dlvq_learn.o

DEMOOBJECTS	= $(DEMOSOURCE:.c=.o)

ART_OBJECTS	= $(M_ART_MOD_SRC:.c=.o)
ART_MAIN_OBJ	= $(M_ART_SOURCE:.c=.o)


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

# -- ART programs  --
ART_PROGS	= $(M_ART_SOURCE:.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 $@

$(ART_PROGS): $(LIBKERNEL) $(LIBFUNCS) $(ART_OBJECTS) $(ART_MAIN_OBJ)
	$(CC) $@.o $(ART_OBJECTS) $(LIBKERNEL) $(LIBFUNCS) -lm -o $@

demo:	$(KERNELDEMO) $(ART_PROGS)

all:	$(KERNELDEMO) $(ART_PROGS)

install:
	strip $(KERNELDEMO) $(ART_PROGS)
	cp $(KERNELDEMO) $(KERNELBINDIR)
	cp $(LIBKERNEL) $(KERNELLIBDIR)
	cp $(LIBFUNCS) $(KERNELLIBDIR)
	cp $(KERNELDEMO) $(KERNELDEMODIR)
	cp $(ART_PROGS) $(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)
	/bin/rm -f $(LIBKERNEL) $(LIBFUNCS) $(KERNELDEMO)
	/bin/rm -f $(ART_OBJECTS) $(ART_PROGS)

tarfile:
	tar cvf kernel.tar $(SOURCES) Makefile*
	compress kernel.tar
# DO NOT DELETE THIS LINE -- make depend depends on it.

art_ui.o: kr_typ.h glob_typ.h ext_typ.h kr_ui.h krui_typ.h kr_const.h
art_ui.o: kernel.h art_typ.h kr_art.h kr_art1.h kr_art2.h kr_amap.h
art_ui.o: krart_df.h art_ui.h
arttr_f.o:  kr_typ.h
arttr_f.o: glob_typ.h ext_typ.h kr_def.h kr_const.h func_mac.h kr_art.h
arttr_f.o: kr_art1.h kr_art2.h kr_amap.h krart_df.h arttr_f.ph
bignet.o: glob_typ.h kr_ui.h krui_typ.h
calc_err.o: sigmoid.tbl
cc_learn.o: kr_typ.h glob_typ.h ext_typ.h kr_const.h kr_def.h kernel.h
cc_learn.o: kr_mac.h kr_ui.h krui_typ.h cc_type.h cc_mac.h cc_learn.ph
cc_learn.o: cc_rcc.h
cc_rcc.o: kr_typ.h glob_typ.h ext_typ.h kr_const.h kr_def.h random.h kr_mac.h
cc_rcc.o: kernel.h kr_ui.h krui_typ.h cc_mac.h cc_type.h cc_rcc.ph
cc_rcc_topo.o: kr_typ.h glob_typ.h ext_typ.h kr_const.h
cc_rcc_topo.o: kr_def.h kr_mac.h kernel.h cc_mac.h cc_rcc.h cc_rcc_topo.ph
func_tbl.o: kr_typ.h glob_typ.h ext_typ.h kr_const.h
func_tbl.o: learn_f.h init_f.h trans_f.h update_f.h arttr_f.h tbl_func.h
func_tbl.o: kr_td.h cc_learn.h rcc_learn.h func_tbl.ph
init_f.o:  kr_typ.h
init_f.o: glob_typ.h ext_typ.h kr_const.h kr_def.h kernel.h random.h kr_mac.h
init_f.o: kr_art.h kr_art1.h kr_art2.h kr_amap.h krart_df.h kr_ui.h
init_f.o: krui_typ.h cc_rcc.h matrix.h init_f.ph
kernel.o: kr_typ.h glob_typ.h ext_typ.h kr_const.h
kernel.o: kr_def.h random.h kernel.ph kr_mem.h kr_funcs.h kr_mac.h
kernel.o: cc_rcc_topo.h kr_art.h kr_art1.h kr_art2.h kr_amap.h
kr_amap.o: kr_const.h kr_mac.h kr_def.h kr_typ.h
kr_amap.o: glob_typ.h ext_typ.h kr_funcs.h kernel.h kr_art.h krart_df.h
kr_amap.o: kr_amap.ph
kr_art.o: krart_df.h kr_const.h kr_mac.h kr_def.h
kr_art.o: kr_typ.h glob_typ.h ext_typ.h kr_funcs.h kernel.h kr_art.ph
kr_art1.o: kr_const.h kr_mac.h kr_def.h kr_typ.h
kr_art1.o: glob_typ.h ext_typ.h kr_funcs.h kernel.h kr_art.h krart_df.h
kr_art1.o: kr_art1.ph
kr_art2.o:  kr_const.h
kr_art2.o: kr_mac.h kr_def.h kr_typ.h glob_typ.h ext_typ.h kr_funcs.h
kr_art2.o: kernel.h kr_art.h krart_df.h kr_art2.ph
kr_funcs.o:  kr_typ.h
kr_funcs.o: glob_typ.h ext_typ.h kr_const.h kr_def.h kr_funcs.ph kernel.h
kr_funcs.o: func_tbl.h
kr_inversion.o: kr_typ.h glob_typ.h ext_typ.h
kr_inversion.o: kr_const.h kernel.h kr_def.h kr_mac.h kr_inversion.ph
kr_io.o: kr_typ.h glob_typ.h ext_typ.h kr_const.h
kr_io.o: kr_def.h kr_ui.h krui_typ.h kernel.h kr_mac.h version.h kr_io.ph
kr_mem.o:  kr_typ.h glob_typ.h
kr_mem.o: ext_typ.h kernel.h kr_const.h kr_def.h kr_mem.ph kr_mac.h
kr_td.o: kr_typ.h glob_typ.h ext_typ.h kr_const.h
kr_td.o: kr_def.h kernel.h kr_mac.h kr_td.ph
kr_ui.o:  random.h kr_typ.h
kr_ui.o: glob_typ.h ext_typ.h kr_const.h kr_def.h kr_io.h kr_funcs.h kernel.h
kr_ui.o: kr_mem.h kr_ui.ph krui_typ.h version.h kr_mac.h
learn_f.o: kr_typ.h glob_typ.h ext_typ.h kr_const.h
learn_f.o: kr_def.h kernel.h kr_mac.h kr_art.h kr_art1.h kr_art2.h kr_amap.h
learn_f.o: krart_df.h learn_f.ph
m_art.o: glob_typ.h kr_ui.h krui_typ.h m_art1.h
m_art.o: m_artmap.h m_art2.h
m_art1.o: glob_typ.h kr_ui.h krui_typ.h
m_art2.o: glob_typ.h kr_ui.h krui_typ.h
m_artmap.o: glob_typ.h kr_ui.h krui_typ.h
matrix.o:  matrix.ph
matrix.o: glob_typ.h
netlearn.o: glob_typ.h kr_ui.h krui_typ.h
netperf.o:  glob_typ.h
netperf.o: kr_ui.h krui_typ.h
rcc_learn.o: kr_typ.h glob_typ.h ext_typ.h kr_const.h
rcc_learn.o: kr_def.h kernel.h kr_mac.h random.h kr_ui.h krui_typ.h cc_type.h
rcc_learn.o: cc_mac.h rcc_learn.ph cc_rcc.h
snnsbat.o: glob_typ.h kr_ui.h krui_typ.h
strdup.o: strdup.ph  
tbl_func.o:  kr_typ.h
tbl_func.o: glob_typ.h ext_typ.h kr_const.h func_mac.h tbl_func.ph
tbl_func.o: sigmoid.tbl
trans_f.o:  kr_typ.h
trans_f.o: glob_typ.h ext_typ.h kr_const.h func_mac.h kr_mac.h cc_mac.h
trans_f.o: trans_f.h
update_f.o: kr_typ.h glob_typ.h ext_typ.h kr_const.h
update_f.o: kr_def.h kernel.h kr_ui.h krui_typ.h kr_mem.h random.h kr_mac.h
update_f.o: krart_df.h kr_art1.h kr_art2.h kr_amap.h kr_art.h kr_td.h
update_f.o: rcc_learn.h cc_rcc.h cc_mac.h update_f.ph
