# The s versions use stack-based  processes, h versions use heap - MFM  
MI=
CC=cl

EX_LIB = ..\lib\nihcl$(MI).lib
PROCEX_LIB = ..\lib\nihprc$(MI).lib
NIHCLINCDIR = ..\include
NIHCLPROCINCDIR = ..\process       

#C_DEBUG=/Zi            
#L_DEBUG=/CO   
STACKF=/F dfff 

CFLAGS = /AL /G2 /vmg /W4 /Ob1 /OV9 $(C_DEBUG) -I$(NIHCLINCDIR) -I$(NIHCLPROCINCDIR)  
LFLAGS =  /link $(L_DEBUG) $(PROCEX_LIB) $(EX_LIB) 

PROGS = ex11-1s.exe ex11-2s.exe ex11-3s.exe ex11-4s.exe\
		  ex11-1h.exe ex11-2h.exe ex11-3h.exe ex11-4h.exe\
		  cleanobj

all:$(PROGS)
	
# Stack versions need bigger stack size   
# Scheduling lightweight processes in the NIH class library
ex11-1s.exe: $*.cpp
	$(CC) $(CFLAGS) $(STACKF) $*.cpp  $(LFLAGS)

# Managing N resources with a Semaphore
ex11-2s.exe: $*.cpp
	$(CC) $(CFLAGS) $(STACKF) $*.cpp  $(LFLAGS)

# Protecting a critical section of code with an AutoSignal
ex11-3s.exe: $*.cpp
	$(CC) $(CFLAGS) $(STACKF) $*.cpp  $(LFLAGS)

# Communication between lightweight processes with a SharedQueue
ex11-4s.exe: $*.cpp
	$(CC) $(CFLAGS) $(STACKF) $*.cpp  $(LFLAGS)

# Heap versions 
# Scheduling lightweight processes in the NIH class library
ex11-1h.exe: $*.cpp
	$(CC) $(CFLAGS) $*.cpp  $(LFLAGS)

# Managing N resources with a Semaphore
ex11-2h.exe: $*.cpp
	$(CC) $(CFLAGS) $*.cpp  $(LFLAGS)

# Protecting a critical section of code with an AutoSignal
ex11-3h.exe: $*.cpp
	$(CC) $(CFLAGS) $*.cpp  $(LFLAGS)

# Communication between lightweight processes with a SharedQueue
ex11-4h.exe: $*.cpp
	$(CC) $(CFLAGS) $*.cpp  $(LFLAGS)

cleanobj:
	del *.obj
