Makefile.config.template 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340
  1. # -----------------------------
  2. # - configuration for libraries
  3. #
  4. # This is necessary to be able to use the $($(x)_CFLAGS) and $($(x)_LDFLAGS)
  5. # in the main Makefile. It is then simple to say a target will need library
  6. # $(x) with headers and libraries. all other variables defined in this section
  7. # are of no use later on in the process.
  8. CONFIGINFO=$(info $(1) $(if $(findstring 1,$(2)),will be used,not found (see Makefile.config)))
  9. # The following commands can be used
  10. # PKGCONFIG_3RDPARTY(PACKAGE_INITIALS, PACKAGE_NAME)
  11. # LIBEXIST(TESTFILE,LIBARGUMENTS)
  12. LIBEXISTS=$(shell g++ $(2) -x c++ -c libtests/$(1) -o /dev/null >/dev/null 2>&1 && echo "1")
  13. # determine platform (32 or 64bit)
  14. PLATFORM:=$(shell uname -m)
  15. ifeq (x86_64,$(PLATFORM))
  16. ifeq (1,$(shell test -f $(HOME)/DBVFAIL && echo "1"))
  17. THIRD_BASE=nothirdbase
  18. $(call CONFIGINFO,DBVEXT,0)
  19. else
  20. THIRD_BASE=/home/dbv/3rdparty64-gcc43
  21. $(call CONFIGINFO,DBVEXT,1)
  22. endif
  23. ifeq (1,$(shell test -d $(THIRD_BASE) && echo "1"))
  24. # ICE
  25. ifndef ICEDIR
  26. ICEDIR=$(THIRD_BASE)/ice-for-limun/
  27. endif
  28. #ANN
  29. ANN_CFLAGS=-I/home/dbv/3rdparty64/ANN/include -DNICE_USELIB_ANN
  30. ANN_LDFLAGS=-L/home/dbv/3rdparty64/ANN/lib -lANN
  31. # IPP v5
  32. IPPDIR=$(THIRD_BASE)/ipp53
  33. ifeq (1,$(shell test -d $(IPPDIR) && echo "1"))
  34. IPP_CFLAGS=-I$(IPPDIR)/include -DNICE_USELIB_IPP=5
  35. IPP_LDFLAGS=-L$(IPPDIR)/sharedlib -lippiem64t -lippccem64t -lippcvem64t -lippsem64t -lippmem64t -lippcoreem64t -lpthread
  36. $(call CONFIGINFO,IPP,1)
  37. else
  38. $(call CONFIGINFO,IPP,0)
  39. endif
  40. else
  41. THIRD_BASE=/usr/lib/
  42. endif
  43. ifdef ICEDIR
  44. ifndef NOFFTW3
  45. ICEOPT = -lfftw3
  46. else
  47. ICECFLAG = -DNOFFTW3
  48. endif
  49. ICE_CFLAGS=-I$(ICEDIR)/src -DNICE_USELIB_ICE -DDONT_USE_ICE_NAMESPACE_BY_DEFAULT $(ICECFLAG)
  50. ICE_LDFLAGS=-L$(ICEDIR)/lib/x86_64-suse-linux/ -lice -L/usr/X11R6/lib -lX11 -ljpeg $(ICEOPT)
  51. $(call CONFIGINFO,ICE,1)
  52. else
  53. $(call CONFIGINFO,ICE,0)
  54. endif
  55. else
  56. THIRD_BASE=/home/dbv/3rdparty32
  57. ifeq (1,$(shell test -d $(THIRD_BASE) && echo "1"))
  58. # ICE
  59. ICEDIR=$(THIRD_BASE)/ice-for-limun/
  60. ICE_CFLAGS=-I$(ICEDIR)/src -DNICE_USELIB_ICE -DDONT_USE_ICE_NAMESPACE_BY_DEFAULT
  61. ICE_LDFLAGS=-L$(ICEDIR)/lib/i686-suse-linux/ -lice -L/usr/X11R6/lib -lX11 -ljpeg -lfftw3
  62. #ANN
  63. ANN_CFLAGS=-I/home/dbv/3rdparty32/ANN/include -DNICE_USELIB_ANN
  64. ANN_LDFLAGS=-L/home/dbv/3rdparty32/ANN/lib -lANN
  65. # IPP v5
  66. IPPDIR=$(THIRD_BASE)/ipp53
  67. IPP_CFLAGS=-I$(IPPDIR)/include -DNICE_USELIB_IPP=5
  68. IPP_LDFLAGS=-L$(IPPDIR)/sharedlib -lippcore -lguide -lippi -lippcc -lippcv -lipps -lippm
  69. else
  70. THIRD_BASE=/usr/lib/
  71. endif
  72. endif
  73. # OpenMP
  74. ifeq (1,$(call LIBEXISTS,test-libomp.cpp,-fopenmp -lgomp))
  75. OPENMP_CFLAGS=-fopenmp -DNICE_USELIB_OPENMP
  76. OPENMP_LDFLAGS=-fopenmp -lgomp
  77. $(call CONFIGINFO,OPENMP,1)
  78. else
  79. $(call CONFIGINFO,OPENMP,0)
  80. endif
  81. #CUDASIFTDEMO
  82. CUDASIFTDIR=$(THIRD_BASE)/cudaSIFT/
  83. CUDADIR=$(THIRD_BASE)/cuda/
  84. ifeq (1,$(shell test -d $(CUDASIFTDIR) && echo "1"))
  85. CUDASIFT_CFLAGS+=-I$(CUDASIFTDIR)/SiftGPU/SiftGPU -DNICE_USELIB_CUDASIFT
  86. CUDASIFT_LDFLAGS+=-L$(CUDASIFTDIR)/SiftGPU/Linux/bin -lsiftgpu -L$(CUDASIFTDIR)/glew/lib/ -L$(CUDASIFTDIR)/devil/lib -L/usr/lib64/ -lGLEW -lglut -lIL -lGL -L$(CUDADIR)/lib64 -lcudart
  87. $(call CONFIGINFO,CUDASIFT,1)
  88. else
  89. $(call CONFIGINFO,CUDASIFT,0)
  90. endif
  91. # JPEG
  92. ifeq (1,$(call LIBEXISTS,test-libjpeg.cpp,-ljpeg))
  93. JPG_CFLAGS=-DNICE_USELIB_JPG
  94. JPG_LDFLAGS=-ljpeg
  95. $(call CONFIGINFO,JPEGLIB,1)
  96. else
  97. $(call CONFIGINFO,JPEGLIB,0)
  98. endif
  99. # PNG
  100. # The new version of the png library is not supported.
  101. # Therefore, we simply do not use it, because the whole functionality
  102. # is covered by the libMagick++ library.
  103. #PNG_CFLAGS=-DNICE_USELIB_PNG
  104. #PNG_LDFLAGS=-lpng
  105. # ZLIB (gz)
  106. ifeq (1,$(call LIBEXISTS,test-zlib.cpp,-lz))
  107. ZLIB_CFLAGS=-DNICE_USELIB_ZLIB
  108. ZLIB_LDFLAGS=-lz
  109. $(call CONFIGINFO,ZLIB,1)
  110. else
  111. $(call CONFIGINFO,ZLIB,0)
  112. endif
  113. # BZLIB (bz2)
  114. ifeq (1,$(call LIBEXISTS,test-bzlib.cpp,-lbz2))
  115. BZLIB_CFLAGS=-DNICE_USELIB_BZLIB
  116. BZLIB_LDFLAGS=-lbz2
  117. $(call CONFIGINFO,BZLIB,1)
  118. else
  119. BZLIB_CFLAGS=
  120. BZLIB_LDFLAGS=
  121. $(call CONFIGINFO,BZLIB,0)
  122. endif
  123. # OpenMP
  124. #OPENMP_CFLAGS=-fopenmp -DNICE_USELIB_OPENMP
  125. #OPENMP_LDFLAGS=-fopenmp -lgomp
  126. # Boost
  127. BOOSTDIR=$(THIRD_BASE)/boost
  128. ifeq (1,$(shell test -d $(BOOSTDIR) && echo "1"))
  129. BOOST_CFLAGS=-I$(BOOSTDIR)/include -DNICE_USELIB_BOOST
  130. BOOST_LDFLAGS=-L$(BOOSTDIR)/lib
  131. endif
  132. # LinAl
  133. LINALCONFIG=$(THIRD_BASE)/LinAl/bin/linal-config
  134. ifeq (1,$(shell test -f $(LINALCONFIG) && echo "1"))
  135. LINAL_CFLAGS=`$(LINALCONFIG) --cxxflags` -DNICE_USELIB_LINAL
  136. LINAL_LDFLAGS=`$(LINALCONFIG) --libs` -lgfortran
  137. endif
  138. # ---------------------------------- QT4 (first local install -> if not available
  139. QT4_PKGCONFIG=QtGui QtCore QtOpenGL Qt3Support
  140. QT4_XML_PKGCONFIG=QtXml
  141. ifeq (1,$(shell pkg-config --exists $(QT4_PKGCONFIG) && echo "1"))
  142. MOC_BINARY=moc
  143. $(call CONFIGINFO,QT4_local,1)
  144. else
  145. QTDIR=$(THIRD_BASE)/qt4
  146. ifeq (1,$(shell test -d $(QTDIR)/lib/pkgconfig && echo "1"))
  147. QT4_PKGCONFIG_XXX=$(QTDIR)/lib/pkgconfig
  148. QT4_PKGCONFIG=$(QT4_PKGCONFIG_XXX)/QtGui.pc $(QT4_PKGCONFIG_XXX)/QtCore.pc $(QT4_PKGCONFIG_XXX)/QtOpenGL.pc $(QT4_PKGCONFIG_XXX)/Qt3Support.pc
  149. QT4_XML_PKGCONFIG=$(QT4_PKGCONFIG_XXX)/QtXml.pc
  150. MOC_BINARY=$(QTDIR)/bin/moc
  151. $(call CONFIGINFO,QT4_3rdparty,1)
  152. endif
  153. endif
  154. #QT4_XML
  155. ifeq (1,$(shell pkg-config --exists $(QT4_XML_PKGCONFIG) && echo "1"))
  156. QT4_XML_CFLAGS="-DNICE_USELIB_QT4_XML"
  157. MOC=$(MOC_BINARY) $(QT4_CFLAGS) $(QT4_XML_CFLAGS)
  158. $(call CONFIGINFO,QT4_XML,1)
  159. else
  160. $(call CONFIGINFO,QT4_XML,0)
  161. endif
  162. #KRECONSTRUCTION
  163. KRECONSTRUCTION_PREFIX=$(HOME)/code/k_reconstruction
  164. ifeq (1,$(shell test -d $(KRECONSTRUCTION_PREFIX) && echo "1"))
  165. KRECONSTRUCTION_PC_PATH=$(KRECONSTRUCTION_PREFIX)/BUILD_$(shell uname -m)/pkgconfig
  166. KRECONSTRUCTION_CFLAGS=`export PKG_CONFIG_PATH=$(KRECONSTRUCTION_PC_PATH);\
  167. pkg-config libtrackerregion libgeoprojective libreconstruct libgeo3dext libtrackerext --cflags` -DNICE_USELIB_KRECONSTRUCTION
  168. KRECONSTRUCTION_LDFLAGS=\
  169. `export PKG_CONFIG_PATH=$(KRECONSTRUCTION_PC_PATH);\
  170. pkg-config libtrackerregion libgeoprojective libreconstruct libgeo3dext libtrackerext --libs`
  171. $(call CONFIGINFO,KRECONSTRUCTION,1)
  172. else
  173. $(call CONFIGINFO,KRECONSTRUCTION,0)
  174. endif
  175. # Coin3D
  176. COIN3DDIR=$(THIRD_BASE)/Coin3dQt4
  177. ifeq (1,$(shell test -d $(COIN3DDIR) && echo "1"))
  178. COIN3D_CFLAGS=-I$(COIN3DDIR)/include -DNICE_USELIB_COIN3D
  179. COIN3D_LDFLAGS=-L$(COIN3DDIR)/lib -lCoin -lSoQt
  180. $(call CONFIGINFO,COIN3D,1)
  181. else
  182. $(call CONFIGINFO,COIN3D,0)
  183. endif
  184. #OPEN CV
  185. ifeq (1,$(shell pkg-config --exists opencv && echo "1"))
  186. OPENCV_CFLAGS= `pkg-config --cflags opencv` -DNICE_USELIB_OPENCV
  187. OPENCV_LDFLAGS=`pkg-config --libs opencv`
  188. $(call CONFIGINFO,OPENCV_LOCAL,1)
  189. else
  190. OPENCV_PREFIX=$(THIRD_BASE)/opencv
  191. ifeq (1,$(shell test -d $(OPENCV_PREFIX) && echo "1"))
  192. OPENCV_CFLAGS=-I$(OPENCV_PREFIX)/include/opencv -DNICE_USELIB_OPENCV
  193. OPENCV_LDFLAGS=-L$(OPENCV_PREFIX)/lib
  194. OPENCV_LDFLAGS+=-lcxcore -lcv -lhighgui -lcvaux -lml
  195. $(call CONFIGINFO,OPENCV,1)
  196. else
  197. $(call CONFIGINFO,OPENCV,0)
  198. endif
  199. endif
  200. #ARIA
  201. ARIA_PREFIX=$(THIRD_BASE)/Aria
  202. ifeq (1,$(shell test -d $(OPENCV_PREFIX) && echo "1"))
  203. ARIA_CFLAGS=-I$(ARIA_PREFIX)/include -I$(ARIA_PREFIX)/ArNetworking/include -DNICE_USELIB_ARIA
  204. ARIA_LDFLAGS=-L$(ARIA_PREFIX)/lib
  205. ARIA_LDFLAGS+=-lAria -lArNetworking
  206. $(call CONFIGINFO,ARIA,1)
  207. else
  208. $(call CONFIGINFO,ARIA,0)
  209. endif
  210. #GLUT
  211. ifeq (1,$(call LIBEXISTS,test-glut.cpp,-lglut -lGLU))
  212. GLUT_LDFLAGS= -lglut -lGLU -lGL
  213. GLUT_CFLAGS=-DNICE_USELIB_GLUT
  214. $(call CONFIGINFO,GLUT,1)
  215. else
  216. $(call CONFIGINFO,GLUT,0)
  217. endif
  218. #PTU
  219. PTU_CFLAGS=$(shell ptu-config --cxxflags) -DNICE_USELIB_PTU
  220. PTU_LDFLAGS=$(shell ptu-config --libs)
  221. # FireCap
  222. ifeq (1,$(shell pkg-config FireCap --exists && echo "1"))
  223. $(call CONFIGINFO,FireCap,1)
  224. FIRECAP_PKGCONFIG_XXX:=FireCap
  225. FIRECAP_CFLAGS:=-DNICE_USELIB_FIRECAP `pkg-config $(FIRECAP_PKGCONFIG_XXX) --cflags`
  226. FIRECAP_LDFLAGS:=`pkg-config $(FIRECAP_PKGCONFIG_XXX) --libs`
  227. $(call CONFIGINFO,FireCap,1)
  228. else
  229. $(call CONFIGINFO,FireCap,0)
  230. endif
  231. # libxml2
  232. XML2CONFIG=xml2-config
  233. ifeq (1,$(shell $(XML2CONFIG) --version >> /dev/null 2>&1 && echo "1"))
  234. $(call CONFIGINFO,libxml2,1)
  235. XML2_CFLAGS=`$(XML2CONFIG) --cflags` -DNICE_USELIB_XML2
  236. XML2_LDFLAGS=`$(XML2CONFIG) --libs`
  237. else
  238. $(call CONFIGINFO,libxml2,0)
  239. endif
  240. ifeq (1,$(shell which cppunit-config 2>/dev/null >/dev/null && echo "1"))
  241. # default: use standard package
  242. CPPUNIT_CFLAGS=$(shell cppunit-config --cflags) -DNICE_USELIB_CPPUNIT
  243. CPPUNIT_LDFLAGS=$(shell cppunit-config --libs)
  244. $(call CONFIGINFO,CPPUNIT,1)
  245. else
  246. ifeq (1,$(shell ls $(THIRD_BASE)/cppunit/bin/cppunit-config 2>/dev/null >/dev/null && echo "1"))
  247. # use cppunit available in third-party directory
  248. CPPUNIT_PREFIX=$(THIRD_BASE)/cppunit
  249. CPPUNIT_CFLAGS=$(shell $(CPPUNIT_PREFIX)/bin/cppunit-config --cflags) -DNICE_USELIB_CPPUNIT
  250. CPPUNIT_LDFLAGS=$(shell $(CPPUNIT_PREFIX)/bin/cppunit-config --libs | sed s"=-L/usr/lib64=="g)
  251. $(call CONFIGINFO,CPPUNIT,1)
  252. else
  253. # no cppunit available
  254. CPPUNIT_CFLAGS=
  255. CPPUNIT_LDFLAGS=
  256. $(call CONFIGINFO,CPPUNIT,0)
  257. endif
  258. endif
  259. LIBMAGICKCONFIG=MagickCore-config
  260. ifeq (1,$(shell $(LIBMAGICKCONFIG) --version >> /dev/null 2>&1 && echo "1"))
  261. LIBMAGICKCONFIG=Magick++-config
  262. ifeq (1,$(shell $(LIBMAGICKCONFIG) --version >> /dev/null 2>&1 && echo "1"))
  263. LIBMAGICK_CFLAGS=`$(LIBMAGICKCONFIG) --cppflags` -DNICE_USELIB_LIBMAGICK
  264. LIBMAGICK_LDFLAGS=`$(LIBMAGICKCONFIG) --libs`
  265. $(call CONFIGINFO,LIBMAGICK,1)
  266. else
  267. $(call CONFIGINFO,LIBMAGICK,0)
  268. endif
  269. else
  270. $(call CONFIGINFO,LIBMAGICK,0)
  271. endif
  272. # nice-dtsvm is a nice sub-lib, and we like
  273. # to have it optionally, therefore, we require
  274. # a flag passed to the compiler, which can be used
  275. # in our source code
  276. ifeq (1,$(shell test -d nice-dtsvm/ && echo "1"))
  277. #NICEDTSVM_CFLAGS=-DNICE_USELIB_NICEDTSVM `pkg-config --cflags libnice-dtsvm`
  278. #NICEDTSVM_LDFLAGS=`pkg-config --libs libnice-dtsvm`
  279. NICEDTSVM_CFLAGS=-DNICE_USELIB_NICEDTSVM
  280. NICEDTSVM_LDFLAGS=
  281. $(call CONFIGINFO,NICEDTSVM,1)
  282. else
  283. $(call CONFIGINFO,NICEDTSVM,0)
  284. endif
  285. ifeq (1,$(shell test -d $(THIRD_BASE)/trlan/ && echo "1"))
  286. TRLAN_CFLAGS=-DNICE_USELIB_TRLAN
  287. TRLAN_LDFLAGS=-L$(THIRD_BASE)/trlan/ -ltrlan
  288. $(call CONFIGINFO,TRLAN,1)
  289. else
  290. $(call CONFIGINFO,TRLAN,0)
  291. endif
  292. # for Matze Wackers optimization lib
  293. DEBUGFLAGS_CFLAGS=-DOPT_DEBUG -DDEBUG
  294. MATIODIR=matio/
  295. ifeq (1,$(shell test -d $(MATIODIR) && echo "1"))
  296. MATIO_CFLAGS=-DNICE_USELIB_MATIO -I$(MATIODIR)
  297. MATIO_LDFLAGS=-L$(MATIODIR) -lmatio
  298. $(call CONFIGINFO,MATIO,1)
  299. else
  300. $(call CONFIGINFO,MATIO,0)
  301. endif