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 26unexport OBJ_C_CHIP0 OBJ_C_ASM0 OBJ_C_LIB0 OBJ_C_SYS0 27unexport LIB_INC 28 29 30# ********************************************** 31# Environment 32# ********************************************** 33PROJ = $(CURDIR) 34ROOT = $(PROJ)/../.. 35ROOTLIB = $(ROOT)/mxlib 36DDIAPI = $(ROOTLIB)/api 37DDIDRV = $(ROOTLIB)/drv 38DDIHAL = $(ROOTLIB)/hal 39PUBINC = $(ROOTLIB)/include 40 41export PUBINC 42# ********************************************** 43# Import configure file 44# Required: 45# $(ROOT), $(ROOTLIB) 46# ********************************************** 47-include config 48 49 50# ********************************************** 51# Project specific 52# ********************************************** 53# Base Operating System 54OS_BUILT = 55 56 57# ********************************************** 58# Directories 59# ********************************************** 60# Source files of specific chip in library 61SRCDIR_CHIP = \ 62 $(ROOTLIB)/hal/$(CHIP) \ 63 $(ROOTLIB)/hal/$(CHIP)/bdma \ 64 $(ROOTLIB)/hal/$(CHIP)/sem \ 65 $(ROOTLIB)/hal/$(CHIP)/mmio \ 66 $(ROOTLIB)/hal/$(CHIP)/uart \ 67 $(ROOTLIB)/hal/$(CHIP)/irq \ 68 $(ROOTLIB)/hal/$(CHIP)/sys \ 69 $(ROOTLIB)/hal/$(CHIP)/miu \ 70 71# Source files of library 72SRCDIR_LIB = \ 73 $(ROOTLIB)/drv/bdma \ 74 $(ROOTLIB)/drv/sem \ 75 $(ROOTLIB)/drv/mmio \ 76 $(ROOTLIB)/drv/mbx/$(OS_TYPE) \ 77 $(ROOTLIB)/drv/uart \ 78 $(ROOTLIB)/drv/irq \ 79 $(ROOTLIB)/drv/sys \ 80 $(ROOTLIB)/drv/miu \ 81 82 83SRCDIR_SYS = \ 84 $(ROOTLIB)/msos/$(MCU_TYPE) \ 85 $(ROOTLIB)/msos/$(OS_TYPE) \ 86 $(ROOTLIB)/hal/$(CHIP)/msos/$(OS_TYPE) \ 87 $(ROOTLIB)/msos/common \ 88 $(ROOTLIB)/utopia_core/$(OS_TYPE) 89 90SRCDIR_FS = \ 91 $(ROOTLIB)/msfs/$(OS_TYPE) \ 92 93# Header file of specific chip 94INCDIR_CHIP = \ 95 $(ROOTLIB)/hal/$(CHIP) \ 96 $(ROOTLIB)/hal/$(CHIP)/bdma \ 97 $(ROOTLIB)/hal/$(CHIP)/sem \ 98 $(ROOTLIB)/hal/$(CHIP)/mmio \ 99 $(ROOTLIB)/hal/$(CHIP)/uart \ 100 $(ROOTLIB)/hal/$(CHIP)/irq \ 101 $(ROOTLIB)/hal/$(CHIP)/sys \ 102 $(ROOTLIB)/hal/$(CHIP)/miu \ 103 104# Header file of inline assembly in library 105INCDIR_ASM = \ 106 107# Header files of library 108INCDIR_LIB = \ 109 $(PROJ) \ 110 $(ROOTLIB) \ 111 $(ROOTLIB)/drv/bdma \ 112 $(ROOTLIB)/drv/miu \ 113 $(ROOTLIB)/drv/mbx \ 114 $(ROOTLIB)/drv/mbx/$(OS_TYPE) \ 115 $(ROOTLIB)/drv/sem \ 116 $(ROOTLIB)/drv/mmio \ 117 $(ROOTLIB)/drv/irq \ 118 $(ROOTLIB)/drv/sys \ 119 $(ROOTLIB)/drv/mmio \ 120 $(ROOTLIB)/drv/uart \ 121 $(ROOTLIB)/hal/$(CHIP) \ 122 $(ROOTLIB)/msos \ 123 $(ROOTLIB)/msos/$(OS_TYPE) \ 124 $(ROOTLIB)/utopia_core/ \ 125 $(ROOTLIB)/msfs \ 126 $(ROOTLIB)/drv/audio \ 127 $(ROOTLIB)/hal/$(CHIP)/msos/$(OS_TYPE) \ 128 129INCDIR_LIB_H = \ 130 $(ROOTLIB)/drv/miu \ 131 132# FW binary files of library 133BINDIR_LIB = \ 134 $(ROOTLIB)/hal/$(CHIP)/hvd \ 135 $(ROOTLIB)/hal/$(CHIP)/mvd \ 136 $(ROOTLIB)/hal/$(CHIP)/rvd \ 137 $(ROOTLIB)/drv/$(CHIP)/rvd \ 138 $(ROOTLIB)/hal/$(CHIP)/audsp \ 139 $(ROOTLIB)/hal/$(CHIP)/tsp \ 140 141BIN_PATH = $(PROJ)/bin 142OBJ_PATH = $(PROJ)/obj 143BSPLIB_PATH = $(PROJ)/bsp/lib 144BSPINC_PATH = $(PROJ)/bsp/include 145BSPBIN_PATH = $(PROJ)/bsp/bin 146 147 148# Search source file path 149VPATH = $(SRCDIR_CHIP) $(SRCDIR_SYS) $(SRCDIR_FS) $(SRCDIR_ASM) $(SRCDIR_LIB) 150 151include $(ROOTLIB)/$(CHIP)_android.mk 152include $(ROOTLIB)/ddi.mk 153 154 155# ********************************************** 156# Image file names 157# ********************************************** 158IMAGE_BIN = $(BIN_PATH)/$(IMAGENAME).bin 159IMAGE_REC = $(BIN_PATH)/$(IMAGENAME).rec 160IMAGE_ELF = $(BIN_PATH)/$(IMAGENAME).elf 161IMAGE_MAP = $(BIN_PATH)/$(IMAGENAME).map 162IMAGE_DIS = $(BIN_PATH)/$(IMAGENAME).dis 163IMAGE_SIZ = $(BIN_PATH)/$(IMAGENAME).siz 164IMAGE_SYM = $(BIN_PATH)/$(IMAGENAME).sym 165 166 167# ********************************************** 168# Files to be compiled 169# ********************************************** 170SRC_C_CHIP = $(foreach dir, $(SRCDIR_CHIP), $(wildcard $(dir)/*.c)) 171SRC_C_ASM = $(foreach dir, $(SRCDIR_ASM), $(wildcard $(dir)/*.c)) 172SRC_C_LIB = $(foreach dir, $(SRCDIR_LIB), $(wildcard $(dir)/*.c)) 173SRC_C_SYS = $(foreach dir, $(SRCDIR_SYS), $(wildcard $(dir)/*.c)) 174SRC_C_FS = $(foreach dir, $(SRCDIR_FS), $(wildcard $(dir)/*.c)) 175 176OBJ_C_CHIP0 = $(notdir $(patsubst %.c, %.o, $(SRC_C_CHIP))) 177OBJ_C_ASM0 = $(notdir $(patsubst %.c, %.o, $(SRC_C_ASM) )) 178OBJ_C_LIB0 = $(notdir $(patsubst %.c, %.o, $(SRC_C_LIB) )) 179OBJ_C_SYS0 = $(notdir $(patsubst %.c, %.o, $(SRC_C_SYS) )) 180OBJ_C_FS0 = $(notdir $(patsubst %.c, %.o, $(SRC_C_FS) )) 181OBJ_C_CHIP = $(foreach file, $(OBJ_C_CHIP0), $(OBJ_PATH)/$(file)) 182OBJ_C_ASM = $(foreach file, $(OBJ_C_ASM0), $(OBJ_PATH)/$(file)) 183OBJ_C_LIB = $(foreach file, $(OBJ_C_LIB0), $(OBJ_PATH)/$(file)) 184OBJ_C_SYS = $(foreach file, $(OBJ_C_SYS0), $(OBJ_PATH)/$(file)) 185OBJ_C_FS = $(foreach file, $(OBJ_C_FS0), $(OBJ_PATH)/$(file)) 186 187 188# ********************************************** 189# Libraries 190# ********************************************** 191 192DDI_PATH = $(ROOT)/lib/$(CHIP)_$(OS_TYPE)/$(MCU_TYPE)_$(BLT_TYPE) 193 194 195# Standard Libraries Path 196 197 198# Middleware Libraries Path 199 200 201# Libraries 202DDI_LIB = $(DDI_PATH)/lib$(OS_TYPE).$(LIB_EXT) 203 204# Include files of output library 205LIB_INC = 206LIB_INC += $(foreach dir, $(INCDIR_LIB), $(wildcard $(dir)/asm*.h)) 207LIB_INC += $(foreach dir, $(INCDIR_LIB), $(wildcard $(dir)/api*.h)) 208LIB_INC += $(foreach dir, $(INCDIR_LIB), $(wildcard $(dir)/drv*.h)) 209LIB_INC += $(foreach dir, $(INCDIR_LIB), $(wildcard $(dir)/Ms*.h)) 210LIB_INC += $(foreach dir, $(INCDIR_LIB), $(wildcard $(dir)/regCHIP.h)) 211LIB_INC += $(foreach dir, $(INCDIR_LIB), $(wildcard $(dir)/$(CFG_BOARD).h)) 212LIB_INC += $(foreach dir, $(INCDIR_LIB), $(wildcard $(dir)/utopia.h)) 213LIB_INC += $(foreach dir, $(INCDIR_LIB), $(wildcard $(dir)/utopia_dapi.h)) 214LIB_INC += $(foreach dir, $(INCDIR_LIB), $(wildcard $(dir)/utopia_driver_id.h)) 215 216LIB_INC += $(foreach dir, $(MXLIB), $(wildcard $(dir)/api*.h)) 217LIB_INC += $(foreach dir, $(MXLIB), $(wildcard $(dir)/drv*.h)) 218 219# FW Binary files of output library 220LIB_FW_BIN = 221LIB_FW_BIN += $(foreach dir, $(BINDIR_LIB), $(wildcard $(dir)/fw*.bin)) 222LIB_FW_BIN += $(foreach dir, $(BINDIR_LIB), $(wildcard $(dir)/fw*.dat)) 223LIB_FW_BIN += $(foreach dir, $(BINDIR_LIB), $(wildcard $(dir)/out_*.bin)) 224LIB_FW_BIN += $(foreach dir, $(BINDIR_LIB), $(wildcard $(dir)/aucode_*.h)) 225 226# Public include files 227PUB_INC = 228PUB_INC += $(foreach dir, $(PUBINC), $(wildcard $(dir)/*.h)) 229 230# ********************************************** 231# Compiler and linker options 232# ********************************************** 233ANDROID_DIR = $(ANDROID_BUILD_TOP) 234OS_INC_DIR = $(ANDROID_DIR)/bionic/libc/arch-arm/include \ 235 $(ANDROID_DIR)/bionic/libc/include \ 236 $(ANDROID_DIR)/bionic/libstdc++/include \ 237 $(ANDROID_DIR)/bionic/libc/kernel/common \ 238 $(ANDROID_DIR)/bionic/libc/kernel/arch-arm \ 239 $(ANDROID_DIR)/bionic/libm/include \ 240 $(ANDROID_DIR)/bionic/libm/include/arch/arm \ 241 $(ANDROID_DIR)/bionic/libthread_db/include \ 242 $(ANDROID_DIR)/system/core/include 243OS_LIB_DIR = 244 245 246ALL_INC_DIR = $(INCDIR_ASM) $(INCDIR_CHIP) $(INCDIR_LIB) $(INCDIR_LIB_H) $(OS_INC_DIR) 247 248CC_INCS = $(foreach dir, $(ALL_INC_DIR), -I$(dir) -I$(PUBINC)) 249 250CC_DEFS = $(CFG_CC_DEFS) -D'OS_LINUX' -D'LIB_NAME="$(IMAGENAME).lib"' -D'PWS_AUTOGEN' -D'SK_RELEASE' -D'MS_OPTIMIZE' -D'ANDROID' -D'TV_OS' -D'CONFIG_MAXIM' 251 252# GCC options: 253CC_OPTS = $(CFG_CC_OPTS) -c 254 255#---------------------------------------------------------------- 256# thum mode support, but use arm mode to build. 257ARCH_ARM_HAVE_THUMB_SUPPORT := true 258LOCAL_ARM_MODE := arm 259 260# $(1): os/arch 261define select-android-config-h 262$(ANDROID_DIR)/build/core/combo/include/arch/$(1)/AndroidConfig.h 263endef 264 265arch_variant_cflags := -march=armv7-a \ 266 -mfloat-abi=softfp \ 267 -mfpu=neon 268 269arch_variant_ldflags := -Wl,--fix-cortex-a8 270 271COMMON_GLOBAL_CFLAGS := -DANDROID -fmessage-length=0 -W -Wall -Wno-unused -Winit-self -Wpointer-arith 272COMMON_GLOBAL_CPPFLAGS := $(COMMON_GLOBAL_CFLAGS) -Wsign-promo 273COMMON_RELEASE_CFLAGS := -DNDEBUG -UDEBUG 274COMMON_RELEASE_CPPFLAGS := $(COMMON_RELEASE_CFLAGS) 275 276TARGET_ERROR_FLAGS := -Werror=return-type -Werror=non-virtual-dtor -Werror=address -Werror=sequence-point 277TARGET_GLOBAL_CFLAGS := -fno-exceptions -Wno-multichar 278TARGET_GLOBAL_CPPFLAGS := 279TARGET_RELEASE_CFLAGS := -O2 -g -fno-strict-aliasing 280TARGET_RELEASE_CPPFLAGS := 281 282#---------------------------------------------------------------- 283TARGET_arm_CFLAGS := -O2 \ 284 -fomit-frame-pointer \ 285 -fstrict-aliasing \ 286 -funswitch-loops 287 288# Modules can choose to compile some source as thumb. As 289# non-thumb enabled targets are supported, this is treated 290# as a 'hint'. If thumb is not enabled, these files are just 291# compiled as ARM. 292ifeq ($(ARCH_ARM_HAVE_THUMB_SUPPORT),true) 293TARGET_thumb_CFLAGS := -mthumb \ 294 -Os \ 295 -fomit-frame-pointer \ 296 -fno-strict-aliasing 297else 298TARGET_thumb_CFLAGS := $(TARGET_arm_CFLAGS) 299endif 300 301# Set FORCE_ARM_DEBUGGING to "true" in your buildspec.mk 302# or in your environment to force a full arm build, even for 303# files that are normally built as thumb; this can make 304# gdb debugging easier. Don't forget to do a clean build. 305# 306# NOTE: if you try to build a -O0 build with thumb, several 307# of the libraries (libpv, libwebcore, libkjs) need to be built 308# with -mlong-calls. When built at -O0, those libraries are 309# too big for a thumb "BL <label>" to go from one end to the other. 310ifeq ($(FORCE_ARM_DEBUGGING),true) 311 TARGET_arm_CFLAGS += -fno-omit-frame-pointer -fno-strict-aliasing 312 TARGET_thumb_CFLAGS += -marm -fno-omit-frame-pointer 313endif 314 315ifeq ($(strip $(LOCAL_ARM_MODE)),) 316 TARGET_ARCH_CFLAGS := $(TARGET_thumb_CFLAGS) 317else 318 TARGET_ARCH_CFLAGS := $(TARGET_arm_CFLAGS) 319endif 320 321TARGET_GLOBAL_CFLAGS += \ 322 -msoft-float -fpic -fPIE \ 323 -ffunction-sections \ 324 -fdata-sections \ 325 -funwind-tables \ 326 -fstack-protector \ 327 -Wa,--noexecstack \ 328 -Werror=format-security \ 329 -D_FORTIFY_SOURCE=1 \ 330 -fno-short-enums \ 331 $(arch_variant_cflags) 332 333android_config_h := $(call select-android-config-h,linux-arm) 334TARGET_ANDROID_CONFIG_CFLAGS := -include $(android_config_h) -I $(dir $(android_config_h)) 335TARGET_GLOBAL_CFLAGS += $(TARGET_ANDROID_CONFIG_CFLAGS) 336 337# This warning causes dalvik not to build with gcc 4.6.x and -Werror. 338# We cannot turn it off blindly since the option is not available 339# in gcc-4.4.x. We also want to disable sincos optimization globally 340# by turning off the builtin sin function. 341ifneq ($(filter 4.6 4.6.%, $(shell $(CC) --version)),) 342TARGET_GLOBAL_CFLAGS += -Wno-unused-but-set-variable -fno-builtin-sin \ 343 -fno-strict-volatile-bitfields 344endif 345 346# This is to avoid the dreaded warning compiler message: 347# note: the mangling of 'va_list' has changed in GCC 4.4 348# 349# The fact that the mangling changed does not affect the NDK ABI 350# very fortunately (since none of the exposed APIs used va_list 351# in their exported C++ functions). Also, GCC 4.5 has already 352# removed the warning from the compiler. 353# 354TARGET_GLOBAL_CFLAGS += -Wno-psabi 355 356# We only need thumb interworking in cases where thumb support 357# is available in the architecture, and just to be sure, (and 358# since sometimes thumb-interwork appears to be default), we 359# specifically disable when thumb support is unavailable. 360ifeq ($(ARCH_ARM_HAVE_THUMB_SUPPORT),true) 361TARGET_GLOBAL_CFLAGS += -mthumb-interwork 362else 363TARGET_GLOBAL_CFLAGS += -mno-thumb-interwork 364endif 365 366TARGET_GLOBAL_CPPFLAGS += -fvisibility-inlines-hidden 367 368# More flags/options can be added here 369TARGET_RELEASE_CFLAGS := \ 370 -DNDEBUG \ 371 -g \ 372 -Wstrict-aliasing=2 \ 373 -fgcse-after-reload \ 374 -frerun-cse-after-loop \ 375 -frename-registers 376 377 378TARGET_GLOBAL_CFLAGS += $(COMMON_GLOBAL_CFLAGS) 379TARGET_GLOBAL_CPPFLAGS += $(COMMON_GLOBAL_CPPFLAGS) 380TARGET_RELEASE_CFLAGS += $(COMMON_RELEASE_CFLAGS) 381TARGET_RELEASE_CPPFLAGS += $(COMMON_RELEASE_CPPFLAGS) 382 383TARGET_GLOBAL_CFLAGS += $(TARGET_ERROR_FLAGS) $(TARGET_RELEASE_CFLAGS) $(TARGET_ARCH_CFLAGS) 384TARGET_GLOBAL_CPPFLAGS += $(TARGET_ERROR_FLAGS) $(TARGET_RELEASE_CPPFLAGS) $(TARGET_ARCH_CFLAGS) 385 386#---------------------------------------------------------------- 387CC_OPTS += $(TARGET_GLOBAL_CFLAGS) 388 389# AS options: 390AS_OPTS = $(CFG_AS_OPTS) -G0 -O2 391 392 393# LD options: 394LD_SCRIPT = 395LD_LIBS = -L$(DDI_PATH) -L$(OS_LIB_DIR) -L$(CFG_STDLIB_DIR) -T$(LD_SCRIPT) 396LD_OPTS = $(CFG_LD_OPTS) 397 398TARGET_GLOBAL_LDFLAGS += \ 399 -Wl,-z,noexecstack \ 400 -Wl,-z,relro \ 401 -Wl,-z,now \ 402 -Wl,--warn-shared-textrel \ 403 -Wl,--icf=safe \ 404 $(arch_variant_ldflags) 405 406LD_OPTS += $(TARGET_GLOBAL_LDFLAGS) 407 408 409# ********************************************** 410# C Helper Utilities 411# ********************************************** 412# Generate relative path for Doxygen 413DXY_SRC = $(subst $(PROJ)/,,$(LIB_INC) $(SRC_C_LIB) $(SRCDIR_SYS)) 414DXY_SRC += $(subst $(PROJ)/,,$(foreach dir,$(MXLIB),$(wildcard $(dir)/*.c))) 415 416# Generate options list for Lint 417ifeq ($(shell uname -o),Cygwin) #TODO: revise cygwin related 418LINT_LOG = $(shell cygpath -m $(CURDIR)/lint_test.log) 419LINT_FILES = $(shell cygpath -m $(CURDIR)/lint_files.lnt) 420LINT_INC = $(foreach dir,$(shell cygpath -m $(ALL_INC_DIR)),-i"$(dir)") -i"$(shell cygpath -m $(CFG_LINT))" 421else 422LINT_LOG = $(CURDIR)/lint_test.log 423LINT_FILES = $(CURDIR)/lint_files.lnt 424LINT_INC = $(foreach dir,$(ALL_INC_DIR),-i"$(dir)") -i"$(CFG_LINT)" 425LINT_INC += -i"$(CURDIR)/../../tools/lint/aeon_include" 426LINT_INC += -i"$(CURDIR)/../../tools/lint/mips-linux-gnu_include" 427LINT_INC += -i"$(CURDIR)/../../tools/lint/mips-sde-elf_include" 428endif 429 430 431# ********************************************** 432# Rules 433# ********************************************** 434.PHONY : all setup clean bsp depend docgen $(MXLIB) 435 436 437# Project Build 438all : setup $(MXLIB) syslib 439 440# Library Package 441bsp : 442 @rm -f -r $(BSPLIB_PATH) 443 @rm -f -r $(BSPINC_PATH) 444 @rm -f -r $(BSPBIN_PATH) 445 -@mkdir -p $(BSPLIB_PATH) 2> /dev/null; 446 -@mkdir -p $(BSPINC_PATH) 2> /dev/null; 447 -@mkdir -p $(BSPBIN_PATH) 2> /dev/null; 448 @cp $(DDI_PATH)/*.$(LIB_EXT) $(BSPLIB_PATH) 449 @cp $(LIB_INC) $(BSPINC_PATH) 450 @cp $(PUB_INC) $(BSPINC_PATH) 451 @cp $(LIB_FW_BIN) $(BSPBIN_PATH) 452 @$(AR) crsP $(BSPLIB_PATH)/libutopia.a $(OBJ_PATH)/* 453 @echo "Make $(CHIP) $(PROJNAME) board support package..."; 454 455# Library Document Auto Generation 456docgen : 457 rm -f -r dxy_files; 458 -mkdir -p dxy_files 2> /dev/null; 459 @echo 'INPUT += \ ' > dxy.infile; 460 @echo $(DXY_SRC) >> dxy.infile; 461 doxygen $(IMAGENAME).dxyfile; 462# rm -f dxy.infile; 463# @echo DXY_SRC = $(DXY_SRC) 464 465 466# Project Lint Report 467lint : 468 @echo "Generate $(CHIP) $(PROJNAME) lint report $(LINT_LOG)..."; 469 @echo `grep 'Error' $(LINT_LOG) | wc -l` LINT Errors 470 471 472# Project Library Build 473SYS_MSG : 474 @echo [Makefile][$(notdir $(DDI_LIB))] 475 476SYS_LIB : $(OBJ_C_CHIP) $(OBJ_C_SYS) $(OBJ_C_ASM) $(OBJ_C_LIB) 477#Add section :MsOS 478 @$(OBJCOPY) --add-section .mmodule_version=$(ROOTLIB)/msos/version_info $(dir $<)MsOS_$(OS_TYPE).o 479ifneq ($(MAKE_TYPE),lint) 480ifeq ($(LINK_TYPE),dynamic) 481 @$(CC) $(CFG_CC_OPTS) $(LD_OPTS) -o $(DDI_LIB) $^; 482else 483 @$(AR) crsP $(DDI_LIB) $^; 484endif 485endif 486 @date; 487 488syslib : SYS_MSG SYS_LIB 489 490$(MXLIB) : 491 @echo [$(CHIP)_android.mk][$(notdir $@)] 492 @$(MAKE) -s -C $@ lib 493ifeq ($(PARA), 1) 494 @if [ ! -f $@/cpptestscan.bdf ]; then \ 495 echo ERROR! No $@/cpptestscan.bdf; \ 496 fi 497 @if [ -f $@/cpptestscan.bdf ]; then \ 498 cat $@/cpptestscan.bdf >> $(PROJ)/cpptestscan.bdf; \ 499 rm $@/cpptestscan.bdf; \ 500 fi 501endif 502 503# Project Source Build 504$(OBJ_C_CHIP) $(OBJ_C_ASM) $(OBJ_C_SYS) : $(OBJ_PATH)/%.o : %.c 505ifneq ($(MAKE_TYPE),lint) 506 @echo [CC] $(notdir $@) 507 @$(CC) $(CC_OPTS) $(CC_DEFS) $(CC_INCS) -o $@ $<; 508else 509 @echo [LINT] $(notdir $<) 510ifeq ($(shell uname -o),Cygwin) 511 @$(LINT_CMD) $(CC_DEFS) $(LINT_INC) $(shell cygpath -m $<) >>$(LINT_LOG) 512 @echo $< >>$(LINT_FILES) 513else 514 @$(LINT_CMD) $(CC_DEFS) $(LINT_INC) $< >>$(LINT_LOG) 515 @echo $< >>$(LINT_FILES) 516endif 517endif 518 519# @$(AR) -cru $(DDI_LIB) $@; 520 521$(OBJ_C_LIB) $(OBJ_C_FS): $(OBJ_PATH)/%.o : %.c 522ifneq ($(MAKE_TYPE),lint) 523 @$(CC) $(CC_OPTS) $(CC_DEFS) $(CC_INCS) -o $@ $<; 524else 525 echo [LINT] $(notdir $<) 526ifeq ($(shell uname -o),Cygwin) 527 @$(LINT_CMD) $(CC_DEFS) $(LINT_INC) $(shell cygpath -m $<) >>$(LINT_LOG) 528 echo $< >>$(LINT_FILES) 529else 530 @$(LINT_CMD) $(CC_DEFS) $(LINT_INC) $< >>$(LINT_LOG) 531 echo $< >>$(LINT_FILES) 532endif 533endif 534#ifeq ($(OS_TYPE),$(notdir $(<D))) 535 @$(OBJCOPY) --add-section .mmodule_version=$(subst /$(OS_TYPE),,$(dir $<D))version_info $@ 536 537# Single Driver Build 538$(DRV_DIR): setup 539 @echo [ddi.mk] $@ 540 @$(MAKE) -s -C $(DDIDRV)/$@ clean lib 541 542$(API_DIR): setup 543 @echo [ddi.mk] $@ 544 @$(MAKE) -s -C $(DDIAPI)/$@ clean lib 545 546msos_setup: setup 547 @echo [Makefile][libMsOS.$(LIB_EXT)] 548 @if [ -f $(OBJ_PATH)/MsOS_$(OS_TYPE).o ];\ 549 then\ 550 rm $(OBJ_PATH)/MsOS_$(OS_TYPE).o;\ 551 fi 552 553msos: msos_setup $(DDI_PATH)/libMsOS.$(LIB_EXT) 554ifneq ($(MAKE_TYPE),lint) 555ifeq ($(LINK_TYPE),dynamic) 556 @$(CC) $(CFG_CC_OPTS) $(LD_OPTS) -o $(DDI_PATH)/libMsOS.$(LIB_EXT) $(OBJ_C_SYS); 557 @$(OBJCOPY) --add-section .mmodule_version=$(ROOTLIB)/msos/version_info $(DDI_PATH)/libMsOS.$(LIB_EXT) 558else 559 @$(AR) crsP $(DDI_PATH)/libMsOS.$(LIB_EXT) $(OBJ_C_SYS); 560endif 561endif 562 563$(DDI_PATH)/libMsOS.$(LIB_EXT) : $(OBJ_C_SYS) 564 565 566msfs_setup: setup 567 @echo [Makefile][libMsFS.$(LIB_EXT)] 568 569msfs: msfs_setup $(DDI_PATH)/libMsFS.$(LIB_EXT) 570ifneq ($(MAKE_TYPE),lint) 571ifeq ($(LINK_TYPE),dynamic) 572 @$(CC) $(CFG_CC_OPTS) $(LD_OPTS) -o $(DDI_PATH)/libMsFS.$(LIB_EXT) $(OBJ_C_FS); 573else 574 @$(AR) crsP $(DDI_PATH)/libMsFS.$(LIB_EXT) $(OBJ_C_FS); 575endif 576endif 577 578$(DDI_PATH)/libMsFS.$(LIB_EXT) : $(OBJ_C_FS) 579 580# Project Setup 581setup : 582 -@mkdir -p $(OBJ_PATH) 2> /dev/null; 583 -@mkdir -p $(BIN_PATH) 2> /dev/null; 584 -@mkdir -p $(DDI_PATH) 2> /dev/null; 585 @echo "Make $(CHIP) $(PROJNAME) library..."; 586 @date; 587ifeq ($(MAKE_TYPE),lint) 588 @rm -rf $(LINT_FILES) 589 @rm -rf $(LINT_LOG) 590endif 591 592 593# Project Clean 594clean : 595 @$(foreach dir, $(MXLIB), $(MAKE) -s -C $(dir) clean;) 596 @rm -rf $(OBJ_PATH) 597 @rm -rf $(BIN_PATH) 598 @rm -rf $(DDI_PATH) 599 @rm -rf $(PKG_DIR)/include/$(CHIP); 600 @rm -rf $(PKG_DIR)/os; 601 @rm -rf lint_files 602 @rm -rf dxy_files 603 @rm -rf bsp 604 @rm -f *.tgz 605 @rm -f dxy.* 606ifeq ($(PARA), 1) 607 @rm -f $(PROJ)/cpptestscan.bdf 608endif 609 @echo "Clean $(CHIP) $(PROJNAME) library..." 610 611 612# Project Dependence 613depend : 614 $(CC) $(CC_OPTS) $(CC_DEFS) $(CC_INCS) -M $(SRC_C_CHIP) $(SRC_C_ASM) $(SRC_C_LIB) > $(BIN_PATH)/depend.mk 615 616 617# Project Dependence Full version 618dep : 619 $(CC) $(CC_OPTS) $(CC_DEFS) $(CC_INCS) -M $(SRC_C_CHIP) $(SRC_C_ASM) $(SRC_C_LIB) > $(BIN_PATH)/depend.mk 620 cat $(BIN_PATH)/depend.mk | sed -e 's/\(.*\)\.o/\$$\(OBJ_PATH\)\/\1.o/g' > depend.mk 621 622 623-include depend.mk 624