[Frederik Eaton] Added Fractional Belief Propagation
[libdai.git] / Makefile
index aefca87..999f254 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -1,27 +1,20 @@
-# Copyright (C) 2006-2009  Joris Mooij  [joris dot mooij at tuebingen dot mpg dot de]
-# Radboud University Nijmegen, The Netherlands /
-# Max Planck Institute for Biological Cybernetics, Germany
+# This file is part of libDAI - http://www.libdai.org/
 #
-# This file is part of libDAI.
+# libDAI is licensed under the terms of the GNU General Public License version
+# 2, or (at your option) any later version. libDAI is distributed without any
+# warranty. See the file COPYING for more details.
 #
-# libDAI is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# libDAI is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with libDAI; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+# Copyright (C) 2006-2009  Joris Mooij  [joris dot mooij at libdai dot org]
+# Copyright (C) 2006-2007  Radboud University Nijmegen, The Netherlands
 
 
 # Load the local configuration from Makefile.conf
 include Makefile.conf
 
+# Set version and date
+DAI_VERSION="git HEAD"
+DAI_DATE="November 16, 2009 - or later"
+
 # Directories of libDAI sources
 # Location libDAI headers
 INC=include/dai
@@ -30,6 +23,13 @@ SRC=src
 # Destination directory of libDAI library
 LIB=lib
 
+# Set final compiler flags
+ifdef DEBUG
+  CCFLAGS:=$(CCFLAGS) $(CCDEBUGFLAGS)
+else
+  CCFLAGS:=$(CCFLAGS) $(CCNODEBUGFLAGS)
+endif
+
 # Define build targets
 TARGETS=tests utils lib examples testregression testem
 ifdef WITH_DOC
@@ -37,6 +37,12 @@ ifdef WITH_DOC
 endif
 ifdef WITH_MATLAB
   TARGETS:=$(TARGETS) matlabs
+  # Specify the same C++ compiler and flags to mex
+  ifneq ($(OS),WINDOWS)
+    MEXFLAGS=CXX\#$(CC) CXXFLAGS\#'$(CCFLAGS)'
+  else
+    MEXFLAGS=CXX\#$(CC) CXXFLAGS\#"$(CCFLAGS)"
+  endif
   ifdef NEW_MATLAB
     MEXFLAGS:=$(MEXFLAGS) -largeArrayDims
   else
@@ -50,6 +56,10 @@ ifdef WITH_BP
   CCFLAGS:=$(CCFLAGS) -DDAI_WITH_BP
   OBJECTS:=$(OBJECTS) bp$(OE)
 endif
+ifdef WITH_FBP
+  CCFLAGS:=$(CCFLAGS) -DDAI_WITH_FBP
+  OBJECTS:=$(OBJECTS) fbp$(OE)
+endif
 ifdef WITH_MF
   CCFLAGS:=$(CCFLAGS) -DDAI_WITH_MF
   OBJECTS:=$(OBJECTS) mf$(OE)
@@ -83,14 +93,10 @@ ifdef WITH_CBP
   OBJECTS:=$(OBJECTS) bbp$(OE) cbp$(OE) bp_dual$(OE)
 endif
 
-
 # Define standard libDAI header dependencies
 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 $(INC)/util.h
 
 # Setup final command for C++ compiler and MEX
-ifdef DEBUG
-  CCFLAGS:=$(CCFLAGS) $(CCDEBUGFLAGS)
-endif
 ifneq ($(OS),WINDOWS)
   CC:=$(CC) $(CCINC) $(CCFLAGS) $(CCLIB)
 else
@@ -105,7 +111,7 @@ MEX:=$(MEX) $(CCLIB) $(CCINC) $(MEXFLAGS)
 
 all : $(TARGETS)
 
-examples : examples/example$(EE) examples/example_bipgraph$(EE) examples/example_varset$(EE) examples/example_sprinkler$(EE)
+examples : examples/example$(EE) examples/example_bipgraph$(EE) examples/example_varset$(EE) examples/example_permute$(EE) examples/example_sprinkler$(EE)
 
 matlabs : matlab/dai$(ME) matlab/dai_readfg$(ME) matlab/dai_writefg$(ME) matlab/dai_potstrength$(ME)
 
@@ -122,6 +128,9 @@ lib: $(LIB)/libdai$(LE)
 bipgraph$(OE) : $(SRC)/bipgraph.cpp $(HEADERS)
        $(CC) -c $(SRC)/bipgraph.cpp
 
+varset$(OE) : $(SRC/varset.cpp $(HEADERS)
+       $(CC) -c $(SRC)/varset.cpp
+
 daialg$(OE) : $(SRC)/daialg.cpp $(HEADERS)
        $(CC) -c $(SRC)/daialg.cpp
 
@@ -131,6 +140,9 @@ exactinf$(OE) : $(SRC)/exactinf.cpp $(INC)/exactinf.h $(HEADERS)
 bp$(OE) : $(SRC)/bp.cpp $(INC)/bp.h $(HEADERS)
        $(CC) -c $(SRC)/bp.cpp
 
+fbp$(OE) : $(SRC)/fbp.cpp $(INC)/fbp.h $(HEADERS)
+       $(CC) -c $(SRC)/fbp.cpp
+
 bp_dual$(OE) : $(SRC)/bp_dual.cpp $(INC)/bp_dual.h $(HEADERS)
        $(CC) -c $(SRC)/bp_dual.cpp
 
@@ -204,6 +216,9 @@ examples/example_bipgraph$(EE) : examples/example_bipgraph.cpp $(HEADERS) $(LIB)
 examples/example_varset$(EE) : examples/example_varset.cpp $(HEADERS) $(LIB)/libdai$(LE)
        $(CC) $(CCO)examples/example_varset$(EE) examples/example_varset.cpp $(LIBS)
 
+examples/example_permute$(EE) : examples/example_permute.cpp $(HEADERS) $(LIB)/libdai$(LE)
+       $(CC) $(CCO)examples/example_permute$(EE) examples/example_permute.cpp $(LIBS)
+
 examples/example_sprinkler$(EE) : examples/example_sprinkler.cpp $(HEADERS) $(LIB)/libdai$(LE)
        $(CC) $(CCO)examples/example_sprinkler$(EE) examples/example_sprinkler.cpp $(LIBS)
 
@@ -226,11 +241,11 @@ tests/testbbp$(EE) : tests/testbbp.cpp $(HEADERS) $(LIB)/libdai$(LE)
 matlab/dai$(ME) : $(SRC)/matlab/dai.cpp $(HEADERS) matlab$(OE) $(LIB)/libdai$(LE)
        $(MEX) -o matlab/dai $(SRC)/matlab/dai.cpp matlab$(OE) $(LIB)/libdai$(LE)
 
-matlab/dai_readfg$(ME) : $(SRC)/matlab/dai_readfg.cpp $(HEADERS) factorgraph$(OE) matlab$(OE) exceptions$(OE)
-       $(MEX) -o matlab/dai_readfg $(SRC)/matlab/dai_readfg.cpp factorgraph$(OE) matlab$(OE) exceptions$(OE)
+matlab/dai_readfg$(ME) : $(SRC)/matlab/dai_readfg.cpp $(HEADERS) factorgraph$(OE) matlab$(OE) exceptions$(OE) bipgraph$(OE)
+       $(MEX) -o matlab/dai_readfg $(SRC)/matlab/dai_readfg.cpp factorgraph$(OE) matlab$(OE) exceptions$(OE) bipgraph$(OE)
 
-matlab/dai_writefg$(ME) : $(SRC)/matlab/dai_writefg.cpp $(HEADERS) factorgraph$(OE) matlab$(OE) exceptions$(OE)
-       $(MEX) -o matlab/dai_writefg $(SRC)/matlab/dai_writefg.cpp factorgraph$(OE) matlab$(OE) exceptions$(OE)
+matlab/dai_writefg$(ME) : $(SRC)/matlab/dai_writefg.cpp $(HEADERS) factorgraph$(OE) matlab$(OE) exceptions$(OE) bipgraph$(OE)
+       $(MEX) -o matlab/dai_writefg $(SRC)/matlab/dai_writefg.cpp factorgraph$(OE) matlab$(OE) exceptions$(OE) bipgraph$(OE)
 
 matlab/dai_potstrength$(ME) : $(SRC)/matlab/dai_potstrength.cpp $(HEADERS) matlab$(OE) exceptions$(OE)
        $(MEX) -o matlab/dai_potstrength $(SRC)/matlab/dai_potstrength.cpp matlab$(OE) exceptions$(OE)
@@ -256,13 +271,13 @@ utils/fginfo$(EE) : utils/fginfo.cpp $(HEADERS) $(LIB)/libdai$(LE)
 ##########
 
 ifneq ($(OS),WINDOWS)
-$(LIB)/libdai$(LE) : bipgraph$(OE) daialg$(OE) alldai$(OE) clustergraph$(OE) factorgraph$(OE) properties$(OE) regiongraph$(OE) util$(OE) weightedgraph$(OE) exceptions$(OE) $(OBJECTS)
+$(LIB)/libdai$(LE) : bipgraph$(OE) varset$(OE) daialg$(OE) alldai$(OE) clustergraph$(OE) factorgraph$(OE) properties$(OE) regiongraph$(OE) util$(OE) weightedgraph$(OE) exceptions$(OE) $(OBJECTS)
        -mkdir -p lib
-       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)
+       ar rcus $(LIB)/libdai$(LE) bipgraph$(OE) varset$(OE) daialg$(OE) alldai$(OE) clustergraph$(OE) factorgraph$(OE) properties$(OE) regiongraph$(OE) util$(OE) weightedgraph$(OE) exceptions$(OE) $(OBJECTS)
 else
-$(LIB)/libdai$(LE) : bipgraph$(OE) daialg$(OE) alldai$(OE) clustergraph$(OE) factorgraph$(OE) properties$(OE) regiongraph$(OE) util$(OE) weightedgraph$(OE) exceptions$(OE) $(OBJECTS)
+$(LIB)/libdai$(LE) : bipgraph$(OE) varset$(OE) daialg$(OE) alldai$(OE) clustergraph$(OE) factorgraph$(OE) properties$(OE) regiongraph$(OE) util$(OE) weightedgraph$(OE) exceptions$(OE) $(OBJECTS)
        -mkdir lib
-       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)
+       lib /out:$(LIB)/libdai$(LE) bipgraph$(OE) varset$(OE) daialg$(OE) alldai$(OE) clustergraph$(OE) factorgraph$(OE) properties$(OE) regiongraph$(OE) util$(OE) weightedgraph$(OE) exceptions$(OE) $(OBJECTS)
 endif
 
 
@@ -291,6 +306,7 @@ endif
 
 doc : $(INC)/*.h $(SRC)/*.cpp examples/*.cpp doxygen.conf
        doxygen doxygen.conf
+       # DAI_VERSION=$(DAI_VERSION) DAI_DATE=$(DAI_DATE) scripts/makeREADME
 
 TAGS:
        etags src/*.cpp include/dai/*.h tests/*.cpp utils/*.cpp
@@ -305,7 +321,7 @@ ifneq ($(OS),WINDOWS)
 clean :
        -rm *$(OE)
        -rm matlab/*$(ME)
-       -rm examples/example$(EE) examples/example_bipgraph$(EE) examples/example_varset$(EE) examples/example_sprinkler$(EE)
+       -rm examples/example$(EE) examples/example_bipgraph$(EE) examples/example_varset$(EE) examples/example_permute$(EE) examples/example_sprinkler$(EE)
        -rm tests/testdai$(EE) tests/testem/testem$(EE) tests/testbbp$(EE)
        -rm utils/fg2dot$(EE) utils/createfg$(EE) utils/fginfo$(EE)
        -rm -R doc
@@ -313,5 +329,24 @@ clean :
 else
 .PHONY : clean
 clean :
-       -del *$(OE) *.ilk *.pdb *$(EE) matlab\*$(ME) examples\*$(EE) examples\*.ilk examples\*.pdb tests\testdai$(EE) tests\testem\testem$(EE) tests\*.pdb tests\*.ilk utils\*$(EE) utils\*.pdb utils\*.ilk $(LIB)\libdai$(LE)
+       -del *$(OE)
+       -del *.ilk
+       -del *.pdb
+       -del *$(EE)
+       -del matlab\*$(ME)
+       -del examples\*$(EE)
+       -del examples\*.ilk
+       -del examples\*.pdb
+       -del tests\testdai$(EE)
+       -del tests\testbbp$(EE)
+       -del tests\testem\testem$(EE)
+       -del tests\*.pdb
+       -del tests\*.ilk
+       -del tests\testem\*.pdb
+       -del tests\testem\*.ilk
+       -del utils\*$(EE)
+       -del utils\*.pdb
+       -del utils\*.ilk
+       -del $(LIB)\libdai$(LE)
+       -rmdir lib
 endif