# Makefile
# CREATED BY mkmk
#       FROM ./MakeSkel
#         ON Wed Jun 7 20:22:48 PDT 1989

## makefile for config/is20

RAM_START_ADRS = 1000	# adrs in RAM of start of vxWorks in RAM version







# makeHost.bsd - BSD UNIX rules, defs & flags for makefile skeletons

## rules

.SUFFIXES : .lint .s .c

.c.lint:
	@rm -f $@
	- lint $(LINTFLAGS) $*.c $(LIB_LINT)$(VX_LN) |	\
	    sed -e '/copyright/d'		\
		-e '/^[^ ]*:$$/d' >$@

.s.o :
	@rm -f $@
	$(ASM_P1) $< >tmp.c
	$(CC) $(CASFLAGS) tmp.c >tmp.i
	$(ASM_P2) tmp.i >tmp.s
	$(AS) -o $@ tmp.s
	@rm -f tmp.c tmp.i tmp.s

.c.o :
	@rm -f $@
	$(CC) $(CFLAGS) -c $<


## files and directories

VW          = ../../
H1          = $(VW)h/
H2          = $(VW)h/net/
H3          = $(VW)h/rpc/
BIN         = $(VW)bin/
SRC         = $(VW)src/
SRCALL      = $(VW)src/all/
SRCNET      = $(VW)src/net/
SRCRPC      = $(VW)src/rpc/
SRCBIN      = $(VW)src/bin/
VRTX        = $(VW)src/vrtx/
PSOS        = $(VW)src/psos/
WIND        = $(VW)src/wind/
LIB         = $(VW)lib/
LIB_MC68000 = $(VW)lib/68000/
LIB_MC68010 = $(VW)lib/68010/
LIB_MC68020 = $(VW)lib/68020/
LIB_HOST    = $(VW)lib/host/
LIB_LINT    = $(VW)lib/lint/
CONFIG      = $(VW)config/
ALL         = $(VW)config/all/
DY4         = $(VW)config/dy4/
HKV2F       = $(VW)config/hkv2f/
IS20        = $(VW)config/is20/
IV24        = $(VW)config/iv24/
MV131       = $(VW)config/mv131/
MV133       = $(VW)config/mv133/
UBAR        = $(VW)config/ubar/

VX_LIB     = vxWorks.a
VRTX_LIB   = vrtx.a
PSOS_LIB   = psos.a
WIND_LIB   = wind.a
NET_LIB    = network.a
RPC_LIB    = rpclib.a
CONFIG_LIB = vxConfig.a
FORT_LIB   = vxFort.a
FTN_LIB    = ftnlib.a
DEV_LIB    = devlib.a

VX_LN      = llib-lvw.ln
VRTX_LN    = llib-lvrtx.ln
PSOS_LN    = llib-lpsos.ln
WIND_LN    = llib-lwind.ln
NET_LN     = llib-lnet.ln
RPC_LN     = llib-lrpc.ln
CONFIG_LN  = llib-lcfg.ln

YACCOUT    = y.tab.c
LEXOUT     = lex.yy.c

## tools

RANLIB = ranlib


# makeHost.isi - host specific rules, defs & flags for makefile skeletons

EVEN = "-Deven=align 1"

# pure BSD 4.3 doesn't have $(MAKE) capability

MAKE = make

## tools

TAGS   = ctags -w -t

ASM_P1 = $(BIN)aspp
ASM_P2 = cat

CC_MC68000 = cc
CC_MC68010 = cc
CC_MC68020 = cc
CC_HOST    = cc

AS_MC68000 = as
AS_MC68010 = as
AS_MC68020 = as
AS_HOST    = as

LD_MC68000 = ld
LD_MC68010 = ld
LD_MC68020 = ld
LD_HOST    = ld

## flags

HOST_TYPE = HOST_ISI

HOST_CFLAGS_MC68000 = -O -ga -X23
HOST_CFLAGS_MC68010 = -O -ga -X23
HOST_CFLAGS_MC68020 = -O -ga -X23 -20
HOST_CFLAGS_HOST    =

## libraries

HOST_LIB_MC68000 = /usr/lib/libc.a
HOST_LIB_MC68010 = /usr/lib/libc.a
HOST_LIB_MC68020 = /usr/lib/libc.a
HOST_LIB_HOST    = /usr/lib/libc.a

AR_C_FLAGS = cru
AR_X_FLAGS = xo

## makeTarget.bsd - common portion of makefile for config/<target>

## Extra modules to be included in VxWorks.  These modules are not referred
##   in the VxWorks code, so they will not be automatically linked in
##   unless they are defined here explicitly.  Each -u pulls in one 
##   extra library module.
##
##	_setjmp		cALib		C support routines

EXTRA_MODULES = -u _setjmp

## tools

CC = $(CC_MC68020)
AS = $(AS_MC68020)
LD = $(LD_MC68020)

LN = ln -s
RM = rm -f
CP = cp -p
MV = mv -f

## flags

REL_TEXT_FLAG = -t
REL_DATA_FLAG = -d

## alternate file directory

H0        = $(ALL)

## flags and defines

INCLUDES  = -I. -I$(H0) -I$(H1) -I$(H2)
CFLAGS    = $(HOST_CFLAGS_MC68020) $(INCLUDES)
CASFLAGS  = -E $(INCLUDES) $(EVEN)
LINTFLAGS = -bun $(INCLUDES)

## files

# NOTE: sysALib.o must come first!
MACH_DEP = sysALib.o sysLib.o tyCoDrv.o $(MACH_EXTRA)

HOST_LIB = $(HOST_LIB_MC68020)

LL = $(LIB_MC68020)
LIBS = $(LL)$(VX_LIB) $(LL)$(CONFIG_LIB) $(LL)$(NET_LIB) $(LL)$(RPC_LIB) \
       $(LL)$(FTN_LIB) $(LL)$(VX_LIB) $(LL)$(VRTX_LIB) $(HOST_LIB) \
       $(LL)$(DEV_LIB)
LIBS_WIND = $(LL)$(VX_LIB) $(LL)$(CONFIG_LIB) $(LL)$(NET_LIB) \
	    $(LL)$(RPC_LIB) $(LL)$(VX_LIB) $(LL)$(WIND_LIB) $(HOST_LIB) \
	    $(LL)$(DEV_LIB) $(LL)$(FTN_LIB)

LINT_LIBS = $(LIB_LINT)$(VX_LN) $(LIB_LINT)$(NET_LN) $(LIB_LINT)$(VRTX_LN)


default : vxWorks
aux	: tags lint.wind
lint	: lib.lint
tags	: *.c $(H1)*.h
	  @ $(RM) $@
	  $(TAGS) *.c $(H1)*.h


####################### machine dependent modules ##########################

romInit.o  : romInit.s
sysLib.o   : sysLib.c config.h $(H0)configAll.h $(H1)if_bp.h $(H1)ioLib.h \
        $(H1)iv68k.h $(H1)lstLib.h $(H1)memLib.h $(H1)semLib.h $(H1)sysLib.h \
        $(H1)vme.h vme68k30.h $(H1)vxWorks.h
sysALib.o  : sysALib.s config.h $(H0)configAll.h $(H1)if_bp.h $(H1)iv68k.h \
        $(H1)sysLib.h $(H1)vme.h vme68k30.h $(H1)vxWorks.h
tyCoDrv.o  : tyCoDrv.c $(H1)ioLib.h $(H1)iosLib.h $(H1)lstLib.h $(H1)memLib.h \
        $(H1)rngLib.h $(H1)semLib.h $(H1)tyLib.h vme68k30.h $(H1)vxWorks.h \
        $(H1)wdLib.h

configVrtx.o : $(H0)configVrtx.c config.h $(H0)configAll.h $(H1)excLib.h \
        $(H1)if_bp.h $(H1)iv68k.h $(H1)lstLib.h $(H1)semLib.h $(H1)sigLib.h \
        $(H1)taskLib.h $(H1)taskVarLib.h $(H1)vme.h vme68k30.h $(H1)vrtx.h \
        $(H1)vrtx32.h $(H1)vxWorks.h
	@ $(RM) $@
	$(CC) -c $(CFLAGS) $(ALL)configVrtx.c

configPsos.o : $(H0)configPsos.c config.h $(H0)configAll.h $(H1)excLib.h \
        $(H1)if_bp.h $(H1)iv68k.h $(H1)lstLib.h $(H1)psos.h $(H1)semLib.h \
        $(H1)sigLib.h $(H1)taskLib.h $(H1)taskVarLib.h $(H1)vme.h vme68k30.h \
        $(H1)vxWorks.h
	@ $(RM) $@
	$(CC) -c $(CFLAGS) $(ALL)configPsos.c

usrConfig.o : $(H0)usrConfig.c config.h $(H0)configAll.h $(H1)ctype.h \
        $(H1)excLib.h $(H1)if_bp.h $(H1)inetLib.h $(H1)ioLib.h $(H1)iv68k.h \
        $(H1)loadLib.h $(H1)lstLib.h $(H1)semLib.h $(H1)sigLib.h \
        $(H1)strLib.h $(H1)symLib.h $(H1)sysLib.h $(H1)sysSymTbl.h \
        $(H1)taskLib.h $(H1)taskVarLib.h $(H1)types.h $(H1)version.h \
        $(H1)vme.h vme68k30.h $(H1)vxWorks.h
	@ $(RM) $@
	$(CC) -c $(CFLAGS) $(ALL)usrConfig.c

usrConfig_st.o : $(H0)usrConfig.c config.h $(H0)configAll.h $(H1)ctype.h \
        $(H1)excLib.h $(H1)if_bp.h $(H1)inetLib.h $(H1)ioLib.h $(H1)iv68k.h \
        $(H1)loadLib.h $(H1)lstLib.h $(H1)semLib.h $(H1)sigLib.h \
        $(H1)strLib.h $(H1)symLib.h $(H1)sysLib.h $(H1)sysSymTbl.h \
        $(H1)taskLib.h $(H1)taskVarLib.h $(H1)types.h $(H1)version.h \
        $(H1)vme.h vme68k30.h $(H1)vxWorks.h
	@ $(RM) $@
	$(CC) -c -o $@ $(CFLAGS) -DSTANDALONE $(ALL)usrConfig.c

bootConfig.o : $(H0)bootConfig.c $(H1)a_out.h config.h $(H0)configAll.h \
        $(H1)ctype.h $(H1)excLib.h $(H1)ftpLib.h $(H1)if_bp.h $(H1)inetLib.h \
        $(H1)ioLib.h $(H1)iosLib.h $(H1)iv68k.h $(H1)loadLib.h $(H1)lstLib.h \
        $(H1)semLib.h $(H1)sigLib.h $(H1)strLib.h $(H1)symLib.h $(H1)sysLib.h \
        $(H1)sysSymTbl.h $(H1)taskLib.h $(H1)taskVarLib.h $(H1)types.h \
        $(H1)version.h $(H1)vme.h vme68k30.h $(H1)vxWorks.h
	@ $(RM) $@
	$(CC) -c $(CFLAGS) $(ALL)bootConfig.c

lib.lint : $(ALL)bootConfig.c $(ALL)usrConfig.c sysLib.c tyCoDrv.c
	@ $(RM) lib.lint
	- lint $(LINTFLAGS) $(ALL)bootConfig.c $(ALL)usrConfig.c \
		sysLib.c tyCoDrv.c $(LINT_LIBS) | \
	    sed -e '/copyright/d' 	\
		-e '/^[^ ]*:$$/d' 	\
		-e '/slex\.c.*: warning: statement not reached/d' >  \
		   lib.lint

####################### vxWorks ###########################################

# vxWorks       - normal vxWorks system
# vxWorks.sym	- symbol table of vxWorks
# vxWorks.st    - standalone vxWorks w/symbol table linked-in

vxWorks vxWorks.sym : usrConfig.o configVrtx.o $(MACH_DEP) $(LIBS)
	@ $(RM) version.c version.o vxWorks vxWorks.sym
	sh $(BIN)makeVersion >version.c
	$(CC) -c $(CFLAGS) version.c
	$(LD) -o vxWorks -N -X -T $(RAM_START_ADRS) $(EXTRA_MODULES) \
	    -e _sysInit $(MACH_DEP) usrConfig.o configVrtx.o version.o $(LIBS)
	$(BIN)xsym <vxWorks > vxWorks.sym
	@ $(RM) version.c version.o

vxWorks.st : usrConfig_st.o configVrtx.o $(MACH_DEP) $(LIBS)
	@ $(RM) vxWorks.st version.c version.o symTbl.c symTbl.o
	sh $(BIN)makeVersion > version.c
	$(CC) -c $(CFLAGS) version.c
	$(LD) -o tmp.o -X -r $(EXTRA_MODULES) \
	    $(MACH_DEP) usrConfig_st.o configVrtx.o version.o $(LIBS)
	sh $(BIN)makeSymTbl tmp.o >symTbl.c
	$(CC) -c $(CFLAGS) symTbl.c
	$(LD) -o vxWorks.st -N -X -T $(RAM_START_ADRS) -e _sysInit \
	    tmp.o symTbl.o
	@ $(RM) tmp.o version.c version.o

vxWorks_rom : romInit.o usrConfig.o configVrtx.o $(MACH_DEP) $(LIBS)
	@ $(RM) vxWorks_rom version.c version.o
	sh $(BIN)makeVersion > version.c
	$(CC) -c $(CFLAGS) version.c
	$(LD) -o vxWorks_rom -X -rd -e _romInit romInit.o \
		usrConfig.o configVrtx.o $(MACH_DEP) version.o $(LIBS)
	@ $(RM) version.c version.o
	@ $(BIN)romsize bootrom 

vxWorks_rom.hex : vxWorks_rom
	@ $(RM) $@
	$(BIN)relseg $(REL_FLAGS) vxWorks_rom
	$(BIN)hex $(HEX_FLAGS) rel.out >vxWorks_rom.hex
	@ $(RM) rel.out

####################### bootrom ###########################################

# bootrom	- relocatable bootrom module
# bootrom.hex	- absolute hex format bootrom
#
# Note: bootroms are always made with WIND kernel because of size constraints

bootrom : romInit.o bootConfig.o $(MACH_DEP) $(LIBS_WIND)
	@ $(RM) $@ version.c version.o
	sh $(BIN)makeVersion >version.c
	$(CC) -c $(CFLAGS) version.c
	$(LD) -o bootrom -X -rd -e _romInit romInit.o bootConfig.o version.o\
	    $(MACH_DEP) $(LIBS_WIND)
	@ $(RM) version.c version.o
	@ $(BIN)romsize bootrom 

bootrom.hex : bootrom
	@ $(RM) $@
	$(BIN)relseg $(REL_FLAGS) bootrom
	$(BIN)hex $(HEX_FLAGS) rel.out >bootrom.hex
	@ $(RM) rel.out


