X-Git-Url: http://git.tuebingen.mpg.de/?p=libdai.git;a=blobdiff_plain;f=Makefile.win;h=2a3dfa73de38520bbf80753e1bf5434e9ba70bf4;hp=77252af00538381e656bd899c5ab17eaeb1afcd9;hb=5462dc0b1d6ddfdf1bee861873873c85c48af34d;hpb=23824c448de9693eb6f93f6d49cbdbbf3c7090d7 diff --git a/Makefile.win b/Makefile.win index 77252af..2a3dfa7 100755 --- a/Makefile.win +++ b/Makefile.win @@ -1,5 +1,6 @@ -# Copyright (C) 2006-2008 Joris Mooij [j dot mooij at science dot ru dot nl] -# Radboud University Nijmegen, The Netherlands +# Copyright (C) 2006-2008 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. # @@ -40,94 +41,98 @@ INC=include/dai SRC=src LIB=lib -# For some reason, we have to set the library path, although it is in the environment -LIBS=/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" +# Extensions (library, object, executable, matlab compiled MEX file) +LE=.lib +OE=.obj +EE=.exe +ME=.mexglx + +# Libraries (for some reason, we have to add the VC library path, although it is in the environment) +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" + # We use the BOOST Program Options library BOOSTLIBS=/LIBPATH:C:\boost_1_36_0\stage\lib # Compile using GNU C++ Compiler CC=cl -OBJEXT=obj -LIBEXT=lib +# Output filename option +CCO=/Fe # Flags for the C++ compiler -CCFLAGS=/I./include /IC:\boost_1_36_0 /EHsc /Ox +CCFLAGS=/Iinclude /IC:\boost_1_36_0 /EHsc /Ox !IFDEF DEBUG CCFLAGS=$(CCFLAGS) /Zi /DDAI_DEBUG -!ELSE -CCFLAGS=$(CCFLAGS) !ENDIF !IFDEF WINDOWS CCFLAGS=$(CCFLAGS) /DWINDOWS !ENDIF +OBJECTS=exactinf$(OE) !IFDEF WITH_BP -CCFLAGS=$(CCFLAGS) /DWITH_BP -OBJECTS=$(OBJECTS) bp.obj +CCFLAGS=$(CCFLAGS) /DDAI_WITH_BP +OBJECTS=$(OBJECTS) bp$(OE) !ENDIF !IFDEF WITH_MF -CCFLAGS=$(CCFLAGS) /DWITH_MF -OBJECTS=$(OBJECTS) mf.obj +CCFLAGS=$(CCFLAGS) /DDAI_WITH_MF +OBJECTS=$(OBJECTS) mf$(OE) !ENDIF !IFDEF WITH_HAK -CCFLAGS=$(CCFLAGS) /DWITH_HAK -OBJECTS=$(OBJECTS) hak.obj +CCFLAGS=$(CCFLAGS) /DDAI_WITH_HAK +OBJECTS=$(OBJECTS) hak$(OE) !ENDIF !IFDEF WITH_LC -CCFLAGS=$(CCFLAGS) /DWITH_LC -OBJECTS=$(OBJECTS) lc.obj +CCFLAGS=$(CCFLAGS) /DDAI_WITH_LC +OBJECTS=$(OBJECTS) lc$(OE) !ENDIF !IFDEF WITH_TREEEP -CCFLAGS=$(CCFLAGS) /DWITH_TREEEP -OBJECTS=$(OBJECTS) treeep.obj +CCFLAGS=$(CCFLAGS) /DDAI_WITH_TREEEP +OBJECTS=$(OBJECTS) treeep$(OE) !ENDIF !IFDEF WITH_JTREE -CCFLAGS=$(CCFLAGS) /DWITH_JTREE -OBJECTS=$(OBJECTS) jtree.obj +CCFLAGS=$(CCFLAGS) /DDAI_WITH_JTREE +OBJECTS=$(OBJECTS) jtree$(OE) !ENDIF !IFDEF WITH_MR -CCFLAGS=$(CCFLAGS) /DWITH_MR -OBJECTS=$(OBJECTS) mr.obj +CCFLAGS=$(CCFLAGS) /DDAI_WITH_MR +OBJECTS=$(OBJECTS) mr$(OE) !ENDIF !IFDEF WITH_MATLAB # Replace the following by the directory where Matlab has been installed -MATLABDIR = /opt/matlab/bin -# Replace the following with the extension of compiled MEX files on this platform, e.g. .mexglx for x86 -MEXEXT = .mexglx -MEX = $(MATLABDIR)/mex -MEXFLAGS = -I. +MATLABDIR=c:\matlab +MEX=$(MATLABDIR)\bin\mex +MEXFLAGS=-Iinclude CXX\#$(CC) CXXFLAGS\#"/EHsc /Ox" !IFDEF DEBUG -MEXFLAGS = $(MEXFLAGS) -g /DDAI_DEBUG +MEXFLAGS=$(MEXFLAGS) -g /DDAI_DEBUG !ENDIF !IFDEF NEW_MATLAB -MEXFLAGS = $(MEXFLAGS) -largeArrayDims +MEXFLAGS=$(MEXFLAGS) -largeArrayDims !ELSE -MEXFLAGS = $(MEXFLAGS) /DSMALLMEM +MEXFLAGS=$(MEXFLAGS) /DSMALLMEM !ENDIF !ENDIF -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 +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 -TARGETS = tests utils $(LIB)/libdai.lib example.exe -# testregression disabled, it uses sh and awk +TARGETS=tests utils $(LIB)/libdai$(LE) example$(EE) +# testregression disabled, it uses diff # doc disabled, it uses doxygen !IFDEF WITH_MATLAB TARGETS = $(TARGETS) matlabs !ENDIF all : $(TARGETS) -matlabs : matlab/dai.$(MEXEXT) matlab/dai_readfg.$(MEXEXT) matlab/dai_writefg.$(MEXEXT) matlab/dai_removeshortloops.$(MEXEXT) matlab/dai_potstrength.$(MEXEXT) +matlabs : matlab/dai$(ME) matlab/dai_readfg$(ME) matlab/dai_writefg$(ME) matlab/dai_potstrength$(ME) -$(LIB)/libdai.lib : bipgraph.obj daialg.obj alldai.obj clustergraph.obj factorgraph.obj properties.obj regiongraph.obj util.obj weightedgraph.obj x2x.obj $(OBJECTS) - lib /out:$(LIB)/libdai.lib bipgraph.obj daialg.obj alldai.obj clustergraph.obj factorgraph.obj properties.obj regiongraph.obj util.obj weightedgraph.obj x2x.obj $(OBJECTS) +$(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) daialg$(OE) alldai$(OE) clustergraph$(OE) factorgraph$(OE) properties$(OE) regiongraph$(OE) util$(OE) weightedgraph$(OE) exceptions$(OE) $(OBJECTS) -tests : tests/test.exe +tests : tests/testdai$(EE) -utils : utils/createfg.exe utils/fg2dot.exe utils/remove_short_loops.exe utils/fginfo.exe +utils : utils/createfg$(EE) utils/fg2dot$(EE) utils/fginfo$(EE) -testregression : tests/test +testregression : tests/testdai$(EE) echo Testing...this can take a while... cd tests; time ./testregression; cd .. @@ -135,108 +140,6 @@ doc : $(INC)/*.h $(SRC)/*.cpp doxygen.conf doxygen doxygen.conf clean : - del *.obj example.exe matlab\*.$(MEXEXT) matlab\*.obj tests\test.exe utils\fg2dot.exe utils\createfg.exe utils\remove_short_loops.exe utils\fginfo.exe $(LIB)\libdai.lib - - -bipgraph.obj : $(SRC)/bipgraph.cpp $(HEADERS) - $(CC) $(CCFLAGS) -c $(SRC)/bipgraph.cpp - -daialg.obj : $(SRC)/daialg.cpp $(HEADERS) - $(CC) $(CCFLAGS) -c $(SRC)/daialg.cpp - -bp.obj : $(SRC)/bp.cpp $(INC)/bp.h $(HEADERS) - $(CC) $(CCFLAGS) -c $(SRC)/bp.cpp - -lc.obj : $(SRC)/lc.cpp $(INC)/lc.h $(HEADERS) - $(CC) $(CCFLAGS) -c $(SRC)/lc.cpp - -mf.obj : $(SRC)/mf.cpp $(INC)/mf.h $(HEADERS) - $(CC) $(CCFLAGS) -c $(SRC)/mf.cpp - -factorgraph.obj : $(SRC)/factorgraph.cpp $(INC)/factorgraph.h $(HEADERS) - $(CC) $(CCFLAGS) -c $(SRC)/factorgraph.cpp - -util.obj : $(SRC)/util.cpp $(INC)/util.h $(HEADERS) - $(CC) $(CCFLAGS) -c $(SRC)/util.cpp - -regiongraph.obj : $(SRC)/regiongraph.cpp $(INC)/regiongraph.h $(HEADERS) - $(CC) $(CCFLAGS) -c $(SRC)/regiongraph.cpp - -hak.obj : $(SRC)/hak.cpp $(INC)/hak.h $(HEADERS) $(INC)/regiongraph.h - $(CC) $(CCFLAGS) -c $(SRC)/hak.cpp - -clustergraph.obj : $(SRC)/clustergraph.cpp $(INC)/clustergraph.h $(HEADERS) - $(CC) $(CCFLAGS) -c $(SRC)/clustergraph.cpp - -jtree.obj : $(SRC)/jtree.cpp $(INC)/jtree.h $(HEADERS) $(INC)/weightedgraph.h $(INC)/clustergraph.h $(INC)/regiongraph.h - $(CC) $(CCFLAGS) -c $(SRC)/jtree.cpp - -treeep.obj : $(SRC)/treeep.cpp $(INC)/treeep.h $(HEADERS) $(INC)/weightedgraph.h $(INC)/clustergraph.h $(INC)/regiongraph.h $(INC)/jtree.h - $(CC) $(CCFLAGS) -c $(SRC)/treeep.cpp - -weightedgraph.obj : $(SRC)/weightedgraph.cpp $(INC)/weightedgraph.h $(HEADERS) - $(CC) $(CCFLAGS) -c $(SRC)/weightedgraph.cpp - -mr.obj : $(SRC)/mr.cpp $(INC)/mr.h $(HEADERS) - $(CC) $(CCFLAGS) -c $(SRC)/mr.cpp - -properties.obj : $(SRC)/properties.cpp $(HEADERS) - $(CC) $(CCFLAGS) -c $(SRC)/properties.cpp - -alldai.obj : $(SRC)/alldai.cpp $(HEADERS) - $(CC) $(CCFLAGS) -c $(SRC)/alldai.cpp - -x2x.obj : $(SRC)/x2x.cpp $(HEADERS) - $(CC) $(CCFLAGS) -c $(SRC)/x2x.cpp - - -# EXAMPLE -########## - -example.exe : example.cpp $(HEADERS) $(LIB)/libdai.lib - $(CC) $(CCFLAGS) /Feexample example.cpp /link $(LIB)/libdai.lib $(LIBS) - - -# TESTS -######## - -tests/test.exe : tests/test.cpp $(HEADERS) $(LIB)/libdai.lib - $(CC) $(CCFLAGS) /Fetests/test tests/test.cpp /link $(LIB)/libdai.lib $(LIBS) $(BOOSTLIBS) - - -# MATLAB INTERFACE -################### - -matlab/dai.$(MEXEXT) : matlab/dai.cpp $(HEADERS) matlab/matlab.obj $(LIB)/libdai.lib - $(MEX) $(MEXFLAGS) -o matlab/dai matlab/dai.cpp matlab/matlab.obj $(LIB)/libdai.lib - -matlab/dai_readfg.$(MEXEXT) : matlab/dai_readfg.cpp $(HEADERS) factorgraph.obj matlab/matlab.obj - $(MEX) $(MEXFLAGS) -o matlab/dai_readfg matlab/dai_readfg.cpp factorgraph.obj matlab/matlab.obj - -matlab/dai_writefg.$(MEXEXT) : matlab/dai_writefg.cpp $(HEADERS) factorgraph.obj matlab/matlab.obj - $(MEX) $(MEXFLAGS) -o matlab/dai_writefg matlab/dai_writefg.cpp factorgraph.obj matlab/matlab.obj - -matlab/dai_removeshortloops.$(MEXEXT) : matlab/dai_removeshortloops.cpp $(HEADERS) factorgraph.obj matlab/matlab.obj - $(MEX) $(MEXFLAGS) -o matlab/dai_removeshortloops matlab/dai_removeshortloops.cpp factorgraph.obj matlab/matlab.obj - -matlab/dai_potstrength.$(MEXEXT) : matlab/dai_potstrength.cpp $(HEADERS) matlab/matlab.obj - $(MEX) $(MEXFLAGS) -o matlab/dai_potstrength matlab/dai_potstrength.cpp matlab/matlab.obj - -matlab/matlab.obj : matlab/matlab.cpp matlab/matlab.h $(HEADERS) - $(MEX) $(MEXFLAGS) -outdir matlab -c matlab/matlab.cpp - - -# UTILS -######## - -utils/createfg.exe : utils/createfg.cpp $(HEADERS) factorgraph.obj weightedgraph.obj util.obj bipgraph.obj - $(CC) $(CCFLAGS) /Feutils/createfg utils/createfg.cpp factorgraph.obj weightedgraph.obj util.obj bipgraph.obj /link $(LIBS) $(BOOSTLIBS) - -utils/fg2dot.exe : utils/fg2dot.cpp $(HEADERS) factorgraph.obj - $(CC) $(CCFLAGS) /Feutils/fg2dot utils/fg2dot.cpp factorgraph.obj /link $(LIBS) - -utils/remove_short_loops.exe : utils/remove_short_loops.cpp $(HEADERS) factorgraph.obj - $(CC) $(CCFLAGS) /Feutils/remove_short_loops utils/remove_short_loops.cpp factorgraph.obj /link $(LIBS) + del *$(OE) *.ilk *.pdb *$(EE) matlab\*$(ME) tests\testdai$(EE) tests\*.pdb tests\*.ilk utils\*$(EE) utils\*.pdb utils\*.ilk $(LIB)\libdai$(LE) -utils/fginfo.exe : utils/fginfo.cpp $(HEADERS) factorgraph.obj bipgraph.obj - $(CC) $(CCFLAGS) /Feutils/fginfo utils/fginfo.cpp factorgraph.obj bipgraph.obj /link $(LIBS) +!INCLUDE Makefile.shared