#
# OSLab module 4: semaphore makefile
#
# Choice of compiler (1 - Engineering network or 2 - stand alone)

COMPILER=1

# COM - the compiler to use (bcc)
# DIR - the directory to use (either borlandc or campus bc45)

!if $(COMPILER) == 1
COM=bcc
DIR=g:\apps\bc45
!elif $(COMPILER) == 2
COM=bcc
DIR=\borlandc
!else
!error Unknown compiler
!endif

#

obj: m401.exe m402.exe m403.exe m404.exe

#

sema4.obj: sema4.c ..\module4.h
    $(DIR)\$(COM) -mc -c -B sema4.c

mainline.obj: mainline.c
    $(DIR)\$(COM) -mc -c mainline.c

hwdata.obj: hwdata.c ..\module4.h
    $(DIR)\$(COM) -mc -c hwdata.c

#
# Test routines - compiled and linked explicitly
#

#
# m404 - Same as m402, but process3 is blocked using semaphores
#

m404.exe: m404.obj sema4.obj mainline.obj hwdata.obj
    $(DIR)\tlink $(DIR)\lib\c0c sema4 hwdata mainline m404, m404, m404, \
    ..\..\oslab $(DIR)\lib\cc

m404.obj: m404.c
    $(DIR)\$(COM) -mc -c m404.c

#
# m403 - 15 processes accessing a shared region - note order of
# completion.
#

m403.exe: m403.obj sema4.obj mainline.obj hwdata.obj
    $(DIR)\tlink $(DIR)\lib\c0c sema4 hwdata mainline m403, m403, m403, \
    ..\..\oslab $(DIR)\lib\cc

m403.obj: m403.c
    $(DIR)\$(COM) -mc -c m403.c

#
# m402 - accessing a critical region with protection
#
# Notes:
# Modified version of m401
#

m402.exe: m402.obj sema4.obj mainline.obj hwdata.obj
    $(DIR)\tlink $(DIR)\lib\c0c sema4 hwdata mainline m402, m402, m402, \
    ..\..\oslab $(DIR)\lib\cc

m402.obj: m402.c
    $(DIR)\$(COM) -mc -c m402.c

#
# m401 - accessing a critical region w/o protection
#

m401.exe: m401.obj mainline.obj hwdata.obj
    $(DIR)tlink $(DIR)\lib\c0c sema4 hwdata mainline m401, m401, m401, \
    ..\..\oslab $(DIR)\lib\cc

m401.obj: m401.c
    $(DIR)\$(COM) -mc -c m401.c
