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