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