1 #*****************************************************************************
2 # Makefile Build System for Fawkes: FireVision Config
4 # Created on Sun Jan 14 23:00:47 2007
5 # Copyright (C) 2006-2008 by Tim Niemueller, AllemaniACs RoboCup Team
7 #*****************************************************************************
9 # This program is free software; you can redistribute it and/or modify
10 # it under the terms of the GNU General Public License as published by
11 # the Free Software Foundation; either version 2 of the License, or
12 # (at your option) any later version.
14 #*****************************************************************************
19 ifndef __buildsys_config_mk_
20 $(error config.mk must be included before fvconf.mk)
23 CAMS=LEUTRON FIREWIRE FILELOADER NETWORK SHMEM V4L V4L1 V4L2 BUMBLEBEE2 NAO \
27 FVBASEDIR = $(FAWKES_BASEDIR)/src/firevision
28 TOP_FVBASEDIR = $(TOP_BASEDIR)/src/firevision
29 FVCONFDIR = $(EXEC_CONFDIR)/firevision
30 FVLIBDIR = $(TOP_FVBASEDIR)/libs
31 FVEXTLIBDIR = $(FVBASEDIR)/extlib
32 VISION_INCDIRS = $(realpath $(FVBASEDIR)) $(realpath $(FVLIBDIR))
33 VISION_CFLAGS = -D__STDC_LIMIT_MACROS -DFVCONFDIR=\"$(FVCONFDIR)\"
35 # PTGrey Triclops SDK used for Bumblebee2 stereo processing
36 TRICLOPS_SDK=$(SYSROOT)/opt/Triclops3.2.0.8-FC3
38 ifneq ($(wildcard $(SYSROOT)/usr/include/lvsds),)
41 VISION_LIBDIRs += $(SYSROOT)/usr/lib/lvsds
42 VISION_INCDIRS += $(SYSROOT)/usr/include/lvsds
43 VISION_CAM_LIBS += lvsds.34
45 ifeq ($(HAVE_VISCA_CTRL),1)
46 HAVE_EVID100P_CTRL = 1
50 ifneq ($(wildcard $(SYSROOT)/usr/include/jpeglib.h $(SYSROOT)/usr/local/include/jpeglib.h),)
52 VISION_CFLAGS += -DHAVE_LIBJPEG
56 HAVE_LIBPNG = $(if $(shell $(PKGCONFIG) --exists 'libpng'; echo $${?/1/}),1,0)
57 ifeq ($(HAVE_LIBPNG),1)
58 CFLAGS_LIBPNG = -DHAVE_LIBPNG $(shell $(PKGCONFIG) --cflags 'libpng')
59 LDFLAGS_LIBPNG = $(shell $(PKGCONFIG) --libs 'libpng')
62 HAVE_LIBV4L2 = $(if $(shell $(PKGCONFIG) --exists 'libv4l2'; echo $${?/1/}),1,0)
63 ifeq ($(HAVE_LIBPNG),1)
64 CFLAGS_LIBV4L2 = -DHAVE_LIBV4L2 $(shell $(PKGCONFIG) --cflags 'libv4l2')
65 LDFLAGS_LIBV4L2 = $(shell $(PKGCONFIG) --libs 'libv4l2')
68 ifneq ($(wildcard $(realpath $(SYSROOT)/usr/include/libMesaSR.h)),)
69 HAVE_SWISSRANGER_CAM = 1
70 VISION_CAM_LIBS += mesasr usb
74 HAVE_LIBDC1394 = $(if $(shell $(PKGCONFIG) --exists 'libdc1394-2'; echo $${?/1/}),1,0)
75 HAVE_SDL = $(if $(shell $(PKGCONFIG) --exists 'sdl'; echo $${?/1/}),1,0)
77 ifeq ($(HAVE_LIBDC1394),1)
78 ifneq ($(wildcard $(realpath $(FVBASEDIR)/cams/firewire.h)),)
80 ifneq ($(wildcard $(realpath $(FVBASEDIR)/cams/bumblebee2.h)),)
81 HAVE_BUMBLEBEE2_CAM = 1
83 ifneq ($(wildcard $(realpath $(FVBASEDIR)/cams/pike.h)),)
87 VISION_CAM_LIBS += $(subst -l,,$(shell $(PKGCONFIG) --libs 'libdc1394-2'))
91 CFLAGS_SDL = $(shell $(PKGCONFIG) --cflags 'sdl')
92 LDFLAGS_SDL = $(shell $(PKGCONFIG) --libs 'sdl')
95 # Check if we have PGR Triclops SDK, build Bumblebee2 if we have it
97 TRICLOPS_SDK_ERR="Triclops SDK not available on 64-bit systems"
99 ifneq ($(HAVE_BUMBLEBEE2_CAM),1)
100 TRICLOPS_SDK_ERR="Bumblebee2 camera not available"
102 ifneq ($(wildcard $(realpath $(TRICLOPS_SDK)/include/triclops.h)),)
103 ifneq ($(wildcard $(realpath $(TRICLOPS_SDK)/lib/libtriclops.so)),)
104 HAVE_TRICLOPS_SDK = 1
105 TRICLOPS_SDK_INCDIRS += $(TRICLOPS_SDK)/include
106 TRICLOPS_SDK_LIBDIRS += $(TRICLOPS_SDK)/lib
107 TRICLOPS_SDK_LIBS += triclops
108 VISION_CFLAGS += -DHAVE_TRICLOPS_SDK
110 TRICLOPS_SDK_ERR = "shared lib not created, use \"make triclops\" in fvstereo"
113 TRICLOPS_SDK_ERR = "Triclops SDK not installed"
118 ifneq ($(wildcard $(realpath $(FVBASEDIR)/cams/net.h)),)
121 ifneq ($(wildcard $(realpath $(FVBASEDIR)/cams/fileloader.h)),)
122 HAVE_FILELOADER_CAM = 1
124 ifneq ($(wildcard $(realpath $(FVBASEDIR)/cams/shmem.h)),)
133 ifneq ($(wildcard $(SYSROOT)/usr/include/linux/videodev2.h),)
135 ifeq ($(BUILD_TYPE),naocross)
137 VISION_CFLAGS += $(NAOQI_CFLAGS)
140 HAVE_V4L2_FAIL_REASON = v4l2 not available, kernel too old?
145 ### Need at least one of V4L 1 or 2 for V4L
146 ifeq ($(HAVE_V4L_CAM),1)
147 ifneq ($(HAVE_V4L1_CAM),1)
148 ifneq ($(HAVE_V4L2_CAM),1)
149 ERROR_TARGETS += error_V4L_CAM
154 ### Need V4L2 for NAO
155 ifeq ($(HAVE_NAO_CAM),1)
156 ifneq ($(HAVE_V4L2_CAM),1)
157 ERROR_TARGETS += error_NAO_CAM
161 ### Check for external libraries
162 IPP_DIR = $(SYSROOT)/opt/intel/Compiler/11.0/081/ipp
163 ICC_DIR = $(SYSROOT)/opt/intel/Compiler/11.0/081/
165 ifneq ($(wildcard $(realpath $(IPP_DIR))),)
166 # Check versions, use first one found
167 #IPP_VERSION = $(firstword $(shell ls $(IPP_DIR)))
168 # We at least have a IPP, check if it matches our system
171 ifeq ($(ARCH),x86_64)
175 ifneq ($(wildcard $(realpath $(IPP_DIR)/$(IPP_ARCH)/include/ipp.h)),)
177 VISION_CFLAGS += -DHAVE_IPP
178 VISION_LIBS += pthread
179 ifeq ($(wildcard $(IPP_DIR)/$(IPP_VERSION)/$(IPP_ARCH)/sharedlib/libguide.so),)
180 # IPP is used from ICC installation, possibly without actually using icc atm
181 VISION_LIBDIRS += $(ICC_DIR)/lib/$(ICC_ARCH)
182 VISION_INCDIRS += $(IPP_DIR)/include
184 VISION_LIBDIRS += $(IPP_DIR)/$(IPP_VERSION)/$(IPP_ARCH)/sharedlib
185 VISION_INCDIRS += $(IPP_DIR)/$(IPP_VERSION)/$(IPP_ARCH)/include
189 HAVE_OPENCV = $(if $(shell $(PKGCONFIG) --exists 'opencv'; echo $${?/1/}),1,0)
190 ifeq ($(HAVE_OPENCV),1)
191 CFLAGS_OPENCV = -DHAVE_OPENCV $(shell $(PKGCONFIG) --cflags 'opencv')
192 LDFLAGS_OPENCV = $(subst -lhighgui,,$(shell $(PKGCONFIG) --libs 'opencv'))
193 LDFLAGS_OPENCV_GUI = -lhighgui
196 ## check for SIFT-support (patent-encumbered!)
197 SIFT_DIR = $(FVBASEDIR)/extlib/sift
198 ifneq ($(wildcard $(realpath $(SIFT_DIR))),)
201 CFLAGS_SIFT = -DHAVE_SIFT -I$(SIFT_DIR)/include
204 ## check for SURF-support (patent-encumbered!)
205 SURF_DIR = $(FVBASEDIR)/extlib/surf
206 ifneq ($(wildcard $(realpath $(SURF_DIR))),)
207 ifneq ($(ARCH),x86_64)
210 CFLAGS_SURF = -DHAVE_SURF -I$(FVBASEDIR)/extlib
214 ## check for SIFTPP-support (patent-encumbered!)
215 SIFTPP_DIR = $(FVBASEDIR)/extlib/siftpp
216 ifneq ($(wildcard $(realpath $(SIFTPP_DIR))),)
219 CFLAGS_SIFTPP = -DHAVE_SIFTPP -I$(FVBASEDIR)/extlib
220 # -DNDEBUG -DVL_LOWE_STRICT -DVL_USEFASTMATH
223 # Set to 1 to build shape models
224 HAVE_SHAPE_MODELS = 1
226 ifneq ($(wildcard $(FVLIBDIR)/bulb_calib/bulb*),)
227 HAVE_BULB_CREATOR = 1
228 VISION_CFLAGS += -DHAVE_BULB_CREATOR
231 ifneq ($(wildcard $(realpath $(FVBASEDIR)/fvutils/rectification)),)
233 VISION_CFLAGS += -DHAVE_RECTINFO
236 VISION_CFLAGS += $(foreach CAM,$(CAMS),$(if $(subst 0,,$(HAVE_$(CAM)_CAM)),-DHAVE_$(CAM)_CAM))
237 VISION_CFLAGS += $(foreach CTRL,$(CTRLS),$(if $(subst 0,,$(HAVE_$(CTRL)_CTRL)),-DHAVE_$(CTRL)_CTRL))
239 ifeq ($(MAKECMDGOALS),printconf)
240 VISION_CAM_PRINT = $(foreach CAM,$(CAMS),$(CAM): $(if $(subst 0,,$(HAVE_$(CAM)_CAM)),"yes","no")\n)
241 VISION_CTRL_PRINT = $(foreach CTRL,$(CTRLS),$(CTRL): $(if $(subst 0,,$(HAVE_$(CTRL)_CTRL)),"yes","no")\n)
242 VISION_LIBS_PRINT = $(foreach DLIB,LIBJPEG LIBPNG LIBDC1394 SDL TRICLOPS_SDK IPP OPENCV SHAPE_MODELS SIFT SURF SIFTPP,$(DLIB): $(if $(subst 0,,$(HAVE_$(DLIB))),"yes","no")\n)
244 $(SILENT)echo "Cameras:"
245 $(SILENT)echo -e " $(VISION_CAM_PRINT)"
246 $(SILENT)echo "Controls:"
247 $(SILENT)echo -e " $(VISION_CTRL_PRINT)"
248 $(SILENT)echo "Libs:"
249 $(SILENT)echo -e " $(VISION_LIBS_PRINT)"
250 $(SILENT)echo VISION_LIBDIRS: $(VISION_LIBDIRS)
251 $(SILENT)echo VISION_INCDIRS: $(VISION_INCDIRS)
252 $(SILENT)echo VISION_CAM_LIBS: $(VISION_CAM_LIBS)
253 $(SILENT)echo VISION_CFLAGS: $(VISION_CFLAGS)
257 all: $(ERROR_TARGETS)
258 .PHONY: error_V4L_CAM error_NAO_CAM
260 $(SILENT)echo -e "$(INDENT_PRINT)--- $(TRED)If you enable V4L_CAM, you have to enable at least one of V4L1_CAM and V4L2_CAM$(TNORMAL)"
264 $(SILENT)echo -e "$(INDENT_PRINT)--- $(TRED)If you enable NAO_CAM, you have to enable V4L2_CAM$(TNORMAL)"