
#*****************************************************************************
# FILE           : $Source: /home/mamier/bv/SNNS/SNNSv4.1/configuration/RCS/kernelstuff,v $
# SHORTNAME      : Makefile body
# SNNS VERSION   : 4.0
#
# PURPOSE        : Body of the SNNS kernel Makefile
# NOTES          : Do not change Makefiles manually
#
# AUTHOR         : Michael Vogt
# DATE           : 25.4.94
#
# CHANGED BY     : 
# IDENTIFICATION : $State: Exp $ $Locker:  $
# RCS VERSION    : $Revision: 2.11 $
# LAST CHANGE    : $Date: 1995/11/20 15:20:39 $
#
#            Copyright (c) 1990-1995  SNNS Group, IPVR, Univ. Stuttgart, FRG
#
#*****************************************************************************

SUFFIXES        = .o .c .l .y .h .ph
KERNELBINDIR    = $(SNNSDIR)/kernel/bin/$(MACHINENAME)
KERNELLIBDIR    = $(SNNSDIR)/kernel/bin/$(MACHINENAME)


# -- C-Compiler Configuration --

CC              = $(COMPILER)
CPPFLAGS        =
CFLAGS          = $(CDEBUG) $(CCFLAGS) $(CPPFLAGS) $(FPOPTIONS)
YACC            = bison
# bison options for bison 1.22 or later
YFLAGS          = -b 'y' -p 'pp' -d
# bison options for bison versions before 1.22
# YFLAGS        = -b 'y' +a 'pp' -d
CDEPFLG         = -MM
ENZOFLAGS 	= $(CCFLAGS) -D__ENZO__

# -- Archive Configuration --

CP		= cp
MV              = mv
PATHDEL		= /
AR              = ar
ARFLAGS 	= rc
RANLIB          = ranlib

# -- Source files --

GLOBALINCLUDES     = glob_typ.h \
                     kr_const.h \
                     kr_def.h \
                     kr_typ.h \
                     krui_typ.h \
                     kr_mac.h \
                     krart_df.h \
                     ext_typ.h \
                     random.h \
                     cc_mac.h \
                     cc_type.h \
                     dlvq_type.h

KERNELSOURCES_YACC = kr_pat_parse_bison.y
KERNELSOURCES_LEX  = kr_pat_scan.l
KERNELSOURCES_C    = kernel.c \
                     kr_io.c \
                     kr_mem.c \
                     kr_ui.c \
                     kr_inversion.c \
                     art_ui.c \
                     kr_art.c \
                     kr_art1.c \
                     kr_art2.c \
                     kr_amap.c \
                     strdup.c \
		     kr_pat_parse.c \
                     kr_newpattern.c\
                     kr_JordElm.c
KERNELSOURCES_H    = version.h \
                     sigmoid.tbl \
                     kernel.h kernel.ph \
                     kr_io.h kr_io.ph \
                     kr_mem.h kr_mem.ph \
                     kr_ui.h kr_ui.ph \
                     kr_inversion.h kr_inversion.ph \
                     art_typ.h \
                     art_ui.h art_ui.ph \
                     kr_art.h kr_art.ph \
                     kr_art1.h kr_art1.ph \
                     kr_art2.h kr_art2.ph \
                     kr_amap.h kr_amap.ph \
                     strdup.h strdup.ph \
                     kr_pat_parse.h kr_pat_parse.ph \
                     kr_pat_scan.h kr_pat_scan.ph \
                     kr_newpattern.h kr_newpattern.ph \
                     kr_JordElm.h kr_JordElm.ph 
KERNELSOURCES      = $(KERNELSOURCES_LEX) \
                     $(KERNELSOURCES_C) \
                     $(KERNELSOURCES_H)

USR_FUNC_SOURCES_C = func_tbl.c \
                     init_f.c \
                     kr_td.c \
                     kr_funcs.c \
                     learn_f.c \
                     prun_f.c \
                     tbl_func.c \
                     trans_f.c \
                     update_f.c \
                     matrix.c \
                     arttr_f.c \
                     cc_learn.c \
                     rcc_learn.c \
                     cc_rcc.c \
                     cc_rcc_topo.c \
                     dlvq_learn.c \
                     stochastic_learn_f.c \
		     scaled_conj_grad.c
USR_FUNC_SOURCES_H = func_mac.h \
                     func_tbl.h func_tbl.ph \
                     init_f.h init_f.ph \
                     kr_td.h kr_td.ph \
                     kr_funcs.h kr_funcs.ph \
                     learn_f.h learn_f.ph \
                     prun_f.h prun_f.ph \
                     tbl_func.h tbl_func.ph \
                     trans_f.h trans_f.ph \
                     update_f.h update_f.ph \
                     matrix.h matrix.ph \
                     arttr_f.h arttr_f.ph \
                     cc_learn.h cc_learn.ph \
                     rcc_learn.h rcc_learn.ph \
                     cc_rcc.h cc_rcc.ph \
                     cc_rcc_topo.h cc_rcc_topo.ph \
                     dlvq_learn.h dlvq_learn.ph \
                     stochastic_learn_f.h stochastic_learn_f.ph \
		     scaled_conj_grad.h scaled_conj_grad.ph
USR_FUNC_SOURCES   = $(USR_FUNC_SOURCES_C) \
                     $(USR_FUNC_SOURCES_H)

UTILITY_SOURCES_C  = make_tbl.c \
                     calc_err.c
UTILITY_SOURCES    = $(UTILITY_SOURCES_C)

SOURCES            = $(GLOBALINCLUDES) \
                     $(KERNELSOURCES) \
		     $(KERNELSOURCES_YACC) \
                     $(USR_FUNC_SOURCES) \
                     $(UTILITY_SOURCES)

# -- Modul files --

MODULES           = $(KERNELSOURCES_C) \
                    $(USR_FUNC_SOURCES_C) \
                    $(UTILITY_SOURCES_C)

# -- Object files --

KERNELOBJECTS_LEX = $(KERNELSOURCES_LEX:.l=.o)
KERNELOBJECTS	  = $(KERNELSOURCES_LEX:.l=.o) \
                    $(KERNELSOURCES_C:.c=.o)

USR_FUNC_OBJECTS  = $(USR_FUNC_SOURCES_C:.c=.o)

UTILITY_OBJECTS   = $(UTILITY_SOURCES_C:.c=.o)

# -- Libraries --

LIBKERNEL	  = libkernel.a
LIBFUNCS	  = libfunc.a

# -- Rules --

.KEEP_STATE:           # SUN make keeps dependencies in .make.state

default:  $(LIBKERNEL) $(LIBFUNCS)

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

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

install: $(LIBKERNEL) $(LIBFUNCS)
	$(MV) $(LIBKERNEL) $(KERNELLIBDIR)
	$(MV) $(LIBFUNCS) $(KERNELLIBDIR)

parser: 
	@echo "You need to use bison version 1.22 or later. Your version is:"
	@-$(YACC) --version
	@echo "If you have an older version, change the YFLAGS definition in the Makefile"
	$(YACC) $(YFLAGS) $(KERNELSOURCES_YACC) 
	mv y.tab.c kr_pat_parse.c

enzo:
	make CCFLAGS='$(ENZOFLAGS)' install

# because of checking of timestamps this is neccessary !

list:
	$(CAT) $(SOURCES) > kernelsrc.all

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

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

depend:
	$(CC) $(CDEPFLG) $(MODULES) > kernel.ddt

# -- Dependencies --

$(KERNELOBJECTS_LEX): y.tab.h

include kernel.ddt
