1EXEC = inv_self_test$(SHARED_APP_SUFFIX) 2 3MK_NAME = $(notdir $(CURDIR)/$(firstword $(MAKEFILE_LIST))) 4 5# ANDROID version check 6BUILD_ANDROID_LOLLIPOP = $(shell test -d $(ANDROID_ROOT)/bionic/libc/kernel/uapi && echo 1) 7$(info YD>>BUILD_ANDROID_LOLLIPOP = $(BUILD_ANDROID_LOLLIPOP)) 8#ANDROID version check END 9 10ifeq ($(BUILD_ANDROID_LOLLIPOP),1) 11CFLAGS += -DANDROID_LOLLIPOP 12else 13CFLAGS += -DANDROID_KITKAT 14endif 15 16#--yd CROSS ?= $(ANDROID_ROOT)/prebuilt/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi- 17COMP ?= $(CROSS)gcc 18LINK ?= $(CROSS)gcc 19 20OBJFOLDER = $(CURDIR)/obj 21 22INV_ROOT = ../../../../.. 23APP_DIR = $(CURDIR)/../.. 24MLLITE_DIR = $(INV_ROOT)/software/core/mllite 25COMMON_DIR = $(INV_ROOT)/software/simple_apps/common 26MPL_DIR = $(INV_ROOT)/software/core/mpl 27HAL_DIR = $(INV_ROOT)/software/core/HAL 28 29include $(INV_ROOT)/software/build/android/common.mk 30 31CFLAGS += $(CMDLINE_CFLAGS) 32CFLAGS += $(ANDROID_COMPILE) 33CFLAGS += -Wall 34ifeq ($(BUILD_ANDROID_LOLLIPOP),1) 35else 36CFLAGS += -fpic 37endif 38CFLAGS += -nostdlib 39CFLAGS += -DNDEBUG 40CFLAGS += -D_REENTRANT 41CFLAGS += -DLINUX 42CFLAGS += -DANDROID 43ifeq ($(ARCH),arm) 44CFLAGS += -mthumb-interwork 45endif 46CFLAGS += -fno-exceptions 47CFLAGS += -ffunction-sections 48CFLAGS += -funwind-tables 49CFLAGS += -fstack-protector 50CFLAGS += -fno-short-enums 51CFLAGS += -fmessage-length=0 52CFLAGS += -I$(MLLITE_DIR) 53CFLAGS += -I$(MPL_DIR) 54CFLAGS += -I$(COMMON_DIR) 55CFLAGS += -I$(HAL_DIR)/include 56CFLAGS += $(INV_INCLUDES) 57CFLAGS += $(INV_DEFINES) 58 59LLINK = -lc 60LLINK += -lm 61LLINK += -lutils 62LLINK += -lcutils 63LLINK += -lgcc 64LLINK += -ldl 65LLINK += -lstdc++ 66LLINK += -llog 67LLINK += -lz 68 69LFLAGS += $(CMDLINE_LFLAGS) 70LFLAGS += $(ANDROID_LINK_EXECUTABLE) 71ifeq ($(ARCH),arm64) 72LRPATH = -Wl,-rpath,$(ANDROID_ROOT)/out/target/product/$(PRODUCT)/obj/lib 73else 74LRPATH = -Wl,-rpath,$(ANDROID_ROOT)/out/target/product/$(PRODUCT)/obj/lib:$(ANDROID_ROOT)/out/target/product/$(PRODUCT)/system/lib 75endif 76 77#################################################################################################### 78## sources 79 80INV_LIBS = $(MPL_DIR)/build/$(TARGET)/$(LIB_PREFIX)$(MPL_LIB_NAME).$(SHARED_LIB_EXT) 81INV_LIBS += $(MLLITE_DIR)/build/$(TARGET)/$(LIB_PREFIX)$(MLLITE_LIB_NAME).$(SHARED_LIB_EXT) 82 83#INV_SOURCES and VPATH provided by Makefile.filelist 84include ../filelist.mk 85 86INV_OBJS := $(addsuffix .o,$(INV_SOURCES)) 87INV_OBJS_DST = $(addprefix $(OBJFOLDER)/,$(addsuffix .o, $(notdir $(INV_SOURCES)))) 88 89#################################################################################################### 90## rules 91 92.PHONY: all clean cleanall install 93 94all: $(EXEC) $(MK_NAME) 95 96$(EXEC) : $(OBJFOLDER) $(INV_OBJS_DST) $(INV_LIBS) $(MK_NAME) 97 @$(call echo_in_colors, "\n<linking $(EXEC) with objects $(INV_OBJS_DST) $(PREBUILT_OBJS) and libraries $(INV_LIBS)\n") 98 $(LINK) $(INV_OBJS_DST) -o $(EXEC) $(LFLAGS) $(LLINK) $(INV_LIBS) $(LLINK) $(LRPATH) 99 100$(OBJFOLDER) : 101 @$(call echo_in_colors, "\n<creating object's folder 'obj/'>\n") 102 mkdir obj 103 104$(INV_OBJS_DST) : $(OBJFOLDER)/%.c.o : %.c $(MK_NAME) 105 @$(call echo_in_colors, "\n<compile $< to $(OBJFOLDER)/$(notdir $@)>\n") 106 $(COMP) $(ANDROID_INCLUDES) $(KERNEL_INCLUDES) $(INV_INCLUDES) $(CFLAGS) -o $@ -c $< 107 108clean : 109 rm -fR $(OBJFOLDER) 110 111cleanall : 112 rm -fR $(EXEC) $(OBJFOLDER) 113 114install : $(EXEC) 115 cp -f $(EXEC) $(INSTALL_DIR) 116 117 118