2 ###########################################################################################
4 # Creates needed build system variables
5 # ----------------------------------------------------------------------------------
6 # Author : aurelien.morelle@parrot.com
9 # Included from global Makefile
11 ###########################################################################################
14 export ALL_TARGETS=../../Soft/Build/targets_versions
17 ifeq ($(MAKECMDGOALS),check)
19 export MAKEFLAGS=--no-print-directory
22 ifeq ($(QUIET_BUILD),yes)
23 export MAKEFLAGS=-s --no-print-directory
24 GENERIC_COMMAND_PREFIX:=@$(GENERIC_COMMAND_PREFIX)
31 ifeq "$(RELEASE_BUILD)" "yes"
34 ifeq "$(RELEASE_BUILD)" "no"
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 ])
48 ifeq ($(wildcard $(GENERIC_COMMAND_PREFIX)gcc),)
49 $(error ERROR Bad GENERIC_COMMAND_PREFIX [ $(GENERIC_COMMAND_PREFIX)gcc does not exist ])
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))
59 ifeq ($(USE_ELINUX),yes)
61 TOOLCHAIN_PATH=/opt/$(TOOLCHAIN_VERSION)/bin
62 ifeq ($(TOOLCHAIN_VERSION),arm-eglibc)
63 GENERIC_COMMAND_PREFIX=$(TOOLCHAIN_PATH)/arm-none-linux-gnueabi-
65 ifeq ($(TOOLCHAIN_VERSION),arm-2010.09)
66 GENERIC_COMMAND_PREFIX=$(TOOLCHAIN_PATH)/arm-none-linux-gnueabi-
68 ifeq ($(TOOLCHAIN_VERSION),arm-uclibc)
69 GENERIC_COMMAND_PREFIX=$(TOOLCHAIN_PATH)/arm-linux-uclibcgnueabi-
71 $(error ERROR Unsupported toolchain.)
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)/
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-
90 GENERIC_COMMAND_PREFIX=
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/")
100 ifeq ($(USE_MINGW32),no)
101 ifeq ($(USE_ELINUX), no)
102 ifneq ($(GCC_VERSION),4.3.3)
103 # $(error GCC version not supported)
109 GCC_ID:=$(subst $(GNUTOOLS_PATH)/,,$(GENERIC_COMMAND_PREFIX))gcc_$(GCC_VERSION)
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)
120 ifeq ($(USE_BONJOUR),yes)
121 BONJOUR_TARGET_ID:=bonjour_$(BONJOUR_VERSION)
122 COM_TARGET_ID:=$(COM_TARGET_ID)_$(BONJOUR_TARGET_ID)
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)
133 ifeq ($(USE_ARDRONELIB),yes)
134 ARDRONELIB_TARGET_ID=ardrone_lib_$(BUILD_MODE)
137 ifeq ($(USE_ARDRONE_VISION),yes)
138 ARDRONE_VISION_TARGET_ID=vision_lib_$(BUILD_MODE)
141 ifeq ($(USE_ARDRONE_POLARIS),yes)
142 ARDRONE_POLARIS_TARGET_ID=polaris_lib_$(BUILD_MODE)
145 ifeq ($(USE_ARDRONE_VICON),yes)
146 ARDRONE_VICON_TARGET_ID=vicon_lib_$(BUILD_MODE)
149 ifeq ($(USE_ARDRONE_TEST_BENCHS),yes)
150 ARDRONE_TEST_BENCHS_TARGET_ID=test_benchs_lib_$(BUILD_MODE)
153 ifeq ($(USE_ARDRONE_CALIBRATION),yes)
154 ARDRONE_CALIBRATION_TARGET_ID=calibration_lib_$(BUILD_MODE)
157 ifeq ($(USE_SDK),yes)
158 SDK_TARGET_ID=sdk_$(BUILD_MODE)
160 ifeq ($(USE_APP),yes)
161 APP_TARGET_ID:=$(APP_ID)_$(BUILD_MODE)
163 ifeq ($(USE_DLL),yes)
164 DLL_TARGET_ID:=$(DLL_ID)_$(BUILD_MODE)
166 ifeq ($(USE_LIB),yes)
167 LIB_TARGET_ID:=$(LIB_ID)_$(BUILD_MODE)
170 ifeq ($(USE_FFMPEG),yes)
171 CODEC_TARGET_ID=ffmpeg_$(FF_ARCH)
173 ifeq ($(USE_MJPEG),yes)
174 CODEC_TARGET_ID=mjpeg
176 ifeq ($(USE_VLIB),yes)
181 ifeq ($(USE_ARDRONELIB),yes)
182 ifneq ($(COM_TARGET_ID),)
183 ARDRONELIB_TARGET_ID:=$(ARDRONELIB_TARGET_ID)_$(COM_TARGET_ID)
185 ifneq ($(CODEC_TARGET_ID),)
186 ARDRONELIB_TARGET_ID:=$(ARDRONELIB_TARGET_ID)_$(CODEC_TARGET_ID)
188 ifneq ($(ARCH_TARGET_ID),)
189 ARDRONELIB_TARGET_ID:=$(ARDRONELIB_TARGET_ID)_$(ARCH_TARGET_ID)
193 ifeq ($(USE_ARDRONE_VISION),yes)
194 ifneq ($(COM_TARGET_ID),)
195 ARDRONE_VISION_TARGET_ID:=$(ARDRONE_VISION_TARGET_ID)_$(COM_TARGET_ID)
197 ifneq ($(CODEC_TARGET_ID),)
198 ARDRONE_VISION_TARGET_ID:=$(ARDRONE_VISION_TARGET_ID)_$(CODEC_TARGET_ID)
200 ifneq ($(ARCH_TARGET_ID),)
201 ARDRONE_VISION_TARGET_ID:=$(ARDRONE_VISION_TARGET_ID)_$(ARCH_TARGET_ID)
205 ifeq ($(USE_ARDRONE_POLARIS),yes)
206 ifneq ($(COM_TARGET_ID),)
207 ARDRONE_POLARIS_TARGET_ID:=$(ARDRONE_POLARIS_TARGET_ID)_$(COM_TARGET_ID)
209 ifneq ($(CODEC_TARGET_ID),)
210 ARDRONE_POLARIS_TARGET_ID:=$(ARDRONE_POLARIS_TARGET_ID)_$(CODEC_TARGET_ID)
212 ifneq ($(ARCH_TARGET_ID),)
213 ARDRONE_POLARIS_TARGET_ID:=$(ARDRONE_POLARIS_TARGET_ID)_$(ARCH_TARGET_ID)
217 ifeq ($(USE_ARDRONE_VICON),yes)
218 ifneq ($(COM_TARGET_ID),)
219 ARDRONE_VICON_TARGET_ID:=$(ARDRONE_VICON_TARGET_ID)_$(COM_TARGET_ID)
221 ifneq ($(CODEC_TARGET_ID),)
222 ARDRONE_VICON_TARGET_ID:=$(ARDRONE_VICON_TARGET_ID)_$(CODEC_TARGET_ID)
224 ifneq ($(ARCH_TARGET_ID),)
225 ARDRONE_VICON_TARGET_ID:=$(ARDRONE_VICON_TARGET_ID)_$(ARCH_TARGET_ID)
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)
233 ifneq ($(CODEC_TARGET_ID),)
234 ARDRONE_TEST_BENCHS_TARGET_ID:=$(ARDRONE_TEST_BENCHS_TARGET_ID)_$(CODEC_TARGET_ID)
236 ifneq ($(ARCH_TARGET_ID),)
237 ARDRONE_TEST_BENCHS_TARGET_ID:=$(ARDRONE_TEST_BENCHS_TARGET_ID)_$(ARCH_TARGET_ID)
241 ifeq ($(USE_ARDRONE_CALIBRATION),yes)
242 ifneq ($(COM_TARGET_ID),)
243 ARDRONE_CALIBRATION_TARGET_ID:=$(ARDRONE_CALIBRATION_TARGET_ID)_$(COM_TARGET_ID)
245 ifneq ($(CODEC_TARGET_ID),)
246 ARDRONE_CALIBRATION_TARGET_ID:=$(ARDRONE_CALIBRATION_TARGET_ID)_$(CODEC_TARGET_ID)
248 ifneq ($(ARCH_TARGET_ID),)
249 ARDRONE_CALIBRATION_TARGET_ID:=$(ARDRONE_CALIBRATION_TARGET_ID)_$(ARCH_TARGET_ID)
253 ifeq ($(USE_JPEG),yes)
254 JPEG_TARGET_ID=jpeg-6b_$(BUILD_MODE)
257 ifeq ($(USE_SDK),yes)
258 ifneq ($(COM_TARGET_ID),)
259 SDK_TARGET_ID:=$(SDK_TARGET_ID)_$(COM_TARGET_ID)
261 ifneq ($(CODEC_TARGET_ID),)
262 SDK_TARGET_ID:=$(SDK_TARGET_ID)_$(CODEC_TARGET_ID)
264 ifneq ($(ARCH_TARGET_ID),)
265 SDK_TARGET_ID:=$(SDK_TARGET_ID)_$(ARCH_TARGET_ID)
269 ifeq ($(USE_APP),yes)
270 ifneq ($(COM_TARGET_ID),)
271 APP_TARGET_ID:=$(APP_TARGET_ID)_$(COM_TARGET_ID)
273 ifneq ($(CODEC_TARGET_ID),)
274 APP_TARGET_ID:=$(APP_TARGET_ID)_$(CODEC_TARGET_ID)
276 ifneq ($(ARCH_TARGET_ID),)
277 APP_TARGET_ID:=$(APP_TARGET_ID)_$(ARCH_TARGET_ID)
281 ifeq ($(USE_LIB),yes)
282 ifneq ($(COM_TARGET_ID),)
283 LIB_TARGET_ID:=$(LIB_TARGET_ID)_$(COM_TARGET_ID)
285 ifneq ($(CODEC_TARGET_ID),)
286 LIB_TARGET_ID:=$(LIB_TARGET_ID)_$(CODEC_TARGET_ID)
288 ifneq ($(ARCH_TARGET_ID),)
289 LIB_TARGET_ID:=$(LIB_TARGET_ID)_$(ARCH_TARGET_ID)
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)
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)
306 ifneq ($(BONJOUR_TARGET_ID),)
307 BONJOUR_TARGET_ID:=$(BONJOUR_TARGET_ID)_$(BUILD_MODE)_$(_COM_TARGET_ID_)
310 define ADD_OS_TARGET_ID
312 $(1)_TARGET_ID:=$$($(1)_TARGET_ID)_$$(OS_TARGET_ID)
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)
321 export $(1)_TARGET_DIR
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
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))))
330 ifeq ($(USE_NDS),yes)
331 ifeq ($(NDS_CPU),ARM7)
335 ifeq ($(NDS_CPU),ARM9)
340 ifeq ($(USE_ANDROID),yes)
344 ifeq ($(USE_ELINUX),yes)
348 ifeq ($(USE_IPHONE),yes)
349 ifeq ($(IPHONE_PLATFORM),iphoneos)
357 ifeq ($(SBOX_UNAME_MACHINE),arm)
369 # All that needs to be exported
370 ########################
375 export GENERIC_COMMAND_PREFIX
381 export TARGET_CPU_ARM
382 export TARGET_CPU_X86