1 # Copyright (C) 2006-2008 Joris Mooij [j dot mooij at science dot ru dot nl]
2 # Radboud University Nijmegen, The Netherlands
4 # This file is part of libDAI.
6 # libDAI is free software; you can redistribute it and/or modify
7 # it under the terms of the GNU General Public License as published by
8 # the Free Software Foundation; either version 2 of the License, or
9 # (at your option) any later version.
11 # libDAI is distributed in the hope that it will be useful,
12 # but WITHOUT ANY WARRANTY; without even the implied warranty of
13 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 # GNU General Public License for more details.
16 # You should have received a copy of the GNU General Public License
17 # along with libDAI; if not, write to the Free Software
18 # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
21 # Enable/disable various approximate inference methods
38 # We use the BOOST Program Options library
39 BOOSTFLAGS
= -lboost_program_options
41 # Compile using GNU C++ Compiler
44 # Flags for the C++ compiler
45 CCFLAGS
= -Wall
-W
-Wextra
-fpic
-I.
/include -Llib
-O3
#-pg #-static #-DVERBOSE
47 CCFLAGS
:= $(CCFLAGS
) -g
-DDAI_DEBUG
53 CCFLAGS
:= $(CCFLAGS
) -DWITH_BP
54 OBJECTS
:= $(OBJECTS
) bp.o
57 CCFLAGS
:= $(CCFLAGS
) -DWITH_MF
58 OBJECTS
:= $(OBJECTS
) mf.o
61 CCFLAGS
:= $(CCFLAGS
) -DWITH_HAK
62 OBJECTS
:= $(OBJECTS
) hak.o
65 CCFLAGS
:= $(CCFLAGS
) -DWITH_LC
66 OBJECTS
:= $(OBJECTS
) lc.o
69 CCFLAGS
:= $(CCFLAGS
) -DWITH_TREEEP
70 OBJECTS
:= $(OBJECTS
) treeep.o
73 CCFLAGS
:= $(CCFLAGS
) -DWITH_JTREE
74 OBJECTS
:= $(OBJECTS
) jtree.o
77 CCFLAGS
:= $(CCFLAGS
) -DWITH_MR
78 OBJECTS
:= $(OBJECTS
) mr.o
82 # Replace the following by the directory where Matlab has been installed
83 MATLABDIR
= /opt
/matlab
/bin
84 # Replace the following with the extension of compiled MEX files on this platform, e.g. .mexglx for x86
86 MEX
= $(MATLABDIR
)/mex
89 MEXFLAGS
:= $(MEXFLAGS
) -g
-DDAI_DEBUG
92 MEXFLAGS
:= $(MEXFLAGS
) -largeArrayDims
94 MEXFLAGS
:= $(MEXFLAGS
) -DSMALLMEM
98 HEADERS
= $(INC
)/bipgraph.h
$(INC
)/diffs.h
$(INC
)/index.h
$(INC
)/var.h
$(INC
)/factor.h
$(INC
)/varset.h
$(INC
)/prob.h
$(INC
)/daialg.h
$(INC
)/properties.h
$(INC
)/alldai.h
$(INC
)/enum.h
$(INC
)/x2x.h
100 TARGETS
= tests utils
$(LIB
)/libdai.a example testregression doc
102 TARGETS
:= $(TARGETS
) matlabs
107 matlabs
: matlab
/dai.
$(MEXEXT
) matlab
/dai_readfg.
$(MEXEXT
) matlab
/dai_writefg.
$(MEXEXT
) matlab
/dai_removeshortloops.
$(MEXEXT
) matlab
/dai_potstrength.
$(MEXEXT
)
109 $(LIB
)/libdai.a
: daialg.o alldai.o clustergraph.o factorgraph.o properties.o regiongraph.o util.o weightedgraph.o x2x.o
$(OBJECTS
)
110 ar rcs
$(LIB
)/libdai.a daialg.o alldai.o clustergraph.o factorgraph.o properties.o regiongraph.o util.o weightedgraph.o x2x.o
$(OBJECTS
)
114 utils
: utils
/createfg utils
/fg2dot utils
/remove_short_loops utils
/fginfo
116 testregression
: tests
/test
117 echo Testing...this can take a while...
118 cd tests
; time .
/testregression
; cd ..
120 doc
: $(INC
)/*.h
$(SRC
)/*.
cpp doxygen.conf
124 rm *.o example matlab
/*.
$(MEXEXT
) matlab
/*.o tests
/test utils
/fg2dot utils
/createfg utils
/remove_short_loops utils
/fginfo
$(LIB
)/libdai.a
; echo
128 daialg.o
: $(SRC
)/daialg.
cpp $(HEADERS
)
129 $(CC
) $(CCFLAGS
) -c
$(SRC
)/daialg.
cpp
131 bp.o
: $(SRC
)/bp.
cpp $(INC
)/bp.h
$(HEADERS
)
132 $(CC
) $(CCFLAGS
) -c
$(SRC
)/bp.
cpp
134 lc.o
: $(SRC
)/lc.
cpp $(INC
)/lc.h
$(HEADERS
)
135 $(CC
) $(CCFLAGS
) -c
$(SRC
)/lc.
cpp
137 mf.o
: $(SRC
)/mf.
cpp $(INC
)/mf.h
$(HEADERS
)
138 $(CC
) $(CCFLAGS
) -c
$(SRC
)/mf.
cpp
140 factorgraph.o
: $(SRC
)/factorgraph.
cpp $(INC
)/factorgraph.h
$(HEADERS
)
141 $(CC
) $(CCFLAGS
) -c
$(SRC
)/factorgraph.
cpp
143 util.o
: $(SRC
)/util.
cpp $(INC
)/util.h
$(HEADERS
)
144 $(CC
) $(CCFLAGS
) -c
$(SRC
)/util.
cpp
146 regiongraph.o
: $(SRC
)/regiongraph.
cpp $(INC
)/regiongraph.h
$(HEADERS
)
147 $(CC
) $(CCFLAGS
) -c
$(SRC
)/regiongraph.
cpp
149 hak.o
: $(SRC
)/hak.
cpp $(INC
)/hak.h
$(HEADERS
) $(INC
)/regiongraph.h
150 $(CC
) $(CCFLAGS
) -c
$(SRC
)/hak.
cpp
152 clustergraph.o
: $(SRC
)/clustergraph.
cpp $(INC
)/clustergraph.h
$(HEADERS
)
153 $(CC
) $(CCFLAGS
) -c
$(SRC
)/clustergraph.
cpp
155 jtree.o
: $(SRC
)/jtree.
cpp $(INC
)/jtree.h
$(HEADERS
) $(INC
)/weightedgraph.h
$(INC
)/clustergraph.h
$(INC
)/regiongraph.h
156 $(CC
) $(CCFLAGS
) -c
$(SRC
)/jtree.
cpp
158 treeep.o
: $(SRC
)/treeep.
cpp $(INC
)/treeep.h
$(HEADERS
) $(INC
)/weightedgraph.h
$(INC
)/clustergraph.h
$(INC
)/regiongraph.h
$(INC
)/jtree.h
159 $(CC
) $(CCFLAGS
) -c
$(SRC
)/treeep.
cpp
161 weightedgraph.o
: $(SRC
)/weightedgraph.
cpp $(INC
)/weightedgraph.h
$(HEADERS
)
162 $(CC
) $(CCFLAGS
) -c
$(SRC
)/weightedgraph.
cpp
164 mr.o
: $(SRC
)/mr.
cpp $(INC
)/mr.h
$(HEADERS
)
165 $(CC
) $(CCFLAGS
) -c
$(SRC
)/mr.
cpp
167 properties.o
: $(SRC
)/properties.
cpp $(HEADERS
)
168 $(CC
) $(CCFLAGS
) -c
$(SRC
)/properties.
cpp
170 alldai.o
: $(SRC
)/alldai.
cpp $(HEADERS
)
171 $(CC
) $(CCFLAGS
) -c
$(SRC
)/alldai.
cpp
173 x2x.o
: $(SRC
)/x2x.
cpp $(HEADERS
)
174 $(CC
) $(CCFLAGS
) -c
$(SRC
)/x2x.
cpp
179 example
: example.
cpp $(HEADERS
) $(LIB
)/libdai.a
180 $(CC
) $(CCFLAGS
) -o example example.
cpp -ldai
185 tests
/test : tests
/test.
cpp $(HEADERS
) $(LIB
)/libdai.a
186 $(CC
) $(CCFLAGS
) -o tests
/test tests
/test.
cpp -ldai
$(BOOSTFLAGS
)
192 matlab
/dai.
$(MEXEXT
) : matlab
/dai.
cpp $(HEADERS
) matlab
/matlab.o
$(LIB
)/libdai.a
193 $(MEX
) $(MEXFLAGS
) -o matlab
/dai matlab
/dai.
cpp matlab
/matlab.o
$(LIB
)/libdai.a
195 matlab
/dai_readfg.
$(MEXEXT
) : matlab
/dai_readfg.
cpp $(HEADERS
) factorgraph.o matlab
/matlab.o
196 $(MEX
) $(MEXFLAGS
) -o matlab
/dai_readfg matlab
/dai_readfg.
cpp factorgraph.o matlab
/matlab.o
198 matlab
/dai_writefg.
$(MEXEXT
) : matlab
/dai_writefg.
cpp $(HEADERS
) factorgraph.o matlab
/matlab.o
199 $(MEX
) $(MEXFLAGS
) -o matlab
/dai_writefg matlab
/dai_writefg.
cpp factorgraph.o matlab
/matlab.o
201 matlab
/dai_removeshortloops.
$(MEXEXT
) : matlab
/dai_removeshortloops.
cpp $(HEADERS
) factorgraph.o matlab
/matlab.o
202 $(MEX
) $(MEXFLAGS
) -o matlab
/dai_removeshortloops matlab
/dai_removeshortloops.
cpp factorgraph.o matlab
/matlab.o
204 matlab
/dai_potstrength.
$(MEXEXT
) : matlab
/dai_potstrength.
cpp $(HEADERS
) matlab
/matlab.o
205 $(MEX
) $(MEXFLAGS
) -o matlab
/dai_potstrength matlab
/dai_potstrength.
cpp matlab
/matlab.o
207 matlab
/matlab.o
: matlab
/matlab.
cpp matlab
/matlab.h
$(HEADERS
)
208 $(MEX
) $(MEXFLAGS
) -outdir matlab
-c matlab
/matlab.
cpp
214 utils
/createfg
: utils
/createfg.
cpp $(HEADERS
) factorgraph.o weightedgraph.o util.o
215 $(CC
) $(CCFLAGS
) -o utils
/createfg utils
/createfg.
cpp factorgraph.o weightedgraph.o util.o
$(BOOSTFLAGS
)
217 utils
/fg2dot
: utils
/fg2dot.
cpp $(HEADERS
) factorgraph.o
218 $(CC
) $(CCFLAGS
) -o utils
/fg2dot utils
/fg2dot.
cpp factorgraph.o
220 utils
/remove_short_loops
: utils
/remove_short_loops.
cpp $(HEADERS
) factorgraph.o
221 $(CC
) $(CCFLAGS
) -o utils
/remove_short_loops utils
/remove_short_loops.
cpp factorgraph.o
223 utils
/fginfo
: utils
/fginfo.
cpp $(HEADERS
) factorgraph.o
224 $(CC
) $(CCFLAGS
) -o utils
/fginfo utils
/fginfo.
cpp factorgraph.o