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