# Makefile for the pthreads test suite.
# If all of the .pass files can be created, the test suite has passed.


CP	= copy
RM	= erase
MKDIR	= mkdir
TOUCH	= echo Passed >
ECHO	= @echo

#
# Mingw32
#
CC	= gcc
CFLAGS	= -g -O2 -UNDEBUG -Wall -o $@ $^
BUILD_DIR	= ..
INCLUDES	= -I./include
LIBS	= ./lib/libpthread32.a

##
## MSVC
##
#CC	= cl
#CFLAGS	= /W3 /MT /nologo /Yd /Zi /Fe$@ $^
#BUILD_DIR	= ..
#INCLUDES	= -I.\include
#LIBS	= .\lib\pthread.lib

HDR	= .\include\pthread.h
LIB	= .\lib\libpthread32.a
DLL	= pthread.dll

# If a test case returns a non-zero exit code to the shell, make will
# stop.

TESTS	= count1 create1 equal1 exit1 exit2 exit3 \
	 join1 eyal1 mutex1 mutex2 mutex3 \
	 once1 self1 self2 condvar1 condvar2 condvar3 condvar4 tsd1

PASSES	= $(TESTS:%=%.pass)

all:	$(PASSES)
	@ $(ECHO) ALL TESTS PASSED! Congratulations!

%.pass: %.exe $(LIB) $(DLL) $(HDR)
	$*
	@$(ECHO) Passed
	@ $(TOUCH) $@

%.exe: %.c
	@ $(CC) $(CFLAGS) $(INCLUDES) $(LIBS)

$(LIB):
	@- $(MKDIR) .\lib
	@ $(CP) $(BUILD_DIR)\$@ .\$@

$(HDR):
	@- $(MKDIR) .\include
	@ $(CP) $(BUILD_DIR)\$@ .\$@

$(DLL):
	@ $(CP) $(BUILD_DIR)\$@ .\$@

clean:
	- $(RM) *.dll
	- $(RM) $(LIB)
	- $(RM) $(HDR)
	- $(RM) *.exe
	- $(RM) *.pass