CFLAGS = -Wall -c  -O3
LFLAGS = -Wall -O3
LIBRARIES = pcap pthread 

OBJ1 = test.o nfa-multimap.o
OBJ2 = str_gen.o nfa-multimap.o
OBJ3 = match_test.o nfa-multimap.o
OBJ4 = eps_elimination.o nfa-multimap.o
OBJ5 = direct_simulate.o nfa-multimap.o
OBJ6 = kgram_simul.o kgram.o
OBJ7 = dfa_simulate.o nfa-multimap.o
OBJ8 = alpha_reduction_simul.o nfa-multimap.o
OBJ9 = alphabet_reduction.o nfa-multimap.o
OBJ10 = kgram_alpha_reduction.o kgram.o
OBJ11 = kgram_simul_pkt.o kgram.o
OBJ12 = kgram_alpha_rdt_simul.o kgram.o
OBJ13 = direct_rdt_simul.o nfa-multimap.o
OBJ14 = kgram_alpha_rdt_simul_pkt.o kgram.o
OBJ15 = kgram_combine_rdt_alpha.o kgram.o
OBJ16 = kgram_big_trans_build.o kgram.o
OBJ17 = kgram_combine_rdt_trans.o
OBJ18 = eps_elimination_nfas.o nfa-multimap.o
OBJ19 = multi_thread_simul.o nfa-multimap.o
OBJ20 = multi_byte_simul_no_val.o nfa-multimap.o
OBJ21 = trace_trans.o
OBJ22 = direct_simulate_pkdd.o nfa-multimap.o

BIN1 = test
BIN2 = str_gen
BIN3 = match_test
BIN4 = eps_elimination
BIN5 = direct_simulate
BIN6 = kgram_simul
BIN7 = dfa_simulate
BIN8 = alpha_reduction_simul
BIN9 = alphabet_reduction
BIN10 = kgram_alpha_reduction
BIN11 = kgram_simul_pkt
BIN12 = kgram_alpha_rdt_simul
BIN13 = direct_rdt_simul
BIN14 = kgram_alpha_rdt_simul_pkt
BIN15 = kgram_combine_rdt_alpha
BIN16 = kgram_big_trans_build
BIN17 = kgram_combine_rdt_trans
BIN18 = eps_elimination_nfas
BIN19 = multi_thread_simul
BIN20 = multi_byte_simul_no_val
BIN21 = trace_trans
BIN22 = direct_simulate_pkdd

CC = g++
DEBUG = -g 

LIBS = $(patsubst %, -l%, $(LIBRARIES))

all: $(BIN1) $(BIN2) $(BIN3) $(BIN4) $(BIN5)  $(BIN6) $(BIN7) $(BIN8) $(BIN9) $(BIN10) $(BIN11) $(BIN12) $(BIN13) $(BIN14) $(BIN15) $(BIN16) $(BIN17) $(BIN18) $(BIN19) $(BIN20) $(BIN21) $(BIN22)

$(BIN1): $(OBJ1)
	$(CC) $(LFLAGS) $(OBJ1) -o $(BIN1)

$(BIN2): $(OBJ2)
	$(CC) $(LFLAGS) $(OBJ2) -o $(BIN2)

$(BIN3): $(OBJ3)
	$(CC) $(LFLAGS) $(OBJ3) -o $(BIN3) 
 
$(BIN4): $(OBJ4)
	$(CC) $(LFLAGS) $(OBJ4) -o $(BIN4) 

$(BIN5): $(OBJ5)
	$(CC) $(LFLAGS) $(LIBS) $(OBJ5) -o $(BIN5) 

$(BIN6): $(OBJ6)
	$(CC) $(LFLAGS) $(OBJ6) -o $(BIN6) 

$(BIN7): $(OBJ7)
	$(CC) $(LFLAGS) $(OBJ7) -o $(BIN7) 

$(BIN8): $(OBJ8)
	$(CC) $(LFLAGS) $(LIBS) $(OBJ8) -o $(BIN8) 

$(BIN9): $(OBJ9)
	$(CC) $(LFLAGS) $(OBJ9) -o $(BIN9) 

$(BIN10): $(OBJ10)
	$(CC) $(LFLAGS) $(OBJ10) -o $(BIN10) 

$(BIN11): $(OBJ11)
	$(CC) $(LFLAGS) $(LIBS) $(OBJ11) -o $(BIN11) 

$(BIN12): $(OBJ12)
	$(CC) $(LFLAGS) $(OBJ12) -o $(BIN12) 

$(BIN13): $(OBJ13)
	$(CC) $(LFLAGS) $(LIBS) $(OBJ13) -o $(BIN13) 

$(BIN14): $(OBJ14)
	$(CC) $(LFLAGS) $(LIBS) $(OBJ14) -o $(BIN14) 

$(BIN15): $(OBJ15)
	$(CC) $(LFLAGS) $(OBJ15) -o $(BIN15) 

$(BIN16): $(OBJ16)
	$(CC) $(LFLAGS) $(OBJ16) -o $(BIN16) 

$(BIN17): $(OBJ17)
	$(CC) $(LFLAGS) $(OBJ17) -o $(BIN17) 

$(BIN18): $(OBJ18)
	$(CC) $(LFLAGS) $(OBJ18) -o $(BIN18)

$(BIN19): $(OBJ19)
	$(CC) $(LFLAGS) $(LIBS) $(OBJ19) -o $(BIN19)

$(BIN20): $(OBJ20)
	$(CC) $(LFLAGS) $(LIBS) $(OBJ20) -o $(BIN20)

$(BIN21): $(OBJ21)
	$(CC) $(LFLAGS) $(LIBS) $(OBJ21) -o $(BIN21)

$(BIN22): $(OBJ22)
	$(CC) $(LFLAGS) $(LIBS) $(OBJ22) -o $(BIN22)

test.o str_gen.o match_test.o nfa-multimap.o eps_elimination.o direct_simulate.o dfa_simulate.o alpha_reduction_simul.o alphabet_reduction.o direct_rdt_simul.o eps_elimination_nfas.o multi_thread_simul.o multi_byte_simul_no_val.o: nfa-multimap.h

kgram_simul.o kgram.o kgram_alpha_reduction.o kgram_simul_pkt.o kgram_alpha_rdt_simul.o kgram_alpha_rdt_simul_pkt.o kgram_combine_rdt_alpha.o kgram_big_trans_build.o: kgram.h

clean:
	rm *.o 

