forked from hahnlab/CAFE
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMakefile.in
133 lines (105 loc) · 3.32 KB
/
Makefile.in
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
CC=@CC@
CXX=@CXX@
LD=@CXX@
CXXFLAGS=@CXXFLAGS@
prefix=/usr/local
#
# Compiler flags
#
VPATH = cafe:libcommon:libtree:tests
INCLUDE:=-I cafe -I libtree -I libcommon
CFLAGS = @ALL_WARNINGS@ @C_STANDARD@ $(INCLUDE) @OPENMP_CXXFLAGS@
CXXFLAGS = @ALL_WARNINGS@ -std=c++11 $(INCLUDE) @OPENMP_CXXFLAGS@
LINKFLAGS = -lpthread -lm @LIBS@
TESTLIBS=-lCppUTest -lCppUTestExt
AUX = CHANGELOG.md configure INSTALL LICENSE Makefile.in mcl2rawcafe.py README.md config.h.in
#
# Project files
#
CSRCS=cafe_family.c cafe_main.c cafe_report.c cafe_tree.c cafe_shell.c birthdeath.c \
chooseln_cache.c phylogeny.c tree.c grpcmp.c histogram.c \
input_values.c matrix_exponential.c regexpress.c utils_string.c gmatrix.c \
hashtable.c mathfunc.c memalloc.c utils.c
CXXSRCS=branch_cutting.cpp cafe_commands.cpp conditional_distribution.cpp cross_validator.cpp \
error_model.cpp fminsearch.cpp gene_family.cpp Globals.cpp lambda.cpp lambdamu.cpp log_buffer.cpp reports.cpp \
likelihood_ratio.cpp pvalue.cpp simerror.cpp viterbi.cpp
TESTSRCS=command_tests.cpp error_model_tests.cpp family_tests.cpp lambda_tests.cpp report_tests.cpp test.cpp
COBJS=$(CSRCS:.c=.o)
CXXOBJS=$(CXXSRCS:.cpp=.o)
SRCS=$(CSRCS) $(CXXSRCS)
OBJS=$(COBJS) $(CXXOBJS)
EXE = cafe
#
# Debug build settings
#
DBGDIR = debug
DBGEXE = $(DBGDIR)/$(EXE)
DBGOBJS = $(addprefix $(DBGDIR)/, $(OBJS))
DBGCFLAGS = -g -O0 -DDEBUG -DVERBOSE
DBGCPPFLAGS = -D_GLIBCXX_DEBUG -D_GLIBCXX_DEBUG_PEDANTIC
#
# Release build settings
#
RELDIR = release
RELEXE = $(RELDIR)/$(EXE)
RELOBJS = $(addprefix $(RELDIR)/, $(OBJS))
RELCFLAGS = -O3 -DNDEBUG
#
# Test build settings
#
TESTDIR = test
TESTEXE = $(TESTDIR)/runtests
TESTOBJS=$(addprefix $(TESTDIR)/, $(TESTSRCS:.cpp=.o)) $(addprefix $(TESTDIR)/, $(OBJS))
TESTCFLAGS = -g @DYNAMIC@ -O0 -DDEBUG
TESTCPPFLAGS = -g @DYNAMIC@ -O0 -DDEBUG
.PHONY: all clean debug prep release remake test
# Default build
all: prep release
#
# Debug rules
#
debug: $(DBGEXE)
$(DBGEXE): $(DBGOBJS) $(DBGDIR)/main.o
$(CXX) $(CXXFLAGS) $(DBGCFLAGS) $(DBGCPPFLAGS) -o $(DBGEXE) $^ $(LINKFLAGS)
$(DBGDIR)/%.o: %.c
$(CC) -c $(CFLAGS) $(DBGCFLAGS) -o $@ $<
$(DBGDIR)/%.o: %.cpp
$(CXX) -c $(CXXFLAGS) $(DBGCFLAGS) $(DBGCPPFLAGS) -o $@ $<
$(DBGDIR)/main.o: main.cpp
$(CXX) -c $(CXXFLAGS) $(DBGCFLAGS) $(DBGCPPFLAGS) -o $@ $<
#
# Test rules
#
test: $(TESTEXE)
$(TESTEXE) : $(TESTOBJS)
$(CXX) $(CXXFLAGS) $(TESTCFLAGS) -o $(TESTEXE) $^ $(LINKFLAGS) $(TESTLIBS)
$(TESTDIR)/%.o: %.c
$(CC) -c $(CFLAGS) $(TESTCFLAGS) -o $@ $<
$(TESTDIR)/%.o : %.cpp
$(CXX) -c $(CXXFLAGS) $(DBGCPPFLAGS) $(TESTCPPFLAGS) -o $@ $<
#
# Release rules
#
release: $(RELEXE)
$(RELEXE): $(RELOBJS) $(RELDIR)/main.o
$(CXX) $(CXXFLAGS) $(RELCFLAGS) -o $(RELEXE) $^ $(LINKFLAGS)
$(RELDIR)/%.o: %.c
$(CC) -c $(CFLAGS) $(RELCFLAGS) -o $@ $<
$(RELDIR)/%.o: %.cpp
$(CXX) -c $(CXXFLAGS) $(RELCFLAGS) -o $@ $<
$(RELDIR)/main.o: main.cpp
$(CXX) -c $(CXXFLAGS) $(RELCFLAGS) -o $@ $<
#
# Other rules
#
prep:
@mkdir -p $(DBGDIR) $(RELDIR) $(TESTDIR)
remake: clean all
clean:
rm -f $(RELEXE) $(RELOBJS) $(DBGEXE) $(DBGOBJS) $(TESTEXE) $(TESTOBJS) $(DBGDIR)/main.o $(RELDIR)/main.o
install: $(RELEXE)
install -m 0755 $(RELEXE) $(prefix)/bin
.PHONY dist:
dist: $(AUX)
mkdir -p distro
tar --transform "s,^,CAFE/," -cf distro/CAFE-@PACKAGE_VERSION@.tar.gz cafe docs example libcommon libtree tests main.cpp $(AUX)