OBJECTS = main.o client.o server.o det_dist.o file_parser.o \
	ports.o common_data.o node_manager.o glob_log.o cmd_args.o \
	params.o mt_alloc/mt_malloc.o

CPPFLAGS = -O3 -Wall
#CXX = g++

eqnc : $(OBJECTS)
	$(CXX) -lpthread $(CPPFLAGS) -o eqnc $(OBJECTS)

main.o : client.hpp socket.hpp server.hpp glob_log.hpp \
	det_dist.hpp file_parser.hpp common_data.hpp \
	timer.hpp cmd_args.hpp params.hpp atomic_i686.hpp \
	config.hpp udefs.hpp mt_alloc/mt_allocator.hpp \
	allocator.hpp

client.o : udefs.hpp socket.hpp det_dist.hpp \
	common_data.hpp node_manager.hpp client.hpp \
	mt_alloc/mt_allocator.hpp allocator.hpp config.hpp

server.o : udefs.hpp socket.hpp det_dist.hpp \
	common_data.hpp node_manager.hpp server.hpp \
	mt_alloc/mt_allocator.hpp allocator.hpp

ports.o : ports.hpp

common_data.o : node_manager.hpp common_data.hpp \
	mt_alloc/mt_allocator.hpp allocator.hpp config.hpp

file_parser.o : udefs.hpp file_parser.hpp \
	mt_alloc/mt_allocator.hpp allocator.hpp config.hpp

det_dist.o : udefs.hpp socket.hpp common_data.hpp \
	node_manager.hpp det_dist.hpp atomic_i686.hpp \
	config.hpp mt_alloc/mt_allocator.hpp allocator.hpp

node_manager.o : ports.hpp concurrence.hpp udefs.hpp \
	socket.hpp node_manager.hpp glob_log.hpp \
	atomic_i686.hpp config.hpp mt_alloc/mt_allocator.hpp \
	allocator.hpp

glob_log.o : glob_log.hpp

cmd_args.o : cmd_args.hpp

params.o : params.hpp cmd_args.hpp common_data.hpp

mt_malloc.o : mt_alloc/mt_malloc.hpp mt_alloc/config.hpp \
	mt_alloc/global_pool.hpp mt_alloc/impl_structs.hpp \
	mt_alloc/naive_alloc.hpp mt_alloc/page_alloc.hpp \
	mt_alloc/synchronization.hpp mt_alloc/thread_heap.hpp

.PHONY : clean
.PHONY : release

clean : 
	rm *.o eqnc ./mt_alloc/*.o

release : 
	cp *.cpp ./release
	cp *.hpp ./release
	cp mt_alloc/*.hpp ./release/mt_alloc
	cp mt_alloc/*.cpp ./release/mt_alloc
	cp Makefile ./release/
	cp data.dat ./release/
	cp COPYING ./release/
	cp eqnc.conf ./release/
	cp README ./release/
	cp todo.txt ./release/
	cp ChangeLog ./release/
	rm release.zip
	zip -r release.zip release/
