CC = gcc
LD = gcc
MCC = mpicc
MLD = mpicc
CFLAGS=-O3
LFLAGS=-lm -O3

all: MLogisticEmbed MLogisticPred MLogisticEmbed_MPI

MPI: MLogisticEmbed_MPI

single: MLogisticEmbed MLogisticPred 

common.o: LogisticEmbed_common.h LogisticEmbed_common.c
	$(CC) -o common.o LogisticEmbed_common.c -c $(CFLAGS)  

ptable.o: PairHashTable.h PairHashTable.c
	$(CC) -o ptable.o PairHashTable.c -c $(CFLAGS) 

ttable.o: TransitionTable.h TransitionTable.c
	$(CC) -o ttable.o TransitionTable.c -c $(CFLAGS) 

embedio.o: EmbedIO.h EmbedIO.c
	$(CC) -o embedio.o EmbedIO.c -c $(CFLAGS) 

idxqueue.o: IdxQueue.h IdxQueue.c
	$(CC) -o idxqueue.o IdxQueue.c -c $(CFLAGS) 

cnmap.o: CNMap.h CNMap.c
	$(CC) -o cnmap.o CNMap.c -c $(CFLAGS) 

pred.o: LogisticPred.h LogisticPred.c
	$(CC) -o pred.o LogisticPred.c -c $(CFLAGS) -DFOROTHER 

mlme.o: HLogisticEmbed.h HLogisticEmbed.c
	$(CC) -o mlme.o HLogisticEmbed.c -c $(CFLAGS) 

mlme_test.o: HLogisticEmbed.h HLogisticEmbed.c
	$(CC) -o mlme_test.o HLogisticEmbed.c -c $(CFLAGS) -DTEST 

mlme_mpi.o: HLogisticEmbed.h HLogisticEmbed.c
	$(MCC) -o mlme_mpi.o HLogisticEmbed.c -c $(CFLAGS) -DMPI 

MLogisticEmbed: mlme.o pred.o cnmap.o idxqueue.o embedio.o ttable.o ptable.o common.o
	$(LD) -o MLogisticEmbed mlme.o pred.o cnmap.o idxqueue.o embedio.o ttable.o ptable.o common.o $(LFLAGS) 

MLogisticPred: mlme_test.o pred.o cnmap.o idxqueue.o embedio.o ttable.o ptable.o common.o
	$(LD) -o MLogisticPred mlme_test.o pred.o cnmap.o idxqueue.o embedio.o ttable.o ptable.o common.o $(LFLAGS)

MLogisticEmbed_MPI: mlme_mpi.o pred.o cnmap.o idxqueue.o embedio.o ttable.o ptable.o common.o
	$(MLD) -o MLogisticEmbed_MPI mlme_mpi.o pred.o cnmap.o idxqueue.o embedio.o ttable.o ptable.o common.o $(LFLAGS)
clean:
	rm -f *.o  MLogistic*
