ArDrone SDK 1.8 added
[mardrone] / mardrone / ARDrone_SDK_Version_1_8_20110726 / ARDroneLib / VP_SDK / Build / sysvar.makefile
1
2 ###########################################################################################
3 #
4 # Creates needed build system variables
5 # ----------------------------------------------------------------------------------
6 # Author : aurelien.morelle@parrot.com
7 # Date   : 2007/05/16
8 #
9 # Included from global Makefile
10 #
11 ###########################################################################################
12
13 ifndef ALL_TARGETS
14 export ALL_TARGETS=../../Soft/Build/targets_versions
15 endif
16
17 ifeq ($(MAKECMDGOALS),check)
18   export QUIET_BUILD=no
19   export MAKEFLAGS=--no-print-directory
20 endif
21
22 ifeq ($(QUIET_BUILD),yes)
23   export MAKEFLAGS=-s --no-print-directory
24   GENERIC_COMMAND_PREFIX:=@$(GENERIC_COMMAND_PREFIX)
25   RM=@rm -rfv
26 else
27   RM=rm -rf
28 endif
29
30
31 ifeq "$(RELEASE_BUILD)" "yes"
32   BUILD_MODE=PROD_MODE
33 endif
34 ifeq "$(RELEASE_BUILD)" "no"
35   BUILD_MODE=DEBUG_MODE
36 endif
37
38
39 ifeq ($(USE_NDS),yes)
40     export DEVKITARM=/usr/local/devkitARM-eabi_release_21/devkitARM
41     export DEVKITPRO=$(DEVKITARM)
42     OS_TARGET_ID=nds_$(NDS_CPU)
43     GNUTOOLS_PATH=$(DEVKITARM)/bin
44     GENERIC_COMMAND_PREFIX=$(GNUTOOLS_PATH)/arm-eabi-
45     ifeq ($(wildcard $(GNUTOOLS_PATH)),)
46       $(error ERROR Bad GNUTOOLS_PATH [ $(GNUTOOLS_PATH) does not exist ])
47     endif
48     ifeq ($(wildcard $(GENERIC_COMMAND_PREFIX)gcc),)
49       $(error ERROR Bad GENERIC_COMMAND_PREFIX [ $(GENERIC_COMMAND_PREFIX)gcc does not exist ])
50     endif
51 else
52     ifeq ($(USE_MINGW32),yes)
53       OS_TARGET_ID=mingw32_gtk+-2.14.7
54       GENERIC_COMMAND_PREFIX=i586-mingw32msvc-
55       ifeq ($(shell which $(GENERIC_COMMAND_PREFIX)gcc 2> /dev/null),)
56         $(error ERROR You need Minimalist GNU Win32 cross compiler. (under Debian: apt-get install mingw32))
57       endif
58     else
59       ifeq ($(USE_ELINUX),yes)
60         OS_TARGET_ID=eLinux
61         TOOLCHAIN_PATH=/opt/$(TOOLCHAIN_VERSION)/bin
62         ifeq ($(TOOLCHAIN_VERSION),arm-eglibc)
63           GENERIC_COMMAND_PREFIX=$(TOOLCHAIN_PATH)/arm-none-linux-gnueabi-
64         else
65         ifeq ($(TOOLCHAIN_VERSION),arm-2010.09)
66           GENERIC_COMMAND_PREFIX=$(TOOLCHAIN_PATH)/arm-none-linux-gnueabi-
67         else
68         ifeq ($(TOOLCHAIN_VERSION),arm-uclibc)
69           GENERIC_COMMAND_PREFIX=$(TOOLCHAIN_PATH)/arm-linux-uclibcgnueabi-
70         else
71           $(error ERROR Unsupported toolchain.)
72         endif
73         endif
74         endif
75       else
76         ifeq ($(USE_IPHONE),yes)
77                         OS_TARGET_ID=$(IPHONE_PLATFORM)
78                         OS_TARGET_NAME:=$(OS_TARGET_ID)
79                         OS_TARGET_NAME:=$(shell echo "$(OS_TARGET_NAME)" | sed -e "s/iphone/iPhone/g")
80                         OS_TARGET_NAME:=$(shell echo "$(OS_TARGET_NAME)" | sed -e "s/os/OS/g")
81                         OS_TARGET_NAME:=$(shell echo "$(OS_TARGET_NAME)" | sed -e "s/simulator/Simulator/g")
82                         TOOLCHAIN_PATH=/Developer/Platforms/$(OS_TARGET_NAME).platform/Developer/usr/bin
83                         GENERIC_COMMAND_PREFIX=$(TOOLCHAIN_PATH)/
84         else
85              OS_TARGET_ID=$(shell uname -sor | sed -e "s/[ \/]/_/g")
86         ifeq ($(USE_ANDROID),yes)
87           TOOLCHAIN_PATH=$(NDK_PATH)/build/prebuilt/linux-x86/$(TOOLCHAIN_VERSION)/bin
88           GENERIC_COMMAND_PREFIX=$(TOOLCHAIN_PATH)/arm-eabi-
89         else
90           GENERIC_COMMAND_PREFIX=               
91         endif
92         endif
93       endif
94     endif
95 endif
96
97 GCC_VERSION=$(shell $(GENERIC_COMMAND_PREFIX)gcc -v 2>&1 | grep --color=never version | grep -v [cC]onfigur | sed -e "s/\(^version gcc \)\([^ ]*\)\(.*\)/\2/" | sed -e "s/\(^gcc version \)\([^ ]*\)\(.*\)/\2/")
98
99 ifeq ($(USE_NDS),no)
100 ifeq ($(USE_MINGW32),no)
101 ifeq ($(USE_ELINUX), no)
102   ifneq ($(GCC_VERSION),4.3.3)
103 #    $(error GCC version not supported)
104   endif
105 endif
106 endif
107 endif
108
109 GCC_ID:=$(subst $(GNUTOOLS_PATH)/,,$(GENERIC_COMMAND_PREFIX))gcc_$(GCC_VERSION)
110
111 ifneq ($(NO_COM),yes)
112   ifeq ($(USE_BLUEZ),yes)
113     COM_TARGET_ID=libbluetooth3
114     COM_TARGET_ID:=$(COM_TARGET_ID)_$(shell apt-cache show libbluetooth-dev | grep "^Version" | cut -d" " -f2 | head -n 1)
115     COM_TARGET_ID:=$(COM_TARGET_ID)_libiw
116     COM_TARGET_ID:=$(COM_TARGET_ID)_$(shell apt-cache show libiw-dev | grep "^Version" | cut -d" " -f2 | head -n 1)
117   endif
118 endif
119
120 ifeq ($(USE_BONJOUR),yes)
121   BONJOUR_TARGET_ID:=bonjour_$(BONJOUR_VERSION)
122   COM_TARGET_ID:=$(COM_TARGET_ID)_$(BONJOUR_TARGET_ID)
123 endif
124
125 ARCH_TARGET_ID=$(ARDRONE_TARGET_ARCH)
126 PARROTOS_CORE_TARGET_ID:=parrotOS_core_$(COMMONSOFT_VERSION)
127 PARROTOS_UTILS_TARGET_ID:=parrotOS_utils_$(COMMONSOFT_VERSION)
128 PARROTOS_DRIVERS_TARGET_ID:=parrotOS_drivers_$(COMMONSOFT_VERSION)
129 PARROTOS_DEVS_TARGET_ID:=parrotOS_devs_$(COMMONSOFT_VERSION)
130 PARROTOS_CODEC_TARGET_ID:=parrotOS_codec_$(COMMONSOFT_VERSION)
131 LIBPLF_TARGET_ID:=libplf_$(COMMONSOFT_VERSION)
132
133 ifeq ($(USE_ARDRONELIB),yes)
134    ARDRONELIB_TARGET_ID=ardrone_lib_$(BUILD_MODE)
135 endif
136
137 ifeq ($(USE_ARDRONE_VISION),yes)
138    ARDRONE_VISION_TARGET_ID=vision_lib_$(BUILD_MODE)
139 endif
140
141 ifeq ($(USE_ARDRONE_POLARIS),yes)
142    ARDRONE_POLARIS_TARGET_ID=polaris_lib_$(BUILD_MODE)
143 endif
144
145 ifeq ($(USE_ARDRONE_VICON),yes)
146    ARDRONE_VICON_TARGET_ID=vicon_lib_$(BUILD_MODE)
147 endif
148
149 ifeq ($(USE_ARDRONE_TEST_BENCHS),yes)
150    ARDRONE_TEST_BENCHS_TARGET_ID=test_benchs_lib_$(BUILD_MODE)
151 endif
152
153 ifeq ($(USE_ARDRONE_CALIBRATION),yes)
154    ARDRONE_CALIBRATION_TARGET_ID=calibration_lib_$(BUILD_MODE)
155 endif
156
157 ifeq ($(USE_SDK),yes)
158   SDK_TARGET_ID=sdk_$(BUILD_MODE)
159 endif
160 ifeq ($(USE_APP),yes)
161   APP_TARGET_ID:=$(APP_ID)_$(BUILD_MODE)
162 endif
163 ifeq ($(USE_DLL),yes)
164   DLL_TARGET_ID:=$(DLL_ID)_$(BUILD_MODE)
165 endif
166 ifeq ($(USE_LIB),yes)
167   LIB_TARGET_ID:=$(LIB_ID)_$(BUILD_MODE)
168 endif
169
170 ifeq ($(USE_FFMPEG),yes)
171   CODEC_TARGET_ID=ffmpeg_$(FF_ARCH)
172 else
173 ifeq ($(USE_MJPEG),yes)
174   CODEC_TARGET_ID=mjpeg
175 endif
176 ifeq ($(USE_VLIB),yes)
177   CODEC_TARGET_ID=vlib
178 endif
179 endif
180
181 ifeq ($(USE_ARDRONELIB),yes)
182 ifneq ($(COM_TARGET_ID),)
183   ARDRONELIB_TARGET_ID:=$(ARDRONELIB_TARGET_ID)_$(COM_TARGET_ID)
184 endif
185 ifneq ($(CODEC_TARGET_ID),)
186   ARDRONELIB_TARGET_ID:=$(ARDRONELIB_TARGET_ID)_$(CODEC_TARGET_ID)
187 endif
188 ifneq ($(ARCH_TARGET_ID),)
189   ARDRONELIB_TARGET_ID:=$(ARDRONELIB_TARGET_ID)_$(ARCH_TARGET_ID)
190 endif
191 endif
192
193 ifeq ($(USE_ARDRONE_VISION),yes)
194 ifneq ($(COM_TARGET_ID),)
195   ARDRONE_VISION_TARGET_ID:=$(ARDRONE_VISION_TARGET_ID)_$(COM_TARGET_ID)
196 endif
197 ifneq ($(CODEC_TARGET_ID),)
198   ARDRONE_VISION_TARGET_ID:=$(ARDRONE_VISION_TARGET_ID)_$(CODEC_TARGET_ID)
199 endif
200 ifneq ($(ARCH_TARGET_ID),)
201   ARDRONE_VISION_TARGET_ID:=$(ARDRONE_VISION_TARGET_ID)_$(ARCH_TARGET_ID)
202 endif
203 endif
204
205 ifeq ($(USE_ARDRONE_POLARIS),yes)
206 ifneq ($(COM_TARGET_ID),)
207   ARDRONE_POLARIS_TARGET_ID:=$(ARDRONE_POLARIS_TARGET_ID)_$(COM_TARGET_ID)
208 endif
209 ifneq ($(CODEC_TARGET_ID),)
210   ARDRONE_POLARIS_TARGET_ID:=$(ARDRONE_POLARIS_TARGET_ID)_$(CODEC_TARGET_ID)
211 endif
212 ifneq ($(ARCH_TARGET_ID),)
213   ARDRONE_POLARIS_TARGET_ID:=$(ARDRONE_POLARIS_TARGET_ID)_$(ARCH_TARGET_ID)
214 endif
215 endif
216
217 ifeq ($(USE_ARDRONE_VICON),yes)
218 ifneq ($(COM_TARGET_ID),)
219   ARDRONE_VICON_TARGET_ID:=$(ARDRONE_VICON_TARGET_ID)_$(COM_TARGET_ID)
220 endif
221 ifneq ($(CODEC_TARGET_ID),)
222   ARDRONE_VICON_TARGET_ID:=$(ARDRONE_VICON_TARGET_ID)_$(CODEC_TARGET_ID)
223 endif
224 ifneq ($(ARCH_TARGET_ID),)
225   ARDRONE_VICON_TARGET_ID:=$(ARDRONE_VICON_TARGET_ID)_$(ARCH_TARGET_ID)
226 endif
227 endif
228
229 ifeq ($(USE_ARDRONE_TEST_BENCHS),yes)
230 ifneq ($(COM_TARGET_ID),)
231   ARDRONE_TEST_BENCHS_TARGET_ID:=$(ARDRONE_TEST_BENCHS_TARGET_ID)_$(COM_TARGET_ID)
232 endif
233 ifneq ($(CODEC_TARGET_ID),)
234   ARDRONE_TEST_BENCHS_TARGET_ID:=$(ARDRONE_TEST_BENCHS_TARGET_ID)_$(CODEC_TARGET_ID)
235 endif
236 ifneq ($(ARCH_TARGET_ID),)
237   ARDRONE_TEST_BENCHS_TARGET_ID:=$(ARDRONE_TEST_BENCHS_TARGET_ID)_$(ARCH_TARGET_ID)
238 endif
239 endif
240
241 ifeq ($(USE_ARDRONE_CALIBRATION),yes)
242 ifneq ($(COM_TARGET_ID),)
243   ARDRONE_CALIBRATION_TARGET_ID:=$(ARDRONE_CALIBRATION_TARGET_ID)_$(COM_TARGET_ID)
244 endif
245 ifneq ($(CODEC_TARGET_ID),)
246   ARDRONE_CALIBRATION_TARGET_ID:=$(ARDRONE_CALIBRATION_TARGET_ID)_$(CODEC_TARGET_ID)
247 endif
248 ifneq ($(ARCH_TARGET_ID),)
249   ARDRONE_CALIBRATION_TARGET_ID:=$(ARDRONE_CALIBRATION_TARGET_ID)_$(ARCH_TARGET_ID)
250 endif
251 endif
252
253 ifeq ($(USE_JPEG),yes)
254   JPEG_TARGET_ID=jpeg-6b_$(BUILD_MODE)
255 endif
256
257 ifeq ($(USE_SDK),yes)
258 ifneq ($(COM_TARGET_ID),)
259   SDK_TARGET_ID:=$(SDK_TARGET_ID)_$(COM_TARGET_ID)
260 endif
261 ifneq ($(CODEC_TARGET_ID),)
262   SDK_TARGET_ID:=$(SDK_TARGET_ID)_$(CODEC_TARGET_ID)
263 endif
264 ifneq ($(ARCH_TARGET_ID),)
265   SDK_TARGET_ID:=$(SDK_TARGET_ID)_$(ARCH_TARGET_ID)
266 endif
267 endif
268
269 ifeq ($(USE_APP),yes)
270 ifneq ($(COM_TARGET_ID),)
271   APP_TARGET_ID:=$(APP_TARGET_ID)_$(COM_TARGET_ID)
272 endif
273 ifneq ($(CODEC_TARGET_ID),)
274   APP_TARGET_ID:=$(APP_TARGET_ID)_$(CODEC_TARGET_ID)
275 endif
276 ifneq ($(ARCH_TARGET_ID),)
277   APP_TARGET_ID:=$(APP_TARGET_ID)_$(ARCH_TARGET_ID)
278 endif
279 endif
280
281 ifeq ($(USE_LIB),yes)
282 ifneq ($(COM_TARGET_ID),)
283   LIB_TARGET_ID:=$(LIB_TARGET_ID)_$(COM_TARGET_ID)
284 endif
285 ifneq ($(CODEC_TARGET_ID),)
286   LIB_TARGET_ID:=$(LIB_TARGET_ID)_$(CODEC_TARGET_ID)
287 endif
288 ifneq ($(ARCH_TARGET_ID),)
289   LIB_TARGET_ID:=$(LIB_TARGET_ID)_$(ARCH_TARGET_ID)
290 endif
291 endif
292
293 ifneq ($(CODEC_TARGET_ID),)
294   CODEC_TARGET_ID:=$(CODEC_TARGET_ID)_$(BUILD_MODE)
295 ifneq ($(ARCH_TARGET_ID),)
296   CODEC_TARGET_ID:=$(CODEC_TARGET_ID)_$(ARCH_TARGET_ID)
297 endif
298 endif
299 ifneq ($(COM_TARGET_ID),)
300   COM_TARGET_ID:=$(COM_TARGET_ID)_$(BUILD_MODE)
301 ifneq ($(ARCH_TARGET_ID),)
302   COM_TARGET_ID:=$(COM_TARGET_ID)_$(ARCH_TARGET_ID)
303 endif
304 endif
305
306 ifneq ($(BONJOUR_TARGET_ID),)
307   BONJOUR_TARGET_ID:=$(BONJOUR_TARGET_ID)_$(BUILD_MODE)_$(_COM_TARGET_ID_)
308 endif
309
310 define ADD_OS_TARGET_ID
311   ifneq ($(1),OS)
312     $(1)_TARGET_ID:=$$($(1)_TARGET_ID)_$$(OS_TARGET_ID)
313   endif
314 endef
315
316 define FINALIZE_TARGET_ID
317   ifneq ($$($(1)_TARGET_ID),)
318     $(1)_TARGET_ID:=$$($(1)_TARGET_ID)_$$(GCC_ID)
319     $(1)_TARGET_DIR:=$$(ALL_TARGETS)/$$($(1)_TARGET_ID)
320   endif
321   export $(1)_TARGET_DIR
322 endef
323
324 TARGET_IDS:=OS APP DLL LIB SDK COM CODEC JPEG BONJOUR PARROTOS_CORE PARROTOS_UTILS PARROTOS_DRIVERS PARROTOS_DEVS PARROTOS_CODEC LIBPLF ARDRONE_VISION ARDRONE_POLARIS ARDRONE_TEST_BENCHS ARDRONE_CALIBRATION ARDRONELIB ARDRONE_VICON
325
326 $(foreach id,$(filter-out OS,$(TARGET_IDS)),$(eval $(call ADD_OS_TARGET_ID,$(id))))
327 $(foreach id,$(TARGET_IDS),$(eval $(call FINALIZE_TARGET_ID,$(id))))
328
329
330 ifeq ($(USE_NDS),yes)
331     ifeq ($(NDS_CPU),ARM7)
332       TARGET_CPU_ARM=1
333       TARGET_CPU_X86=0
334     endif
335     ifeq ($(NDS_CPU),ARM9)
336       TARGET_CPU_ARM=1
337       TARGET_CPU_X86=0
338     endif
339 else
340     ifeq ($(USE_ANDROID),yes)
341       TARGET_CPU_ARM=1
342       TARGET_CPU_X86=0
343     else
344     ifeq ($(USE_ELINUX),yes)
345       TARGET_CPU_ARM=1
346       TARGET_CPU_X86=0
347     else
348       ifeq ($(USE_IPHONE),yes)
349               ifeq ($(IPHONE_PLATFORM),iphoneos)
350             TARGET_CPU_ARM=1
351             TARGET_CPU_X86=0
352               else
353             TARGET_CPU_ARM=0
354             TARGET_CPU_X86=1
355               endif
356       else 
357       ifeq ($(SBOX_UNAME_MACHINE),arm)
358             TARGET_CPU_ARM=1
359             TARGET_CPU_X86=0
360       else
361             TARGET_CPU_ARM=0
362             TARGET_CPU_X86=1
363       endif
364       endif
365     endif
366    endif
367 endif
368
369 # All that needs to be exported
370 ########################
371
372 export MAKE
373 export RM
374
375 export GENERIC_COMMAND_PREFIX
376 export GNUTOOLS_PATH
377 export GCC_ID
378
379 export BUILD_MODE
380
381 export TARGET_CPU_ARM
382 export TARGET_CPU_X86
383