 #################################
#      Q (c) 1999 by Mixter       #
#                                 #
#  remote access and redirection  #
# services with strong encryption #
 #################################

CC = gcc
FLAGS = -Wall -O2

# For Solaris:
#LINK = -lsocket -lnsl

# Pick an AES candidate of your choice
# The file needs #include "q.h" instead of "../std_defs.h"
AES_FILE = alg.c

# End of user definable stuff
all: obj Q qs qd ql transd clean

distclean: clean
	rm -f mkpass Q qs qd ql transd

clean: rmpass
	rm -f *.o *~

mkpass:
	${CC} ${FLAGS} -o mkpass mkpass.c

Q:	alg.o base64.o aes.o utils.o term.o
	${CC} ${FLAGS} -c q.c
	${CC} ${FLAGS} ${LINK} q.o alg.o base64.o aes.o utils.o term.o -o Q
	strip Q
	cp Q ..

qs:	forge.o stega.o utils.o
	${CC} ${FLAGS} -c qs.c
	${CC} ${FLAGS} ${LINK} -o qs qs.o forge.o stega.o utils.o
	strip qs
	cp qs ..


qd:	ipcontrol.o utils.o stega.o red.o pipes.o alg.o base64.o aes.o term.o
	${CC} ${FLAGS} -c qd.c
	${CC} ${FLAGS} ${LINK} -o qd qd.o stega.o ipcontrol.o pipes.o red.o aes.o alg.o base64.o utils.o term.o
	strip qd
	cp qd ..

ql:	PASS.h utils.o stega.o pipes.o alg.o base64.o aes.o term.o
	${CC} ${FLAGS} -c ql.c
	${CC} ${FLAGS} ${LINK} -o ql ql.o stega.o pipes.o aes.o alg.o base64.o utils.o term.o
	strip ql
	cp ql ..

transd: utils.o base64.o aes.o alg.o term.o
	${CC} ${FLAGS} -c transd.c
	${CC} ${FLAGS} ${LINK} -o transd transd.o utils.o base64.o aes.o alg.o term.o
	strip transd
	cp transd ..

obj: alg.o aes.o base64.o forge.o pipes.o red.o stega.o utils.o term.o ipcontrol.o

alg.o:  ${AES_FILE}
	${CC} ${FLAGS} -c ${AES_FILE} -o alg.o

aes.o:
	${CC} ${FLAGS} -c aes.c

base64.o:
	${CC} ${FLAGS} -c base64.c

forge.o:
	${CC} ${FLAGS} -c forge.c

pipes.o:
	${CC} ${FLAGS} -c pipes.c

red.o:
	${CC} ${FLAGS} -c red.c

ipcontrol.o: PASS.h
	${CC} ${FLAGS} -c ipcontrol.c

stega.o:
	${CC} ${FLAGS} -c stega.c

utils.o:
	${CC} ${FLAGS} -c utils.c

term.o:
	${CC} ${FLAGS} -c term.c

PASS.h: mkpass
	./mkpass

rmpass:
	@head -5 /dev/urandom > PASS.h ;# secure file wiping
	rm -f PASS.h
