ifeq ( $(OS), Windows_NT )
    EXE_SUFFIX = .exe
else
    EXE_SUFFIX =
endif

CAPTURE_SOURCE_FILES = \
	capture.cpp \
	hash.cpp \
	SdpMessage.cpp \
	SipHeader.cpp \
	SipIdentifier.cpp \
	SipMessage.cpp \
	SipUri.cpp \
	util.cpp \

CAPTURE_HEADER_FILES = \
	hash.h \
	SdpMessage.h \
	SipHeader.h \
	SipIdentifier.h \
	SipMessage.h \
	SipUri.h \
	util.h \

TEST_SOURCE_FILES = \
	SdpMessage.cpp \
	SipHeader.cpp \
	SipIdentifier.cpp \
	SipMessage.cpp \
	SipUri.cpp \
	test.cpp \
	util.cpp \

TEST_HEADER_FILES = \
	SdpMessage.h \
	SipHeader.h \
	SipIdentifier.h \
	SipMessage.h \
	SipUri.h \
	util.h \

SIP_ROGUE_SOURCE_FILES = \
	AttackAudio.cpp \
	ControlMessage.cpp \
	ControlPort.cpp \
	hash.cpp \
	main.cpp \
	RtpHandler.cpp \
	SdpMessage.cpp \
	SipCall.cpp \
	SipDispatcher.cpp \
	SipEndPoint.cpp \
	SipHeader.cpp \
	SipIdentifier.cpp \
	SipMessage.cpp \
	SipProxyEndPoint.cpp \
	SipRegistrarConnector.cpp \
	SipRegistrar.cpp \
	SipUdpPort.cpp \
	SipUri.cpp \
	util.cpp \

SIP_ROGUE_HEADER_FILES = \
	AttackAudio.h \
	ControlMessage.h \
	ControlPort.h \
	hash.h \
	RtpHandler.h \
	SdpMessage.h \
	SipCall.h \
	SipDispatcher.h \
	SipEndPoint.h \
	SipHeader.h \
	SipIdentifier.h \
	SipMessage.h \
	SipProxyEndPoint.h \
	SipRegistrarConnector.h \
	SipRegistrar.h \
	SipUdpPort.h \
	SipUri.h \
	util.h \

CFLAGS=-ggdb -Wall -Wshadow -D_REENTRANT
CXXFLAGS=-ggdb -Wall -Wshadow -D_REENTRANT

all: cleantest test$(EXE_SUFFIX) capture$(EXE_SUFFIX) sip_rogue$(EXE_SUFFIX) \
     waitfor$(EXE_SUFFIX)

capture$(EXE_SUFFIX): $(CAPTURE_SOURCE_FILES) $(CAPTURE_HEADER_FILES)
	$(CXX) $(CXXFLAGS) -lpcap -o capture$(EXE_SUFFIX) $(CAPTURE_SOURCE_FILES) \
	                   -lnet

clean: cleantest
	rm -f capture$(EXE_SUFFIX) sip_rogue$(EXE_SUFFIX) waitfor$(EXE_SUFFIX)

cleantest:
	rm -f test$(EXE_SUFFIX)

sip_rogue$(EXE_SUFFIX): $(SIP_ROGUE_SOURCE_FILES) $(SIP_ROGUE_HEADER_FILES)
	$(CXX) $(CXXFLAGS) -I../g711conversions -lpthread -ljrtp -lpcap -lnet ../g711conversions/g711conversions.o -o sip_rogue$(EXE_SUFFIX) \
           $(SIP_ROGUE_SOURCE_FILES)

test$(EXE_SUFFIX): $(TEST_SOURCE_FILES) $(TEST_HEADER_FILES)
	$(CXX) $(CXXFLAGS) -lpthread -ljrtp -o test$(EXE_SUFFIX) \
           $(TEST_SOURCE_FILES)
	./test || ( FT=$$?; echo Failed $$FT Tests; exit $$FT )
	# Passed All Tests

waitfor$(EXE_SUFFIX): waitfor.c
	$(CC) $(CFLAGS) -o waitfor$(EXE_SUFFIX) waitfor.c

