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