#
# OSLab module 4 - queues: 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 m403.exe m404.exe m405.exe

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

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

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

sma4mgmt.obj: sma4mgmt.c sma4mgmt.h sma4mem.h 
    $(DIR)\$(COM) -mc -c sma4mgmt.c

#
# Test routines - compiled and linked explicitly
#

#
# m405 - Producer/consumer problem
#

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

m405.obj: m405.c sma4mgmt.c sema4.c hwdata.c
    $(DIR)\$(COM) -mc -c m405.c

#
# m404 - Same as busywait\m404
#

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

m404.obj: ..\busywait\m404.c sma4mgmt.c sema4.c hwdata.c
    $(DIR)\$(COM) -mc -c ..\busywait\m404.c

#
# m403 - Variation on busywait\m403
#

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

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

#
# m401 - Same as busywait\m404
#

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

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