OBJECTS=../IOLib/mod_aio.o  ../IOLib/mod_epoll.o  ../IOLib/mod_nbio.o  ../IOLib/mod_util.o
TCPOBJECTS=../IOLib/mod_recvpkt.o  ../IOLib/mod_sendpkt.o
GCC=gcc -O3 -I. 
GHC=ghc -O3 -fglasgow-exts -cpp -smp --make -laio -DUSE_EPOLL -DUSE_AIO -DUSE_MUTEX -DUSE_EXCEPTION -L. -i../IOLib -i../ThreadLib 
GHC_PROF=ghc -prof -auto-all  -fglasgow-exts -smp --make -laio -lipq -L. -i../IOLib -i../ThreadLib 
MAIN=Server

all:	main tcp

main:
	${GHC} ${OBJECTS} ${MAIN}.hs -o ${MAIN}.bin

prof:
	${GHC_PROF} ${OBJECTS} ${MAIN}.hs -o ${MAIN}.bin

tcp:
	${GHC} ${OBJECTS} ${TCPOBJECTS} ${MAIN}.hs -lipq -DUSE_TCP -o ${MAIN}_tcp.bin

setup:
	sudo modprobe iptable_filter || true
	sudo modprobe ip_queue || true
	sudo iptables -A INPUT -p TCP --dport 8888 -j QUEUE
	sudo sysctl -w fs.file-max=1048576
	sudo sysctl -w fs.aio-max-nr=1048576
	sudo sysctl -w kernel.threads-max=1048576

run:
	sudo bash -c 'ulimit -n 1048576; ./Server.bin +RTS -H20M -N1 -RTS 1 2 8000 /var/www 300 150'

runtcp:
	sudo bash -c 'ulimit -n 1048576; ./Server_tcp.bin +RTS -H20M -N1 -RTS 1 2 8888 /var/www 300 150'

clean:
	rm -f *.o *.hi *~ *.bin

