BIG_INLINE_LIMIT = 20000
CFLAGS1 =  -DUSE_CTENSOR -DUSE_MEA_NUSSINOV -DUSE_TMPL_ON_TRANSITION -DUSE_FLOAT_SCORE
# -DUSE_CONTRAFOLD_MODEL
# -DUSE_CTENSOR
# -DUSE_ARRAY_FILE
# -DREUSE_TRI_MATRIX
# -DUSE_MEA_NUSSINOV
# -DAPPROX_MATH
# -DUSE_TSTACK4
# -DMEA_NUSSINOV_SUBTRACT_OUTER
# -DUSE_TMPL_ON_TRANSITION
# -DMEA_PROB_CUTOFF
# -DUSE_FLOAT_SCORE

CC = g++

INCLUDES = -I./rfold-0.1/src/vienna/

CFLAGS = -O3 -Wall -static                        \
	 -finline-limit=$(BIG_INLINE_LIMIT) $(CFLAGS1)
# LIBS = 
# CFLAGS_D = -O0 -g3 -pg -Wall -DDEBUG -static               \
# 	   -fkeep-inline-functions -fkeep-static-consts      \
# 	   -finline-limit=0 -fno-default-inline $(CFLAGS1)
# LIBS_D = 

.PHONY: clean depend sync
.SUFFIXES: .cpp .hpp .o .o_D

SRCS0 =                      \
alpha.cpp		     \
opt.cpp			     \

SRCS     = ${SRCS0} run_rfold.cpp

OBJS      = ${SRCS:.cpp=.o}
# OBJS_D    = ${SRCS:.cpp=.o_D}

run_rfold: run_rfold.o $(OBJS)
	$(CC) $(CFLAGS) -o $@ $^ $(LIBS)
# run_rfold_D: run_rfold.o_D $(OBJS_D)
# 	$(CC) $(CFLAGS_D) -o $@ $^ $(LIBS_D)
# 
.cpp.o:
	$(CC) $(CFLAGS) $(INCLUDES) -o $@ -c $<
# .cpp.o_D:
# 	$(CC) $(CFLAGS_D) $(INCLUDES) -o $@ -c $<

clean:
	rm -rf core {.,*}/{*.o,*.o_*,*.da,*.bb,*.bbg,*.gcda,*.gcno,*.gcov,*.stackdump}

SUFLIST = o o_D 
depend:
	for opt in $(SUFLIST);                     \
	do touch make_deps_$$opt;                  \
	   makedepend -o.$$opt -fmake_deps_$$opt   \
	   -Y -- $(CFLAGS_D) -- $(SRCS);\
	done

#include make_deps_o
#include make_deps_o_D

# DO NOT DELETE

alpha.o: alpha.hpp util.hpp Vector.hpp array.hpp matrix.hpp
opt.o: util.hpp Vector.hpp array.hpp matrix.hpp opt.hpp
run_rfold.o: opt.hpp rfold.hpp util.hpp Vector.hpp array.hpp matrix.hpp
run_rfold.o: tri_matrix_ring.hpp array_ring.hpp array_file.hpp
run_rfold.o: array_range.hpp seq_file.hpp alpha.hpp ct_file.hpp score.hpp
run_rfold.o: energy_model.hpp tensor.hpp vienna/energy_model_default_params.hpp






