Makefile.config.template 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349
  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. ifeq (1,$(shell pkg-config --exists $(QT4_PKGCONFIG) && echo "1"))
  155. QT4_CFLAGS=-DQT3_SUPPORT -DNICE_USELIB_QT
  156. # The moc precompiler. Make sure it´s the Qt4 version!
  157. MOC=$(MOC_BINARY) $(QT4_CFLAGS)
  158. else
  159. QT4_PKGCONFIG=
  160. $(call CONFIGINFO,QT4,0)
  161. endif
  162. #QT4_XML
  163. ifeq (1,$(shell pkg-config --exists $(QT4_XML_PKGCONFIG) && echo "1"))
  164. QT4_XML_CFLAGS="-DNICE_USELIB_QT4_XML"
  165. MOC=$(MOC_BINARY) $(QT4_CFLAGS) $(QT4_XML_CFLAGS)
  166. $(call CONFIGINFO,QT4_XML,1)
  167. else
  168. $(call CONFIGINFO,QT4_XML,0)
  169. endif
  170. #KRECONSTRUCTION
  171. KRECONSTRUCTION_PREFIX=$(HOME)/code/k_reconstruction
  172. ifeq (1,$(shell test -d $(KRECONSTRUCTION_PREFIX) && echo "1"))
  173. KRECONSTRUCTION_PC_PATH=$(KRECONSTRUCTION_PREFIX)/BUILD_$(shell uname -m)/pkgconfig
  174. KRECONSTRUCTION_CFLAGS=`export PKG_CONFIG_PATH=$(KRECONSTRUCTION_PC_PATH);\
  175. pkg-config libtrackerregion libgeoprojective libreconstruct libgeo3dext libtrackerext --cflags` -DNICE_USELIB_KRECONSTRUCTION
  176. KRECONSTRUCTION_LDFLAGS=\
  177. `export PKG_CONFIG_PATH=$(KRECONSTRUCTION_PC_PATH);\
  178. pkg-config libtrackerregion libgeoprojective libreconstruct libgeo3dext libtrackerext --libs`
  179. $(call CONFIGINFO,KRECONSTRUCTION,1)
  180. else
  181. $(call CONFIGINFO,KRECONSTRUCTION,0)
  182. endif
  183. # Coin3D
  184. COIN3DDIR=$(THIRD_BASE)/Coin3dQt4
  185. ifeq (1,$(shell test -d $(COIN3DDIR) && echo "1"))
  186. COIN3D_CFLAGS=-I$(COIN3DDIR)/include -DNICE_USELIB_COIN3D
  187. COIN3D_LDFLAGS=-L$(COIN3DDIR)/lib -lCoin -lSoQt
  188. $(call CONFIGINFO,COIN3D,1)
  189. else
  190. $(call CONFIGINFO,COIN3D,0)
  191. endif
  192. #OPEN CV
  193. ifeq (1,$(shell pkg-config --exists opencv && echo "1"))
  194. OPENCV_CFLAGS= `pkg-config --cflags opencv` -DNICE_USELIB_OPENCV
  195. OPENCV_LDFLAGS=`pkg-config --libs opencv`
  196. $(call CONFIGINFO,OPENCV_LOCAL,1)
  197. else
  198. OPENCV_PREFIX=$(THIRD_BASE)/opencv
  199. ifeq (1,$(shell test -d $(OPENCV_PREFIX) && echo "1"))
  200. OPENCV_CFLAGS=-I$(OPENCV_PREFIX)/include/opencv -DNICE_USELIB_OPENCV
  201. OPENCV_LDFLAGS=-L$(OPENCV_PREFIX)/lib
  202. OPENCV_LDFLAGS+=-lcxcore -lcv -lhighgui -lcvaux -lml
  203. $(call CONFIGINFO,OPENCV,1)
  204. else
  205. $(call CONFIGINFO,OPENCV,0)
  206. endif
  207. endif
  208. #ARIA
  209. ARIA_PREFIX=$(THIRD_BASE)/Aria
  210. ifeq (1,$(shell test -d $(OPENCV_PREFIX) && echo "1"))
  211. ARIA_CFLAGS=-I$(ARIA_PREFIX)/include -I$(ARIA_PREFIX)/ArNetworking/include -DNICE_USELIB_ARIA
  212. ARIA_LDFLAGS=-L$(ARIA_PREFIX)/lib
  213. ARIA_LDFLAGS+=-lAria -lArNetworking
  214. $(call CONFIGINFO,ARIA,1)
  215. else
  216. $(call CONFIGINFO,ARIA,0)
  217. endif
  218. #GLUT
  219. ifeq (1,$(call LIBEXISTS,test-glut.cpp,-lglut -lGLU))
  220. GLUT_LDFLAGS= -lglut -lGLU -lGL
  221. GLUT_CFLAGS=-DNICE_USELIB_GLUT
  222. $(call CONFIGINFO,GLUT,1)
  223. else
  224. $(call CONFIGINFO,GLUT,0)
  225. endif
  226. #PTU
  227. PTU_CFLAGS=$(shell ptu-config --cxxflags) -DNICE_USELIB_PTU
  228. PTU_LDFLAGS=$(shell ptu-config --libs)
  229. # FireCap
  230. ifeq (1,$(shell pkg-config FireCap --exists && echo "1"))
  231. $(call CONFIGINFO,FireCap,1)
  232. FIRECAP_PKGCONFIG_XXX:=FireCap
  233. FIRECAP_CFLAGS:=-DNICE_USELIB_FIRECAP `pkg-config $(FIRECAP_PKGCONFIG_XXX) --cflags`
  234. FIRECAP_LDFLAGS:=`pkg-config $(FIRECAP_PKGCONFIG_XXX) --libs`
  235. $(call CONFIGINFO,FireCap,1)
  236. else
  237. $(call CONFIGINFO,FireCap,0)
  238. endif
  239. # libxml2
  240. XML2CONFIG=xml2-config
  241. ifeq (1,$(shell $(XML2CONFIG) --version >> /dev/null 2>&1 && echo "1"))
  242. $(call CONFIGINFO,libxml2,1)
  243. XML2_CFLAGS=`$(XML2CONFIG) --cflags` -DNICE_USELIB_XML2
  244. XML2_LDFLAGS=`$(XML2CONFIG) --libs`
  245. else
  246. $(call CONFIGINFO,libxml2,0)
  247. endif
  248. ifeq (1,$(shell which cppunit-config 2>/dev/null >/dev/null && echo "1"))
  249. # default: use standard package
  250. CPPUNIT_CFLAGS=$(shell cppunit-config --cflags) -DNICE_USELIB_CPPUNIT
  251. CPPUNIT_LDFLAGS=$(shell cppunit-config --libs)
  252. $(call CONFIGINFO,CPPUNIT,1)
  253. else
  254. ifeq (1,$(shell ls $(THIRD_BASE)/cppunit/bin/cppunit-config 2>/dev/null >/dev/null && echo "1"))
  255. # use cppunit available in third-party directory
  256. CPPUNIT_PREFIX=$(THIRD_BASE)/cppunit
  257. CPPUNIT_CFLAGS=$(shell $(CPPUNIT_PREFIX)/bin/cppunit-config --cflags) -DNICE_USELIB_CPPUNIT
  258. CPPUNIT_LDFLAGS=$(shell $(CPPUNIT_PREFIX)/bin/cppunit-config --libs | sed s"=-L/usr/lib64=="g)
  259. $(call CONFIGINFO,CPPUNIT,1)
  260. else
  261. # no cppunit available
  262. CPPUNIT_CFLAGS=
  263. CPPUNIT_LDFLAGS=
  264. $(call CONFIGINFO,CPPUNIT,0)
  265. endif
  266. endif
  267. LIBMAGICKCONFIG=MagickCore-config
  268. ifeq (1,$(shell $(LIBMAGICKCONFIG) --version >> /dev/null 2>&1 && echo "1"))
  269. LIBMAGICKCONFIG=Magick++-config
  270. ifeq (1,$(shell $(LIBMAGICKCONFIG) --version >> /dev/null 2>&1 && echo "1"))
  271. LIBMAGICK_CFLAGS=`$(LIBMAGICKCONFIG) --cppflags` -DNICE_USELIB_LIBMAGICK
  272. LIBMAGICK_LDFLAGS=`$(LIBMAGICKCONFIG) --libs`
  273. $(call CONFIGINFO,LIBMAGICK,1)
  274. else
  275. $(call CONFIGINFO,LIBMAGICK,0)
  276. endif
  277. else
  278. $(call CONFIGINFO,LIBMAGICK,0)
  279. endif
  280. # nice-dtsvm is a nice sub-lib, and we like
  281. # to have it optionally, therefore, we require
  282. # a flag passed to the compiler, which can be used
  283. # in our source code
  284. ifeq (1,$(shell test -d nice-dtsvm/ && echo "1"))
  285. #NICEDTSVM_CFLAGS=-DNICE_USELIB_NICEDTSVM `pkg-config --cflags libnice-dtsvm`
  286. #NICEDTSVM_LDFLAGS=`pkg-config --libs libnice-dtsvm`
  287. NICEDTSVM_CFLAGS=-DNICE_USELIB_NICEDTSVM
  288. NICEDTSVM_LDFLAGS=
  289. $(call CONFIGINFO,NICEDTSVM,1)
  290. else
  291. $(call CONFIGINFO,NICEDTSVM,0)
  292. endif
  293. ifeq (1,$(shell test -d $(THIRD_BASE)/trlan/ && echo "1"))
  294. TRLAN_CFLAGS=-DNICE_USELIB_TRLAN
  295. TRLAN_LDFLAGS=-L$(THIRD_BASE)/trlan/ -ltrlan
  296. $(call CONFIGINFO,TRLAN,1)
  297. else
  298. $(call CONFIGINFO,TRLAN,0)
  299. endif
  300. # for Matze Wackers optimization lib
  301. DEBUGFLAGS_CFLAGS=-DOPT_DEBUG -DDEBUG
  302. MATIODIR=matio/
  303. ifeq (1,$(shell test -d $(MATIODIR) && echo "1"))
  304. MATIO_CFLAGS=-DNICE_USELIB_MATIO -I$(MATIODIR)
  305. MATIO_LDFLAGS=-L$(MATIODIR) -lmatio
  306. $(call CONFIGINFO,MATIO,1)
  307. else
  308. $(call CONFIGINFO,MATIO,0)
  309. endif