Home | History | Annotate | Download | only in android
      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