# Read Fuzzing.md located at the root of pjproject dir for build instructions

#Modify this to point to the PJSIP location.
PJBASE=../../

include $(PJBASE)/build.mak

TARGET=Fuzzing

JSON=fuzz-json
XML=fuzz-xml
SDP=fuzz-sdp
ICE=fuzz-ice
STUN=fuzz-stun
SIP=fuzz-sip
SIPTRAN=fuzz-sip-transaction
SIPDIAL=fuzz-sip-dialog
RTCP=fuzz-rtcp
DNS=fuzz-dns
DNSREC=fuzz-dns-records
H264=fuzz-h264
VPX=fuzz-vpx
HTTP=fuzz-http
URL=fuzz-url
URI=fuzz-uri
CRYPTO=fuzz-crypto
SDES=fuzz-sdes
RTP=fuzz-rtp
SRTP=fuzz-srtp
PRES=fuzz-presence
VIDEO=fuzz-video
STREAM=fuzz-stream
AUDIO=fuzz-audio
AUTH=fuzz-auth
MULTI=fuzz-multipart

EXTFLAGS=-Wall -Werror

all: $(TARGET)

$(TARGET):
	$(CC) $(PJ_CFLAGS) $(EXTFLAGS) -c $(JSON).c
	$(CC) $(PJ_CFLAGS) $(EXTFLAGS) -c $(XML).c
	$(CC) $(PJ_CFLAGS) $(EXTFLAGS) -c $(SDP).c
	$(CC) $(PJ_CFLAGS) $(EXTFLAGS) -c $(ICE).c
	$(CC) $(PJ_CFLAGS) $(EXTFLAGS) -c $(STUN).c
	$(CC) $(PJ_CFLAGS) $(EXTFLAGS) -c $(SIP).c
	$(CC) $(PJ_CFLAGS) $(EXTFLAGS) -c $(SIPTRAN).c
	$(CC) $(PJ_CFLAGS) $(EXTFLAGS) -c $(SIPDIAL).c
	$(CC) $(PJ_CFLAGS) $(EXTFLAGS) -c $(RTCP).c
	$(CC) $(PJ_CFLAGS) $(EXTFLAGS) -c $(DNS).c
	$(CC) $(PJ_CFLAGS) $(EXTFLAGS) -c $(DNSREC).c
	$(CC) $(PJ_CFLAGS) $(EXTFLAGS) -c $(H264).c
	$(CC) $(PJ_CFLAGS) $(EXTFLAGS) -c $(VPX).c
	$(CC) $(PJ_CFLAGS) $(EXTFLAGS) -c $(HTTP).c
	$(CC) $(PJ_CFLAGS) $(EXTFLAGS) -c $(URL).c
	$(CC) $(PJ_CFLAGS) $(EXTFLAGS) -c $(URI).c
	$(CC) $(PJ_CFLAGS) $(EXTFLAGS) -c $(CRYPTO).c
	$(CC) $(PJ_CFLAGS) $(EXTFLAGS) -c $(SDES).c
	$(CC) $(PJ_CFLAGS) $(EXTFLAGS) -c $(RTP).c
	$(CC) $(PJ_CFLAGS) $(EXTFLAGS) -c $(SRTP).c
	$(CC) $(PJ_CFLAGS) $(EXTFLAGS) -c $(PRES).c
	$(CC) $(PJ_CFLAGS) $(EXTFLAGS) -c $(VIDEO).c
	$(CC) $(PJ_CFLAGS) $(EXTFLAGS) -c $(STREAM).c
	$(CC) $(PJ_CFLAGS) $(EXTFLAGS) -c $(AUDIO).c
	$(CC) $(PJ_CFLAGS) $(EXTFLAGS) -c $(AUTH).c
	$(CC) $(PJ_CFLAGS) $(EXTFLAGS) -c $(MULTI).c

	$(CXX) $(PJ_CFLAGS) -o $(JSON) $(JSON).o $(PJ_LDFLAGS) $(PJ_LDLIBS) $(LDFLAGS) $(LIB_FUZZING_ENGINE)
	$(CXX) $(PJ_CFLAGS) -o $(XML)  $(XML).o  $(PJ_LDFLAGS) $(PJ_LDLIBS) $(LDFLAGS) $(LIB_FUZZING_ENGINE)
	$(CXX) $(PJ_CFLAGS) -o $(SDP)  $(SDP).o  $(PJ_LDFLAGS) $(PJ_LDLIBS) $(LDFLAGS) $(LIB_FUZZING_ENGINE)
	$(CXX) $(PJ_CFLAGS) -o $(ICE)  $(ICE).o  $(PJ_LDFLAGS) $(PJ_LDLIBS) $(LDFLAGS) $(LIB_FUZZING_ENGINE)
	$(CXX) $(PJ_CFLAGS) -o $(STUN) $(STUN).o $(PJ_LDFLAGS) $(PJ_LDLIBS) $(LDFLAGS) $(LIB_FUZZING_ENGINE)
	$(CXX) $(PJ_CFLAGS) -o $(SIP)  $(SIP).o  $(PJ_LDFLAGS) $(PJ_LDLIBS) $(LDFLAGS) $(LIB_FUZZING_ENGINE)
	$(CXX) $(PJ_CFLAGS) -o $(SIPTRAN)  $(SIPTRAN).o  $(PJ_LDFLAGS) $(PJ_LDLIBS) $(LDFLAGS) $(LIB_FUZZING_ENGINE)
	$(CXX) $(PJ_CFLAGS) -o $(SIPDIAL)  $(SIPDIAL).o  $(PJ_LDFLAGS) $(PJ_LDLIBS) $(LDFLAGS) $(LIB_FUZZING_ENGINE)
	$(CXX) $(PJ_CFLAGS) -o $(RTCP) $(RTCP).o $(PJ_LDFLAGS) $(PJ_LDLIBS) $(LDFLAGS) $(LIB_FUZZING_ENGINE)
	$(CXX) $(PJ_CFLAGS) -o $(DNS)  $(DNS).o  $(PJ_LDFLAGS) $(PJ_LDLIBS) $(LDFLAGS) $(LIB_FUZZING_ENGINE)
	$(CXX) $(PJ_CFLAGS) -o $(DNSREC)  $(DNSREC).o  $(PJ_LDFLAGS) $(PJ_LDLIBS) $(LDFLAGS) $(LIB_FUZZING_ENGINE)
	$(CXX) $(PJ_CFLAGS) -o $(H264) $(H264).o $(PJ_LDFLAGS) $(PJ_LDLIBS) $(LDFLAGS) $(LIB_FUZZING_ENGINE)
	$(CXX) $(PJ_CFLAGS) -o $(VPX)  $(VPX).o  $(PJ_LDFLAGS) $(PJ_LDLIBS) $(LDFLAGS) $(LIB_FUZZING_ENGINE)
	$(CXX) $(PJ_CFLAGS) -o $(HTTP) $(HTTP).o $(PJ_LDFLAGS) $(PJ_LDLIBS) $(LDFLAGS) $(LIB_FUZZING_ENGINE)
	$(CXX) $(PJ_CFLAGS) -o $(RTP)  $(RTP).o  $(PJ_LDFLAGS) $(PJ_LDLIBS) $(LDFLAGS) $(LIB_FUZZING_ENGINE)
	$(CXX) $(PJ_CFLAGS) -o $(SRTP)  $(SRTP).o  $(PJ_LDFLAGS) $(PJ_LDLIBS) $(LDFLAGS) $(LIB_FUZZING_ENGINE)
	$(CXX) $(PJ_CFLAGS) -o $(SDES)  $(SDES).o  $(PJ_LDFLAGS) $(PJ_LDLIBS) $(LDFLAGS) $(LIB_FUZZING_ENGINE)
	$(CXX) $(PJ_CFLAGS) -o $(URL)  $(URL).o  $(PJ_LDFLAGS) $(PJ_LDLIBS) $(LDFLAGS) $(LIB_FUZZING_ENGINE)
	$(CXX) $(PJ_CFLAGS) -o $(URI)  $(URI).o  $(PJ_LDFLAGS) $(PJ_LDLIBS) $(LDFLAGS) $(LIB_FUZZING_ENGINE)
	$(CXX) $(PJ_CFLAGS) -o $(PRES)  $(PRES).o  $(PJ_LDFLAGS) $(PJ_LDLIBS) $(LDFLAGS) $(LIB_FUZZING_ENGINE)
	$(CXX) $(PJ_CFLAGS) -o $(VIDEO)  $(VIDEO).o  $(PJ_LDFLAGS) $(PJ_LDLIBS) $(LDFLAGS) $(LIB_FUZZING_ENGINE)
	$(CXX) $(PJ_CFLAGS) -o $(AUDIO)  $(AUDIO).o  $(PJ_LDFLAGS) $(PJ_LDLIBS) $(LDFLAGS) $(LIB_FUZZING_ENGINE)
	$(CXX) $(PJ_CFLAGS) -o $(STREAM)  $(STREAM).o  $(PJ_LDFLAGS) $(PJ_LDLIBS) $(LDFLAGS) $(LIB_FUZZING_ENGINE)
	$(CXX) $(PJ_CFLAGS) -o $(AUTH)  $(AUTH).o  $(PJ_LDFLAGS) $(PJ_LDLIBS) $(LDFLAGS) $(LIB_FUZZING_ENGINE)
	$(CXX) $(PJ_CFLAGS) -o $(MULTI)  $(MULTI).o  $(PJ_LDFLAGS) $(PJ_LDLIBS) $(LDFLAGS) $(LIB_FUZZING_ENGINE)
	$(CXX) $(PJ_CFLAGS) -o $(CRYPTO) $(CRYPTO).o $(PJ_LDFLAGS) $(PJ_LDLIBS) $(LDFLAGS) $(LIB_FUZZING_ENGINE) -lssl -lcrypto -lz

clean:
	rm $(JSON) $(XML) $(SDP) $(ICE) $(STUN) $(SIP) $(SIPTRAN) $(SIPDIAL) $(RTCP) $(DNS) $(DNSREC) $(H264) $(VPX) $(HTTP) $(URL) $(URI) $(CRYPTO) $(RTP) $(SRTP) $(PRES) $(VIDEO) $(AUDIO) $(STREAM) $(SDES) $(AUTH)  $(MULTI) *.o
