2 ###########################################################################################
4 # Makefile called externally to build the SDK, alone or to be used in an application.
5 # ----------------------------------------------------------------------------------
6 # Author : aurelien.morelle@parrot.com
9 # Builds libraries and examples.
11 # Needs some variables to be passed for it to know what to do.
12 # Variables definitions tests are done in varcontrol.makefile
14 ###########################################################################################
17 ##############################
18 ###########################################################################################
19 # Variables definitions management
20 ###########################################################################################
21 include varcontrol.makefile
22 ###########################################################################################
23 ##############################
27 # At that point, following global variables are defined :
28 # a : always / c : conditional
40 ##############################
41 ###########################################################################################
42 # System variable definitions
43 ###########################################################################################
44 include sysvar.makefile
45 ###########################################################################################
46 ##############################
50 # At that point, following global variables are defined :
51 # a : always / c : conditional
56 # (c) CODEC_TARGET_DIR
61 ##############################
62 ###########################################################################################
64 ###########################################################################################
66 TARGETS=vlib parrotOS_core parrotOS_utils parrotOS_drivers parrotOS_devs parrotOS_codec libplf sdk lib app
68 define ADD_RULE_TEMPLATE
69 ifeq ($$(USE_$(shell echo $(1) | tr "a-z" "A-Z")),yes)
74 # Add rule for each target
75 $(foreach target,$(TARGETS),$(eval $(call ADD_RULE_TEMPLATE,$(target))))
77 .PHONY: $(foreach target,$(TARGETS),build_$(target) clean_$(target))
79 all $(MAKECMDGOALS): $(TO_BUILD)
80 @if [ $(MAKECMDGOALS) ] && [ $(MAKECMDGOALS) = check ] ; then $(SDK_SOURCE_DIR)/Build/cvsstatus.sh $(SDK_SOURCE_DIR)/Build END ; fi
83 @if [ $(MAKECMDGOALS) ] && [ $(MAKECMDGOALS) = check ] ; then rm -rf *.log ; fi
85 define GENERIC_RULES_TEMPLATE
87 build_$(1): before_check
88 @$(MAKE) -f $(1).makefile $(MAKECMDGOALS)
92 build_dll: before_check
93 @$(MAKE) -f app.makefile $(MAKECMDGOALS)
96 # Build rules for each target
97 $(foreach target,$(TARGETS),$(eval $(call GENERIC_RULES_TEMPLATE,$(target))))
98 ###########################################################################################
99 ##############################
102 ##############################
103 ###########################################################################################
104 # Update generic flags
105 ###########################################################################################
106 FLAGS_FILTER_OUT=-O0 -O1 -O2 -O3 -Os -fno-rtti -frtti -fvtable-gc -Winline -Woverloaded-virtual -lstdc++
107 ifneq ($(USE_RTMON),yes)
111 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
114 ifeq ($(USE_ELINUX),yes)
115 include elinux.makefile
117 GENERIC_CFLAGS+= -Wall
120 ifeq ($(USE_LIBPLF),yes)
121 GENERIC_CFLAGS+= -DOS_LINUX
124 GENERIC_CFLAGS+=-Wall
125 #-Werror -Wfatal-errors -Wno-unused-variable
127 GENERIC_LDFLAGS+=-Wl,--warn-common
129 ifeq ("$(BUILD_MODE)","PROD_MODE")
130 GENERIC_CFLAGS+=-O3 -DCOMPIL_MODE_PROD
131 GENERIC_CFLAGS:=$(filter-out -DNDEBUG,$(GENERIC_CFLAGS)) -DNDEBUG
133 ifeq ($(USE_RTMON),yes)
138 ifeq ("$(BUILD_MODE)","DEBUG_MODE")
139 GENERIC_CFLAGS+=-g -O0 -DDEBUG_MODE -DDEBUG -D_DEBUG
140 GENERIC_LDFLAGS+=-g -O0
143 ifeq ($(USE_NDS),yes)
144 GENERIC_CFLAGS+=-D__NDS__ -DUSE_NDS
145 ifeq ($(NDS_CPU),ARM7)
146 GENERIC_CFLAGS+=-DARM7 -DSDK_ARM7 -mcpu=arm7tdmi -mtune=arm7tdmi
147 GENERIC_LDFLAGS+=-specs=ds_arm7.specs
149 ifeq ($(NDS_CPU),ARM9)
150 GENERIC_CFLAGS+=-DARM9 -DSDK_ARM9 -mtune=arm9tdmi -march=armv5te
151 GENERIC_LDFLAGS+=-specs=ds_arm9.specs
153 GENERIC_CFLAGS+=-fomit-frame-pointer -ffast-math
154 GENERIC_LDFLAGS+=-mno-fpu -Wl,-Map,.map
156 ifeq ($(USE_ELINUX),yes)
157 GENERIC_CFLAGS+=-D_ELINUX=$(USE_ELINUX) -D__elinux__ -D__ELINUX__ -DPARROT5
158 ifeq ($(PROCESSOR),ARM_CORTEX_A8)
159 ## Check http://processors.wiki.ti.com/index.php/Cortex-A8
160 GENERIC_CFLAGS+=-march=armv7-a -mtune=cortex-a8 -mfpu=neon -ftree-vectorize -mfloat-abi=softfp
162 ifeq ($(PROCESSOR),ARM_926EJS)
163 ## Check http://www.codesourcery.com/sgpp/lite/arm/portal/kbentry26
164 GENERIC_CFLAGS+=-mcpu=arm926ej-s
167 ifneq ($(USE_MINGW32),yes)
168 GENERIC_CFLAGS+=-D__linux__
170 ifeq ($(USE_IPHONE),yes)
171 GENERIC_CFLAGS+=-D__MACOSX__ -std=gnu99
172 ifeq ($(IPHONE_PLATFORM),iphoneos)
173 GENERIC_CFLAGS+=-arch $(ARDRONE_TARGET_ARCH)
175 GENERIC_CFLAGS+=-arch i386
178 ifeq ($(USE_LINUX), yes)
179 GENERIC_CFLAGS+=-D__LINUX__
181 ifeq ($(USE_ANDROID),yes)
182 TARGET_arm_release_CFLAGS := -O2 \
183 -fomit-frame-pointer \
188 TARGET_arm_debug_CFLAGS := $(TARGET_arm_release_CFLAGS) \
189 -fno-omit-frame-pointer \
192 GENERIC_CFLAGS+= $(TARGET_arm_debug_CFLAGS) \
195 -D__ARM_ARCH_5__ -D__ARM_ARCH_5T__ \
196 -D__ARM_ARCH_5E__ -D__ARM_ARCH_5TE__
204 GENERIC_CFLAGS+=-DTARGET_CPU_ARM=$(TARGET_CPU_ARM) -DTARGET_CPU_X86=$(TARGET_CPU_X86)
206 ifeq ("$(USE_MEMPROT)","yes")
207 GENERIC_CFLAGS+=-fno-common -mlong-calls
210 ifeq ("$(USE_PVSP)","yes")
211 GENERIC_CFLAGS+=-DBLUES_SUPPORT_PVSP_BLOCK
214 ifeq ("$(USE_BONJOUR)","yes")
217 -DMDNS_LOG_ANSWER_SUPPRESSION_TIMES=0 \
218 -DCOMPILER_LIKES_PRAGMA_MARK=0 \
221 -DTARGET_OS_LINUX=1 \
222 -DNOT_HAVE_DAEMON=1 \
223 -Dsigset_t=cyg_uint32
226 define ADD_DEFINE_FLAG_TEMPLATE
228 GENERIC_CFLAGS+=-D$(1)
233 $(foreach flag,$(DEFINE_FLAGS),$(eval $(call ADD_DEFINE_FLAG_TEMPLATE,$(flag))))
235 # All that needs to be exported
236 ########################
237 export GENERIC_CFLAGS
238 export GENERIC_LDFLAGS
239 export GENERIC_ARFLAGS=rcs
240 ###########################################################################################
241 ##############################