1 # Copyright (C) 2006-2009 Joris Mooij [joris dot mooij at tuebingen dot mpg dot de]
2 # Radboud University Nijmegen, The Netherlands /
3 # Max Planck Institute for Biological Cybernetics, Germany
5 # This file is part of libDAI.
7 # libDAI is free software; you can redistribute it and/or modify
8 # it under the terms of the GNU General Public License as published by
9 # the Free Software Foundation; either version 2 of the License, or
10 # (at your option) any later version.
12 # libDAI is distributed in the hope that it will be useful,
13 # but WITHOUT ANY WARRANTY; without even the implied warranty of
14 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 # GNU General Public License for more details.
17 # You should have received a copy of the GNU General Public License
18 # along with libDAI; if not, write to the Free Software
19 # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
22 # Load the local configuration from Makefile.conf
25 # Directories of libDAI sources
26 # Location libDAI headers
28 # Location of libDAI source files
30 # Destination directory of libDAI library
33 # Define build targets
34 TARGETS
=tests utils lib examples testregression
36 TARGETS
:=$(TARGETS
) doc
39 TARGETS
:=$(TARGETS
) matlabs
41 MEXFLAGS
:=$(MEXFLAGS
) -largeArrayDims
43 MEXFLAGS
:=$(MEXFLAGS
) -DSMALLMEM
47 # Define conditional build targets
48 OBJECTS
:=exactinf
$(OE
) evidence
$(OE
) emalg
$(OE
)
50 CCFLAGS
:=$(CCFLAGS
) -DDAI_WITH_BP
51 OBJECTS
:=$(OBJECTS
) bp
$(OE
)
54 CCFLAGS
:=$(CCFLAGS
) -DDAI_WITH_MF
55 OBJECTS
:=$(OBJECTS
) mf
$(OE
)
58 CCFLAGS
:=$(CCFLAGS
) -DDAI_WITH_HAK
59 OBJECTS
:=$(OBJECTS
) hak
$(OE
)
62 CCFLAGS
:=$(CCFLAGS
) -DDAI_WITH_LC
63 OBJECTS
:=$(OBJECTS
) lc
$(OE
)
66 CCFLAGS
:=$(CCFLAGS
) -DDAI_WITH_TREEEP
67 OBJECTS
:=$(OBJECTS
) treeep
$(OE
)
70 CCFLAGS
:=$(CCFLAGS
) -DDAI_WITH_JTREE
71 OBJECTS
:=$(OBJECTS
) jtree
$(OE
)
74 CCFLAGS
:=$(CCFLAGS
) -DDAI_WITH_MR
75 OBJECTS
:=$(OBJECTS
) mr
$(OE
)
78 CCFLAGS
:=$(CCFLAGS
) -DDAI_WITH_GIBBS
79 OBJECTS
:=$(OBJECTS
) gibbs
$(OE
)
82 # Define standard libDAI header dependencies
83 HEADERS
=$(INC
)/bipgraph.h
$(INC
)/index.h
$(INC
)/var.h
$(INC
)/factor.h
$(INC
)/varset.h
$(INC
)/smallset.h
$(INC
)/prob.h
$(INC
)/daialg.h
$(INC
)/properties.h
$(INC
)/alldai.h
$(INC
)/enum.h
$(INC
)/exceptions.h
85 # Setup final command for C++ compiler and MEX
87 CCFLAGS
:=$(CCFLAGS
) $(CCDEBUGFLAGS
)
90 CC
:=$(CC
) $(CCINC
) $(CCFLAGS
) $(CCLIB
)
92 CC
:=$(CC
) $(CCINC
) $(CCFLAGS
)
93 LIBS
:=$(LIBS
) $(CCLIB
)
95 MEX
:=$(MEX
) $(CCLIB
) $(CCINC
) $(MEXFLAGS
)
103 examples
: examples
/example
$(EE
) examples
/example_bipgraph
$(EE
) examples
/example_varset
$(EE
) examples
/example_sprinkler
$(EE
)
105 matlabs
: matlab
/dai
$(ME
) matlab
/dai_readfg
$(ME
) matlab
/dai_writefg
$(ME
) matlab
/dai_potstrength
$(ME
)
107 tests
: tests
/testdai
$(EE
) tests
/testem
/testem
$(EE
)
109 utils
: utils
/createfg
$(EE
) utils
/fg2dot
$(EE
) utils
/fginfo
$(EE
)
111 lib
: $(LIB
)/libdai
$(LE
)
117 bipgraph
$(OE
) : $(SRC
)/bipgraph.
cpp $(HEADERS
)
118 $(CC
) -c
$(SRC
)/bipgraph.
cpp
120 daialg
$(OE
) : $(SRC
)/daialg.
cpp $(HEADERS
)
121 $(CC
) -c
$(SRC
)/daialg.
cpp
123 exactinf
$(OE
) : $(SRC
)/exactinf.
cpp $(INC
)/exactinf.h
$(HEADERS
)
124 $(CC
) -c
$(SRC
)/exactinf.
cpp
126 bp
$(OE
) : $(SRC
)/bp.
cpp $(INC
)/bp.h
$(HEADERS
)
127 $(CC
) -c
$(SRC
)/bp.
cpp
129 lc
$(OE
) : $(SRC
)/lc.
cpp $(INC
)/lc.h
$(HEADERS
)
130 $(CC
) -c
$(SRC
)/lc.
cpp
132 mf
$(OE
) : $(SRC
)/mf.
cpp $(INC
)/mf.h
$(HEADERS
)
133 $(CC
) -c
$(SRC
)/mf.
cpp
135 factorgraph
$(OE
) : $(SRC
)/factorgraph.
cpp $(INC
)/factorgraph.h
$(HEADERS
)
136 $(CC
) -c
$(SRC
)/factorgraph.
cpp
138 util
$(OE
) : $(SRC
)/util.
cpp $(INC
)/util.h
$(HEADERS
)
139 $(CC
) -c
$(SRC
)/util.
cpp
141 regiongraph
$(OE
) : $(SRC
)/regiongraph.
cpp $(INC
)/regiongraph.h
$(HEADERS
)
142 $(CC
) -c
$(SRC
)/regiongraph.
cpp
144 hak
$(OE
) : $(SRC
)/hak.
cpp $(INC
)/hak.h
$(HEADERS
) $(INC
)/regiongraph.h
145 $(CC
) -c
$(SRC
)/hak.
cpp
147 clustergraph
$(OE
) : $(SRC
)/clustergraph.
cpp $(INC
)/clustergraph.h
$(HEADERS
)
148 $(CC
) -c
$(SRC
)/clustergraph.
cpp
150 jtree
$(OE
) : $(SRC
)/jtree.
cpp $(INC
)/jtree.h
$(HEADERS
) $(INC
)/weightedgraph.h
$(INC
)/clustergraph.h
$(INC
)/regiongraph.h
151 $(CC
) -c
$(SRC
)/jtree.
cpp
153 treeep
$(OE
) : $(SRC
)/treeep.
cpp $(INC
)/treeep.h
$(HEADERS
) $(INC
)/weightedgraph.h
$(INC
)/clustergraph.h
$(INC
)/regiongraph.h
$(INC
)/jtree.h
154 $(CC
) -c
$(SRC
)/treeep.
cpp
156 weightedgraph
$(OE
) : $(SRC
)/weightedgraph.
cpp $(INC
)/weightedgraph.h
$(HEADERS
)
157 $(CC
) -c
$(SRC
)/weightedgraph.
cpp
159 mr
$(OE
) : $(SRC
)/mr.
cpp $(INC
)/mr.h
$(HEADERS
)
160 $(CC
) -c
$(SRC
)/mr.
cpp
162 gibbs
$(OE
) : $(SRC
)/gibbs.
cpp $(INC
)/gibbs.h
$(HEADERS
)
163 $(CC
) -c
$(SRC
)/gibbs.
cpp
165 evidence
$(OE
) : $(SRC
)/evidence.
cpp $(INC
)/evidence.h
$(HEADERS
)
166 $(CC
) -c
$(SRC
)/evidence.
cpp
168 emalg
$(OE
) : $(SRC
)/emalg.
cpp $(INC
)/emalg.h
$(INC
)/evidence.h
$(HEADERS
)
169 $(CC
) -c
$(SRC
)/emalg.
cpp
171 properties
$(OE
) : $(SRC
)/properties.
cpp $(HEADERS
)
172 $(CC
) -c
$(SRC
)/properties.
cpp
174 exceptions
$(OE
) : $(SRC
)/exceptions.
cpp $(HEADERS
)
175 $(CC
) -c
$(SRC
)/exceptions.
cpp
177 alldai
$(OE
) : $(SRC
)/alldai.
cpp $(HEADERS
)
178 $(CC
) -c
$(SRC
)/alldai.
cpp
184 examples
/example
$(EE
) : examples
/example.
cpp $(HEADERS
) $(LIB
)/libdai
$(LE
)
185 $(CC
) $(CCO
)examples
/example
$(EE
) examples
/example.
cpp $(LIBS
)
187 examples
/example_bipgraph
$(EE
) : examples
/example_bipgraph.
cpp $(HEADERS
) $(LIB
)/libdai
$(LE
)
188 $(CC
) $(CCO
)examples
/example_bipgraph
$(EE
) examples
/example_bipgraph.
cpp $(LIBS
)
190 examples
/example_varset
$(EE
) : examples
/example_varset.
cpp $(HEADERS
) $(LIB
)/libdai
$(LE
)
191 $(CC
) $(CCO
)examples
/example_varset
$(EE
) examples
/example_varset.
cpp $(LIBS
)
193 examples
/example_sprinkler
$(EE
) : examples
/example_sprinkler.
cpp $(HEADERS
) $(LIB
)/libdai
$(LE
)
194 $(CC
) $(CCO
)examples
/example_sprinkler
$(EE
) examples
/example_sprinkler.
cpp $(LIBS
)
200 tests
/testdai
$(EE
) : tests
/testdai.
cpp $(HEADERS
) $(LIB
)/libdai
$(LE
)
201 $(CC
) $(CCO
)tests
/testdai
$(EE
) tests
/testdai.
cpp $(LIBS
) $(BOOSTLIBS
)
202 tests
/testem
/testem
$(EE
): tests
/testem
/testem.
cpp $(HEADERS
) $(LIB
)/libdai
$(LE
)
203 $(CC
) $(CCO
)$@
$< $(LIBS
) $(BOOSTLIBS
)
208 matlab
/dai
$(ME
) : $(SRC
)/matlab
/dai.
cpp $(HEADERS
) matlab
$(OE
) $(LIB
)/libdai
$(LE
)
209 $(MEX
) -o matlab
/dai
$(SRC
)/matlab
/dai.
cpp matlab
$(OE
) $(LIB
)/libdai
$(LE
)
211 matlab
/dai_readfg
$(ME
) : $(SRC
)/matlab
/dai_readfg.
cpp $(HEADERS
) factorgraph
$(OE
) matlab
$(OE
) exceptions
$(OE
)
212 $(MEX
) -o matlab
/dai_readfg
$(SRC
)/matlab
/dai_readfg.
cpp factorgraph
$(OE
) matlab
$(OE
) exceptions
$(OE
)
214 matlab
/dai_writefg
$(ME
) : $(SRC
)/matlab
/dai_writefg.
cpp $(HEADERS
) factorgraph
$(OE
) matlab
$(OE
) exceptions
$(OE
)
215 $(MEX
) -o matlab
/dai_writefg
$(SRC
)/matlab
/dai_writefg.
cpp factorgraph
$(OE
) matlab
$(OE
) exceptions
$(OE
)
217 matlab
/dai_potstrength
$(ME
) : $(SRC
)/matlab
/dai_potstrength.
cpp $(HEADERS
) matlab
$(OE
) exceptions
$(OE
)
218 $(MEX
) -o matlab
/dai_potstrength
$(SRC
)/matlab
/dai_potstrength.
cpp matlab
$(OE
) exceptions
$(OE
)
220 matlab
$(OE
) : $(SRC
)/matlab
/matlab.
cpp $(INC
)/matlab
/matlab.h
$(HEADERS
)
221 $(MEX
) -c
$(SRC
)/matlab
/matlab.
cpp
227 utils
/createfg
$(EE
) : utils
/createfg.
cpp $(HEADERS
) $(LIB
)/libdai
$(LE
)
228 $(CC
) $(CCO
)utils
/createfg
$(EE
) utils
/createfg.
cpp $(LIBS
) $(BOOSTLIBS
)
230 utils
/fg2dot
$(EE
) : utils
/fg2dot.
cpp $(HEADERS
) $(LIB
)/libdai
$(LE
)
231 $(CC
) $(CCO
)utils
/fg2dot
$(EE
) utils
/fg2dot.
cpp $(LIBS
)
233 utils
/fginfo
$(EE
) : utils
/fginfo.
cpp $(HEADERS
) $(LIB
)/libdai
$(LE
)
234 $(CC
) $(CCO
)utils
/fginfo
$(EE
) utils
/fginfo.
cpp $(LIBS
)
240 ifneq ($(OS
),WINDOWS
)
241 $(LIB
)/libdai
$(LE
) : bipgraph
$(OE
) daialg
$(OE
) alldai
$(OE
) clustergraph
$(OE
) factorgraph
$(OE
) properties
$(OE
) regiongraph
$(OE
) util
$(OE
) weightedgraph
$(OE
) exceptions
$(OE
) $(OBJECTS
)
243 ar rcus
$(LIB
)/libdai
$(LE
) bipgraph
$(OE
) daialg
$(OE
) alldai
$(OE
) clustergraph
$(OE
) factorgraph
$(OE
) properties
$(OE
) regiongraph
$(OE
) util
$(OE
) weightedgraph
$(OE
) exceptions
$(OE
) $(OBJECTS
)
245 $(LIB
)/libdai
$(LE
) : bipgraph
$(OE
) daialg
$(OE
) alldai
$(OE
) clustergraph
$(OE
) factorgraph
$(OE
) properties
$(OE
) regiongraph
$(OE
) util
$(OE
) weightedgraph
$(OE
) exceptions
$(OE
) $(OBJECTS
)
247 lib
/out
:$(LIB
)/libdai
$(LE
) bipgraph
$(OE
) daialg
$(OE
) alldai
$(OE
) clustergraph
$(OE
) factorgraph
$(OE
) properties
$(OE
) regiongraph
$(OE
) util
$(OE
) weightedgraph
$(OE
) exceptions
$(OE
) $(OBJECTS
)
254 ifneq ($(OS
),WINDOWS
)
255 testregression
: tests
/testdai
$(EE
)
256 @echo Starting regression
test...this can take a minute or so
!
257 cd tests
&& .
/testregression
&& cd ..
259 testregression
: tests
/testdai
$(EE
)
260 @echo Starting regression
test...this can take a minute or so
!
261 cd tests
&& testregression.bat
&& cd ..
268 doc
: $(INC
)/*.h
$(SRC
)/*.
cpp examples
/*.
cpp doxygen.conf
272 etags src
/*.
cpp include/dai
/*.h tests
/*.
cpp utils
/*.
cpp
273 ctags src
/*.
cpp include/dai
/*.h tests
/*.
cpp utils
/*.
cpp
279 ifneq ($(OS
),WINDOWS
)
284 -rm examples
/example
$(EE
) examples
/example_bipgraph
$(EE
) examples
/example_varset
$(EE
) examples
/example_sprinkler
$(EE
)
285 -rm tests
/testdai
$(EE
)
286 -rm utils
/fg2dot
$(EE
) utils
/createfg
$(EE
) utils
/fginfo
$(EE
)
292 -del
*$(OE
) *.ilk
*.pdb
*$(EE
) matlab\
*$(ME
) examples\
*$(EE
) examples\
*.ilk examples\
*.pdb tests
\testdai
$(EE
) tests\
*.pdb tests\
*.ilk utils\
*$(EE
) utils\
*.pdb utils\
*.ilk
$(LIB
)\libdai
$(LE
)