1EXEC = inv_devnode_parser$(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
25
26include $(INV_ROOT)/software/build/android/common.mk
27
28CFLAGS += $(CMDLINE_CFLAGS)
29CFLAGS += $(ANDROID_COMPILE)
30CFLAGS += -Wall
31ifeq ($(BUILD_ANDROID_LOLLIPOP),1)
32else
33CFLAGS += -fpic
34endif
35CFLAGS += -nostdlib
36CFLAGS += -DNDEBUG
37CFLAGS += -D_REENTRANT
38CFLAGS += -DLINUX
39CFLAGS += -DANDROID
40ifeq ($(ARCH),arm)
41CFLAGS += -mthumb-interwork
42endif
43CFLAGS += -fno-exceptions
44CFLAGS += -ffunction-sections
45CFLAGS += -funwind-tables
46CFLAGS += -fstack-protector
47CFLAGS += -fno-short-enums
48CFLAGS += -fmessage-length=0
49CFLAGS += -I$(MLLITE_DIR)
50CFLAGS += -I$(MPL_DIR)
51CFLAGS += $(INV_INCLUDES)
52CFLAGS += $(INV_DEFINES)
53
54LLINK  = -lc
55LLINK += -lm
56LLINK += -lutils
57LLINK += -lcutils
58LLINK += -lgcc
59LLINK += -ldl
60LLINK += -lstdc++
61LLINK += -llog
62LLINK += -lz
63
64LFLAGS += $(CMDLINE_LFLAGS)
65LFLAGS += $(ANDROID_LINK_EXECUTABLE)
66
67ifeq ($(ARCH),arm64)
68LRPATH  = -Wl,-rpath,$(ANDROID_ROOT)/out/target/product/$(PRODUCT)/obj/lib
69else
70LRPATH  = -Wl,-rpath,$(ANDROID_ROOT)/out/target/product/$(PRODUCT)/obj/lib:$(ANDROID_ROOT)/out/target/product/$(PRODUCT)/system/lib
71endif
72
73####################################################################################################
74## sources
75
76INV_LIBS = $(MLLITE_DIR)/build/$(TARGET)/$(LIB_PREFIX)$(MLLITE_LIB_NAME).$(SHARED_LIB_EXT)
77
78#INV_SOURCES and VPATH provided by Makefile.filelist
79include ../filelist.mk
80
81INV_OBJS := $(addsuffix .o,$(INV_SOURCES))
82INV_OBJS_DST = $(addprefix $(OBJFOLDER)/,$(addsuffix .o, $(notdir $(INV_SOURCES))))
83
84####################################################################################################
85## rules
86
87.PHONY: all clean cleanall install
88
89all: $(EXEC) $(MK_NAME)
90
91$(EXEC) : $(OBJFOLDER) $(INV_OBJS_DST) $(INV_LIBS) $(MK_NAME)
92	@$(call echo_in_colors, "\n<linking $(EXEC) with objects $(INV_OBJS_DST) $(PREBUILT_OBJS) and libraries $(INV_LIBS)\n")
93	$(LINK) $(INV_OBJS_DST) -o $(EXEC) $(LFLAGS) $(LLINK) $(INV_LIBS) $(LLINK) $(LRPATH)
94
95$(OBJFOLDER) :
96	@$(call echo_in_colors, "\n<creating object's folder 'obj/'>\n")
97	mkdir obj
98
99$(INV_OBJS_DST) : $(OBJFOLDER)/%.c.o : %.c  $(MK_NAME)
100	@$(call echo_in_colors, "\n<compile $< to $(OBJFOLDER)/$(notdir $@)>\n")
101	$(COMP) $(ANDROID_INCLUDES) $(KERNEL_INCLUDES) $(INV_INCLUDES) $(CFLAGS) -o $@ -c $<
102
103clean :
104	rm -fR $(OBJFOLDER)
105
106cleanall :
107	rm -fR $(EXEC) $(OBJFOLDER)
108
109install : $(EXEC)
110	cp -f $(EXEC) $(INSTALL_DIR)
111
112
113