forked from liqi-c/Tengine-lite
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMakefile
104 lines (69 loc) · 2.47 KB
/
Makefile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
MAKEFILE_CONFIG=$(shell pwd)/makefile.config
OP_CONFIG=$(shell pwd)/op.config
include $(MAKEFILE_CONFIG)
include $(OP_CONFIG)
ifneq ($(CROSS_COMPILE),)
SYSROOT_FLAGS:=--sysroot=$(SYSROOT)
SYSROOT_LDFLAGS:=-L/usr/lib/aarch64-linux-gnu -L/lib/aarch64-linux-gnu
PKG_CONFIG_PATH:=$(SYSROOT)/usr/lib/aarch64-linux-gnu/pkgconfig
export PKG_CONFIG_PATH
endif
CC=$(CROSS_COMPILE)gcc -std=gnu99 $(SYSROOT_FLAGS)
CXX=$(CROSS_COMPILE)g++ -std=c++11 $(SYSROOT_FLAGS)
LD=$(CROSS_COMPILE)g++ $(SYSROOT_FLAGS) $(SYSROOT_LDFLAGS)
BUILT_IN_LD=$(CROSS_COMPILE)ld
GIT_COMMIT_ID=$(shell git rev-parse HEAD)
COMMON_CFLAGS+=-Wno-ignored-attributes -Werror
COMMON_CFLAGS+=-I$(shell pwd)/include -g -Wall
GIT_COMMIT_ID=$(shell git rev-parse HEAD)
COMMON_CFLAGS+=-DGIT_COMMIT_ID=\"$(GIT_COMMIT_ID)\"
COMMON_CFLAGS+=-fPIC
export CC CXX CFLAGS BUILT_IN_LD LD LDFLAGS CXXFLAGS COMMON_CFLAGS
export GIT_COMMIT_ID
export MAKEFILE_CONFIG OP_CONFIG
MAKEBUILD=$(shell pwd)/scripts/makefile.build
BUILD_DIR?=$(shell pwd)/build
INSTALL_DIR?=$(shell pwd)/install
TOP_DIR=$(shell pwd)
export INSTALL_DIR MAKEBUILD TOP_DIR
APP_SUB_DIRS=tests
LIB_SUB_DIRS=src
LIB_SO=$(BUILD_DIR)/libtengine-lite.so
LIB_OBJS =$(addprefix $(BUILD_DIR)/, $(foreach f,$(LIB_SUB_DIRS),$(f)/built-in.o))
ifeq ($(CONFIG_UNIT_TEST),)
COMMON_CFLAGS+=-fvisibility=hidden
endif
ifeq ($(CONFIG_ARCH_ARM32),y)
export CONFIG_ARCH_ARM32
COMMON_CFLAGS+=-mfp16-format=ieee -mfpu=neon-fp16
endif
ifneq ($(CONFIG_OPT_CFLAGS),)
COMMON_CFLAGS+=-$(CONFIG_OPT_CFLAGS)
endif
ifeq ($(CONFIG_HCL_BACKEND),y)
export HCL_ROOT=$(shell pwd)/3rd/hcl
LIB_LDFLAGS+=-Wl,-rpath=$(HCL_ROOT)/lib -Wl,-rpath-link=$(HCL_ROOT)/lib -L$(HCL_ROOT)/lib -lhcl
endif
SUB_DIRS=$(LIB_SUB_DIRS) $(APP_SUB_DIRS)
default: $(LIB_SO) $(APP_SUB_DIRS)
build : default
ifneq ($(MAKECMDGOALS),clean)
$(APP_SUB_DIRS): $(LIB_SO)
endif
clean: $(SUB_DIRS)
install: $(APP_SUB_DIRS)
@mkdir -p $(INSTALL_DIR)/include $(INSTALL_DIR)/lib
Makefile : $(MAKEFILE_CONFIG) $(OP_CONFIG)
@touch Makefile
@$(MAKE) clean
$(LIB_OBJS): $(LIB_SUB_DIRS);
$(LIB_SO): $(LIB_OBJS)
$(CC) -o $@ -shared -Wl,-Bsymbolic -Wl,-Bsymbolic-functions $(LIB_OBJS) $(LIB_LDFLAGS) -lpthread
$(LIB_SUB_DIRS):
@$(MAKE) -C $@ -f $(MAKEBUILD) BUILD_DIR=$(BUILD_DIR)/$@ $(MAKECMDGOALS)
$(APP_SUB_DIRS):
@$(MAKE) -C $@ BUILD_DIR=$(BUILD_DIR)/$@ $(MAKECMDGOALS)
distclean:
find . -name $(BUILD_DIR) | xargs rm -rf
find . -name $(INSTALL_DIR) | xargs rm -rf
.PHONY: clean install $(SUB_DIRS) build