################################################################################ # # Copyright (c) 2008-2009 MStar Semiconductor, Inc. # All rights reserved. # # Unless otherwise stipulated in writing, any and all information contained # herein regardless in any format shall remain the sole proprietary of # MStar Semiconductor Inc. and be kept in strict confidence # ("MStar Confidential Information") by the recipient. # Any unauthorized act including without limitation unauthorized disclosure, # copying, use, reproduction, sale, distribution, modification, disassembling, # reverse engineering and compiling of the contents of MStar Confidential # Information is unlawful and strictly prohibited. MStar hereby reserves the # rights to any and all damages, losses, costs and expenses resulting therefrom. # # # Makefile used for building application. # # ################################################################################ export unexport VPATH unexport SRCDIR_CHIP SRCDIR_LIB SRCDIR_SYS unexport OBJ_C_CHIP0 OBJ_C_ASM0 OBJ_C_LIB0 OBJ_C_SYS0 unexport LIB_INC # ********************************************** # Environment # ********************************************** PROJ = $(CURDIR) ROOT = $(PROJ)/../.. ROOTLIB = $(ROOT)/mxlib DDIAPI = $(ROOTLIB)/api DDIDRV = $(ROOTLIB)/drv DDIHAL = $(ROOTLIB)/hal PUBINC = $(ROOTLIB)/include export PUBINC # ********************************************** # Import configure file # Required: # $(ROOT), $(ROOTLIB) # ********************************************** -include config # ********************************************** # Project specific # ********************************************** # Base Operating System OS_BUILT = # ********************************************** # Directories # ********************************************** # Source files of specific chip in library SRCDIR_CHIP = \ $(ROOTLIB)/hal/$(CHIP) \ $(ROOTLIB)/hal/$(CHIP)/bdma \ $(ROOTLIB)/hal/$(CHIP)/sem \ $(ROOTLIB)/hal/$(CHIP)/mmio \ $(ROOTLIB)/hal/$(CHIP)/uart \ $(ROOTLIB)/hal/$(CHIP)/irq \ $(ROOTLIB)/hal/$(CHIP)/sys \ $(ROOTLIB)/hal/$(CHIP)/miu \ # Source files of library SRCDIR_LIB = \ $(ROOTLIB)/drv/bdma \ $(ROOTLIB)/drv/sem \ $(ROOTLIB)/drv/mmio \ $(ROOTLIB)/drv/mbx/$(OS_TYPE) \ $(ROOTLIB)/drv/uart \ $(ROOTLIB)/drv/irq \ $(ROOTLIB)/drv/sys \ $(ROOTLIB)/drv/miu \ SRCDIR_SYS = \ $(ROOTLIB)/msos/$(MCU_TYPE) \ $(ROOTLIB)/msos/$(OS_TYPE) \ $(ROOTLIB)/hal/$(CHIP)/msos/$(OS_TYPE) \ $(ROOTLIB)/msos/common \ $(ROOTLIB)/utopia_core/$(OS_TYPE) SRCDIR_FS = \ $(ROOTLIB)/msfs/$(OS_TYPE) \ # Header file of specific chip INCDIR_CHIP = \ $(ROOTLIB)/hal/$(CHIP) \ $(ROOTLIB)/hal/$(CHIP)/bdma \ $(ROOTLIB)/hal/$(CHIP)/sem \ $(ROOTLIB)/hal/$(CHIP)/mmio \ $(ROOTLIB)/hal/$(CHIP)/uart \ $(ROOTLIB)/hal/$(CHIP)/irq \ $(ROOTLIB)/hal/$(CHIP)/sys \ $(ROOTLIB)/hal/$(CHIP)/miu \ # Header file of inline assembly in library INCDIR_ASM = \ # Header files of library INCDIR_LIB = \ $(PROJ) \ $(ROOTLIB) \ $(ROOTLIB)/drv/bdma \ $(ROOTLIB)/drv/miu \ $(ROOTLIB)/drv/mbx \ $(ROOTLIB)/drv/mbx/$(OS_TYPE) \ $(ROOTLIB)/drv/sem \ $(ROOTLIB)/drv/mmio \ $(ROOTLIB)/drv/irq \ $(ROOTLIB)/drv/sys \ $(ROOTLIB)/drv/mmio \ $(ROOTLIB)/drv/uart \ $(ROOTLIB)/hal/$(CHIP) \ $(ROOTLIB)/msos \ $(ROOTLIB)/msos/$(OS_TYPE) \ $(ROOTLIB)/utopia_core/ \ $(ROOTLIB)/msfs \ $(ROOTLIB)/drv/audio \ $(ROOTLIB)/hal/$(CHIP)/msos/$(OS_TYPE) \ INCDIR_LIB_H = \ $(ROOTLIB)/drv/miu \ # FW binary files of library BINDIR_LIB = \ $(ROOTLIB)/hal/$(CHIP)/hvd \ $(ROOTLIB)/hal/$(CHIP)/mvd \ $(ROOTLIB)/hal/$(CHIP)/rvd \ $(ROOTLIB)/drv/$(CHIP)/rvd \ $(ROOTLIB)/hal/$(CHIP)/audsp \ $(ROOTLIB)/hal/$(CHIP)/tsp \ BIN_PATH = $(PROJ)/bin OBJ_PATH = $(PROJ)/obj BSPLIB_PATH = $(PROJ)/bsp/lib BSPINC_PATH = $(PROJ)/bsp/include BSPBIN_PATH = $(PROJ)/bsp/bin # Search source file path VPATH = $(SRCDIR_CHIP) $(SRCDIR_SYS) $(SRCDIR_FS) $(SRCDIR_ASM) $(SRCDIR_LIB) include $(ROOTLIB)/$(CHIP)_android.mk include $(ROOTLIB)/ddi.mk # ********************************************** # Image file names # ********************************************** IMAGE_BIN = $(BIN_PATH)/$(IMAGENAME).bin IMAGE_REC = $(BIN_PATH)/$(IMAGENAME).rec IMAGE_ELF = $(BIN_PATH)/$(IMAGENAME).elf IMAGE_MAP = $(BIN_PATH)/$(IMAGENAME).map IMAGE_DIS = $(BIN_PATH)/$(IMAGENAME).dis IMAGE_SIZ = $(BIN_PATH)/$(IMAGENAME).siz IMAGE_SYM = $(BIN_PATH)/$(IMAGENAME).sym # ********************************************** # Files to be compiled # ********************************************** SRC_C_CHIP = $(foreach dir, $(SRCDIR_CHIP), $(wildcard $(dir)/*.c)) SRC_C_ASM = $(foreach dir, $(SRCDIR_ASM), $(wildcard $(dir)/*.c)) SRC_C_LIB = $(foreach dir, $(SRCDIR_LIB), $(wildcard $(dir)/*.c)) SRC_C_SYS = $(foreach dir, $(SRCDIR_SYS), $(wildcard $(dir)/*.c)) SRC_C_FS = $(foreach dir, $(SRCDIR_FS), $(wildcard $(dir)/*.c)) OBJ_C_CHIP0 = $(notdir $(patsubst %.c, %.o, $(SRC_C_CHIP))) OBJ_C_ASM0 = $(notdir $(patsubst %.c, %.o, $(SRC_C_ASM) )) OBJ_C_LIB0 = $(notdir $(patsubst %.c, %.o, $(SRC_C_LIB) )) OBJ_C_SYS0 = $(notdir $(patsubst %.c, %.o, $(SRC_C_SYS) )) OBJ_C_FS0 = $(notdir $(patsubst %.c, %.o, $(SRC_C_FS) )) OBJ_C_CHIP = $(foreach file, $(OBJ_C_CHIP0), $(OBJ_PATH)/$(file)) OBJ_C_ASM = $(foreach file, $(OBJ_C_ASM0), $(OBJ_PATH)/$(file)) OBJ_C_LIB = $(foreach file, $(OBJ_C_LIB0), $(OBJ_PATH)/$(file)) OBJ_C_SYS = $(foreach file, $(OBJ_C_SYS0), $(OBJ_PATH)/$(file)) OBJ_C_FS = $(foreach file, $(OBJ_C_FS0), $(OBJ_PATH)/$(file)) # ********************************************** # Libraries # ********************************************** DDI_PATH = $(ROOT)/lib/$(CHIP)_$(OS_TYPE)/$(MCU_TYPE)_$(BLT_TYPE) # Standard Libraries Path # Middleware Libraries Path # Libraries DDI_LIB = $(DDI_PATH)/lib$(OS_TYPE).$(LIB_EXT) # Include files of output library LIB_INC = LIB_INC += $(foreach dir, $(INCDIR_LIB), $(wildcard $(dir)/asm*.h)) LIB_INC += $(foreach dir, $(INCDIR_LIB), $(wildcard $(dir)/api*.h)) LIB_INC += $(foreach dir, $(INCDIR_LIB), $(wildcard $(dir)/drv*.h)) LIB_INC += $(foreach dir, $(INCDIR_LIB), $(wildcard $(dir)/Ms*.h)) LIB_INC += $(foreach dir, $(INCDIR_LIB), $(wildcard $(dir)/regCHIP.h)) LIB_INC += $(foreach dir, $(INCDIR_LIB), $(wildcard $(dir)/$(CFG_BOARD).h)) LIB_INC += $(foreach dir, $(INCDIR_LIB), $(wildcard $(dir)/utopia.h)) LIB_INC += $(foreach dir, $(INCDIR_LIB), $(wildcard $(dir)/utopia_dapi.h)) LIB_INC += $(foreach dir, $(INCDIR_LIB), $(wildcard $(dir)/utopia_driver_id.h)) LIB_INC += $(foreach dir, $(MXLIB), $(wildcard $(dir)/api*.h)) LIB_INC += $(foreach dir, $(MXLIB), $(wildcard $(dir)/drv*.h)) # FW Binary files of output library LIB_FW_BIN = LIB_FW_BIN += $(foreach dir, $(BINDIR_LIB), $(wildcard $(dir)/fw*.bin)) LIB_FW_BIN += $(foreach dir, $(BINDIR_LIB), $(wildcard $(dir)/fw*.dat)) LIB_FW_BIN += $(foreach dir, $(BINDIR_LIB), $(wildcard $(dir)/out_*.bin)) LIB_FW_BIN += $(foreach dir, $(BINDIR_LIB), $(wildcard $(dir)/aucode_*.h)) # Public include files PUB_INC = PUB_INC += $(foreach dir, $(PUBINC), $(wildcard $(dir)/*.h)) # ********************************************** # Compiler and linker options # ********************************************** ANDROID_DIR = $(ANDROID_BUILD_TOP) OS_INC_DIR = $(ANDROID_DIR)/bionic/libc/arch-arm/include \ $(ANDROID_DIR)/bionic/libc/include \ $(ANDROID_DIR)/bionic/libstdc++/include \ $(ANDROID_DIR)/bionic/libc/kernel/common \ $(ANDROID_DIR)/bionic/libc/kernel/arch-arm \ $(ANDROID_DIR)/bionic/libm/include \ $(ANDROID_DIR)/bionic/libm/include/arch/arm \ $(ANDROID_DIR)/bionic/libthread_db/include \ $(ANDROID_DIR)/system/core/include OS_LIB_DIR = ALL_INC_DIR = $(INCDIR_ASM) $(INCDIR_CHIP) $(INCDIR_LIB) $(INCDIR_LIB_H) $(OS_INC_DIR) CC_INCS = $(foreach dir, $(ALL_INC_DIR), -I$(dir) -I$(PUBINC)) CC_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' # GCC options: CC_OPTS = $(CFG_CC_OPTS) -c #---------------------------------------------------------------- # thum mode support, but use arm mode to build. ARCH_ARM_HAVE_THUMB_SUPPORT := true LOCAL_ARM_MODE := arm # $(1): os/arch define select-android-config-h $(ANDROID_DIR)/build/core/combo/include/arch/$(1)/AndroidConfig.h endef arch_variant_cflags := -march=armv7-a \ -mfloat-abi=softfp \ -mfpu=neon arch_variant_ldflags := -Wl,--fix-cortex-a8 COMMON_GLOBAL_CFLAGS := -DANDROID -fmessage-length=0 -W -Wall -Wno-unused -Winit-self -Wpointer-arith COMMON_GLOBAL_CPPFLAGS := $(COMMON_GLOBAL_CFLAGS) -Wsign-promo COMMON_RELEASE_CFLAGS := -DNDEBUG -UDEBUG COMMON_RELEASE_CPPFLAGS := $(COMMON_RELEASE_CFLAGS) TARGET_ERROR_FLAGS := -Werror=return-type -Werror=non-virtual-dtor -Werror=address -Werror=sequence-point TARGET_GLOBAL_CFLAGS := -fno-exceptions -Wno-multichar TARGET_GLOBAL_CPPFLAGS := TARGET_RELEASE_CFLAGS := -O2 -g -fno-strict-aliasing TARGET_RELEASE_CPPFLAGS := #---------------------------------------------------------------- TARGET_arm_CFLAGS := -O2 \ -fomit-frame-pointer \ -fstrict-aliasing \ -funswitch-loops # Modules can choose to compile some source as thumb. As # non-thumb enabled targets are supported, this is treated # as a 'hint'. If thumb is not enabled, these files are just # compiled as ARM. ifeq ($(ARCH_ARM_HAVE_THUMB_SUPPORT),true) TARGET_thumb_CFLAGS := -mthumb \ -Os \ -fomit-frame-pointer \ -fno-strict-aliasing else TARGET_thumb_CFLAGS := $(TARGET_arm_CFLAGS) endif # Set FORCE_ARM_DEBUGGING to "true" in your buildspec.mk # or in your environment to force a full arm build, even for # files that are normally built as thumb; this can make # gdb debugging easier. Don't forget to do a clean build. # # NOTE: if you try to build a -O0 build with thumb, several # of the libraries (libpv, libwebcore, libkjs) need to be built # with -mlong-calls. When built at -O0, those libraries are # too big for a thumb "BL