#
# Makefile for proc on PDP-11
# 
#

# PDP-11/10
#MODELCFLAGS=-m10
#MODELLIBS=-lgcc

# PDP-11/45
MODELCFLAGS=
MODELLIBS=

PATH=/usr/local/pdp11-none-aout/bin:/usr/bin:/bin
CC=gcc
CFLAGS=-O2 -msoft-float -fomit-frame-pointer -fpic $(MODELCFLAGS)
LDFLAGS=-no-whole-archive,--omagic

PROCALLSRC=proc.c chan.c chan2.c timer.c stkfpdp11.c pdp11.s pdp11timer.s proc.h chan.h timer.h
TGTSRC=sample.c
TGT2SRC=sample2.c

PROCFUNC=procGlobal.o procInitialize.o procCreateProcess.o procTerminate.o procChangePriority.o procGetUsedWSSize.o procSemInit.o procSemSignal.o procSemSignalCareful.o procSemWait.o procInsertProcess.o procRemoveProcess.o procNextProcess.o procAnyNextProcess.o
CHANFUNC=chanInit.o chanOutChar.o chanOutNB.o chanInChar.o chanInNB.o 
CHAN2FUNC=chanIfOutChar.o chanIfInChar.o
TIMERFUNC=timerGlobal.o timerInit.o timerStart.o timerStop.o timerWait.o timerCheckList.o

all:	proc.a sample sample2

sample:	proc.a sample.c __main.s low.s
	$(CC) $(CFLAGS) low.s sample.c __main.s -Wl,$(LDFLAGS) proc.a -nostdlib -o sample $(MODELLIBS)

sample2:	lownotimer.s proc.a sample2.c __main.s
	$(CC) $(CFLAGS) lownotimer.s sample2.c __main.s -Wl,$(LDFLAGS) proc.a -nostdlib -o sample2 $(MODELLIBS)

procGlobal.o:	proc.c proc.h
	$(CC) $(CFLAGS) -DL_procGlobal proc.c -c -o procGlobal.o
procInsertProcess.o:	proc.c proc.h
	$(CC) $(CFLAGS) -DL_procInsertProcess proc.c -c -o procInsertProcess.o
procRemoveProcess.o:	proc.c proc.h
	$(CC) $(CFLAGS) -DL_procRemoveProcess proc.c -c -o procRemoveProcess.o
procNextProcess.o:	proc.c proc.h
	$(CC) $(CFLAGS) -DL_procNextProcess proc.c -c -o procNextProcess.o
procAnyNextProcess.o:	proc.c proc.h
	$(CC) $(CFLAGS) -DL_procAnyNextProcess proc.c -c -o procAnyNextProcess.o
procInitialize.o:	proc.c proc.h
	$(CC) $(CFLAGS) -DL_procInitialize proc.c -c -o procInitialize.o
procCreateProcess.o:	proc.c proc.h
	$(CC) $(CFLAGS) -DL_procCreateProcess proc.c -c -o procCreateProcess.o
procTerminate.o:	proc.c proc.h
	$(CC) $(CFLAGS) -DL_procTerminate proc.c -c -o procTerminate.o
procChangePriority.o:	proc.c proc.h
	$(CC) $(CFLAGS) -DL_procChangePriority proc.c -c -o procChangePriority.o
procGetUsedWSSize.o:	proc.c proc.h
	$(CC) $(CFLAGS) -DL_procGetUsedWSSize proc.c -c -o procGetUsedWSSize.o
procSemInit.o:	proc.c proc.h
	$(CC) $(CFLAGS) -DL_procSemInit proc.c -c -o procSemInit.o
procSemSignal.o:	proc.c proc.h
	$(CC) $(CFLAGS) -DL_procSemSignal proc.c -c -o procSemSignal.o
procSemSignalCareful.o:	proc.c proc.h
	$(CC) $(CFLAGS) -DL_procSemSignalCareful proc.c -c -o procSemSignalCareful.o
procSemWait.o:	proc.c proc.h
	$(CC) $(CFLAGS) -DL_procSemWait proc.c -c -o procSemWait.o

chanInit.o:	chan.c chan.h proc.h
	$(CC) $(CFLAGS) -DL_chanInit chan.c -c -o chanInit.o
chanOutChar.o:	chan.c chan.h proc.h
	$(CC) $(CFLAGS) -DL_chanOutChar chan.c -c -o chanOutChar.o
chanOutNB.o:	chan.c chan.h proc.h
	$(CC) $(CFLAGS) -DL_chanOutNB chan.c -c -o chanOutNB.o
chanInChar.o:	chan.c chan.h proc.h
	$(CC) $(CFLAGS) -DL_chanInChar chan.c -c -o chanInChar.o
chanInNB.o :	chan.c chan.h proc.h
	$(CC) $(CFLAGS) -DL_chanInNB chan.c -c -o chanInNB.o

chanIfOutChar.o:	chan2.c chan.h proc.h
	$(CC) $(CFLAGS) -DL_chanIfOutChar chan2.c -c -o chanIfOutChar.o
chanIfInChar.o:	chan2.c chan.h proc.h
	$(CC) $(CFLAGS) -DL_chanIfInChar chan2.c -c -o chanIfInChar.o

timerGlobal.o:	timer.c timer.h proc.h
	$(CC) $(CFLAGS) -DL_timerGlobal timer.c -c -o timerGlobal.o
timerInit.o:	timer.c timer.h proc.h
	$(CC) $(CFLAGS) -DL_timerInit timer.c -c -o timerInit.o
timerStart.o:	timer.c timer.h proc.h
	$(CC) $(CFLAGS) -DL_timerStart timer.c -c -o timerStart.o
timerStop.o:	timer.c timer.h proc.h
	$(CC) $(CFLAGS) -DL_timerStop timer.c -c -o timerStop.o
timerWait.o:	timer.c timer.h proc.h
	$(CC) $(CFLAGS) -DL_timerWait timer.c -c -o timerWait.o
timerCheckList.o:	timer.c timer.h proc.h
	$(CC) $(CFLAGS) -DL_timerCheckList timer.c -c -o timerCheckList.o

proc.a:	$(PROCFUNC) $(CHANFUNC) $(CHAN2FUNC) $(TIMERFUNC) stkfpdp11.o pdp11.o pdp11timer.o
	ar r proc.a $(PROCFUNC) $(CHANFUNC) $(CHAN2FUNC) $(TIMERFUNC) stkfpdp11.o pdp11.o pdp11timer.o

clean:
	-rm $(PROCFUNC) $(CHANFUNC) $(CHAN2FUNC) $(TIMERFUNC) stkfpdp11.o pdp11.o pdp11timer.o proc.a sample sample2

