|  | 
|  | 1 | +# Copyright (C) 2020 Texas Instruments Incorporated - http://www.ti.com/ | 
|  | 2 | +# | 
|  | 3 | +# Licensed under the Apache License, Version 2.0 (the "License"); | 
|  | 4 | +# you may not use this file except in compliance with the License. | 
|  | 5 | +# You may obtain a copy of the License at | 
|  | 6 | +# | 
|  | 7 | +# http://www.apache.org/licenses/LICENSE-2.0 | 
|  | 8 | +# | 
|  | 9 | +# Unless required by applicable law or agreed to in writing, software | 
|  | 10 | +# distributed under the License is distributed on an "AS IS" BASIS, | 
|  | 11 | +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | 
|  | 12 | +# See the License for the specific language governing permissions and | 
|  | 13 | +# limitations under the License. | 
|  | 14 | + | 
|  | 15 | +TARGET_TOOLCHAIN_PREFIX ?= aarch64-linux-gnu- | 
|  | 16 | + | 
|  | 17 | +TF_SRC_DIR ?=/home/craft/workspace/gem5/tensorflow_src | 
|  | 18 | +TFLITE_INC_DIR ?=$(TF_SRC_DIR) | 
|  | 19 | +TFLITE_BUILD_DIR ?=$(TF_SRC_DIR)/build | 
|  | 20 | +FLATBUFFERS_INC_DIR ?=$(TFLITE_BUILD_DIR)/flatbuffers/include | 
|  | 21 | +TFLITE_LIB_DIR ?=$(TFLITE_BUILD_DIR) | 
|  | 22 | +TFLITE_FLATBUF_LIB_DIR ?=$(TFLITE_BUILD_DIR)/_deps/flatbuffers-build | 
|  | 23 | +TFLITE_RUY_LIB_DIR ?=$(TFLITE_BUILD_DIR)/_deps/ruy-build/ruy | 
|  | 24 | +TFLITE_FARMHASH_LIB_DIR ?=$(TFLITE_BUILD_DIR)/_deps/farmhash-build | 
|  | 25 | +TFLITE_FFT2D_DIR ?=$(TFLITE_BUILD_DIR)/_deps/fft2d-build | 
|  | 26 | +TFLITE_CPUINFO_DIR ?=$(TFLITE_BUILD_DIR)/_deps/cpuinfo-build | 
|  | 27 | +TFLITE_CLOG_DIR ?=$(TFLITE_BUILD_DIR)/_deps/clog-build | 
|  | 28 | + | 
|  | 29 | +OPENCV_SRC_DIR ?=/home/craft/workspace/gem5/opencv | 
|  | 30 | +OPENCV_BUILD_DIR ?=$(OPENCV_SRC_DIR)/build | 
|  | 31 | +OPENCV_INC_DIR ?=$(OPENCV_BUILD_DIR)/install/include/opencv4/ | 
|  | 32 | +OPENCV_LIB_DIR ?=$(OPENCV_BUILD_DIR)/install/lib/ | 
|  | 33 | +OPENCV_LIB_3RDPARTY_DIR ?=$(OPENCV_BUILD_DIR)/install/lib/opencv4/3rdparty/ | 
|  | 34 | + | 
|  | 35 | +PHONY: all | 
|  | 36 | + | 
|  | 37 | +all: classification/tflite_classification segmentation/tflite_segmentation detection/tflite_detection | 
|  | 38 | + | 
|  | 39 | +LIBS = $(TFLITE_LIB_DIR)/libtensorflow-lite.a | 
|  | 40 | +LIBS += $(TFLITE_RUY_LIB_DIR)/libruy_ctx.a \ | 
|  | 41 | +	$(TFLITE_RUY_LIB_DIR)/libruy_frontend.a \ | 
|  | 42 | +	$(TFLITE_RUY_LIB_DIR)/libruy_tune.a \ | 
|  | 43 | +	$(TFLITE_RUY_LIB_DIR)/libruy_context.a \ | 
|  | 44 | +	$(TFLITE_RUY_LIB_DIR)/libruy_context_get_ctx.a \ | 
|  | 45 | +	\ | 
|  | 46 | +	$(TFLITE_RUY_LIB_DIR)/libruy_thread_pool.a \ | 
|  | 47 | +	$(TFLITE_RUY_LIB_DIR)/libruy_wait.a \ | 
|  | 48 | +	$(TFLITE_RUY_LIB_DIR)/libruy_allocator.a \ | 
|  | 49 | +	$(TFLITE_RUY_LIB_DIR)/libruy_system_aligned_alloc.a \ | 
|  | 50 | +	$(TFLITE_RUY_LIB_DIR)/libruy_cpuinfo.a \ | 
|  | 51 | +	$(TFLITE_RUY_LIB_DIR)/libruy_blocking_counter.a \ | 
|  | 52 | +	\ | 
|  | 53 | +	$(TFLITE_RUY_LIB_DIR)/libruy_apply_multiplier.a \ | 
|  | 54 | +	$(TFLITE_RUY_LIB_DIR)/libruy_trmul.a \ | 
|  | 55 | +	$(TFLITE_RUY_LIB_DIR)/libruy_kernel_arm.a \ | 
|  | 56 | +	$(TFLITE_RUY_LIB_DIR)/libruy_block_map.a \ | 
|  | 57 | +	$(TFLITE_RUY_LIB_DIR)/libruy_pack_arm.a \ | 
|  | 58 | +	$(TFLITE_RUY_LIB_DIR)/libruy_prepacked_cache.a \ | 
|  | 59 | +	$(TFLITE_RUY_LIB_DIR)/libruy_prepare_packed_matrices.a \ | 
|  | 60 | +	$(TFLITE_RUY_LIB_DIR)/libruy_denormal.a | 
|  | 61 | + | 
|  | 62 | +LIBS += $(TFLITE_FLATBUF_LIB_DIR)/libflatbuffers.a | 
|  | 63 | +LIBS += $(TFLITE_FARMHASH_LIB_DIR)/libfarmhash.a | 
|  | 64 | +LIBS += $(TFLITE_FFT2D_DIR)/libfft2d_fftsg.a | 
|  | 65 | +LIBS += $(TFLITE_FFT2D_DIR)/libfft2d_fftsg2d.a | 
|  | 66 | +LIBS += $(TFLITE_CPUINFO_DIR)/libcpuinfo.a | 
|  | 67 | +LIBS += $(TFLITE_CLOG_DIR)/libclog.a | 
|  | 68 | + | 
|  | 69 | +LIBS += $(OPENCV_LIB_DIR)/libopencv_features2d.a \ | 
|  | 70 | +	$(OPENCV_LIB_DIR)/libopencv_imgcodecs.a \ | 
|  | 71 | +	$(OPENCV_LIB_DIR)/libopencv_photo.a \ | 
|  | 72 | +	$(OPENCV_LIB_DIR)/libopencv_calib3d.a \ | 
|  | 73 | +	$(OPENCV_LIB_DIR)/libopencv_flann.a \ | 
|  | 74 | +	$(OPENCV_LIB_DIR)/libopencv_imgproc.a \ | 
|  | 75 | +	$(OPENCV_LIB_DIR)/libopencv_stitching.a \ | 
|  | 76 | +	$(OPENCV_LIB_DIR)/libopencv_gapi.a \ | 
|  | 77 | +	$(OPENCV_LIB_DIR)/libopencv_ml.a \ | 
|  | 78 | +	$(OPENCV_LIB_DIR)/libopencv_video.a \ | 
|  | 79 | +	$(OPENCV_LIB_DIR)/libopencv_dnn.a \ | 
|  | 80 | +	$(OPENCV_LIB_DIR)/libopencv_highgui.a \ | 
|  | 81 | +	$(OPENCV_LIB_DIR)/libopencv_objdetect.a \ | 
|  | 82 | +	$(OPENCV_LIB_DIR)/libopencv_videoio.a \ | 
|  | 83 | +	$(OPENCV_LIB_DIR)/libopencv_core.a | 
|  | 84 | + | 
|  | 85 | +LIBS += $(OPENCV_LIB_3RDPARTY_DIR)/liblibjpeg-turbo.a \ | 
|  | 86 | +	$(OPENCV_LIB_3RDPARTY_DIR)/liblibpng.a \ | 
|  | 87 | +	$(OPENCV_LIB_3RDPARTY_DIR)/libzlib.a \ | 
|  | 88 | +	$(OPENCV_LIB_3RDPARTY_DIR)/libade.a \ | 
|  | 89 | +	$(OPENCV_LIB_3RDPARTY_DIR)/liblibopenjp2.a \ | 
|  | 90 | +	$(OPENCV_LIB_3RDPARTY_DIR)/liblibprotobuf.a \ | 
|  | 91 | +	$(OPENCV_LIB_3RDPARTY_DIR)/liblibwebp.a \ | 
|  | 92 | +	$(OPENCV_LIB_3RDPARTY_DIR)/liblibtiff.a \ | 
|  | 93 | +	$(OPENCV_LIB_3RDPARTY_DIR)/libquirc.a | 
|  | 94 | + | 
|  | 95 | +LIBS += -lstdc++ -lpthread -lm -ldl -lrt -latomic -static | 
|  | 96 | + | 
|  | 97 | +INCLUDES := -I. -I$(FLATBUFFERS_INC_DIR) -I$(TFLITE_INC_DIR) -I$(OPENCV_INC_DIR) | 
|  | 98 | + | 
|  | 99 | +CCFLAGS = -O3 -DNDEBUG -fPIC | 
|  | 100 | + | 
|  | 101 | +CXX := ${TARGET_TOOLCHAIN_PREFIX}g++ | 
|  | 102 | + | 
|  | 103 | +COMMON_SRC = model_utils.cc utils.cc | 
|  | 104 | + | 
|  | 105 | +JDSK_DL_ACC ?= no | 
|  | 106 | +ifeq ($(JDSK_DL_ACC), yes) | 
|  | 107 | + COMMON_SRC += | 
|  | 108 | + CCFLAGS += -march=rv64gcv0p7_zfh_xtheadc -mabi=lp64d -mtune=c906 -std=gnu++11 | 
|  | 109 | + | 
|  | 110 | + JDSK_API_LIB_DIR ?= /home/craft/workspace/DNN/XNNPACK-riscv/build/linux/c906-v240/install/lib/ | 
|  | 111 | + LIBS += $(JDSK_API_LIB_DIR)/libXNNPACK.a \ | 
|  | 112 | +	$(JDSK_API_LIB_DIR)/libpthreadpool.a | 
|  | 113 | +endif | 
|  | 114 | + | 
|  | 115 | +classification/tflite_classification: classification.cc $(COMMON_SRC) | 
|  | 116 | +	mkdir -p classification | 
|  | 117 | +	$(CXX) classification.cc $(COMMON_SRC) -o classification/tflite_classification $(LDFLAGS) $(LIBS) $(CXXFLAGS) $(CCFLAGS) $(INCLUDES) | 
|  | 118 | + | 
|  | 119 | +segmentation/tflite_segmentation: segmentation.cc $(COMMON_SRC) | 
|  | 120 | +	mkdir -p segmentation | 
|  | 121 | +	$(CXX) segmentation.cc $(COMMON_SRC) -o segmentation/tflite_segmentation $(LDFLAGS) $(LIBS) $(CXXFLAGS) $(CCFLAGS) $(INCLUDES) | 
|  | 122 | + | 
|  | 123 | +detection/tflite_detection: detection.cc yolov5.cc $(COMMON_SRC) | 
|  | 124 | +	mkdir -p detection | 
|  | 125 | +	$(CXX) detection.cc yolov5.cc $(COMMON_SRC) -o detection/tflite_detection $(LDFLAGS) $(LIBS) $(CXXFLAGS) $(CCFLAGS) $(INCLUDES) | 
|  | 126 | + | 
|  | 127 | +clean: | 
|  | 128 | +	rm -rf classification/tflite_classification segmentation/tflite_segmentation detection/tflite_detection | 
0 commit comments