--- /dev/null
+
+###########################################################################################
+#
+# Makefile called externally to build the SDK, alone or to be used in an application.
+# ----------------------------------------------------------------------------------
+# Author : aurelien.morelle@parrot.com
+# Date : 2007/05/16
+#
+# Builds libraries and examples.
+#
+# Needs some variables to be passed for it to know what to do.
+# Variables definitions tests are done in varcontrol.makefile
+#
+###########################################################################################
+
+
+ ##############################
+###########################################################################################
+# Variables definitions management
+###########################################################################################
+include varcontrol.makefile
+###########################################################################################
+ ##############################
+
+
+#
+# At that point, following global variables are defined :
+# a : always / c : conditional
+
+# (a) NO_COM
+# (a) USE_BLUEZ
+# (a) USE_SDK
+# (a) RELEASE_BUILD
+
+# (c) SDK_VERSION
+# (c) PROJECT
+# (c) FF_ARCH
+
+
+ ##############################
+###########################################################################################
+# System variable definitions
+###########################################################################################
+include sysvar.makefile
+###########################################################################################
+ ##############################
+
+
+#
+# At that point, following global variables are defined :
+# a : always / c : conditional
+
+# (a) OS_TARGET_DIR
+# (a) VLIB_TARGET_DIR
+# (c) COM_TARGET_DIR
+# (c) CODEC_TARGET_DIR
+# (c) JPEG_TARGET_DIR
+# (c) SDK_TARGET_DIR
+
+
+ ##############################
+###########################################################################################
+# Main rules
+###########################################################################################
+
+TARGETS=vlib parrotOS_core parrotOS_utils parrotOS_drivers parrotOS_devs parrotOS_codec libplf sdk lib app
+
+define ADD_RULE_TEMPLATE
+ ifeq ($$(USE_$(shell echo $(1) | tr "a-z" "A-Z")),yes)
+ TO_BUILD+=build_$(1)
+ endif
+endef
+
+# Add rule for each target
+$(foreach target,$(TARGETS),$(eval $(call ADD_RULE_TEMPLATE,$(target))))
+
+.PHONY: $(foreach target,$(TARGETS),build_$(target) clean_$(target))
+
+all $(MAKECMDGOALS): $(TO_BUILD)
+ @if [ $(MAKECMDGOALS) ] && [ $(MAKECMDGOALS) = check ] ; then $(SDK_SOURCE_DIR)/Build/cvsstatus.sh $(SDK_SOURCE_DIR)/Build END ; fi
+
+before_check:
+ @if [ $(MAKECMDGOALS) ] && [ $(MAKECMDGOALS) = check ] ; then rm -rf *.log ; fi
+
+define GENERIC_RULES_TEMPLATE
+ ifneq ($(1),dll)
+ build_$(1): before_check
+ @$(MAKE) -f $(1).makefile $(MAKECMDGOALS)
+ endif
+endef
+
+build_dll: before_check
+ @$(MAKE) -f app.makefile $(MAKECMDGOALS)
+
+
+# Build rules for each target
+$(foreach target,$(TARGETS),$(eval $(call GENERIC_RULES_TEMPLATE,$(target))))
+###########################################################################################
+ ##############################
+
+
+ ##############################
+###########################################################################################
+# Update generic flags
+###########################################################################################
+FLAGS_FILTER_OUT=-O0 -O1 -O2 -O3 -Os -fno-rtti -frtti -fvtable-gc -Winline -Woverloaded-virtual -lstdc++
+ifneq ($(USE_RTMON),yes)
+ FLAGS_FILTER_OUT+=-g
+endif
+
+DEFINE_FLAGS=USE_WIFI USE_CAMIF USE_BASEBAND NO_COM USE_SERIAL USE_VLIB USE_MINGW32 USE_DLL USE_LINUX USE_ELINUX USE_PARROTOS_CORE USE_PARROTOS_UTILS USE_PARROTOS_DRIVERS USE_PARROTOS_DEVS USE_PARROTOS_CODEC USE_LIBPLF USE_BROADCOM USE_IWLIB USE_ANDROID
+
+
+ifeq ($(USE_ELINUX),yes)
+ include elinux.makefile
+else
+ GENERIC_CFLAGS+= -Wall
+endif
+
+ifeq ($(USE_LIBPLF),yes)
+ GENERIC_CFLAGS+= -DOS_LINUX
+endif
+
+GENERIC_CFLAGS+=-Wall
+#-Werror -Wfatal-errors -Wno-unused-variable
+
+GENERIC_LDFLAGS+=-Wl,--warn-common
+
+ifeq ("$(BUILD_MODE)","PROD_MODE")
+ GENERIC_CFLAGS+=-O3 -DCOMPIL_MODE_PROD
+ GENERIC_CFLAGS:=$(filter-out -DNDEBUG,$(GENERIC_CFLAGS)) -DNDEBUG
+ GENERIC_LDFLAGS+=-O3
+ ifeq ($(USE_RTMON),yes)
+ GENERIC_CFLAGS+=-g
+ GENERIC_LDFLAGS+=-g
+ endif
+endif
+ifeq ("$(BUILD_MODE)","DEBUG_MODE")
+ GENERIC_CFLAGS+=-g -O0 -DDEBUG_MODE -DDEBUG -D_DEBUG
+ GENERIC_LDFLAGS+=-g -O0
+endif
+
+ifeq ($(USE_NDS),yes)
+ GENERIC_CFLAGS+=-D__NDS__ -DUSE_NDS
+ ifeq ($(NDS_CPU),ARM7)
+ GENERIC_CFLAGS+=-DARM7 -DSDK_ARM7 -mcpu=arm7tdmi -mtune=arm7tdmi
+ GENERIC_LDFLAGS+=-specs=ds_arm7.specs
+ endif
+ ifeq ($(NDS_CPU),ARM9)
+ GENERIC_CFLAGS+=-DARM9 -DSDK_ARM9 -mtune=arm9tdmi -march=armv5te
+ GENERIC_LDFLAGS+=-specs=ds_arm9.specs
+ endif
+ GENERIC_CFLAGS+=-fomit-frame-pointer -ffast-math
+ GENERIC_LDFLAGS+=-mno-fpu -Wl,-Map,.map
+else
+ ifeq ($(USE_ELINUX),yes)
+ GENERIC_CFLAGS+=-D_ELINUX=$(USE_ELINUX) -D__elinux__ -D__ELINUX__ -DPARROT5
+ ifeq ($(PROCESSOR),ARM_CORTEX_A8)
+ ## Check http://processors.wiki.ti.com/index.php/Cortex-A8
+ GENERIC_CFLAGS+=-march=armv7-a -mtune=cortex-a8 -mfpu=neon -ftree-vectorize -mfloat-abi=softfp
+ endif
+ ifeq ($(PROCESSOR),ARM_926EJS)
+ ## Check http://www.codesourcery.com/sgpp/lite/arm/portal/kbentry26
+ GENERIC_CFLAGS+=-mcpu=arm926ej-s
+ endif
+ else
+ ifneq ($(USE_MINGW32),yes)
+ GENERIC_CFLAGS+=-D__linux__
+
+ ifeq ($(USE_IPHONE),yes)
+ GENERIC_CFLAGS+=-D__MACOSX__ -std=gnu99
+ ifeq ($(IPHONE_PLATFORM),iphoneos)
+ GENERIC_CFLAGS+=-arch $(ARDRONE_TARGET_ARCH)
+ else
+ GENERIC_CFLAGS+=-arch i386
+ endif
+ else
+ ifeq ($(USE_LINUX), yes)
+ GENERIC_CFLAGS+=-D__LINUX__
+ else
+ ifeq ($(USE_ANDROID),yes)
+ TARGET_arm_release_CFLAGS := -O2 \
+ -fomit-frame-pointer \
+ -fstrict-aliasing \
+ -funswitch-loops \
+ -finline-limit=300
+
+ TARGET_arm_debug_CFLAGS := $(TARGET_arm_release_CFLAGS) \
+ -fno-omit-frame-pointer \
+ -fno-strict-aliasing
+
+ GENERIC_CFLAGS+= $(TARGET_arm_debug_CFLAGS) \
+ -fstack-protector \
+ -fno-short-enums \
+ -D__ARM_ARCH_5__ -D__ARM_ARCH_5T__ \
+ -D__ARM_ARCH_5E__ -D__ARM_ARCH_5TE__
+ endif
+ endif
+ endif
+ endif
+ endif
+endif
+
+GENERIC_CFLAGS+=-DTARGET_CPU_ARM=$(TARGET_CPU_ARM) -DTARGET_CPU_X86=$(TARGET_CPU_X86)
+
+ifeq ("$(USE_MEMPROT)","yes")
+ GENERIC_CFLAGS+=-fno-common -mlong-calls
+endif
+
+ifeq ("$(USE_PVSP)","yes")
+ GENERIC_CFLAGS+=-DBLUES_SUPPORT_PVSP_BLOCK
+endif
+
+ifeq ("$(USE_BONJOUR)","yes")
+ GENERIC_CFLAGS+= \
+ -DMDNS_DEBUGMSGS=0 \
+ -DMDNS_LOG_ANSWER_SUPPRESSION_TIMES=0 \
+ -DCOMPILER_LIKES_PRAGMA_MARK=0 \
+ -DHAVE_IPV6=0 \
+ -DUSES_NETLINK=0 \
+ -DTARGET_OS_LINUX=1 \
+ -DNOT_HAVE_DAEMON=1 \
+ -Dsigset_t=cyg_uint32
+endif
+
+define ADD_DEFINE_FLAG_TEMPLATE
+ ifeq ($$($(1)),yes)
+ GENERIC_CFLAGS+=-D$(1)
+ endif
+endef
+
+# Add define flags
+$(foreach flag,$(DEFINE_FLAGS),$(eval $(call ADD_DEFINE_FLAG_TEMPLATE,$(flag))))
+
+# All that needs to be exported
+########################
+export GENERIC_CFLAGS
+export GENERIC_LDFLAGS
+export GENERIC_ARFLAGS=rcs
+###########################################################################################
+ ##############################
+