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