Makefile.config.template 11 KB

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