header = my_header.h
prot = aux_prot.h

ga_server_dep = ga_server.o \
 rwn.o \
 read_neuron_array.o \
 get_fitness.o \
 mate.o \
 toss.o \
 dice_toss.o \
 coin_toss.o \
 copy_neuron_array.o \
 region_gen.o \
 inner_neuron.o \
 near_neuron.o \
 copy_neuron.o \
 isolate_region.o \
 remove_neuron.o \
 append_neuron.o \
 mutate_neuron.o \
 mutate_neuron_array.o \
 free_neuron_array.o \
 dwrite_neuron_array.o \
 load_ga_server_config.o \
 rand_gen.o \
 roulette.o \
 inner.o \
 sort_neuron_array.o \
 sort_neuron_connections.o \
 write_ga_server_remote_config.o \
 clean_char_buffer.o 
  
ga_server_remote_dep = ga_server_remote.o \
 rwn.o \
 read_ga_server_remote_config.o
 
ga_client_dep = ga_client.o \
 rwn.o\
 load_nn_config.o \
 dice_toss.o \
 read_neuron_array.o \
 fwrite_neuron_array.o \
 free_neuron_array.o \
 load_num_neuron.o \
 load_neuron_array.o

nn_exec_dep = nn.o \
 rwn.o \
 load_nn_config.o \
 load_num_neuron.o \
 load_neuron_array.o \
 sort_neuron_array.o \
 load_input.o \
 load_output.o \
 forward_propagation.o \
 output_layer_error.o \
 back_propagation.o \
 weight_update.o \
 fwrite_neuron_array.o \
 dwrite_neuron_array.o \
 sort_neuron_connections.o \
 der.o \
 threshold.o

nn_init_dep = nn_init_generator.o \
 rand_gen.o \
 coin_toss.o \
 dice_toss.o 
 
nn_agr_dep = nn_agr.o \
 rand_gen.o \
 coin_toss.o \
 dice_toss.o \
 load_num_neuron.o \
 load_neuron_array.o \
 append_neuron.o \
 fwrite_neuron_array.o \
 copy_neuron_array.o \
 copy_neuron.o \
 free_neuron_array.o \
 sort_neuron_array.o \
 sort_neuron_connections.o

all : ga_server ga_client ga_server_remote nn_exec nn_init nn_agr


ga_server : $(ga_server_dep) $(headers) $(prot) sig_usr1.h sig_alarm.h
	gcc -lm -o ga_server $(ga_server_dep)

ga_client : $(ga_client_dep) $(headers) $(prot)
	gcc -lm -o ga_client $(ga_client_dep)

ga_server_remote : $(ga_server_remote_dep) $(headers) $(prot)
	gcc -lm -o ga_server_remote $(ga_server_remote_dep)

nn_exec : $(nn_exec_dep) $(headers) $(prot)
	gcc -lm -o nn_exec $(nn_exec_dep)

nn_init : $(nn_init_dep) $(headers) $(prot)
	gcc -lm -o nn_init $(nn_init_dep)

nn_agr : $(nn_agr_dep) $(headers) $(prot)
	gcc -lm -o nn_agr $(nn_agr_dep)

clean : 
	-@rm *.o
