xref: /aosp_15_r20/hardware/invensense/6515/libsensors_iio/software/simple_apps/mpu_iio/build/android/shared.mk (revision 02424279a734a0cb64681cf11d5208a917662433)
1EXEC = inv_mpu_iio$(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
25MPL_DIR    = $(INV_ROOT)/software/core/mpl
26
27include $(INV_ROOT)/software/build/android/common.mk
28
29CFLAGS += $(CMDLINE_CFLAGS)
30CFLAGS += $(ANDROID_COMPILE)
31CFLAGS += -Wall
32ifeq ($(BUILD_ANDROID_LOLLIPOP),1)
33else
34CFLAGS += -fpic
35endif
36CFLAGS += -nostdlib
37CFLAGS += -DNDEBUG
38CFLAGS += -D_REENTRANT
39CFLAGS += -DLINUX
40CFLAGS += -DANDROID
41ifeq ($(ARCH),arm)
42CFLAGS += -mthumb-interwork
43endif
44CFLAGS += -fno-exceptions
45CFLAGS += -ffunction-sections
46CFLAGS += -funwind-tables
47CFLAGS += -fstack-protector
48CFLAGS += -fno-short-enums
49CFLAGS += -fmessage-length=0
50CFLAGS += -I$(MLLITE_DIR)
51CFLAGS += -I$(MPL_DIR)
52CFLAGS += $(INV_INCLUDES)
53CFLAGS += $(INV_DEFINES)
54#for arm64 --yd
55ifeq ($(ARCH),arm64)
56#--yd CFLAGS += -Bdynamic -pie
57endif
58
59LLINK  = -lc
60LLINK += -lm
61LLINK += -lutils
62LLINK += -lcutils
63LLINK += -lgcc
64LLINK += -ldl
65LLINK += -lstdc++
66LLINK += -llog
67LLINK += -lz
68ifeq ($(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
72endif
73
74LFLAGS += $(CMDLINE_LFLAGS)
75LFLAGS += $(ANDROID_LINK_EXECUTABLE)
76
77ifeq ($(ARCH),arm64)
78LRPATH  = -Wl,-rpath,$(ANDROID_ROOT)/out/target/product/$(PRODUCT)/obj/lib
79else
80LRPATH  = -Wl,-rpath,$(ANDROID_ROOT)/out/target/product/$(PRODUCT)/obj/lib:$(ANDROID_ROOT)/out/target/product/$(PRODUCT)/system/lib
81endif
82
83####################################################################################################
84## sources
85
86INV_LIBS  = $(MPL_DIR)/build/$(TARGET)/$(LIB_PREFIX)$(MPL_LIB_NAME).$(SHARED_LIB_EXT)
87INV_LIBS += $(MLLITE_DIR)/build/$(TARGET)/$(LIB_PREFIX)$(MLLITE_LIB_NAME).$(SHARED_LIB_EXT)
88
89#INV_SOURCES and VPATH provided by Makefile.filelist
90include ../filelist.mk
91
92INV_OBJS := $(addsuffix .o,$(INV_SOURCES))
93INV_OBJS_DST = $(addprefix $(OBJFOLDER)/,$(addsuffix .o, $(notdir $(INV_SOURCES))))
94
95####################################################################################################
96## rules
97
98.PHONY: all clean cleanall install
99
100all: $(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
114clean :
115	rm -fR $(OBJFOLDER)
116
117cleanall :
118	rm -fR $(EXEC) $(OBJFOLDER)
119
120install : $(EXEC)
121	cp -f $(EXEC) $(INSTALL_DIR)
122
123
124