main_ga_server = ga_server.c
main_ga_client = ga_client.c
main_nn_exec = nn.c
main_nn_init = nn_init_generator.c
main_nn_agr = nn_agr.c

headers = my_header.h ga_aux_prot.h gen_aux_prot.h nn_aux_prot.h
all_aux = ga_aux.o nn_aux.o gen_aux.o

all : ga_server ga_client nn_exec nn_init nn_agr
	rm *.o

ga_server : ga_server.o $(all_aux)
	gcc -lm -o ga_server ga_server.o $(all_aux) 

ga_server.o : $(main_ga_server) $(headers)
	gcc -c -o ga_server.o $(main_ga_server)


ga_client : ga_client.o $(all_aux)
	gcc -lm -o ga_client ga_client.o $(all_aux)

ga_client.o : $(main_ga_client) $(headers)
	gcc -c -o ga_client.o $(main_ga_client)


nn_exec : nn_exec.o $(all_aux)
	gcc -lm -o nn_exec nn_exec.o $(all_aux)

nn_exec.o : $(main_nn_exec) $(headers)
	gcc -c -o nn_exec.o $(main_nn_exec)


nn_init : nn_init.o $(all_aux)
	gcc -lm -o nn_init nn_init.o $(all_aux)

nn_init.o : $(main_nn_init) my_header.h
	gcc -c -o nn_init.o $(main_nn_init)


nn_agr : nn_agr.o $(all_aux)
	gcc -lm -o nn_agr nn_agr.o $(all_aux)

nn_agr.o : $(main_nn_agr) $(headers)
	gcc -c -o nn_agr.o $(main_nn_agr)

clean : 
	rm ga_server.o ga_client.o nn_exec.o nn_init.o nn_agr.o $(all_aux) \
           ga_server ga_client nn_exec nn_init nn_agr



