1+ NAME = linux-impulse-runner
2+
13EI_SDK? =edge-impulse-sdk
24PYTHON_CROSS_PATH? =
35
@@ -11,196 +13,54 @@ CFLAGS += -Itflite-model
1113CFLAGS += -Ithird_party/
1214CFLAGS += -Iutils/
1315CFLAGS += -Os
14- CFLAGS += -DNDEBUG
15- CFLAGS += -DSILENCE_EI_CLASSFIER_OBJECT_DETECTION_COUNT_WARNING=1
16+ CFLAGS += -DNDEBUG -DINCBIN_SILENCE_BITCODE_WARNING -DSILENCE_EI_CLASSFIER_OBJECT_DETECTION_COUNT_WARNING=1
1617CFLAGS += -g
1718ifeq (${CC}, clang)
18- CFLAGS += -Wno-asm-operand-widths
19+ CFLAGS += -Wno-asm-operand-widths
1920endif
2021CXXFLAGS += -std=c++17
2122LDFLAGS += -lm -lstdc++
23+ # tflite version may be overridden by included mk files, but default to 2.19.0
24+ TFLITE_VERSION = 2.19.0
25+
26+ CSOURCES = $(wildcard edge-impulse-sdk/CMSIS/DSP/Source/TransformFunctions/* .c) \
27+ $(wildcard edge-impulse-sdk/CMSIS/DSP/Source/CommonTables/* .c) \
28+ $(wildcard edge-impulse-sdk/CMSIS/DSP/Source/BasicMathFunctions/* .c) \
29+ $(wildcard edge-impulse-sdk/CMSIS/DSP/Source/ComplexMathFunctions/* .c) \
30+ $(wildcard edge-impulse-sdk/CMSIS/DSP/Source/FastMathFunctions/* .c) \
31+ $(wildcard edge-impulse-sdk/CMSIS/DSP/Source/SupportFunctions/* .c) \
32+ $(wildcard edge-impulse-sdk/CMSIS/DSP/Source/MatrixFunctions/* .c) \
33+ $(wildcard edge-impulse-sdk/CMSIS/DSP/Source/StatisticsFunctions/* .c)
34+
35+ CXXSOURCES = $(wildcard source/* .cpp) \
36+ $(wildcard tflite-model/* .cpp) \
37+ $(wildcard edge-impulse-sdk/dsp/kissfft/* .cpp) \
38+ $(wildcard edge-impulse-sdk/dsp/dct/* .cpp) \
39+ $(wildcard ./edge-impulse-sdk/dsp/memory.cpp) \
40+ $(wildcard edge-impulse-sdk/porting/posix/* .c* ) \
41+ $(wildcard edge-impulse-sdk/porting/mingw32/* .c* ) \
42+ $(wildcard third_party/base64/* .cpp) \
43+ $(wildcard third_party/jpeg/* .cpp)
2244
23- CSOURCES = $(wildcard edge-impulse-sdk/CMSIS/DSP/Source/TransformFunctions/* .c) $(wildcard edge-impulse-sdk/CMSIS/DSP/Source/CommonTables/* .c) $(wildcard edge-impulse-sdk/CMSIS/DSP/Source/BasicMathFunctions/* .c) $(wildcard edge-impulse-sdk/CMSIS/DSP/Source/ComplexMathFunctions/* .c) $(wildcard edge-impulse-sdk/CMSIS/DSP/Source/FastMathFunctions/* .c) $(wildcard edge-impulse-sdk/CMSIS/DSP/Source/SupportFunctions/* .c) $(wildcard edge-impulse-sdk/CMSIS/DSP/Source/MatrixFunctions/* .c) $(wildcard edge-impulse-sdk/CMSIS/DSP/Source/StatisticsFunctions/* .c)
24- CXXSOURCES = $(wildcard tflite-model/* .cpp) $(wildcard edge-impulse-sdk/dsp/kissfft/* .cpp) $(wildcard edge-impulse-sdk/dsp/dct/* .cpp) $(wildcard ./edge-impulse-sdk/dsp/memory.cpp) $(wildcard edge-impulse-sdk/porting/posix/* .c* ) $(wildcard edge-impulse-sdk/porting/mingw32/* .c* )
2545CCSOURCES =
2646
27- ifeq (${USE_TVM},1)
28-
29- ifndef TVM_HOME
30- $(error TVM_HOME variable not set)
31- endif
32-
33- CFLAGS += -I${TVM_HOME}/include
34- CFLAGS += -I${TVM_HOME}/3rdparty/dlpack/include
35- CFLAGS += -I${TVM_HOME}/3rdparty/dmlc-core/include
36- CFLAGS += -I${TVM_HOME}/3rdparty/compiler-rt
37- LDFLAGS += -L${TVM_HOME}/build_runtime/ -ltvm_runtime
38- endif
39-
40- ifeq (${TARGET_RENESAS_RZV2L},1)
41- USE_FULL_TFLITE =1
42- TARGET_LINUX_AARCH64 =1
43- endif
44-
45- ifeq (${TARGET_RENESAS_RZG2L},1)
46- USE_FULL_TFLITE =1
47- TARGET_LINUX_AARCH64 =1
48- endif
49-
50- ifeq (${TARGET_AM68PA},1)
51- TARGET_TDA4VM =1
52- endif
53-
54- ifeq (${TARGET_AM62A},1)
55- TARGET_TDA4VM =1
56- endif
57-
58- ifeq (${TARGET_AM68A},1)
59- TARGET_TDA4VM =1
60- endif
61-
62- ifeq (${TARGET_TDA4VM},1)
63- CFLAGS += -I${TIDL_TOOLS_PATH} -I${TIDL_TOOLS_PATH}/osrt_deps
64- LDFLAGS += -L./tidl-rt/linux-aarch64 -lti_rpmsg_char -lvx_tidl_rt
65- LDFLAGS += -lrt
66-
67- ifeq (${USE_ONNX},1)
68- CFLAGS += -I${TIDL_TOOLS_PATH}/osrt_deps/onnxruntime/include -I${TIDL_TOOLS_PATH}/osrt_deps/onnxruntime/include/onnxruntime -I${TIDL_TOOLS_PATH}/osrt_deps/onnxruntime/include/onnxruntime/core/session
69- CFLAGS += -DDISABLEFLOAT16 -DXNN_ENABLE=0
70- LDFLAGS += -Wl,--no-as-needed -lonnxruntime -ldl -ldlr -lpthread # -lpcre -lffi -lz -lopencv_imgproc -lopencv_imgcodecs -lopencv_core -ltbb -ljpeg -lwebp -lpng16 -ltiff -lyaml-cpp
71-
72- else
73- USE_FULL_TFLITE =1
74- TARGET_LINUX_AARCH64 =1
75- endif
76- endif
77-
78- ifeq (${TARGET_JETSON_ORIN},1)
79- TARGET_JETSON_COMMON =1
80- TENSORRT_VERSION? =8.5.2
81- USE_FULL_TFLITE =1
82- TARGET_LINUX_AARCH64 =1
83- endif
84-
85- ifeq (${TARGET_JETSON_NANO},1)
86- TARGET_JETSON =1
87- USE_FULL_TFLITE =1
88- TARGET_LINUX_AARCH64 =1
89- endif
90-
91- ifeq (${TARGET_JETSON},1)
92- TARGET_JETSON_COMMON =1
93- TENSORRT_VERSION? =8
94- USE_FULL_TFLITE =1
95- TARGET_LINUX_AARCH64 =1
96- endif
97-
98- ifeq (${USE_QUALCOMM_QNN},1)
99- ifndef QNN_SDK_ROOT
100- $(error QNN_SDK_ROOT is not set, install QNN Engine Direct and set it to the installation directory)
101- endif
102- USE_FULL_TFLITE =1
103- CFLAGS += -I${QNN_SDK_ROOT}/include
104- CFLAGS += -Iedge-impulse-sdk
105- CFLAGS += -DEI_CLASSIFIER_USE_QNN_DELEGATES
106- ifeq (${TARGET_LINUX_AARCH64},1)
107- LDFLAGS += -L${QNN_SDK_ROOT}/lib/aarch64-ubuntu-gcc9.4 -lQnnTFLiteDelegate
108- else ifeq (${TARGET_LINUX_X86},1)
109- LDFLAGS += -L${QNN_SDK_ROOT}/lib/x86_64-linux-clang -lQnnTFLiteDelegate
110- endif
111- endif
112-
113- ifeq (${USE_ETHOS},1)
114- CFLAGS += -DEI_ETHOS_LINUX
115- CFLAGS += -Iedge-impulse-sdk/third_party/ethos_kernel_driver/include/
116- CFLAGS += -Iedge-impulse-sdk/third_party/ethos_driver_library/include
117- CXXSOURCES += edge-impulse-sdk/porting/ethos-u-driver-stack-imx/driver_library/src/ethosu.cpp
118- LDFLAGS += -lrt
119- endif
120-
121- ifeq (${USE_FULL_TFLITE},1)
122- CFLAGS += -DEI_CLASSIFIER_USE_FULL_TFLITE=1
123- CFLAGS += -Itensorflow-lite/
124- CCSOURCES += $(wildcard edge-impulse-sdk/tensorflow/lite/kernels/custom/* .cc)
125-
126- ifeq (${TARGET_LINUX_ARMV7},1)
127- LDFLAGS += -L./tflite/linux-armv7 -Wl,--no-as-needed -ldl -ltensorflow-lite -lfarmhash -lfft2d_fftsg -lfft2d_fftsg2d -lflatbuffers -lruy -lXNNPACK -lpthreadpool -lpthread -lcpuinfo -lrt
128- endif # TARGET_LINUX_ARMV7
129- ifeq (${TARGET_LINUX_AARCH64},1)
130- CFLAGS += -DDISABLEFLOAT16
131- LDFLAGS += -L./tflite/linux-aarch64 -Wl,--no-as-needed -ldl -ltensorflow-lite -lfarmhash -lfft2d_fftsg -lfft2d_fftsg2d -lruy -lXNNPACK -lcpuinfo -lpthreadpool -lpthread -lrt
132- endif # TARGET_LINUX_AARCH64
133- ifeq (${TARGET_LINUX_X86},1)
134- LDFLAGS += -L./tflite/linux-x86 -Wl,--no-as-needed -ldl -ltensorflow-lite -lfarmhash -lfft2d_fftsg -lfft2d_fftsg2d -lruy -lXNNPACK -lcpuinfo -lpthreadpool -lpthread -lrt
135- endif # TARGET_LINUX_X86
136- ifeq (${TARGET_MAC_X86_64},1)
137- LDFLAGS += -L./tflite/mac-x86_64 -ltensorflow-lite -lcpuinfo -lfarmhash -lfft2d_fftsg -lfft2d_fftsg2d -lruy -lXNNPACK -lpthreadpool
138- endif # TARGET_MAC_X86_64
139- ifeq (${TARGET_MAC_ARM64},1)
140- LDFLAGS += -L./tflite/mac-arm64 -ltensorflow-lite -lcpuinfo -lfarmhash -lfft2d_fftsg -lfft2d_fftsg2d -lruy -lXNNPACK -lpthreadpool
141- endif # TARGET_MAC_ARM64
47+ # ######################################
48+ # Include mk files
49+ # ######################################
50+ include mks/ethos_linux.mk
51+ include mks/renesas.mk
52+ include mks/ti.mk
53+ include mks/nvidia.mk
54+ include mks/qualcomm.mk
55+ include mks/memryx.mk
56+ include mks/tflite.mk
57+ include mks/akida.mk
58+ include mks/tflm.mk
14259
14360ifeq (${LINK_TFLITE_FLEX_LIBRARY},1)
144- LDFLAGS += -ltensorflowlite_flex_2.16.1
61+ LDFLAGS += -ltensorflowlite_flex_${TFLITE_VERSION}
14562endif
14663
147- else ifeq (${USE_AKIDA},1) # USE_FULL_TFLITE
148- CFLAGS += -DEI_CLASSIFIER_USE_FULL_TFLITE=1
149- CFLAGS += -DPYBIND11_DETAILED_ERROR_MESSAGES # add more detailed pybind error descriptions
150- CFLAGS += -Itensorflow-lite
151- CFLAGS += -Iedge-impulse-sdk/third_party/gemmlowp
152- LDFLAGS += -Wl,--no-as-needed -ldl -ltensorflow-lite -lfarmhash -lfft2d_fftsg -lfft2d_fftsg2d -lruy -lXNNPACK -lcpuinfo -lpthreadpool -lpthread -lrt
153- ifeq (${TARGET_LINUX_AARCH64},1)
154- CFLAGS += $(shell $(PYTHON_CROSS_PATH ) python3-config --cflags)
155- LDFLAGS += -L./tflite/linux-aarch64
156- LDFLAGS += $(shell $(PYTHON_CROSS_PATH ) python3-config --ldflags --embed)
157- else ifeq (${TARGET_LINUX_X86},1) # TARGET_LINUX_AARCH64
158- CFLAGS += $(shell python3-config --cflags)
159- LDFLAGS += -L./tflite/linux-x86
160- LDFLAGS += $(shell python3-config --ldflags --embed)
161- endif # TARGET_LINUX_X86
162-
163- else # not USE_FULL_TFLITE and not USE_AKIDA
164-
165- CFLAGS += -DTF_LITE_DISABLE_X86_NEON=1
166- CSOURCES += edge-impulse-sdk/tensorflow/lite/c/common.c
167- CCSOURCES += $(wildcard edge-impulse-sdk/tensorflow/lite/kernels/* .cc) $(wildcard edge-impulse-sdk/tensorflow/lite/kernels/internal/* .cc) $(wildcard edge-impulse-sdk/tensorflow/lite/micro/kernels/* .cc) $(wildcard edge-impulse-sdk/tensorflow/lite/micro/* .cc) $(wildcard edge-impulse-sdk/tensorflow/lite/micro/memory_planner/* .cc) $(wildcard edge-impulse-sdk/tensorflow/lite/core/api/* .cc)
168-
169- endif # not USE_FULL_TFLITE
170-
171- ifeq (${USE_MEMRYX},1)
172- CFLAGS += -Iedge-impulse-sdk/third_party/gemmlowp
173- LDFLAGS += -Wl,--no-as-needed -ldl -ltensorflow-lite -lfarmhash -lfft2d_fftsg -lfft2d_fftsg2d -lruy -lXNNPACK -lcpuinfo -lpthreadpool -lpthread -lrt
174- ifeq (${TARGET_LINUX_AARCH64},1)
175- $(error MemryX drivers and runtime do not support AARCH64)
176- else ifeq (${TARGET_LINUX_X86},1)
177- ifdef (${EI_CLASSIFIER_USE_MEMRYX_SOFTWARE},1)
178- CFLAGS += $(shell python3-config --cflags)
179- CFLAGS += -DPYBIND11_DETAILED_ERROR_MESSAGES
180- LDFLAGS += -rdynamic $(shell python3-config --ldflags --embed)
181- else
182- LDFLAGS += -L./tflite/linux-x86
183- LDFLAGS += -lmemx
184- endif # USE_MEMRYX_SOFTWARE
185- endif # USE_MEMRYX && TARGET_LINUX_X86
186- endif # USE_MEMRYX
187-
188- ifeq (${TARGET_JETSON_COMMON},1)
189- TENSORRT_VERSION ?=8
190- $(info TENSORRT_VERSION is ${TENSORRT_VERSION})
191- ifeq (${TENSORRT_VERSION},8.6.2)
192- TRT_LDFLAGS += -lei_debug -Ltflite/linux-jetson-nano/trt8.6.2/
193- else ifeq (${TENSORRT_VERSION},8.5.2)
194- TRT_LDFLAGS += -lei_debug -Ltflite/linux-jetson-nano/trt8.5.2/
195- else ifeq (${TENSORRT_VERSION},8)
196- TRT_LDFLAGS += -lei_debug -Ltflite/linux-jetson-nano/trt8/
197- else
198- $(error Invalid TensorRT version)
199- endif # TENSORRT_VERSION
200- TRT_LDFLAGS += -lcudart -lnvinfer -lnvonnxparser
201- LDFLAGS += $(TRT_LDFLAGS ) -lstdc++fs -Ltflite/linux-jetson-nano/ -Wl,--warn-unresolved-symbols,--unresolved-symbols=ignore-in-shared-libs
202- endif # TARGET_JETSON_COMMON
203-
20464ifeq (${APP_CUSTOM},1)
20565NAME = custom
20666CXXSOURCES += source/custom.cpp
0 commit comments