#### Uncomment one of the following:
## Visual C++
SHELL=sh
MAKE=make
CC = cl
CFLAGS = -GX -Os -G5
LFLAGS = wsock32.lib -Fe$@
OBJEXT = obj


.SUFFIXES: .cpp .$(OBJEXT) .exe

## Build rule for VC++ and BC++
#default: basic-client.exe basic-server.exe threaded-server.exe \
#		select-server.exe

#.cpp.$(OBJEXT):
#	$(CC) -c $(CFLAGS) $<

OBJS = basic-server.$(OBJEXT) main.$(OBJEXT) ws-util.$(OBJEXT)

.cpp.obj:
	$(CC) -c $(CFLAGS) $<

basic-server.exe: main.obj basic-server.obj ws-util.obj
	$(CC) main.obj basic-server.obj ws-util.obj $(LFLAGS)

#### Common dependencies ###############################################

main.$(OBJEXT): main.cpp
basic-server.$(OBJEXT): basic-server.cpp
ws-util.$(OBJEXT): ws-util.cpp ws-util.h


#### Basic Winsock client ##############################################

BASIC_CLIENT_OBJS = basic-client.$(OBJEXT) main.$(OBJEXT) ws-util.$(OBJEXT)

basic-client.exe: $(BASIC_CLIENT_OBJS)
	$(CC) $(BASIC_CLIENT_OBJS) $(LFLAGS)

basic-client.$(OBJEXT): basic-client.cpp ws-util.h


#### Basic Winsock server ##############################################



basic-server.$(OBJEXT): basic-server.cpp ws-util.h


#### Threaded Winsock server ###########################################

THREADED_SERVER_OBJS = threaded-server.$(OBJEXT) main.$(OBJEXT) \
		ws-util.$(OBJEXT)
threaded-server.exe: $(THREADED_SERVER_OBJS)
	$(CC) $(THREADED_SERVER_OBJS) $(LFLAGS)

threaded-server.$(OBJEXT): threaded-server.cpp ws-util.h


#### select()-based Winsock server #####################################

SELECT_SERVER_OBJS = select-server.$(OBJEXT) main.$(OBJEXT) \
		ws-util.$(OBJEXT)
select-server.exe: $(SELECT_SERVER_OBJS)
	$(CC) $(SELECT_SERVER_OBJS) $(LFLAGS)

select-server.$(OBJEXT): select-server.cpp ws-util.h
