CC=gcc
CFLAGS=-ggdb -std=c99 -D_GNU_SOURCE
COMMON_HEADERS=Framer.h VoteEncoding.h VoteProtocol.h Practical.h
COMMON_SRC=TCPClientUtility.c DieWithMessage.c TCPServerUtility.c AddressUtility.c

BINS=client-binary-delim client-binary-len server-binary-delim server-binary-len client-text-delim client-text-len server-text-delim server-text-len

all: client-binary-delim client-binary-len server-binary-delim server-binary-len client-text-delim client-text-len server-text-delim server-text-len

##### Binary, Delim
client-binary-delim: $(COMMON_HEADERS)
	$(CC) $(CFLAGS) -o client-binary-delim $(COMMON_SRC) DelimFramer.c VoteEncodingBin.c VoteClientTCP.c

server-binary-delim: $(COMMON_HEADERS)
	$(CC) $(CFLAGS) -o server-binary-delim $(COMMON_SRC) DelimFramer.c VoteEncodingBin.c VoteServerTCP.c

##### Binary, Len
client-binary-len: $(COMMON_HEADERS)
	$(CC) $(CFLAGS) -o client-binary-len $(COMMON_SRC) LengthFramer.c VoteEncodingBin.c VoteClientTCP.c

server-binary-len: $(COMMON_HEADERS)
	$(CC) $(CFLAGS) -o server-binary-len $(COMMON_SRC) LengthFramer.c VoteEncodingBin.c VoteServerTCP.c

##### Text, Delim
client-text-delim: $(COMMON_HEADERS)
	$(CC) $(CFLAGS) -o client-text-delim $(COMMON_SRC) DelimFramer.c VoteEncodingText.c VoteClientTCP.c

server-text-delim: $(COMMON_HEADERS)
	$(CC) $(CFLAGS) -o server-text-delim $(COMMON_SRC) DelimFramer.c VoteEncodingText.c VoteServerTCP.c

##### Text, Len
client-text-len: $(COMMON_HEADERS)
	$(CC) $(CFLAGS) -o client-text-len $(COMMON_SRC) LengthFramer.c VoteEncodingText.c VoteClientTCP.c

server-text-len: $(COMMON_HEADERS)
	$(CC) $(CFLAGS) -o server-text-len $(COMMON_SRC) LengthFramer.c VoteEncodingText.c VoteServerTCP.c

clean:
	rm -rf $(BINS) *.dSYM
