# $Id: Makefile,v 1.5 1993/07/17 00:19:59 dhb Exp $
# $Log: Makefile,v $
# Revision 1.5  1993/07/17  00:19:59  dhb
# Separate clean and rcsclean targets
#
# Revision 1.4  1993/07/01  15:39:09  dhb
# Added RCSRELEASE stuff
#
# Revision 1.3  1993/02/12  17:21:08  dhb
# added freeze target to create rcs configurations
# added rcsclean to clean target
# both targets ensure .h .g Makefile and funcs files exist
#
# Revision 1.2  1992/12/11  19:54:31  dhb
# Added RCS check out rules
#
# Revision 1.1  1992/12/11  19:03:15  dhb
# Initial revision
#

#
# Makefile for hineslib.o
#

CPP 		= 	/lib/cpp
CFLAGS 		= 	$(COPT) -D$(MACHINE) $(DEC_HACK)
INSTALL_DIR	= 	$(INSTALL)
INSTALL_LIB 	= 	$(INSTALL_DIR)/lib
INSTALL_INCLUDE	= 	$(INSTALL_DIR)/include
INSTALL_STARTUP	= 	$(INSTALL_DIR)/startup
SYS		=	../sys
SIMINCLUDE 	= 	-I. -I../sim -I../shell -I../segment -I../olf -I../device -I$(SYS)
LIBRARY_NAME 	= 	hines
FUNCTIONS 	= 	hinesfuncs
STRUCTURES 	= 	hines_struct.h
EXT_HEADER	=	hines_ext.h
TARGET_OBJ	= 	hineslib.o

default: $(TARGET_OBJ) 

.SUFFIXES: .c,v .c .h,v .h

.h,v.h:
	co -r$(RCSRELEASE) $*.h

.c,v.o:
	co -r$(RCSRELEASE) $*.c
	cc -c $(CFLAGS) $(SIMINCLUDE) $*.c
	rm -f $*.c

OBJECTS =	\
		hines.o \
		hsolve.o \
		h_init.o \
		hh_init.o \
		h_calc.o \
		hh_update.o \
		compt_update.o \
		conc_update.o \
		h_data.o \
		h_msgs.o


HEADERS = 	\
		hines_ext.h \
		hines_struct.h

.c.o:
	$(CC) $(CFLAGS) $(SIMINCLUDE) $< -c 

$(OBJECTS) : $(HEADERS)

# make the data structure section of the symbol table

$(LIBRARY_NAME)_d@.c : $(STRUCTURES) $(SYS)/code_sym
	- $(CPP) -P $(STRUCTURES) /tmp/$(STRUCTURES) $(SIMINCLUDE)
	- $(SYS)/code_sym /tmp/$(STRUCTURES) $(LIBRARY_NAME) \
	  -I $(EXT_HEADER) -NI -o $(LIBRARY_NAME)_d@.c
	- rm /tmp/$(STRUCTURES)

# make the function list section of the symbol table

$(LIBRARY_NAME)_f@.c : $(FUNCTIONS) $(SYS)/code_func
	- $(SYS)/code_func $(FUNCTIONS) $(LIBRARY_NAME) \
	  > $(LIBRARY_NAME)_f@.c

# make the library header function
$(LIBRARY_NAME)_l@.c : $(LIBRARY_NAME)_f@.c $(LIBRARY_NAME)_d@.c $(SYS)/code_lib $(OBJECTS)
	 - $(SYS)/code_lib $(LIBRARY_NAME) -o $(LIBRARY_NAME)_l@.c



SYMBOLTAB = $(LIBRARY_NAME)_d@.o $(LIBRARY_NAME)_f@.o $(LIBRARY_NAME)_l@.o

$(TARGET_OBJ): $(OBJECTS) $(SYMBOLTAB)
	$(LD) -r -o $(TARGET_OBJ) $(OBJECTS) $(SYMBOLTAB)

install: $(TARGET_OBJ)
	-(cp $(TARGET_OBJ) $(INSTALL_LIB))
	-(cp *.h $(INSTALL_INCLUDE))
	-(cp *.g $(INSTALL_STARTUP))

freeze:
	rcsclean
	rcsfreeze $(VERSION)
	co Makefile *.h,v *.g,v $(FUNCTIONS)

clean:
	-(rm -rf  *.o *@.c)

rcsclean: clean
	- rcsclean
	co -r$(RCSRELEASE) Makefile *.h,v *.g,v $(FUNCTIONS)
