xref: /utopia/UTPA2-700.0.x/projects/build/Makefile (revision 53ee8cc121a030b8d368113ac3e966b4705770ef)
1
2################################################################################
3#
4# Copyright (c) 2008-2009 MStar Semiconductor, Inc.
5# All rights reserved.
6#
7# Unless otherwise stipulated in writing, any and all information contained
8# herein regardless in any format shall remain the sole proprietary of
9# MStar Semiconductor Inc. and be kept in strict confidence
10# ("MStar Confidential Information") by the recipient.
11# Any unauthorized act including without limitation unauthorized disclosure,
12# copying, use, reproduction, sale, distribution, modification, disassembling,
13# reverse engineering and compiling of the contents of MStar Confidential
14# Information is unlawful and strictly prohibited. MStar hereby reserves the
15# rights to any and all damages, losses, costs and expenses resulting therefrom.
16#
17#
18# Makefile used for building application.
19#
20#
21################################################################################
22
23export
24unexport VPATH
25unexport SRCDIR_CHIP SRCDIR_LIB SRCDIR_SYS SRCDIR_FS
26unexport OBJ_C_CHIP0 OBJ_C_ASM0 OBJ_C_LIB0 OBJ_C_SYS0
27unexport LIB_INC
28
29
30# **********************************************
31# Environment
32# **********************************************
33PROJ        = $(PWD)
34ROOT        = $(PROJ)/../..
35ROOTLIB     = $(ROOT)/mxlib
36DDIAPI      = $(ROOTLIB)/api
37DDIDRV      = $(ROOTLIB)/drv
38DDIHAL      = $(ROOTLIB)/hal
39CONFIG      = $(PROJ)/.config
40AUTOCONFIG  = $(PROJ)/include/generated/
41PUBINC      = $(ROOTLIB)/include
42MODULESPATH = $(ROOT)/modules
43
44export DDIAPI DDIDRV PROJ PUBINC
45
46# Import configure file
47# Required:
48#	$(ROOT), $(ROOTLIB)
49# **********************************************
50#-include config
51-include $(CONFIG)
52# **********************************************
53
54
55# **********************************************
56# Parse env arguments from $(CONFIG)
57# **********************************************
58TOOLCHAIN = $(subst ",,$(CONFIG_TOOLCHAIN))
59TOOLCHAIN_VER = $(subst ",,$(CONFIG_TOOLCHAIN_VER))
60CHIP = $(subst ",,$(CONFIG_CHIP))
61CHIP_NAME = $(shell echo $(CHIP) | tr a-z A-Z)
62OS_TYPE = $(subst ",,$(CONFIG_OS_TYPE))
63LINK_TYPE = $(subst ",,$(CONFIG_LINK_TYPE))
64FW_TYPE = $(subst ",,$(CONFIG_FW_TYPE))
65ENDIAN = $(subst ",,$(CONFIG_ENDIAN))
66PROCESSOR = $(subst ",,$(CONFIG_PROCESSOR))
67MCU_TYPE = $(subst ",,$(CONFIG_MCU_TYPE))
68COPRO_TYPE = $(subst ",,$(CONFIG_COPRO_TYPE))
69XC_SEAMLESS_SCALING = $(subst ",,$(CONFIG_XC_SEAMLESS_SCALING))
70XC_4K2K_PATCH_ENABLE = $(subst ",,$(CONFIG_XC_4K2K_PATCH_ENABLE))
71MSTAR_DVFS_ENABLE = $(subst ",,$(CONFIG_MSTAR_DVFS_ENABLE))
72BLT_TYPE = $(subst ",,$(CONFIG_BLT_TYPE))
73FPU = $(subst ",,$(CONFIG_FPU))
74EXT_PLATFORM_FLAG = $(subst ",,$(CONFIG_EXT_PLATFORM_FLAG))
75MAKE_TYPE = $(subst ",,$(CONFIG_MAKE_TYPE))
76DEBUG_LEVEL = $(subst ",,$(CONFIG_DEBUG_LEVEL))
77AUDIO_UTOPIA_20_ENABLE = $(subst ",,$(CONFIG_AUDIO_UTOPIA_20_ENABLE))
78AUDIO_UTOPIA2K_EN = $(subst ",,$(CONFIG_DRV_AUDIO))
79KERN_VER = $(subst ",,$(CONFIG_KERN_VER))
80FPGA_ENV = $(subst ",,$(CONFIG_FPGA))
81ASSERT_TYPE = $(subst ",,$(CONFIG_ASSERT_TYPE))
82CIPHER_UTOPIA_20_ENABLE = $(subst ",,$(CONFIG_CIPHER_UTOPIA_20_ENABLE))
83CIPHER_NO_PRINTF_ENABLE = $(subst ",,$(CONFIG_CIPHER_NO_PRINTF_ENABLE))
84CA_UTOPIA_20_ENABLE = $(subst ",,$(CONFIG_CA2_UTOPIA_20_ENABLE))
85CA_NO_PRINTF_ENABLE = $(subst ",,$(CONFIG_CA2_NO_PRINTF_ENABLE))
86STRUCT_PACK = $(subst ",,$(CONFIG_UTOPIA_DRIVER_STRUCT_PACKED))
87# ******************************************************************************************************
88# Customization Flag
89# ******************************************************************************************************
90ROLLS_ROYCE = $(subst ",,$(CONFIG_ROLLS_ROYCE))
91
92# ******************************************************************************************************
93# Parse DMX & DSCMB env arguments from $(CONFIG)
94# ******************************************************************************************************
95DMX_UTOPIA_20_ENABLE = $(subst ",,$(CONFIG_DMX_UTOPIA_20_ENABLE))
96DMX_UTOPIA_2K_EN = $(subst ",,$(CONFIG_API_DMX))
97STC64_ENABLE = $(subst ",,$(CONFIG_STC64_ENABLE))
98VQ_ENABLE = $(subst ",,$(CONFIG_VQ_ENABLE))
99FILE_VQ_ENABLE = $(subst ",,$(CONFIG_FIVQ_ENABLE))
100FQ_ENABLE = $(subst ",,$(CONFIG_FQ_ENABLE))
101EXT_FILTER_ENABLE = $(subst ",,$(CONFIG_EXT_FILTER_ENABLE))
102TS2_ENABLE = $(subst ",,$(CONFIG_TSP2_ENABLE))
103TS3_ENABLE = $(subst ",,$(CONFIG_TSP3_ENABLE))
104MMFILEIN_ENABLE = $(subst ",,$(CONFIG_MMFILEIN_ENABLE))
105MMFI3D_ENABLE = $(subst ",,$(CONFIG_MMFI3D_ENABLE))
106MMFI2_EXTRA_AUFIFO_ENABLE = $(subst ",,$(CONFIG_MMFI2_EXTRA_AUFIFO_ENABLE))
107MOBF_ENABLE = $(subst ",,$(CONFIG_MOBF_ENABLE))
108MMFIMOBF_ENABLE = $(subst ",,$(CONFIG_MMFIMOBF_ENABLE))
109USE_HWPCR_ENABLE = $(subst ",,$(CONFIG_USE_HWPCR_ENABLE))
110DMX_DEBUG_TABLE_ENABLE = $(subst ",,$(CONFIG_DMX_DEBUG_TABLE_ENABLE))
111EXTRA_PVR1_FLT_ENABLE = $(subst ",,$(CONFIG_EXTRA_PVR1_FLT_ENABLE))
112TS2_LIVE_ENABLE = $(subst ",,$(CONFIG_TS2_LIVE_ENABLE))
113TSIO_SUPPORT = $(subst ",,$(CONFIG_TSIO_SUPPORT))
114TSO_SUPPORT = $(subst ",,$(CONFIG_TSO_SUPPORT))
115RASP_SUPPORT = $(subst ",,$(CONFIG_RASP_SUPPORT))
116#RASP_SUPPORT = $(subst ",,$(CONFIG_DRV_RASP))
117TSO_20_SUPPORT = $(subst ",,$(CONFIG_TSO_VER_20_SUPPORT))
118TSO_BOXSERIES_SUPPORT = $(subst ",,$(CONFIG_TSO_HW_BOX_SERIES))
119TSP3_DULFLT_ENABLE = $(subst ",,$(CONFIG_TSP3_DULFLT_ENABLE))
120MERGE_STR_SUPPORT = $(subst ",,$(CONFIG_MERGE_STREAM_SUPPORT))
121SECURE_PVR_SUPPORT = $(subst ",,$(CONFIG_SECURE_PVR_SUPPORT))
122TSO_PVR_SUPPORT = $(subst ",,$(CONFIG_TSO_PVR_SUPPORT))
123PVR_IFRAMELUT_SUPPORT = $(subst ",,$(CONFIG_PVR_IFRAMELUT_SUPPORT))
124GENERAL_DSCMBTYPE_SUPPORT = $(subst ",,$(CONFIG_MERGE_STREAM_SUPPORT))
125DSCMB_CSA_ENABLE = $(subst ",,$(CONFIG_GENERAL_DSCMB_SUPPORT))
126DSCMB_MULTI2_ENABLE = $(subst ",,$(CONFIG_DSCMB_MULTI2_ENABLE))
127PCMCIA_MODULE_TYPE = $(subst ",,$(CONFIG_DRV_PCMCIA))
128DONT_USE_CMA = $(subst ",,$(CONFIG_DONT_USE_CMA))
129OTV_SUPPORT = $(subst ",,$(CONFIG_OTV_SUPPORT))
130DMX_BOX_MULTIPROCESS_SUPPORT = $(subst ",,$(CONFIG_DMX_BOX_MULTIPROCESS_SUPPORT))
131ifeq ($(CONFIG_DRV_DSCMB2), y)
132DSCMB_UTOPIA_20_ENABLE = $(subst ",,$(CONFIG_DSCMB2_UTOPIA_20_ENABLE))
133DSCMB_NSK_ENABLE = $(subst ",,$(CONFIG_DSCMB2_NSK_ENABLE))
134DSCMB_MULTI2_ENABLE = $(subst ",,$(CONFIG_DSCMB2_MULTI2_ENABLE))
135DSCMB_NO_PRINTF_ENABLE = $(subst ",,$(CONFIG_DSCMB2_NO_PRINTF_ENABLE))
136DSCMB_HW_SEM_ENABLE = $(subst ",,$(CONFIG_DSCMB2_HW_SEM_ENABLE))
137DSCMB_SECURE_MODE_ENABLE = $(subst ",,$(CONFIG_DSCMB2_SECURE_MODE_ENABLE))
138endif
139# ******************************************************************************************************
140
141ifeq ($(CONFIG_HARD),y)
142    FPU_ENABLE = 1
143else
144    FPU_ENABLE = 0
145endif
146
147# Image name
148IMAGENAME = $(CHIP)_$(OS_TYPE)
149
150# Lint Command, option file
151LINT_OPT = opt_linux.lnt
152
153ifeq ($(shell uname -o),Cygwin)
154    LINT_CMD    = $(CURDIR)/../../tools/lint/lint-nt.exe -b -v -zero -fff
155    LINT_CMD    += -i$(shell cygpath -m $(CURDIR)/../../tools/lint/lnt) $(LINT_OPT)
156else
157    LINT_CMD    = $(CURDIR)/../../tools/lint/flint -b -v -zero -fff
158    LINT_CMD    += -i$(CURDIR)/../../tools/lint/lnt $(LINT_OPT)
159endif
160
161
162# **********************************************
163# Build Option
164# **********************************************
165
166
167CFG_CC_DEFS = -D'CHIP_$(CHIP_NAME)' -D'MS_C_STDLIB'
168CFG_CC_OPTS =
169CFG_LD_OPTS =
170CFG_CC_EXTRA_DEFS =
171CFG_CC_EXTRA_OPTS =
172CPU_NAME =
173
174
175ifeq ($(CONFIG_CHIP_INT_SPI_MODE),y)
176    CFG_CC_DEFS += -D'CHIP_INT_SPI_MODE'
177endif
178
179
180ifeq ($(ASSERT_TYPE), block)
181CFG_CC_DEFS += -D'BLOCK_ASSERT'
182endif
183
184ifeq ($(MCU_TYPE),aeon)
185    CFG_CC_DEFS += -D'MCU_AEON'
186    ifeq ($(CONFIG_R2),y)
187        CPU_NAME = r2
188        COPRO_TYPE = R2
189    else
190        CPU_NAME = aeon
191        COPRO_TYPE = AEON
192    endif
193endif
194ifeq ($(MCU_TYPE),mips4ke)
195    CFG_CC_DEFS += -D'MCU_MIPS_4KE'
196    CPU_NAME = mips4ke
197endif
198ifeq ($(MCU_TYPE),mips34k)
199    CFG_CC_DEFS += -D'MCU_MIPS_34K'
200    CPU_NAME = mips34k
201endif
202ifeq ($(MCU_TYPE),mips74k)
203    CFG_CC_DEFS += -D'MCU_MIPS_74K'
204    CPU_NAME = mips74k
205endif
206ifeq ($(MCU_TYPE),arm_ca12)
207    CFG_CC_DEFS += -D'MCU_ARM_CA12'
208    CPU_NAME = armca12
209endif
210ifeq ($(MCU_TYPE),arm9)
211    CFG_CC_DEFS += -D'MCU_ARM_9'
212    CPU_NAME = armca9
213endif
214
215ifeq ($(MCU_TYPE),arm_ca7)
216   CFG_CC_DEFS += -D'MCU_ARM_CA7'
217    CPU_NAME = armca7
218endif
219
220ifeq ($(MCU_TYPE),arm_ca53)
221    CFG_CC_DEFS += -D'MCU_ARM_CA53'
222    CPU_NAME = armca53
223endif
224
225ifeq ($(CHIP),edison)
226CFG_CC_DEFS += -D'edison'
227endif
228
229ifeq ($(CHIP),nike)
230CFG_CC_DEFS += -D'nike'
231endif
232
233ifeq ($(CHIP),madison)
234CFG_CC_DEFS += -D'madison'
235endif
236
237ifeq ($(CHIP),clippers)
238CFG_CC_DEFS += -D'clippers'
239endif
240
241ifeq ($(CHIP),miami)
242CFG_CC_DEFS += -D'miami'
243endif
244
245ifeq ($(OS_TYPE),ecos)
246    CFG_CC_EXTRA_DEFS += -D'MSOS_TYPE_ECOS'
247	CFG_CC_EXTRA_DEFS += -D'UTPA2'
248endif
249ifeq ($(OS_TYPE),ucos)
250    CFG_CC_EXTRA_DEFS += -D'MSOS_TYPE_UCOS'
251	CFG_CC_EXTRA_DEFS += -D'UTPA2'
252endif
253ifeq ($(OS_TYPE),linux)
254    CFG_CC_EXTRA_DEFS += -D'MSOS_TYPE_LINUX'
255	CFG_CC_EXTRA_DEFS += -D'UTPA2'
256endif
257ifeq ($(OS_TYPE),nos)
258    CFG_CC_EXTRA_DEFS += -D'MSOS_TYPE_NOS'
259	CFG_CC_EXTRA_DEFS += -D'UTPA2'
260
261    ifeq ($(EXT_PLATFORM_FLAG),mboot)
262        CFG_CC_EXTRA_DEFS += -D'MBOOT'
263    endif
264
265endif
266ifeq ($(OS_TYPE),nuttx)
267    CFG_CC_EXTRA_DEFS += -D'MSOS_TYPE_NUTTX'
268endif
269
270ifeq ($(OS_TYPE),optee)
271    CFG_CC_EXTRA_DEFS += -D'MSOS_TYPE_OPTEE'
272endif
273
274ifeq ($(FW_TYPE),external)
275    CFG_CC_DEFS += -D'FW_EXTERNAL_BIN'
276endif
277ifeq ($(FW_TYPE),embedded)
278    CFG_CC_DEFS += -D'FW_EMBEDDED_ASC'
279endif
280
281ifeq ($(CONFIG_UTOPIA_20),y)
282    CFG_CC_DEFS += -D'UTOPIA_20'
283endif
284
285ifeq ($(AUDIO_UTOPIA2K_EN),m)
286CFG_CC_DEFS += -D'AUDIO_UTOPIA2K'
287endif
288
289ifeq ($(FPGA_ENV),y)
290    CFG_CC_DEFS += -D'FPGA_ENV'
291endif
292
293ifeq ($(CONFIG_DLMALLOC),y)
294    CFG_CC_DEFS += -D'ENABLE_DLMALLOC'
295endif
296
297ifeq ($(CONFIG_KERNEL_DLMALLOC),y)
298    CFG_CC_DEFS += -D'ENABLE_KERNEL_DLMALLOC'
299	endif
300
301ifeq ($(CONFIG_BIFROST_32BIT_MODE),y)
302    CFG_CC_DEFS += -D'BIFROST_32BIT_MODE'
303endif
304
305ifeq ($(CONFIG_MLOG_ARM_472), y)
306    MLOG_LIB_PATH = $(ROOT)/tools/MLog/arm-gnueabi/4.7.2/hardfloat/static/libMLog.a
307endif
308ifeq ($(CONFIG_MLOG_ARM_483), y)
309    MLOG_LIB_PATH = $(ROOT)/tools/MLog/arm-gnueabi/4.8.3/hardfloat/static/libMLog.a
310endif
311ifeq ($(CONFIG_MLOG_ARM_49X), y)
312    MLOG_LIB_PATH = $(ROOT)/tools/MLog/armv7a-gnueabi/4.9.x-google/hardfloat/static/libMLog.a
313endif
314
315# **********************************************
316# DMX & DSCMB Build Option
317# **********************************************
318
319TSP4_CHIPS = kaiser keltic keres kano k6 k6lite k7u curry
320
321CFG_CC_DEFS += -D'DMX_DEBUG=0'
322
323ifeq ($(DMX_UTOPIA_20_ENABLE),y)
324CFG_CC_DEFS += -D'DMX_UTOPIA_20'
325CFG_CC_DEFS += -D'TSP_UTOPIA_20'
326CFG_CC_DEFS += -D'MMFI_UTOPIA_20'
327CFG_CC_DEFS += -D'RASP_UTOPIA_20'
328CFG_CC_DEFS += -D'TSO_UTOPIA_20'
329CFG_CC_DEFS += -D'OTV_UTOPIA_20'
330endif
331
332ifeq ($(DMX_UTOPIA_2K_EN),m)
333CFG_CC_DEFS += -D'DMX_UTOPIA_2K'
334endif
335
336ifeq ($(CONFIG_API_VDEC_EX),m)
337CFG_CC_DEFS += -D'VDEC_UTOPIA_2K'
338endif
339
340ifeq ($(CONFIG_API_VDEC_V3),m)
341CFG_CC_DEFS += -D'VDEC_UTOPIA_2K'
342endif
343
344ifeq ($(CONFIG_API_NJPEG_EX),m)
345CFG_CC_DEFS += -D'NJPEG_UTOPIA_2K'
346endif
347
348ifeq ($(CONFIG_API_GPD),m)
349CFG_CC_DEFS += -D'GPD_UTOPIA_2K'
350endif
351
352ifeq ($(STC64_ENABLE),y)
353CFG_CC_DEFS += -D'STC64_SUPPORT'
354endif
355ifeq ($(VQ_ENABLE),y)
356CFG_CC_DEFS += -D'VQ_ENABLE'
357endif
358ifeq ($(FILE_VQ_ENABLE),y)
359CFG_CC_DEFS += -D'FIVQ_ENABLE'
360endif
361ifeq ($(FQ_ENABLE),y)
362CFG_CC_DEFS += -D'FQ_ENABLE'
363endif
364ifeq ($(EXT_FILTER_ENABLE),y)
365CFG_CC_DEFS += -D'EXT_FILTER_SUPPORT'
366endif
367ifeq ($(TS2_ENABLE),y)
368CFG_CC_DEFS += -D'TS2_IF_SUPPORT'
369endif
370ifeq ($(TS3_ENABLE),y)
371CFG_CC_DEFS += -D'TS3_IF_SUPPORT'
372endif
373ifeq ($(MMFILEIN_ENABLE),y)
374CFG_CC_DEFS += -D'MMFILEIN'
375endif
376ifeq ($(MMFI3D_ENABLE),y)
377CFG_CC_DEFS += -D'MMFI_VD3D'
378endif
379ifeq ($(MMFI2_EXTRA_AUFIFO_ENABLE),y)
380CFG_CC_DEFS += -D'MMFI2_EXTRA_AUFIFO'
381endif
382ifeq ($(MOBF_ENABLE),y)
383CFG_CC_DEFS += -D'MOBF_ENABLE'
384endif
385ifeq ($(MMFIMOBF_ENABLE),y)
386CFG_CC_DEFS += -D'MM_MOBF'
387endif
388ifeq ($(DMX_DEBUG_TABLE_ENABLE),y)
389CFG_CC_DEFS += -D'DEBUG_TABLE_SUPPORT'
390endif
391ifeq ($(EXTRA_PVR1_FLT_ENABLE),y)
392CFG_CC_DEFS += -D'EXT_PVR1_FLT'
393endif
394
395ifeq ($(TS2_LIVE_ENABLE),y)
396CFG_CC_DEFS += -D'TS2_LIVE_SUPPORT'
397endif
398
399ifeq ($(TSIO_SUPPORT),y)
400CFG_CC_DEFS += -D'TSIO_ENABLE'
401endif
402
403ifeq ($(TSO_SUPPORT),y)
404CFG_CC_DEFS += -D'TSO_ENABLE'
405endif
406
407ifeq ($(RASP_SUPPORT),y)
408CFG_CC_DEFS += -D'RASP_ENABLE'
409endif
410
411ifeq ($(TSO_20_SUPPORT),y)
412CFG_CC_DEFS += -D'TSO_20_ENABLE'
413endif
414
415ifeq ($(TSO_BOXSERIES_SUPPORT),y)
416CFG_CC_DEFS += -D'TSO_HW_BOX_SERIES'
417endif
418
419ifeq ($(TSP3_DULFLT_ENABLE),y)
420    CFG_CC_DEFS += -D'DUP_PIDFLT'
421endif
422
423ifeq ($(DSCMB_CSA_ENABLE),y)
424CFG_CC_DEFS += -D'DSCMB_CSA_ENABLE'
425endif
426ifeq ($(DSCMB_MULTI2_ENABLE),y)
427CFG_CC_DEFS += -D'DSCMB_MULTI2_ENABLE'
428endif
429
430ifeq ($(DSCMB_UTOPIA_20_ENABLE),y)
431CFG_CC_DEFS += -D'DSCMB_UTOPIA_20'
432endif
433
434ifeq ($(DSCMB_NO_PRINTF_ENABLE),y)
435CFG_CC_DEFS += -D'DSCMB_NO_PRINTF'
436endif
437
438ifeq ($(DSCMB_HW_SEM_ENABLE),y)
439CFG_CC_DEFS += -D'DSCMB_HW_SEM'
440endif
441
442ifeq ($(DSCMB_SECURE_MODE_ENABLE),y)
443CFG_CC_DEFS += -D'DSCMB_SECURE_MODE'
444endif
445
446
447ifeq ($(CIPHER_UTOPIA_20_ENABLE),y)
448CFG_CC_DEFS += -D'CIPHER_UTOPIA_20'
449endif
450
451ifeq ($(CIPHER_NO_PRINTF_ENABLE),y)
452CFG_CC_DEFS += -D'CIPHER_NO_PRINTF'
453endif
454
455ifeq ($(CA_UTOPIA_20_ENABLE),y)
456CFG_CC_DEFS += -D'CA_UTOPIA_20'
457endif
458
459ifeq ($(CA_NO_PRINTF_ENABLE),y)
460CFG_CC_DEFS += -D'CA_NO_PRINTF'
461endif
462
463ifeq ($(PCMCIA_MODULE_TYPE),m)
464CFG_CC_DEFS += -D'PCMCIA_UTPA2K'
465endif
466
467ifeq ($(OTV_SUPPORT),y)
468CFG_CC_DEFS += -D'OTV_ENABLE'
469endif
470
471ifeq ($(DMX_BOX_MULTIPROCESS_SUPPORT),y)
472CFG_CC_DEFS += -D'DMX_BOX_MULTIPROCESS_ENABLE'
473endif
474
475ifeq ($(DONT_USE_CMA),y)
476CFG_CC_DEFS += -D'DONT_USE_CMA'
477endif
478
479ifeq ($(USE_HWPCR_ENABLE),y)
480    ifeq ($(CHIP),$(filter $(CHIP),$(TSP4_CHIPS)))
481    CFG_CC_DEFS += -D'HW_PCRFLT_ENABLE=1'
482    else
483    CFG_CC_DEFS += -D'HWPCR_ENABLE'
484    endif
485endif
486
487ifeq ($(MERGE_STR_SUPPORT),y)
488CFG_CC_DEFS += -D'MERGE_STR_SUPPORT'
489endif
490
491ifeq ($(SECURE_PVR_SUPPORT),y)
492CFG_CC_DEFS += -D'SECURE_PVR_ENABLE'
493endif
494
495ifeq ($(CHIP), $(filter $(CHIP),monaco miami clippers muji munich milan monet))
496CFG_CC_DEFS += -D'DMX_RESET_FI_TIMESTAMP'
497endif
498
499ifeq ($(TSO_PVR_SUPPORT),y)
500CFG_CC_DEFS += -D'TSO_PVR_SUPPORT'
501endif
502
503ifeq ($(PVR_IFRAMELUT_SUPPORT),y)
504CFG_CC_DEFS += -D'PVR_IFRAMELUT_SUPPORT'
505endif
506
507ifeq ($(CHIP), $(filter $(CHIP),curry))
508CFG_CC_DEFS += -D'DMX_OPT_BOUND'
509endif
510
511ifeq ($(GENERAL_DSCMBTYPE_SUPPORT),y)
512CFG_CC_DEFS += -D'GENERAL_DSCMB'
513endif
514
515ifeq ($(XC_4K2K_PATCH_ENABLE),y)
516CFG_CC_DEFS += -D'ENABLE_4K2K_PATCH'
517endif
518
519# **********************************************
520# Customization Flag
521# **********************************************
522ifeq ($(ROLLS_ROYCE),y)
523CFG_CC_DEFS += -D'ROLLS_ROYCE'
524endif
525
526# **********************************************
527
528# **********************************************
529# Tool Chain Configuration
530#
531# Required ENV
532#       $(ROOT) e.g //utopia/
533#
534# Supported TOOLCHAIN
535#       mips-linux-gnu
536#       mips-sde-elf
537#       mips2_fp_le
538#       aeon
539#       mipsisa32-elf (OBSOLETE)
540#       arm-none-linux-gnueabi
541
542# Effected ENV
543#       CFG_STDLIB_DIR =
544#       CFG_LINT       =
545#       CFG_CC_OPTS    +=
546#       CFG_LD_OPTS    +=
547#       CFG_AS_OPTS    +=
548# **********************************************
549
550include $(ROOTLIB)/cfg_tool.mk
551
552
553ifeq ($(LINK_TYPE),dynamic)
554    CFG_LD_OPTS += -shared
555    LIB_EXT     = so
556else
557    CFG_LD_OPTS += --gc-sections -static
558    LIB_EXT     = a
559endif
560
561
562
563# Project specific
564# **********************************************
565# Base Operating System
566OS_BUILT    =
567
568
569# **********************************************
570# Directories
571# **********************************************
572# Source files of specific CHIP in library
573SRCDIR_CHIP = \
574            $(ROOTLIB)/hal/$(CHIP)                                  \
575            $(ROOTLIB)/hal/$(CHIP)/bdma                             \
576            $(ROOTLIB)/hal/$(CHIP)/sem                              \
577            $(ROOTLIB)/hal/$(CHIP)/mmio                             \
578            $(ROOTLIB)/hal/$(CHIP)/mbx                              \
579            $(ROOTLIB)/hal/$(CHIP)/uart                             \
580            $(ROOTLIB)/hal/$(CHIP)/irq                              \
581            $(ROOTLIB)/hal/$(CHIP)/sys                              \
582            $(ROOTLIB)/hal/$(CHIP)/miu                              \
583            $(ROOTLIB)/hal/$(CHIP)/gpio                             \
584	        $(ROOTLIB)/hal/$(CHIP)/cpu                              \
585	 	  	$(ROOTLIB)/hal/$(CHIP)/dac                              \
586			$(ROOTLIB)/api/swi2c                                  	\
587			$(ROOTLIB)/drv/cpu                                  	\
588			$(ROOTLIB)/drv/gpio
589
590# Source files of library
591SRCDIR_LIB  = \
592            $(ROOTLIB)/drv/bdma                                     \
593            $(ROOTLIB)/drv/sem                                      \
594            $(ROOTLIB)/drv/mmio                                     \
595            $(ROOTLIB)/drv/mbx/$(OS_TYPE)                           \
596            $(ROOTLIB)/drv/mbx/api_mbx                              \
597            $(ROOTLIB)/drv/uart                                     \
598            $(ROOTLIB)/drv/irq                                      \
599            $(ROOTLIB)/drv/sys                                      \
600            $(ROOTLIB)/drv/miu                                      \
601
602
603SRCDIR_SYS = \
604            $(ROOTLIB)/msos/$(MCU_TYPE)                             \
605            $(ROOTLIB)/msos/$(OS_TYPE)                              \
606			$(ROOTLIB)/hal/$(CHIP)/msos/$(OS_TYPE)					\
607            $(ROOTLIB)/msos/common                                  \
608			$(ROOTLIB)/utopia_core/$(OS_TYPE)
609
610ifeq ($(OS_TYPE),$(filter $(OS_TYPE),linux ecos))
611SRCDIR_FS = $(ROOTLIB)/msfs/$(OS_TYPE)
612endif
613
614# Header file of specific chip
615INCDIR_CHIP = \
616            $(ROOTLIB)/hal/$(CHIP)                                  \
617            $(ROOTLIB)/hal/$(CHIP)/bdma                             \
618            $(ROOTLIB)/hal/$(CHIP)/sem                              \
619            $(ROOTLIB)/hal/$(CHIP)/mmio                             \
620            $(ROOTLIB)/hal/$(CHIP)/mbx                              \
621            $(ROOTLIB)/hal/$(CHIP)/uart                             \
622            $(ROOTLIB)/hal/$(CHIP)/irq                              \
623            $(ROOTLIB)/hal/$(CHIP)/sys                              \
624            $(ROOTLIB)/hal/$(CHIP)/miu                              \
625            $(ROOTLIB)/hal/$(CHIP)/dac/include                      \
626            $(ROOTLIB)/hal/$(CHIP)/gpio
627
628ifeq ($(OS_TYPE),ucos)
629INCDIR_CHIP +=  $(ROOTLIB)/hal/$(CHIP)/cpu
630endif
631
632# Header file of inline assembly in library
633INCDIR_ASM  = \
634
635# Header files of library
636INCDIR_LIB  = \
637            $(PROJ)                                                 \
638            $(ROOTLIB)                                              \
639            $(ROOTLIB)/api/vdec                                     \
640            $(ROOTLIB)/drv/bdma                                     \
641            $(ROOTLIB)/drv/mbx                                      \
642            $(ROOTLIB)/drv/mbx/$(OS_TYPE)                           \
643            $(ROOTLIB)/drv/sem                                      \
644            $(ROOTLIB)/drv/mmio                                     \
645            $(ROOTLIB)/drv/irq                                      \
646            $(ROOTLIB)/drv/sys                                      \
647            $(ROOTLIB)/drv/uart                                     \
648            $(ROOTLIB)/drv/miu                                     	\
649            $(ROOTLIB)/drv/dac                                      \
650            $(ROOTLIB)/drv/audio/internal                          	\
651            $(ROOTLIB)/hal/$(CHIP)                                  \
652            $(ROOTLIB)/msos                                         \
653            $(ROOTLIB)/msos/$(OS_TYPE)                              \
654			$(ROOTLIB)/hal/$(CHIP)/msos/$(OS_TYPE)					\
655			$(ROOTLIB)/utopia_core/                                 \
656            $(ROOTLIB)/utopia_api_relation/
657ifeq ($(OS_TYPE),$(filter $(OS_TYPE),linux ecos))
658INCDIR_LIB  += $(ROOTLIB)/msfs
659endif
660
661INCDIR_LIB_H = \
662            $(ROOTLIB)/drv/miu                                      \
663
664# FW binary files of library
665BINDIR_LIB  = \
666            $(ROOTLIB)/hal/$(CHIP)/hvd                              \
667            $(ROOTLIB)/hal/$(CHIP)/mvd                              \
668            $(ROOTLIB)/hal/$(CHIP)/audsp                            \
669            $(ROOTLIB)/hal/$(CHIP)/tsp                              \
670
671ifeq ($(CHIP),monaco)
672BINDIR_LIB  += $(ROOTLIB)/hal/$(CHIP)/vpu_v3
673else
674BINDIR_LIB  += $(ROOTLIB)/hal/$(CHIP)/vpu_ex
675endif
676
677BIN_PATH    = $(PROJ)/bin
678OBJ_PATH    = $(PROJ)/obj
679BSPLIB_PATH = $(PROJ)/bsp/lib
680BSPINC_PATH = $(PROJ)/bsp/include
681BSPBIN_PATH = $(PROJ)/bsp/bin
682BSPMSC_PATH = $(PROJ)/bsp/misc
683
684
685# Search source file path
686VPATH       = $(SRCDIR_CHIP) $(SRCDIR_SYS) $(SRCDIR_ASM) $(SRCDIR_LIB)
687ifeq ($(OS_TYPE),linux)
688VPATH       +=  $(SRCDIR_FS)
689endif
690
691include $(ROOTLIB)/ddi.mk
692include $(ROOTLIB)/mxlib.mk
693
694
695# **********************************************
696# Image file names
697# **********************************************
698IMAGE_BIN   = $(BIN_PATH)/$(IMAGENAME).bin
699IMAGE_REC   = $(BIN_PATH)/$(IMAGENAME).rec
700IMAGE_ELF   = $(BIN_PATH)/$(IMAGENAME).elf
701IMAGE_MAP   = $(BIN_PATH)/$(IMAGENAME).map
702IMAGE_DIS   = $(BIN_PATH)/$(IMAGENAME).dis
703IMAGE_SIZ   = $(BIN_PATH)/$(IMAGENAME).siz
704IMAGE_SYM   = $(BIN_PATH)/$(IMAGENAME).sym
705
706
707# **********************************************
708# Files to be compiled
709# **********************************************
710SRC_C_CHIP  = $(foreach dir, $(SRCDIR_CHIP),  $(wildcard $(dir)/*.c))
711SRC_C_ASM   = $(foreach dir, $(SRCDIR_ASM),   $(wildcard $(dir)/*.c))
712SRC_C_LIB   = $(foreach dir, $(SRCDIR_LIB),   $(wildcard $(dir)/*.c))
713SRC_C_SYS   = $(foreach dir, $(SRCDIR_SYS),   $(wildcard $(dir)/*.c))
714
715OBJ_C_CHIP0 = $(notdir $(patsubst %.c, %.o,   $(SRC_C_CHIP)))
716OBJ_C_ASM0  = $(notdir $(patsubst %.c, %.o,   $(SRC_C_ASM) ))
717OBJ_C_LIB0  = $(notdir $(patsubst %.c, %.o,   $(SRC_C_LIB) ))
718OBJ_C_SYS0  = $(notdir $(patsubst %.c, %.o,   $(SRC_C_SYS) ))
719
720OBJ_C_CHIP  = $(foreach file, $(OBJ_C_CHIP0), $(OBJ_PATH)/$(file))
721OBJ_C_ASM   = $(foreach file, $(OBJ_C_ASM0),  $(OBJ_PATH)/$(file))
722OBJ_C_LIB   = $(foreach file, $(OBJ_C_LIB0),  $(OBJ_PATH)/$(file))
723OBJ_C_SYS   = $(foreach file, $(OBJ_C_SYS0),  $(OBJ_PATH)/$(file))
724
725ifeq ($(OS_TYPE),linux)
726SRC_C_FS    = $(foreach dir, $(SRCDIR_FS),    $(wildcard $(dir)/*.c))
727OBJ_C_FS0   = $(notdir $(patsubst %.c, %.o,   $(SRC_C_FS) ))
728OBJ_C_FS    = $(foreach file, $(OBJ_C_FS0),   $(OBJ_PATH)/$(file))
729endif
730
731# **********************************************
732# Libraries
733# **********************************************
734
735DDI_PATH = $(ROOT)/lib/$(CHIP)_$(OS_TYPE)_$(MCU_TYPE)/$(MCU_TYPE)_$(BLT_TYPE)
736
737# Standard Libraries Path
738
739
740# Middleware Libraries Path
741
742
743# Libraries
744DDI_LIB = $(DDI_PATH)/lib$(OS_TYPE).$(LIB_EXT)
745
746# Include files of output library
747LIB_INC     =
748LIB_INC    += $(foreach dir, $(INCDIR_LIB), $(wildcard $(dir)/asm*.h))
749LIB_INC    += $(foreach dir, $(INCDIR_LIB), $(wildcard $(dir)/api*.h))
750LIB_INC    += $(foreach dir, $(INCDIR_LIB), $(wildcard $(dir)/drv*.h))
751LIB_INC    += $(foreach dir, $(INCDIR_LIB), $(wildcard $(dir)/Ms*.h))
752LIB_INC    += $(foreach dir, $(INCDIR_LIB), $(wildcard $(dir)/regCHIP.h))
753LIB_INC    += $(foreach dir, $(INCDIR_LIB), $(wildcard $(dir)/$(CFG_BOARD).h))
754LIB_INC    += $(foreach dir, $(INCDIR_LIB), $(wildcard $(dir)/utopia.h))
755LIB_INC    += $(foreach dir, $(INCDIR_LIB), $(wildcard $(dir)/utopia_dapi.h))
756LIB_INC    += $(foreach dir, $(INCDIR_LIB), $(wildcard $(dir)/utopia_driver_id.h))
757ifeq ($(CONFIG_API_DAC), y)
758LIB_INC    += $(foreach dir, $(INCDIR_CHIP), $(wildcard $(dir)/mdrv_dac_tbl.h))
759endif
760
761LIB_INC_2   =
762LIB_INC_2  += $(foreach dir, $(MXLIB-y), $(wildcard $(dir)/api*.h))
763LIB_INC_2  += $(foreach dir, $(MXLIB-y), $(wildcard $(dir)/drv*.h))
764LIB_INC_2  += $(foreach dir, $(MXLIB-m), $(wildcard $(dir)/api*.h))
765LIB_INC_2  += $(foreach dir, $(MXLIB-m), $(wildcard $(dir)/drv*.h))
766
767# FW Binary files of output library
768LIB_FW_BIN  =
769LIB_FW_BIN += $(foreach dir, $(BINDIR_LIB), $(wildcard $(dir)/fw*.bin))
770LIB_FW_BIN += $(foreach dir, $(BINDIR_LIB), $(wildcard $(dir)/fw*.dat))
771LIB_FW_BIN += $(foreach dir, $(BINDIR_LIB), $(wildcard $(dir)/out_*.bin))
772LIB_FW_BIN += $(foreach dir, $(BINDIR_LIB), $(wildcard $(dir)/aucode_*.h))
773
774# Misc files
775LIB_MISC    =
776ifeq ($(CONFIG_API_DAC), y)
777LIB_MISC   += $(foreach dir, $(INCDIR_CHIP), $(wildcard $(dir)/mdrv_dac_tbl.c))
778endif
779
780# Public include files
781PUB_INC    =
782PUB_INC    += $(foreach dir, $(PUBINC), $(wildcard $(dir)/*.h))
783
784# **********************************************
785# Compiler and linker options
786# **********************************************
787ifeq ($(OS_TYPE),linux)
788
789ifeq ($(EXT_PLATFORM_FLAG),android)
790# **********************************************
791# Compiler and linker options for android
792# **********************************************
793
794ANDROID_DIR = $(ANDROID_BUILD_TOP)
795OS_INC_DIR  = \
796              $(ANDROID_DIR)/bionic/libc/arch-arm/include \
797              $(ANDROID_DIR)/bionic/libc/include \
798              $(ANDROID_DIR)/bionic/libc/kernel/common \
799              $(ANDROID_DIR)/bionic/libc/kernel/arch-arm \
800              $(ANDROID_DIR)/bionic/libm/include \
801              $(ANDROID_DIR)/bionic/libm/include/arch/arm \
802              $(ANDROID_DIR)/bionic/libthread_db/include \
803              $(ANDROID_DIR)/system/core/include
804OS_LIB_DIR  = $(ANDROID_DIR)/bionic/lib
805
806ALL_INC_DIR = $(INCDIR_ASM) $(INCDIR_CHIP) $(INCDIR_LIB) $(INCDIR_LIB_H) $(OS_INC_DIR)
807
808CC_INCS     = $(foreach dir, $(ALL_INC_DIR), -I$(dir) -I$(PUBINC))
809
810CC_DEFS     = $(CFG_CC_DEFS) $(CFG_CC_EXTRA_DEFS) -D'OS_LINUX' -D'LIB_NAME="$(IMAGENAME).lib"' -D'PWS_AUTOGEN'
811CC_DEFS     += -D'TV_OS' -D'ANDROID' -D'SK_RELEASE'
812
813# GCC options:
814CC_OPTS     = $(CFG_CC_OPTS) -c
815# TARGET_GLOBAL_CFLAGS
816CC_OPTS    += -fno-exceptions -Wno-multichar \
817              -fpic \
818              -ffunction-sections \
819              -funwind-tables \
820              -fstack-protector \
821              -Wa,--noexecstack \
822              -Werror=format-security \
823              -fno-short-enums \
824              -Wno-psabi \
825              -mthumb-interwork \
826              -fmessage-length=0 -W -Wall -Wno-unused -Winit-self -Wpointer-arith
827#TARGET_ERROR_FLAGS
828CC_OPTS    += -Werror=return-type -Werror=non-virtual-dtor -Werror=address -Werror=sequence-point
829# TARGET_RELEASE_CFLAGS
830CC_OPTS    += -DNDEBUG \
831              -g \
832              -Wstrict-aliasing=2 \
833              -finline-functions \
834              -fno-inline-functions-called-once \
835              -fgcse-after-reload \
836              -frerun-cse-after-loop \
837              -frename-registers \
838              -DNDEBUG -UDEBUG \
839              -DMS_OPTIMIZE
840# TARGET_ARCH_CFLAGS
841CC_OPTS    += -Os \
842              -fomit-frame-pointer \
843              -fstrict-aliasing \
844              -funswitch-loops \
845              -finline-limit=300
846
847else
848# **********************************************
849# Compiler and linker options for linux
850# **********************************************
851
852OS_INC_DIR  =
853
854ALL_INC_DIR = $(INCDIR_ASM) $(INCDIR_CHIP) $(INCDIR_LIB) $(INCDIR_LIB_H) $(OS_INC_DIR)
855
856CC_INCS     = $(foreach dir, $(ALL_INC_DIR), -I$(dir) -I$(PUBINC))
857CC_INCS     += -I$(AUTOCONFIG)
858
859CC_DEFS     = $(CFG_CC_DEFS) $(CFG_CC_EXTRA_DEFS) -D'OS_LINUX' -D'LIB_NAME="$(IMAGENAME).lib"' -D'PWS_AUTOGEN'
860
861ifeq ($(EXT_PLATFORM_FLAG),tvos)
862CC_DEFS     += -D'TV_OS'
863endif
864
865# GCC options:
866CC_OPTS     = $(CFG_CC_OPTS) -Wall -Wpointer-arith -Wstrict-prototypes -Winline -Wundef
867CC_OPTS    += -fno-strict-aliasing -fno-optimize-sibling-calls -fno-exceptions
868CC_OPTS    += -ffunction-sections -fdata-sections
869CC_OPTS    += -c
870ifeq ($(TOOLCHAIN),arm-buildroot-linux-uclibcgnueabi)
871CC_OPTS    += -fPIC
872endif
873
874ifeq ($(CONFIG_STACK_PROTECTOR),y)
875    # currently we use 4.8.2 and 4.9.2
876    ifeq ($(TOOLCHAIN_VER), $(filter $(TOOLCHAIN_VER), 4.8.2 4.9.2))
877        CC_OPTS += -fstack-protector
878    else
879        $(error "Only toolchain ver > 4.8 supports -fstack-protector (current = $(TOOLCHAIN_VER))")
880    endif
881endif
882
883# for symbol backtrace
884CC_OPTS    += -rdynamic
885endif
886
887else
888ifeq ($(OS_TYPE),ucos)
889# **********************************************
890# Compiler and linker options for ucos
891# **********************************************
892OS_INC_DIR  = $(ROOT)/../../GreenLion/platform/ucos/include
893OS_INC_DIR  += $(ROOT)/../../GreenLion/platform/ucos/HDI3/inc
894
895ALL_INC_DIR = $(INCDIR_ASM) $(INCDIR_CHIP) $(INCDIR_LIB) $(INCDIR_LIB_H) $(OS_INC_DIR)
896CC_INCS     = $(foreach dir, $(ALL_INC_DIR), -I$(dir) -I$(PUBINC))
897CC_INCS     += -I$(AUTOCONFIG)
898CC_DEFS     = $(CFG_CC_DEFS) $(CFG_CC_EXTRA_DEFS) -D'OS_UCOS' -D'LIB_NAME="$(IMAGENAME).lib"' -D'PWS_AUTOGEN'
899
900# GCC options:
901CC_OPTS     = $(CFG_CC_OPTS) -Wall -Wpointer-arith -Wstrict-prototypes -Winline -Wundef
902CC_OPTS    += -fno-strict-aliasing -fno-optimize-sibling-calls -fno-exceptions
903ifeq ($(TOOLCHAIN),arm-none-eabi)
904CC_OPTS    += -c
905else
906CC_OPTS    += -c -G0
907endif
908
909else
910ifeq ($(OS_TYPE),ecos)
911# **********************************************
912# Compiler and linker options for Ecos
913# **********************************************
914ifeq ($(FPU_ENABLE),1)
915ifeq ($(CHIP),kano)
916    OS_INC_DIR  = $(ROOT)/../../GreenLion/platform/ecos/ecos_kano_CA53_net_fileio_posix_fat_cpuload_c++_none_armeabi/include
917else ifeq ($(CHIP),k6)
918    OS_INC_DIR  = $(ROOT)/../../../GreenLion/platform/ecos/ecos_k6_CA53_net_fileio_posix_fat_cpuload_c++_none_armeabi/include
919else ifeq ($(CHIP),k6lite)
920    OS_INC_DIR  = $(ROOT)/../../../GreenLion/platform/ecos/ecos_k6lite_CA7_net_fileio_posix_fat_cpuload_c++_none_armeabi/include
921else
922    OS_INC_DIR  = $(ROOT)/../GreenLion/platform/ecos/ecos_keres_74kf_net_fileio_posix_fat_ntfs_mipsisa32_c++/include
923endif
924else
925ifeq ($(CHIP),kano)
926    OS_INC_DIR  = $(ROOT)/../../GreenLion/platform/ecos/ecos_kano_CA53_net_fileio_posix_fat_cpuload_c++_none_armeabi/include
927else ifeq ($(CHIP),k6)
928    OS_INC_DIR  = $(ROOT)/../../../GreenLion/platform/ecos/ecos_k6_CA53_net_fileio_posix_fat_cpuload_c++_none_armeabi/include
929else ifeq ($(CHIP),k6lite)
930    OS_INC_DIR  = $(ROOT)/../../../GreenLion/platform/ecos/ecos_k6lite_CA7_net_fileio_posix_fat_cpuload_c++_none_armeabi/include
931else
932    OS_INC_DIR  = $(ROOT)/../GreenLion/platform/ecos/ecos_keres_74kc_net_fileio_posix_fat_ntfs_mipsisa32_c++/include
933endif
934endif
935
936ALL_INC_DIR = $(INCDIR_ASM) $(INCDIR_CHIP) $(INCDIR_LIB) $(INCDIR_LIB_H) $(OS_INC_DIR)
937CC_INCS     = $(foreach dir, $(ALL_INC_DIR), -I$(dir) -I$(PUBINC))
938CC_INCS     += -I$(AUTOCONFIG)
939CC_DEFS     = $(CFG_CC_DEFS) $(CFG_CC_EXTRA_DEFS) -D'OS_ECOS' -D'LIB_NAME="$(IMAGENAME).lib"' -D'PWS_AUTOGEN'
940
941# GCC options:
942CC_OPTS     = $(CFG_CC_OPTS) -Wall -Wpointer-arith -Wstrict-prototypes -Winline -Wundef
943CC_OPTS    += -fno-strict-aliasing -fno-optimize-sibling-calls -fno-exceptions
944ifeq ($(TOOLCHAIN),arm-none-eabi)
945CC_OPTS    += -c
946else
947CC_OPTS    += -c -G0
948endif
949
950else
951ifeq ($(OS_TYPE),nuttx)
952# **********************************************
953# Compiler and linker options for Nuttx
954# **********************************************
955
956OS_INC_DIR  =
957ALL_INC_DIR = $(INCDIR_ASM) $(INCDIR_CHIP) $(INCDIR_LIB) $(INCDIR_LIB_H) $(OS_INC_DIR)
958CC_INCS     = $(foreach dir, $(ALL_INC_DIR), -I$(dir) -I$(PUBINC))
959CC_INCS     += -I$(AUTOCONFIG)
960CC_DEFS     = $(CFG_CC_DEFS) $(CFG_CC_EXTRA_DEFS) -D'OS_NOS' -D'LIB_NAME="$(IMAGENAME).lib"' -D'PWS_AUTOGEN'
961
962# GCC options:
963CC_OPTS     = $(CFG_CC_OPTS) -Wall -Wpointer-arith -Wstrict-prototypes -Winline -Wundef -Wcast-align
964CC_OPTS    += -fomit-frame-pointer -fno-exceptions
965CC_OPTS    += -ffunction-sections -fdata-sections
966CC_OPTS    += -c -march=aeonR2 -EL
967
968else
969ifeq ($(OS_TYPE),optee)
970# **********************************************
971# Compiler and linker options for Optee
972# **********************************************
973
974OS_INC_DIR  =
975ALL_INC_DIR = $(INCDIR_ASM) $(INCDIR_CHIP) $(INCDIR_LIB) $(INCDIR_LIB_H) $(OS_INC_DIR)
976CC_INCS     = $(foreach dir, $(ALL_INC_DIR), -I$(dir) -I$(PUBINC))
977CC_INCS     += -I$(AUTOCONFIG)
978CC_DEFS     = $(CFG_CC_DEFS) $(CFG_CC_EXTRA_DEFS) -D'OS_NOS' -D'LIB_NAME="$(IMAGENAME).lib"' -D'PWS_AUTOGEN'
979
980# GCC options:
981CC_OPTS     = $(CFG_CC_OPTS) -Wall -Wpointer-arith -Wstrict-prototypes -Winline -Wundef -Wcast-align
982CC_OPTS    += -fomit-frame-pointer -fno-exceptions
983CC_OPTS    += -ffunction-sections -fdata-sections
984CC_OPTS    += -c
985
986else
987# **********************************************
988# Compiler and linker options for Non-OS
989# **********************************************
990
991OS_INC_DIR  =
992ALL_INC_DIR = $(INCDIR_ASM) $(INCDIR_CHIP) $(INCDIR_LIB) $(INCDIR_LIB_H) $(OS_INC_DIR)
993CC_INCS     = $(foreach dir, $(ALL_INC_DIR), -I$(dir) -I$(PUBINC))
994CC_INCS     += -I$(AUTOCONFIG)
995CC_DEFS     = $(CFG_CC_DEFS) $(CFG_CC_EXTRA_DEFS) -D'OS_NOS' -D'LIB_NAME="$(IMAGENAME).lib"' -D'PWS_AUTOGEN'
996
997# GCC options:
998CC_OPTS     = $(CFG_CC_OPTS) -Wall -Wpointer-arith -Wstrict-prototypes -Winline -Wundef -Wcast-align
999CC_OPTS    += -fomit-frame-pointer -fno-exceptions
1000CC_OPTS    += -ffunction-sections -fdata-sections
1001
1002ifeq ($(MCU_TYPE),aeon)
1003CC_OPTS    += -march=aeonR2 -EL
1004endif
1005
1006
1007ifeq ($(MCU_TYPE), arm_ca53)
1008ifeq ($(OS_TYPE), nos)
1009CC_OPTS    += -mno-unaligned-access
1010else
1011CC_OPTS    += -mstrict-align
1012endif
1013endif
1014ifeq ($(MCU_TYPE), arm_ca12)
1015CC_OPTS    += -mno-unaligned-access
1016endif
1017ifeq ($(MCU_TYPE), arm_ca7)
1018CC_OPTS    += -mno-unaligned-access
1019endif
1020ifeq ($(MCU_TYPE),arm9)
1021CC_OPTS    += -mno-unaligned-access
1022endif
1023
1024ifeq ($(EXT_PLATFORM_FLAG),mboot)
1025CC_OPTS    += -fno-short-enums -Wno-unused -Wno-cast-align -fno-strict-aliasing
1026endif
1027
1028CC_OPTS    += -c
1029
1030endif
1031endif
1032endif
1033endif
1034endif
1035
1036# AS options:
1037AS_OPTS     = $(CFG_AS_OPTS) -G0 -Os
1038
1039
1040# LD options:
1041LD_SCRIPT   =
1042LD_LIBS     = -L$(DDI_PATH) -L$(OS_LIB_DIR) -L$(CFG_STDLIB_DIR) -T$(LD_SCRIPT)
1043LD_OPTS     = $(CFG_LD_OPTS)
1044
1045ifeq ($(OS_TYPE),nos)
1046LD_OPTS     += -nostdlib
1047endif
1048
1049ifeq ($(OS_TYPE),ecos)
1050LD_OPTS     += -nostdlib -Map $(IMAGE_MAP)
1051endif
1052
1053
1054ifeq ($(BLT_TYPE),debug)
1055CC_OPTS    += -O0 -g3
1056CC_DEFS    += -D'MS_DEBUG'
1057else
1058CC_OPTS    += -Os
1059CC_DEFS    += -D'MS_OPTIMIZE'
1060endif
1061
1062CC_OPTS    += $(CFG_CC_EXTRA_OPTS)
1063CC_DEFS    += -D'CONFIG_ENABLE_MENUCONFIG'
1064# **********************************************
1065# C Helper Utilities
1066# **********************************************
1067# Generate relative path for Doxygen
1068ifeq ($(OS_TYPE),linux)
1069DXY_SRC     = $(subst $(PROJ)/,,$(PUBINC))
1070else
1071DXY_SRC     = $(subst $(PROJ)/,,$(LIB_INC) $(SRC_C_LIB) $(SRCDIR_SYS))
1072endif
1073DXY_SRC    += $(subst $(PROJ)/,,$(foreach dir,$(MXLIB),$(wildcard $(dir)/*.c)))
1074
1075# Generate options list for Lint
1076ifeq ($(shell uname -o),Cygwin)                                     #TODO: revise cygwin related
1077LINT_LOG    = $(shell cygpath -m $(CURDIR)/lint_test.log)
1078LINT_FILES  = $(shell cygpath -m $(CURDIR)/lint_files.lnt)
1079LINT_INC    = $(foreach dir,$(shell cygpath -m $(ALL_INC_DIR)),-i"$(dir)") -i"$(shell cygpath -m $(CFG_LINT))"
1080else
1081LINT_LOG    = $(CURDIR)/lint_test.log
1082LINT_FILES  = $(CURDIR)/lint_files.lnt
1083LINT_INC    = $(foreach dir,$(ALL_INC_DIR),-I"$(dir)")
1084ifeq ($(OS_TYPE),linux)
1085LINT_INC    += -I/tools/arm-2010.09/arm-none-linux-gnueabi/libc/usr/include/
1086LINT_INC    += -I/tools/arm-2010.09/lib/gcc/arm-none-linux-gnueabi/4.5.1/include/
1087LINT_INC    += -I/tools/arm/Linaro/gcc-linaro-aarch64-linux-gnu-4.9-2014.07_linux/
1088endif
1089endif
1090
1091
1092# **********************************************
1093# Rules
1094# **********************************************
1095.PHONY : all setup clean bsp depend docgen $(MXLIB-y) $(MXLIB-m) parallel
1096
1097parallel:
1098	@$(MAKE) -s -f parallel.mk
1099
1100# Project Build
1101
1102all: parallel
1103
1104log_gccver:
1105	@$(CC) -v > .GCCver.log 2>&1
1106
1107check_build_toolver: log_gccver
1108	@echo         "### Start checking workspace tool chain version against $(TOOLCHAIN) $(TOOLCHAIN_VER) ###"
1109	@if [ '$(shell grep "gcc version $(TOOLCHAIN_VER)" .GCCver.log)' ] ;\
1110		then echo "### Pass checking workspace tool chain version ###" ;\
1111			rm .GCCver.log ;\
1112		else echo -e "\033[0;31m[Error] Tool chain version should be $(TOOLCHAIN) $(TOOLCHAIN_VER). please check it!!\033[0m" ;\
1113		echo "Your workspace tool chain version:" ;\
1114		$(CC) -v ;\
1115		echo "### End checking workspace tool chain version  ###" ;\
1116		rm .GCCver.log ;exit 99;\
1117	fi
1118
1119# Library Document Auto Generation
1120docgenOneUtopia :
1121	rm -f -r                               dxyOneUtopia_files;
1122	-mkdir -p                               dxyOneUtopia_files 2> /dev/null;
1123	doxygen -u                               bspOneUtopia.dxyfile;
1124# Library Package
1125bsp :
1126	@rm -f -r                               $(BSPLIB_PATH)
1127	@rm -f -r                               $(BSPINC_PATH)
1128	@rm -f -r                               $(BSPBIN_PATH)
1129	@rm -f -r                               $(BSPMSC_PATH)
1130	-@mkdir -p                              $(BSPLIB_PATH) 2> /dev/null;
1131	-@mkdir -p                              $(BSPINC_PATH) 2> /dev/null;
1132	-@mkdir -p                              $(BSPBIN_PATH) 2> /dev/null;
1133	-@mkdir -p                              $(BSPMSC_PATH) 2> /dev/null;
1134	@cp         $(DDI_PATH)/*.$(LIB_EXT)    $(BSPLIB_PATH)
1135ifeq ($(ByPassOneUtopia),y)
1136	@echo -e "\033[41;36mBypass OneUtopia!!!\033[0m"
1137	@cp         $(PUB_INC)                  $(BSPINC_PATH)
1138	@cp         $(LIB_INC)                  $(BSPINC_PATH)
1139	@cp         $(LIB_INC_2)                $(BSPINC_PATH)
1140
1141else
1142ifeq ($(CHIP),$(filter $(CHIP),maserati maxim M7821 M7621))
1143	@echo -e "\033[41;36m$(CHIP) Enable OneUtopia\033[0m"
1144	@sh Reduced.sh api_with_header_file.csv $(shell echo $(PROJ) |sed -e "s/\/build[/]*$$//g") $$Version
1145else
1146	@cp         $(PUB_INC)                  $(BSPINC_PATH)
1147	@cp         $(LIB_INC)                  $(BSPINC_PATH)
1148	@cp         $(LIB_INC_2)                $(BSPINC_PATH)
1149endif
1150endif
1151	@cp         $(LIB_FW_BIN)               $(BSPBIN_PATH)
1152	@test -f $(BSPLIB_PATH)/libdrvCIPHER.so && ln -s libdrvCIPHER.so $(BSPLIB_PATH)/libdrvAESDMA.so  || { echo ""; }
1153ifeq ($(CONFIG_API_DAC), y)
1154	@cp         $(LIB_MISC)                 $(BSPMSC_PATH)
1155endif
1156
1157ifeq ($(EXT_PLATFORM_FLAG),android)
1158	@$(AR) crsP $(BSPLIB_PATH)/libutopia.a $(OBJ_PATH)/*
1159endif
1160ifeq ($(OS_TYPE),ecos)
1161ifeq ($(FPU_ENABLE), 1)
1162	@echo "Add Dummy Hardfloat Section for check in ...";
1163#	for i in `ls $(BSPLIB_PATH)/*.a`; do $(AR) -r $$i $(CHIP)/hardfloat.o; done
1164endif
1165endif
1166ifeq ($(OS_TYPE),linux)
1167ifeq ($(LINK_TYPE),dynamic)
1168	@$(CC) $(CFG_CC_OPTS) $(LD_OPTS) $(OBJ_PATH)/*.o $(MLOG_LIB_PATH) -o $(PROJ)/bsp/libutopia.so
1169	@$(CC) $(CFG_CC_OPTS) $(LD_OPTS) $(OBJ_PATH)/*.o $(MLOG_LIB_PATH) -s -o $(PROJ)/bsp/libutopia.so.strip
1170endif
1171endif
1172ifeq ($(CHIP),$(filter $(CHIP),maserati maxim M7821 M7621))
1173	@echo "CHIP: $(CHIP) use Oneutopia-docgen";
1174	@make docgenOneUtopia
1175	@tar zcvf $(CHIP)_$(OS_TYPE)_$(EXT_PLATFORM_FLAG)_$(CPU_NAME)_$(FPU)_$(LINK_TYPE)_$(BLT_TYPE).doc.tgz dxyOneUtopia_files 1> /dev/null
1176	@tar zcvf $(CHIP)_$(OS_TYPE)_$(EXT_PLATFORM_FLAG)_$(CPU_NAME)_$(FPU)_$(LINK_TYPE)_$(BLT_TYPE).tgz bsp 1> /dev/null
1177else
1178	@echo "Make $(CHIP) $(PROJNAME) board support package...";
1179	@make docgen
1180	@tar zcvf $(CHIP)_$(OS_TYPE)_$(EXT_PLATFORM_FLAG)_$(CPU_NAME)_$(FPU)_$(LINK_TYPE)_$(BLT_TYPE).doc.tgz dxy_files 1> /dev/null
1181	@tar zcvf $(CHIP)_$(OS_TYPE)_$(EXT_PLATFORM_FLAG)_$(CPU_NAME)_$(FPU)_$(LINK_TYPE)_$(BLT_TYPE).tgz bsp 1> /dev/null
1182endif
1183
1184# Library Document Auto Generation
1185docgen :
1186	rm -f -r                                dxy_files;
1187	-mkdir -p                               dxy_files 2> /dev/null;
1188	@echo 'INPUT += \ ' >                   dxy.infile;
1189	@echo $(DXY_SRC) >>                     dxy.infile;
1190	doxygen -u                                bsp.dxyfile;
1191#	rm -f                                   dxy.infile;
1192	@echo DXY_SRC = $(DXY_SRC)
1193
1194
1195# Project Lint Report
1196lint :
1197	@echo "Generate $(CHIP) $(PROJNAME) lint report $(LINT_LOG)...";
1198	@echo `grep 'Error' $(LINT_LOG) | wc -l` LINT Errors
1199
1200
1201# Project Library Build
1202SYS_MSG :
1203	@echo [Makefile][$(notdir $(DDI_LIB))]
1204ifeq ($(OS_TYPE),ecos)
1205    @echo OS_INC_DIR = $(OS_INC_DIR)
1206endif
1207
1208SYS_LIB : $(OBJ_C_CHIP) $(OBJ_C_SYS) $(OBJ_C_ASM) $(OBJ_C_LIB)
1209	@echo "syslib" $(OBJ_C_SYS)
1210ifneq ($(MAKE_TYPE),lint)
1211ifeq ($(LINK_TYPE),dynamic)
1212	@$(CC) $(CFG_CC_OPTS) $(LD_OPTS) -o $(DDI_LIB) $^ $(MLOG_LIB_PATH);
1213	@$(OBJCOPY) --add-section .mmodule_version=$(ROOTLIB)/msos/version_info $(DDI_LIB)
1214else
1215ifeq ($(EXT_PLATFORM_FLAG),android)
1216	@$(AR) crsP $(DDI_LIB) $^;
1217else
1218	@$(AR) -cru $(DDI_LIB) $^;
1219endif
1220endif
1221endif
1222	@date;
1223	@echo '*************************************** Building environment *****************************************'
1224	@echo '#'
1225	@echo '# CHIP[$(CHIP)] OS[$(OS_TYPE)] CPU[$(CPU_NAME)] FPU[$(FPU)] link_type[$(LINK_TYPE)] release_type[$(BLT_TYPE)] Platform[$(EXT_PLATFORM_FLAG)]'
1226	@echo '#'
1227
1228ifeq (1,1)
1229syslib : check_build_toolver SYS_MSG SYS_LIB
1230else
1231syslib :
1232endif
1233
1234$(MXLIB-m):
1235	@$(MAKE) -s -C $@ lib
1236
1237$(MXLIB-y) :
1238	@$(MAKE) -s -C $@ lib
1239ifeq ($(PARA), 1)
1240	@if [ ! -f $@/cpptestscan.bdf ]; then					\
1241		echo ERROR! No $@/cpptestscan.bdf;					\
1242	fi
1243	@if [ -f $@/cpptestscan.bdf ]; then						\
1244		cat $@/cpptestscan.bdf >> $(PROJ)/cpptestscan.bdf;	\
1245		rm $@/cpptestscan.bdf;								\
1246	fi
1247endif
1248
1249# Project Source Build
1250$(OBJ_C_CHIP) $(OBJ_C_ASM) $(OBJ_C_SYS): $(OBJ_PATH)/%.o : %.c
1251ifneq ($(MAKE_TYPE),lint)
1252	@echo [CC] $(notdir $@)
1253	@$(CC) $(CC_OPTS) $(CC_DEFS) $(CC_INCS) -o $@ $<;
1254else
1255	@echo [LINT] $(notdir $<)
1256ifeq ($(shell uname -o),Cygwin)
1257	@$(LINT_CMD) $(CC_DEFS) $(LINT_INC) $(shell cygpath -m $<) >>$(LINT_LOG)
1258	@echo $< >>$(LINT_FILES)
1259else
1260	@$(LINT_CMD) $(CC_DEFS) $(LINT_INC) $< >>$(LINT_LOG)
1261	@echo $< >>$(LINT_FILES)
1262endif
1263endif
1264
1265#	@$(AR) -cru $(DDI_LIB) $@;
1266
1267ifeq ($(OS_TYPE),linux)
1268$(OBJ_C_LIB) $(OBJ_C_FS): $(OBJ_PATH)/%.o : %.c
1269else
1270$(OBJ_C_LIB) : $(OBJ_PATH)/%.o : %.c
1271endif
1272ifneq ($(MAKE_TYPE),lint)
1273	@$(CC) $(CC_OPTS) $(CC_DEFS) $(CC_INCS) -o $@ $<;
1274else
1275	echo [LINT] $(notdir $<)
1276ifeq ($(shell uname -o),Cygwin)
1277	@$(LINT_CMD) $(CC_DEFS) $(LINT_INC) $(shell cygpath -m $<) >>$(LINT_LOG)
1278	echo $< >>$(LINT_FILES)
1279else
1280	@$(LINT_CMD) $(CC_DEFS) $(LINT_INC) $< >>$(LINT_LOG)
1281	echo $< >>$(LINT_FILES)
1282endif
1283endif
1284#ifeq ($(OS_TYPE),$(notdir $(<D)))
1285
1286
1287# Single Driver Build
1288$(DRV_DIR): check_build_toolver setup
1289	@echo [ddi.mk] $@
1290	@$(MAKE) -C $(DDIDRV)/$@ clean lib
1291	@echo '**************************************** Building environment ****************************************'
1292	@echo '#'
1293	@echo '# CHIP[$(CHIP)] OS[$(OS_TYPE)] CPU[$(CPU_NAME)] FPU[$(FPU)] link_type[$(LINK_TYPE)] release_type[$(BLT_TYPE)] Platform[$(EXT_PLATFORM_FLAG)]'
1294	@echo '#'
1295
1296$(API_DIR): check_build_toolver setup
1297	@echo [ddi.mk] $@
1298	@$(MAKE) -s -C $(DDIAPI)/$@ clean lib
1299	@echo '**************************************** Building environment ****************************************'
1300	@echo '#'
1301	@echo '# CHIP[$(CHIP)] OS[$(OS_TYPE)] CPU[$(CPU_NAME)] FPU[$(FPU)] link_type[$(LINK_TYPE)] release_type[$(BLT_TYPE)] Platform[$(EXT_PLATFORM_FLAG)]'
1302	@echo '#'
1303
1304msos_setup: setup
1305	@echo [Makefile][libMsOS.$(LIB_EXT)]
1306#	@if	[	-f $(OBJ_PATH)/MsOS_$(OS_TYPE).o	];\
1307		then\
1308		rm $(OBJ_PATH)/MsOS_$(OS_TYPE).o;\
1309	fi
1310
1311msos: check_build_toolver msos_setup $(DDI_PATH)/libMsOS.$(LIB_EXT)
1312ifneq ($(MAKE_TYPE),lint)
1313ifeq ($(LINK_TYPE),dynamic)
1314	@$(CC)  $(CFG_CC_OPTS) $(LD_OPTS) -o $(DDI_PATH)/libMsOS.$(LIB_EXT) $(OBJ_C_SYS) $(MLOG_LIB_PATH);
1315	@$(OBJCOPY) --add-section .mmodule_version=$(ROOTLIB)/msos/version_info $(DDI_PATH)/libMsOS.$(LIB_EXT)
1316else
1317ifeq ($(EXT_PLATFORM_FLAG),android)
1318	@$(AR) crsP $(DDI_PATH)/libMsOS.$(LIB_EXT) $(OBJ_C_SYS);
1319else
1320	@$(AR) -cru $(DDI_PATH)/libMsOS.$(LIB_EXT) $(OBJ_C_SYS);
1321endif
1322endif
1323endif
1324
1325$(DDI_PATH)/libMsOS.$(LIB_EXT) : $(OBJ_C_SYS)
1326
1327build_env: $(DRV_DIR)
1328	@echo 'haha'
1329
1330msfs_setup: setup
1331	@echo [Makefile][libMsFS.$(LIB_EXT)]
1332
1333msfs: msfs_setup $(DDI_PATH)/libMsFS.$(LIB_EXT)
1334ifneq ($(MAKE_TYPE),lint)
1335ifeq ($(LINK_TYPE),dynamic)
1336	@$(CC)  $(CFG_CC_OPTS) $(LD_OPTS) -o $(DDI_PATH)/libMsFS.$(LIB_EXT) $(OBJ_C_FS);
1337else
1338ifeq ($(EXT_PLATFORM_FLAG),android)
1339	@$(AR) crsP $(DDI_PATH)/libMsFS.$(LIB_EXT) $(OBJ_C_FS);
1340else
1341	@$(AR) -cru $(DDI_PATH)/libMsFS.$(LIB_EXT) $(OBJ_C_FS);
1342endif
1343endif
1344endif
1345
1346$(DDI_PATH)/libMsFS.$(LIB_EXT) : $(OBJ_C_FS)
1347
1348# Project Setup
1349setup :
1350ifeq ($(CHIP),$(filter $(CHIP),maserati maxim M7821 M7621))
1351	@echo -e "\033[41;36m $(shell echo $(PROJ) |sed -e "s/\/build[/]*$$//g") \033[0m"
1352	@sh MXlibBk.sh $(shell echo $(PROJ) |sed -e "s/\/build[/]*$$//g")
1353	@cp $(PROJ)/MsVersion.h $(ROOTLIB)/include/MsVersion.h
1354endif
1355	@cp $(ROOTLIB)/include/UFO/UFO_$(CHIP).h $(ROOTLIB)/include/UFO.h
1356	@sed -i -e 's/#define UFO_PUBLIC_HEADER.*/#define UFO_PUBLIC_HEADER_700/g' $(PUBINC)/UFO.h
1357ifeq ($(STRUCT_PACK),y)
1358	@sed -i -e 's/#define DLL_PACKED.*/#define DLL_PACKED __attribute__((__packed__))/g' $(PUBINC)/MsTypes.h
1359else
1360	@sed -i -e 's/#define DLL_PACKED.*/#define DLL_PACKED/g' $(PUBINC)/MsTypes.h
1361endif
1362	-@mkdir -p $(OBJ_PATH) 2> /dev/null;
1363	-@mkdir -p $(BIN_PATH) 2> /dev/null;
1364	-@mkdir -p $(DDI_PATH) 2> /dev/null;
1365	@echo "Make $(CHIP) $(PROJNAME) library...";
1366	@date;
1367ifeq ($(MAKE_TYPE),lint)
1368	@rm -rf $(LINT_FILES)
1369	@rm -rf $(LINT_LOG)
1370endif
1371
1372
1373# Kernel Driver
1374# ## LKM2K, KERNELDIR, and EXTRA_CFLAGS were defined in utpa2k.mk
1375CFG_2K_DEFS = $(CFG_CC_DEFS)
1376
1377include $(PROJ)/utpa2k.mk
1378
1379EXTRA_CFLAGS += $(foreach dir, $(ALL_INC_DIR), -I$(dir))
1380EXTRA_CFLAGS += -I$(AUTOCONFIG)
1381ifeq ($(BLT_TYPE),debug)
1382EXTRA_CFLAGS    += -D'MS_DEBUG'
1383else
1384EXTRA_CFLAGS    += -D'MS_OPTIMIZE'
1385endif
1386utpa2k-srcs = $(foreach dir, $(LKM2K), $(wildcard $(dir)/*.c))
1387utpa2k-objs-tmp := $(patsubst %.c,%.o,$(utpa2k-srcs))
1388utpa2k-objs := $(subst $(PWD), , $(utpa2k-objs-tmp))
1389obj-m := utpa2k.o
1390#obj-m := hello.o
1391
1392EXTRA_CFLAGS += -D'SUPPORT_EVD=1'
1393EXTRA_CFLAGS += -D'SUPPORT_NEW_MEM_LAYOUT'
1394
1395kdrv:
1396	@cp $(ROOTLIB)/include/UFO/UFO_$(CHIP).h $(ROOTLIB)/include/UFO.h
1397	@sed -i -e 's/#define UFO_PUBLIC_HEADER.*/#define UFO_PUBLIC_HEADER_700/g' $(PUBINC)/UFO.h
1398ifeq ($(STRUCT_PACK),y)
1399	@sed -i -e 's/#define DLL_PACKED.*/#define DLL_PACKED __attribute__((__packed__))/g' $(PUBINC)/MsTypes.h
1400else
1401	@sed -i -e 's/#define DLL_PACKED.*/#define DLL_PACKED/g' $(PUBINC)/MsTypes.h
1402endif
1403	$(MAKE) -C $(KERNELDIR) M=$(PWD) modules EXTRA_CFLAGS="$(EXTRA_CFLAGS)"
1404
1405####lsy++
1406ifeq ($(ExportAllSymbol),y)
1407	@sh ./CreateKsym.sh
1408	$(MAKE) -s clean
1409	@cp $(ROOTLIB)/include/UFO/UFO_$(CHIP).h $(ROOTLIB)/include/UFO.h
1410	@sed -i -e 's/#define UFO_PUBLIC_HEADER.*/#define UFO_PUBLIC_HEADER_700/g' $(PUBINC)/UFO.h
1411	$(MAKE) -C $(KERNELDIR) M=$(PWD) modules EXTRA_CFLAGS="$(EXTRA_CFLAGS)"
1412endif
1413
1414# Project Clean
1415clean :
1416	@rm -f $(ROOTLIB)/include/UFO.h
1417	@$(foreach dir, $(MXLIB-y), $(MAKE) -s -C $(dir) clean;)
1418	@$(foreach dir, $(MXLIB-m), $(MAKE) -s -C $(dir) clean;)
1419	@rm -rf $(OBJ_PATH)
1420	@rm -rf $(BIN_PATH)
1421	@rm -rf $(DDI_PATH)
1422	@rm -rf $(PKG_DIR)/include/$(CHIP);
1423	@rm -rf $(PKG_DIR)/os;
1424	@rm -rf lint_files
1425	@rm -rf dxy_files
1426	@rm -rf bsp
1427	@rm -f *.tgz
1428	@rm -f dxy.*
1429	@find $(MODULESPATH) \
1430		\( -name '*.[os]' -o -name '*.ko' -o -name '.*.cmd' \
1431		-o -name '.*.d' -o -name '.*.tmp' -o -name '*.mod.c' \
1432		-o -name '*.symtypes' -o -name '*.symvers' -o -name 'modules.order' \
1433		-o -name 'Module.markers' -o -name '.tmp_*.o.*' \) \
1434		-type f -print | xargs rm -f
1435	@find . \
1436		\( -name 'utpa2k.ko' -o -name 'utpa2k.mod.c' \
1437		-o -name 'utpa2k.mod.o' -o -name 'utpa2k.o' \
1438		-o -name '.utpa2k.*' -o -name 'modules.order' -o -name 'Module.symvers' \) \
1439		-type f -print | xargs rm -f
1440	@rm -rf .tmp_versions
1441ifeq ($(PARA), 1)
1442	@rm -f $(PROJ)/cpptestscan.bdf
1443endif
1444	@echo "Clean $(CHIP) $(PROJNAME) library..."
1445
1446
1447# Project Dependence
1448depend :
1449	$(CC) $(CC_OPTS) $(CC_DEFS) $(CC_INCS) -M $(SRC_C_CHIP) $(SRC_C_ASM) $(SRC_C_LIB) > $(BIN_PATH)/depend.mk
1450
1451
1452# Project Dependence Full version
1453dep :
1454	$(CC) $(CC_OPTS) $(CC_DEFS) $(CC_INCS) -M $(SRC_C_CHIP) $(SRC_C_ASM) $(SRC_C_LIB) > $(BIN_PATH)/depend.mk
1455	cat $(BIN_PATH)/depend.mk | sed -e 's/\(.*\)\.o/\$$\(OBJ_PATH\)\/\1.o/g' > depend.mk
1456
1457
1458-include depend.mk
1459
1460# **********************************************
1461# Menuconfig
1462# **********************************************
1463PHONY += all
1464_all: all
1465
1466srctree		:= $(if $(KBUILD_SRC),$(KBUILD_SRC),$(PWD))
1467#src		:= $(srctree)
1468
1469export srctree objtree
1470
1471KCONFIG_CONFIG	?= .config
1472export KCONFIG_CONFIG
1473
1474# SHELL used by kbuild
1475CONFIG_SHELL := $(shell if [ -x "$$BASH" ]; then echo $$BASH; \
1476	  else if [ -x /bin/bash ]; then echo /bin/bash; \
1477	  else echo sh; fi ; fi)
1478
1479HOSTCC       = gcc
1480HOSTCXX      = g++
1481HOSTCFLAGS   = -Wall -Wmissing-prototypes -Wstrict-prototypes -Os -fomit-frame-pointer
1482HOSTCXXFLAGS = -Os
1483
1484# Beautify output
1485# ---------------------------------------------------------------------------
1486#
1487# Normally, we echo the whole command before executing it. By making
1488# that echo $($(quiet)$(cmd)), we now have the possibility to set
1489# $(quiet) to choose other forms of output instead, e.g.
1490#
1491#         quiet_cmd_cc_o_c = Compiling $(RELDIR)/$@
1492#         cmd_cc_o_c       = $(CC) $(c_flags) -c -o $@ $<
1493#
1494# If $(quiet) is empty, the whole command will be printed.
1495# If it is set to "quiet_", only the short version will be printed.
1496# If it is set to "silent_", nothing will be printed at all, since
1497# the variable $(silent_cmd_cc_o_c) doesn't exist.
1498#
1499# A simple variant is to prefix commands with $(Q) - that's useful
1500# for commands that shall be hidden in non-verbose mode.
1501#
1502#	$(Q)ln $@ :<
1503#
1504# If KBUILD_VERBOSE equals 0 then the above command will be hidden.
1505# If KBUILD_VERBOSE equals 1 then the above command is displayed.
1506
1507ifeq ($(KBUILD_VERBOSE),1)
1508  quiet =
1509  Q =
1510else
1511  quiet=quiet_
1512  Q = @
1513endif
1514
1515# If the user is running make -s (silent mode), suppress echoing of
1516# commands
1517
1518ifneq ($(findstring s,$(MAKEFLAGS)),)
1519  quiet=silent_
1520endif
1521
1522export quiet Q KBUILD_VERBOSE
1523
1524
1525# Look for make include files relative to root of kernel src
1526MAKEFLAGS += --include-dir=$(srctree)
1527
1528# We need some generic definitions (do not try to remake the file).
1529$(srctree)/scripts/Kbuild.include: ;
1530include $(srctree)/scripts/Kbuild.include
1531
1532# Make variables (CC, etc...)
1533
1534AWK		= awk
1535
1536export HOSTCC
1537
1538# ===========================================================================
1539# Rules shared between *config targets and build targets
1540
1541# Basic helpers built in scripts/
1542PHONY += scripts_basic
1543scripts_basic:
1544	$(Q)$(MAKE) $(build)=scripts/basic
1545	$(Q)rm -f .tmp_quiet_recordmcount
1546
1547# To avoid any implicit rule to kick in, define an empty command.
1548scripts/basic/%: scripts_basic ;
1549
1550PHONY += outputmakefile
1551# outputmakefile generates a Makefile in the output directory, if using a
1552# separate output directory. This allows convenient use of make in the
1553# output directory.
1554outputmakefile:
1555
1556
1557# To make sure we do not include .config for any of the *config targets
1558# catch them early, and hand them over to scripts/kconfig/Makefile
1559# It is allowed to specify more targets when calling make, including
1560# mixing *config targets and build targets.
1561# For example 'make oldconfig all'.
1562# Detect when mixed targets is specified, and make a second invocation
1563# of make so .config is not included in this case either (for *config).
1564
1565
1566config-targets := 0
1567mixed-targets  := 0
1568dot-config     := 1
1569
1570ifneq ($(filter $(no-dot-config-targets), $(MAKECMDGOALS)),)
1571	ifeq ($(filter-out $(no-dot-config-targets), $(MAKECMDGOALS)),)
1572		dot-config := 0
1573	endif
1574endif
1575
1576ifeq ($(KBUILD_EXTMOD),)
1577        ifneq ($(filter config %config,$(MAKECMDGOALS)),)
1578                config-targets := 1
1579                ifneq ($(filter-out config %config,$(MAKECMDGOALS)),)
1580                        mixed-targets := 1
1581                endif
1582        endif
1583endif
1584
1585ifeq ($(mixed-targets),1)
1586# ===========================================================================
1587# We're called with mixed targets (*config and build targets).
1588# Handle them one by one.
1589
1590%:: FORCE
1591	$(Q)$(MAKE) -C $(srctree) KBUILD_SRC= $@
1592
1593else
1594ifeq ($(config-targets),1)
1595# ===========================================================================
1596# *config targets only - make sure prerequisites are updated, and descend
1597# in scripts/kconfig to make the *config target
1598
1599# Read arch specific Makefile to set KBUILD_DEFCONFIG as needed.
1600# KBUILD_DEFCONFIG may point out an alternative default configuration
1601# used for 'make defconfig'
1602export KBUILD_DEFCONFIG KBUILD_KCONFIG
1603
1604config: scripts_basic outputmakefile FORCE
1605	$(Q)mkdir -p include/config
1606	$(Q)$(MAKE) $(build)=scripts/kconfig $@
1607
1608%config: scripts_basic outputmakefile FORCE
1609	$(Q)mkdir -p include/config
1610	$(Q)$(MAKE) $(build)=scripts/kconfig $@
1611
1612else
1613
1614
1615# Read in config
1616-include include/config/auto.conf
1617
1618# Read in dependencies to all Kconfig* files, make sure to run
1619# oldconfig if changes are detected.
1620-include include/config/auto.conf.cmd
1621
1622# To avoid any implicit rule to kick in, define an empty command
1623$(KCONFIG_CONFIG) include/config/auto.conf.cmd: ;
1624
1625# If .config is newer than include/config/auto.conf, someone tinkered
1626# with it and forgot to run make oldconfig.
1627# if auto.conf.cmd is missing then we are probably in a cleaned tree so
1628# we execute the config step to be sure to catch updated Kconfig files
1629include/config/%.conf: $(KCONFIG_CONFIG) include/config/auto.conf.cmd
1630	$(Q)$(MAKE) -f $(srctree)/Makefile silentoldconfig
1631
1632
1633endif #ifeq ($(config-targets),1)
1634endif #ifeq ($(mixed-targets),1)
1635
1636PHONY += checkstack kernelrelease kernelversion
1637
1638PHONY += FORCE
1639FORCE:
1640
1641# Declare the contents of the .PHONY variable as phony.  We keep that
1642# information in a variable so we can use it in if_changed and friends.
1643.PHONY: $(PHONY)
1644