Improved documentation...
[libdai.git] / Makefile.win
index 876e988..ab088e4 100755 (executable)
@@ -1,5 +1,6 @@
-#   Copyright (C) 2006-2008  Joris Mooij  [j dot mooij at science dot ru dot nl]\r
-#   Radboud University Nijmegen, The Netherlands\r
+#   Copyright (C) 2006-2008  Joris Mooij  [joris dot mooij at tuebingen dot mpg dot de]\r
+#   Radboud University Nijmegen, The Netherlands /\r
+#   Max Planck Institute for Biological Cybernetics, Germany\r
 #   \r
 #   This file is part of libDAI.\r
 #\r
@@ -40,10 +41,11 @@ INC=include/dai
 SRC=src\r
 LIB=lib\r
 \r
-# Extensions (library, object, executable extensions)\r
+# Extensions (library, object, executable, matlab compiled MEX file)\r
 LE=.lib\r
 OE=.obj\r
 EE=.exe\r
+ME=.mexglx\r
 \r
 # Libraries (for some reason, we have to add the VC library path, although it is in the environment)\r
 LIBS=/link $(LIB)/libdai$(LE) /LIBPATH:"C:\Program Files\Microsoft Visual Studio 9.0\VC\ATLMFC\LIB" /LIBPATH:"C:\Program Files\Microsoft Visual Studio 9.0\VC\LIB" /LIBPATH:"C:\Program Files\Microsoft SDKs\Windows\v6.0A\lib"\r
@@ -53,9 +55,11 @@ BOOSTLIBS=/LIBPATH:C:\boost_1_36_0\stage\lib
 \r
 # Compile using GNU C++ Compiler\r
 CC=cl\r
+# Output filename option\r
+CCO=/Fe\r
 \r
 # Flags for the C++ compiler\r
-CCFLAGS=/I./include /IC:\boost_1_36_0 /EHsc /Ox\r
+CCFLAGS=/Iinclude /IC:\boost_1_36_0 /EHsc /Ox\r
 !IFDEF DEBUG\r
 CCFLAGS=$(CCFLAGS) /Zi /DDAI_DEBUG\r
 !ENDIF\r
@@ -66,41 +70,39 @@ CCFLAGS=$(CCFLAGS) /DWINDOWS
 \r
 OBJECTS=exactinf$(OE)\r
 !IFDEF WITH_BP\r
-CCFLAGS=$(CCFLAGS) /DWITH_BP\r
+CCFLAGS=$(CCFLAGS) /DDAI_WITH_BP\r
 OBJECTS=$(OBJECTS) bp$(OE)\r
 !ENDIF\r
 !IFDEF WITH_MF\r
-CCFLAGS=$(CCFLAGS) /DWITH_MF\r
+CCFLAGS=$(CCFLAGS) /DDAI_WITH_MF\r
 OBJECTS=$(OBJECTS) mf$(OE)\r
 !ENDIF\r
 !IFDEF WITH_HAK\r
-CCFLAGS=$(CCFLAGS) /DWITH_HAK\r
+CCFLAGS=$(CCFLAGS) /DDAI_WITH_HAK\r
 OBJECTS=$(OBJECTS) hak$(OE)\r
 !ENDIF\r
 !IFDEF WITH_LC\r
-CCFLAGS=$(CCFLAGS) /DWITH_LC\r
+CCFLAGS=$(CCFLAGS) /DDAI_WITH_LC\r
 OBJECTS=$(OBJECTS) lc$(OE)\r
 !ENDIF\r
 !IFDEF WITH_TREEEP\r
-CCFLAGS=$(CCFLAGS) /DWITH_TREEEP\r
+CCFLAGS=$(CCFLAGS) /DDAI_WITH_TREEEP\r
 OBJECTS=$(OBJECTS) treeep$(OE)\r
 !ENDIF\r
 !IFDEF WITH_JTREE\r
-CCFLAGS=$(CCFLAGS) /DWITH_JTREE\r
+CCFLAGS=$(CCFLAGS) /DDAI_WITH_JTREE\r
 OBJECTS=$(OBJECTS) jtree$(OE)\r
 !ENDIF\r
 !IFDEF WITH_MR\r
-CCFLAGS=$(CCFLAGS) /DWITH_MR\r
+CCFLAGS=$(CCFLAGS) /DDAI_WITH_MR\r
 OBJECTS=$(OBJECTS) mr$(OE)\r
 !ENDIF\r
 \r
 !IFDEF WITH_MATLAB\r
 # Replace the following by the directory where Matlab has been installed\r
-MATLABDIR=/opt/matlab/bin\r
-# Replace the following with the extension of compiled MEX files on this platform, e.g. .mexglx for x86\r
-ME=.mexglx\r
-MEX=$(MATLABDIR)/mex\r
-MEXFLAGS=-I.\r
+MATLABDIR=c:\matlab\r
+MEX=$(MATLABDIR)\bin\mex\r
+MEXFLAGS=-Iinclude CXX\#$(CC) CXXFLAGS\#"/EHsc /Ox"\r
 !IFDEF DEBUG\r
 MEXFLAGS=$(MEXFLAGS) -g /DDAI_DEBUG\r
 !ENDIF\r
@@ -111,135 +113,35 @@ MEXFLAGS=$(MEXFLAGS) /DSMALLMEM
 !ENDIF\r
 !ENDIF\r
 \r
-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)/exceptions.h\r
+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\r
 \r
-TARGETS=tests utils $(LIB)/libdai$(LE) example$(EE)\r
+TARGETS=tests utils $(LIB)/libdai$(LE) examples\r
 # testregression disabled, it uses diff\r
-# doc disabled, it uses doxygen\r
+# doc disabled, it uses doxygen, graphviz and latex\r
 !IFDEF WITH_MATLAB\r
 TARGETS = $(TARGETS) matlabs\r
 !ENDIF\r
 all : $(TARGETS)\r
 \r
-matlabs : matlab/dai.$(ME) matlab/dai_readfg.$(ME) matlab/dai_writefg.$(ME) matlab/dai_potstrength.$(ME)\r
+examples : examples/example$(EE) examples/example_bipgraph$(EE) examples/example_varset$(EE)\r
+\r
+matlabs : matlab/dai$(ME) matlab/dai_readfg$(ME) matlab/dai_writefg$(ME) matlab/dai_potstrength$(ME)\r
 \r
-$(LIB)/libdai$(LE) : bipgraph$(OE) daialg$(OE) alldai$(OE) clustergraph$(OE) factorgraph$(OE) properties$(OE) regiongraph$(OE) util$(OE) weightedgraph$(OE) exceptions$(OE) varset$(OE) $(OBJECTS)\r
-       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) varset$(OE) $(OBJECTS)\r
+$(LIB)/libdai$(LE) : bipgraph$(OE) daialg$(OE) alldai$(OE) clustergraph$(OE) factorgraph$(OE) properties$(OE) regiongraph$(OE) util$(OE) weightedgraph$(OE) exceptions$(OE) $(OBJECTS)\r
+       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)\r
 \r
-tests : tests/test$(EE)\r
+tests : tests/testdai$(EE)\r
 \r
 utils : utils/createfg$(EE) utils/fg2dot$(EE) utils/fginfo$(EE)\r
 \r
-testregression : tests/test\r
-       echo Testing...this can take a while...\r
+testregression : tests/testdai$(EE)\r
+       echo Starting regression test...this can take a minute or so!\r
        cd tests; time ./testregression; cd ..\r
 \r
-doc : $(INC)/*.h $(SRC)/*.cpp doxygen.conf\r
+doc : $(INC)/*.h $(SRC)/*.cpp examples/*.cpp doxygen.conf\r
        doxygen doxygen.conf\r
 \r
 clean :\r
-       del *$(OE) *.ilk *.pdb *$(EE) matlab\*.$(ME) matlab\*$(OE) tests\test$(EE) tests\*.pdb tests\*.ilk utils\*$(EE) utils\*.pdb utils\*.ilk $(LIB)\libdai$(LE)\r
-\r
-\r
-bipgraph$(OE) : $(SRC)/bipgraph.cpp $(HEADERS)\r
-       $(CC) $(CCFLAGS) -c $(SRC)/bipgraph.cpp\r
-\r
-daialg$(OE) : $(SRC)/daialg.cpp $(HEADERS)\r
-       $(CC) $(CCFLAGS) -c $(SRC)/daialg.cpp\r
-\r
-exactinf$(OE) : $(SRC)/exactinf.cpp $(INC)/exactinf.h $(HEADERS)\r
-       $(CC) $(CCFLAGS) -c $(SRC)/exactinf.cpp\r
-\r
-bp$(OE) : $(SRC)/bp.cpp $(INC)/bp.h $(HEADERS)\r
-       $(CC) $(CCFLAGS) -c $(SRC)/bp.cpp\r
-\r
-lc$(OE) : $(SRC)/lc.cpp $(INC)/lc.h $(HEADERS)\r
-       $(CC) $(CCFLAGS) -c $(SRC)/lc.cpp\r
-\r
-mf$(OE) : $(SRC)/mf.cpp $(INC)/mf.h $(HEADERS)\r
-       $(CC) $(CCFLAGS) -c $(SRC)/mf.cpp\r
-\r
-factorgraph$(OE) : $(SRC)/factorgraph.cpp $(INC)/factorgraph.h $(HEADERS)\r
-       $(CC) $(CCFLAGS) -c $(SRC)/factorgraph.cpp\r
-\r
-util$(OE) : $(SRC)/util.cpp $(INC)/util.h $(HEADERS)\r
-       $(CC) $(CCFLAGS) -c $(SRC)/util.cpp\r
-\r
-regiongraph$(OE) : $(SRC)/regiongraph.cpp $(INC)/regiongraph.h $(HEADERS)\r
-       $(CC) $(CCFLAGS) -c $(SRC)/regiongraph.cpp\r
-\r
-hak$(OE) : $(SRC)/hak.cpp $(INC)/hak.h $(HEADERS) $(INC)/regiongraph.h\r
-       $(CC) $(CCFLAGS) -c $(SRC)/hak.cpp\r
-\r
-clustergraph$(OE) : $(SRC)/clustergraph.cpp $(INC)/clustergraph.h $(HEADERS)\r
-       $(CC) $(CCFLAGS) -c $(SRC)/clustergraph.cpp\r
-\r
-jtree$(OE) : $(SRC)/jtree.cpp $(INC)/jtree.h $(HEADERS) $(INC)/weightedgraph.h $(INC)/clustergraph.h $(INC)/regiongraph.h\r
-       $(CC) $(CCFLAGS) -c $(SRC)/jtree.cpp\r
-\r
-treeep$(OE) : $(SRC)/treeep.cpp $(INC)/treeep.h $(HEADERS) $(INC)/weightedgraph.h $(INC)/clustergraph.h $(INC)/regiongraph.h $(INC)/jtree.h\r
-       $(CC) $(CCFLAGS) -c $(SRC)/treeep.cpp\r
-\r
-weightedgraph$(OE) : $(SRC)/weightedgraph.cpp $(INC)/weightedgraph.h $(HEADERS)\r
-       $(CC) $(CCFLAGS) -c $(SRC)/weightedgraph.cpp\r
-\r
-mr$(OE) : $(SRC)/mr.cpp $(INC)/mr.h $(HEADERS)\r
-       $(CC) $(CCFLAGS) -c $(SRC)/mr.cpp\r
-\r
-properties$(OE) : $(SRC)/properties.cpp $(HEADERS)\r
-       $(CC) $(CCFLAGS) -c $(SRC)/properties.cpp\r
-\r
-exceptions$(OE) : $(SRC)/exceptions.cpp $(HEADERS)\r
-       $(CC) $(CCFLAGS) -c $(SRC)/exceptions.cpp\r
-\r
-alldai$(OE) : $(SRC)/alldai.cpp $(HEADERS)\r
-       $(CC) $(CCFLAGS) -c $(SRC)/alldai.cpp\r
-\r
-varset$(OE) : $(SRC)/varset.cpp $(HEADERS)\r
-       $(CC) $(CCFLAGS) -c $(SRC)/varset.cpp\r
-\r
-\r
-# EXAMPLE\r
-##########\r
-\r
-example$(EE) : example.cpp $(HEADERS) $(LIB)/libdai$(LE)\r
-       $(CC) $(CCFLAGS) /Feexample example.cpp $(LIBS)\r
-\r
-\r
-# TESTS\r
-########\r
-\r
-tests/test$(EE) : tests/test.cpp $(HEADERS) $(LIB)/libdai$(LE)\r
-       $(CC) $(CCFLAGS) /Fetests/test tests/test.cpp $(LIBS) $(BOOSTLIBS)\r
-\r
-\r
-# MATLAB INTERFACE\r
-###################\r
-\r
-matlab/dai.$(ME) : matlab/dai.cpp $(HEADERS) matlab/matlab$(OE) $(LIB)/libdai$(LE)\r
-       $(MEX) $(MEXFLAGS) -o matlab/dai matlab/dai.cpp matlab/matlab$(OE) $(LIB)/libdai$(LE)\r
-\r
-matlab/dai_readfg.$(ME) : matlab/dai_readfg.cpp $(HEADERS) factorgraph$(OE) matlab/matlab$(OE) exceptions$(OE) varset$(OE)\r
-       $(MEX) $(MEXFLAGS) -o matlab/dai_readfg matlab/dai_readfg.cpp factorgraph$(OE) matlab/matlab$(OE) exceptions$(OE) varset$(OE)\r
-\r
-matlab/dai_writefg.$(ME) : matlab/dai_writefg.cpp $(HEADERS) factorgraph$(OE) matlab/matlab$(OE) exceptions$(OE) varset$(OE)\r
-       $(MEX) $(MEXFLAGS) -o matlab/dai_writefg matlab/dai_writefg.cpp factorgraph$(OE) matlab/matlab$(OE) exceptions$(OE) varset$(OE)\r
-\r
-matlab/dai_potstrength.$(ME) : matlab/dai_potstrength.cpp $(HEADERS) matlab/matlab$(OE) exceptions$(OE) varset$(OE)\r
-       $(MEX) $(MEXFLAGS) -o matlab/dai_potstrength matlab/dai_potstrength.cpp matlab/matlab$(OE) exceptions$(OE) varset$(OE)\r
-\r
-matlab/matlab$(OE) : matlab/matlab.cpp matlab/matlab.h $(HEADERS)\r
-       $(MEX) $(MEXFLAGS) -outdir matlab -c matlab/matlab.cpp\r
-\r
-\r
-# UTILS\r
-########\r
-\r
-utils/createfg$(EE) : utils/createfg.cpp $(HEADERS) $(LIB)/libdai$(LE)\r
-       $(CC) $(CCFLAGS) /Feutils/createfg utils/createfg.cpp $(LIBS) $(BOOSTLIBS)\r
-\r
-utils/fg2dot$(EE) : utils/fg2dot.cpp $(HEADERS) $(LIB)/libdai$(LE)\r
-       $(CC) $(CCFLAGS) /Feutils/fg2dot utils/fg2dot.cpp $(LIBS)\r
+       del *$(OE) *.ilk *.pdb *$(EE) matlab\*$(ME) examples\*$(EE) tests\testdai$(EE) tests\*.pdb tests\*.ilk utils\*$(EE) utils\*.pdb utils\*.ilk $(LIB)\libdai$(LE)\r
 \r
-utils/fginfo$(EE) : utils/fginfo.cpp $(HEADERS) $(LIB)/libdai$(LE)\r
-       $(CC) $(CCFLAGS) /Feutils/fginfo utils/fginfo.cpp $(LIBS)\r
+!INCLUDE Makefile.shared\r