CC=gcc
#CFLAGS?=-Wall -ggdb
CFLAGS?=-O2
LDFLAGS+=-lpcap -lssl -lcrypto
PROGRAMS=parasite6 dos-new-ip6 detect-new-ip6 fake_router6 fake_advertise6 fake_mld6 fake_mipv6 redir6 smurf6 alive6 toobig6 rsmurf6 implementation6 implementation6d sendpees6 fuzz_ip6 flood_router6 flood_advertise6 trace6 dnsdict6 recon6

all:	thc-ipv6-lib.o $(PROGRAMS)

debug:
	-$(CC) $(CFLAGS) $(LDFLAGS) -o test test.c thc-ipv6-lib.o
	-$(CC) $(CFLAGS) $(LDFLAGS) -o test2 test2.c thc-ipv6-lib.o
	-$(CC) $(CFLAGS) $(LDFLAGS) -o test3 test3.c thc-ipv6-lib.o

parasite6:	parasite6.c thc-ipv6-lib.o
	$(CC) $(CFLAGS) $(LDFLAGS) -o parasite6 parasite6.c thc-ipv6-lib.o

dos-new-ip6:	dos-new-ip6.c thc-ipv6-lib.o
	$(CC) $(CFLAGS) $(LDFLAGS) -o dos-new-ip6 dos-new-ip6.c thc-ipv6-lib.o

detect-new-ip6:	detect-new-ip6.c thc-ipv6-lib.o
	$(CC) $(CFLAGS) $(LDFLAGS) -o detect-new-ip6 detect-new-ip6.c thc-ipv6-lib.o

fake_router6:	fake_router6.c thc-ipv6-lib.o
	$(CC) $(CFLAGS) $(LDFLAGS) -o fake_router6 fake_router6.c thc-ipv6-lib.o

fake_advertise6:	fake_advertise6.c thc-ipv6-lib.o
	$(CC) $(CFLAGS) $(LDFLAGS) -o fake_advertise6 fake_advertise6.c thc-ipv6-lib.o

fake_mld6:	fake_mld6.c thc-ipv6-lib.o
	$(CC) $(CFLAGS) $(LDFLAGS) -o fake_mld6 fake_mld6.c thc-ipv6-lib.o

fake_mipv6:	fake_mipv6.c thc-ipv6-lib.o
	$(CC) $(CFLAGS) $(LDFLAGS) -o fake_mipv6 fake_mipv6.c thc-ipv6-lib.o

redir6:	redir6.c thc-ipv6-lib.o
	$(CC) $(CFLAGS) $(LDFLAGS) -o redir6 redir6.c thc-ipv6-lib.o

smurf6:	smurf6.c thc-ipv6-lib.o
	$(CC) $(CFLAGS) $(LDFLAGS) -o smurf6 smurf6.c thc-ipv6-lib.o

rsmurf6:	rsmurf6.c thc-ipv6-lib.o
	$(CC) $(CFLAGS) $(LDFLAGS) -o rsmurf6 rsmurf6.c thc-ipv6-lib.o

alive6:	alive6.c thc-ipv6-lib.o
	$(CC) $(CFLAGS) $(LDFLAGS) -o alive6 alive6.c thc-ipv6-lib.o

toobig6:	toobig6.c thc-ipv6-lib.o
	$(CC) $(CFLAGS) $(LDFLAGS) -o toobig6 toobig6.c thc-ipv6-lib.o

implementation6:	implementation6.c thc-ipv6-lib.o
	$(CC) $(CFLAGS) $(LDFLAGS) -o implementation6 implementation6.c thc-ipv6-lib.o

implementation6d:	implementation6d.c thc-ipv6-lib.o
	$(CC) $(CFLAGS) $(LDFLAGS) -o implementation6d implementation6d.c thc-ipv6-lib.o

sendpees6:	sendpees6.c thc-ipv6-lib.o
	$(CC) $(CFLAGS) $(LDFLAGS) -o sendpees6 sendpees6.c thc-ipv6-lib.o

fuzz_ip6:	fuzz_ip6.c thc-ipv6-lib.o
	$(CC) $(CFLAGS) $(LDFLAGS) -o fuzz_ip6 fuzz_ip6.c thc-ipv6-lib.o

flood_router6:	flood_router6.c thc-ipv6-lib.o
	$(CC) $(CFLAGS) $(LDFLAGS) -o flood_router6 flood_router6.c thc-ipv6-lib.o

flood_advertise6:	flood_advertise6.c thc-ipv6-lib.o
	$(CC) $(CFLAGS) $(LDFLAGS) -o flood_advertise6 flood_advertise6.c thc-ipv6-lib.o

recon6:	recon6.c thc-ipv6-lib.o
	$(CC) $(CFLAGS) $(LDFLAGS) -o recon6 recon6.c thc-ipv6-lib.o

trace6:	trace6.c thc-ipv6-lib.o
	$(CC) $(CFLAGS) $(LDFLAGS) -o trace6 trace6.c thc-ipv6-lib.o

dnsdict6:	dnsdict6.c thc-ipv6-lib.o
	$(CC) $(CFLAGS) $(LDFLAGS) -o dnsdict6 dnsdict6.c thc-ipv6-lib.o -lpthread

thc-ipv6-lib.o: thc-ipv6-lib.c
	$(CC) $(CFLAGS) -c thc-ipv6-lib.c

strip:	all
	strip $(PROGRAMS)

install: all strip
	cp -v $(PROGRAMS) /usr/local/bin
	cp -v thc-ipv6.8 /usr/local/man/man8

clean:
	rm -vf $(PROGRAMS) t t.c test thc-ipv6-lib.o implementation6 implementation6d test test1 test2 test3 core DEADJOE *~

backup:	clean
	tar czvf ../thc-ipv6-bak.tar.gz *
	sync
