1 Star 0 Fork 1

sklink/audio_rknn

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
Makefile 4.03 KB
一键复制 编辑 原始数据 按行查看 历史
落暮烟觞 提交于 2022-03-09 02:14 . 2022/3/9
# 该Makefile应当通过build_project.sh脚本执行
VERSION = 1.0
# arm -> linux arm rk3188
# x86 -> window x86 mingw32 dll
# x64 -> linux x64
# aarch64 ->aarch64-linux-
TARGET_ARCH = arm
CROSS_COMPILE = arm-linux-gnueabihf-
RELEASE=0
AS = $(CROSS_COMPILE)as
CC = $(CROSS_COMPILE)gcc
CXX = $(CROSS_COMPILE)g++
LD = $(CROSS_COMPILE)ld
AR = $(CROSS_COMPILE)ar
STRIP = $(CROSS_COMPILE)strip
OBJCOPY = $(CROSS_COMPILE)objcopy
CP = cp
ifeq ($(RELEASE), 1)
DEBUG = -Wall -O2
else
DEBUG = -g -Wall
endif
CONFIG_COMPILER = gnu
TOP_DIR := $(shell pwd)
# 最终可执行文件名,是当前项目的目录名。
TARGET_EXEC := \
$(notdir $(patsubst %/,%,$(dir $(lastword $(abspath $(MAKEFILE_LIST))))))
# tensorflow源码的最外层目录,以及其依赖的第三方库目录
TF_DIR := ./tensorflow_src
TF_DEPENDENCY_DIR := $(TF_DIR)/tensorflow/lite/tools/make/downloads
RKNN_DIR := ./librknn_api
# 生成好的项目所在目录,项目obj和可执行文件所在目录
BUILD_DIR := $(TOP_DIR)/bin
OBJ_DIR := $(TOP_DIR)/bin
BIN_DIR := $(TOP_DIR)/bin
# 项目源文件、头文件和库文件所在目录
SRC_DIRS := $(TOP_DIR)/src \
$(TOP_DIR)/mfcc
INC_DIRS := $(TOP_DIR)/include \
$(TF_DIR) \
$(TF_DEPENDENCY_DIR)/flatbuffers/include \
$(TF_DEPENDENCY_DIR)/absl \
$(TF_DEPENDENCY_DIR)/googletest/googlemock/include \
$(TF_DEPENDENCY_DIR)/googletest/googletest/include \
$(RKNN_DIR)/include
LIB_DIRS := ./lib \
$(RKNN_DIR)/lib \
./libtensorflow/arm/lib
# 符合要求的源文件
SRCS += $(foreach src_dir,$(SRC_DIRS),$(wildcard $(src_dir)/*.cpp))
SRCS += $(foreach src_dir,$(SRC_DIRS),$(wildcard $(src_dir)/*.cc))
SRCS += $(foreach src_dir,$(SRC_DIRS),$(wildcard $(src_dir)/*.c))
# 用于处理多个源目录的情况
vpath %*.cpp %(SRC_DIRS)
vpath %*.cc %(SRC_DIRS)
vpath %*.c %(SRC_DIRS)
# 第三方路径
VPATH = ./mfcc:./src:./fft2d
# 需要的链接库
LIBS := -lpthread \
-latomic \
-lrt \
-ldl \
-lrknn_api
# obj文件的文件名及存放路径
#OBJS := $(($(notdir $SRCS):%=$(OBJ_DIR)/%.o)
OBJS := $(foreach file,$(SRCS),$(OBJ_DIR)/$(notdir $(file).o))
# 额外目录指定文件编译
OBJS_EXT := fftsg2d.c fftsg.c
OBJS += $(OBJS_EXT:%=$(OBJ_DIR)/%.o)
# =========================================================
DEFINES := #-D DLL
# 为编译器指定要包含的头文件目录
CPPFLAGS := $(addprefix -I,$(INC_DIRS))
# 为C++编译器指定预编译参数
#CXXFLAGS += \
-march=armv6 \
-mfpu=vfp \
-funsafe-math-optimizations \
-ftree-vectorize \
-fPIC \
-marm
# 为C编译器指定预编译参数
#CFLAGS += \
-march=armv6 \
-mfpu=vfp \
-funsafe-math-optimizations \
-ftree-vectorize \
-fPIC \
-marm
# 指定链接库和参数
#LDFLAGS := \
$(addprefix -L,$(LIB_DIRS)) \
$(LIBS) \
-Wl,--no-export-dynamic \
-Wl,--exclude-libs,ALL \
-Wl,--gc-sections \
-Wl,--as-needed
LDFLAGS := \
$(addprefix -L,$(LIB_DIRS)) \
$(LIBS)
# 汇编参数
AFLAGS :=
ifeq ($(TARGET_ARCH), arm)
CFLAGS +=
CXXFLAGS +=
else ifeq ($(TARGET_ARCH), x86)
CFLAGS +=
CXXFLAGS +=
else ifeq ($(TARGET_ARCH), x64)
CFLAGS +=
CXXFLAGS +=
endif
# =========================================================
# 链接所有obj文件
$(BIN_DIR)/$(TARGET_EXEC): $(OBJS)
$(CXX) $(OBJS) -o $@ $(LDFLAGS)
@echo "Version $(VERSION)"
@echo "Build $(TARGET_EXEC) program OK"
# 编译所有c源文件
$(OBJ_DIR)/%.c.o: %.c
$(CC) $(DEBUG) $(CPPFLAGS) $(CFLAGS) $(DEFINES) -c $< -o $@
# 编译所有cpp源文件
$(OBJ_DIR)/%.cpp.o: %.cpp
$(CXX) $(DEBUG) $(CPPFLAGS) $(CXXFLAGS) $(DEFINES) -c $< -o $@
# 编译所有cc源文件
$(OBJ_DIR)/%.cc.o: %.cc
$(CXX) $(DEBUG) $(CPPFLAGS) $(CXXFLAGS) $(DEFINES) -c $< -o $@
# =========================================================
# 清空项目生成目录
.PHONY: clean
clean:
rm -rf $(BUILD_DIR)/*
install:
@echo "install $(TARGET_EXEC)"
#lib:$(lib_obj)
# @echo "build only dll $(lib_obj)"
#$(lib_obj):$(main_obj) $(cpp_obj) $(c_obj)
# $(CXX) $(DEBUG) -shared -o $(out_dir)/$(lib_obj) $(main_obj) $(cpp_obj) $(CXXFLAGS) $(DLL) -Wl,--kill-at,--out-implib,$(out_dir)/$(lib_obj) $(DEFINES)
# @echo "Version $(VERSION)"
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
C
1
https://gitee.com/sklink/audio_rknn.git
git@gitee.com:sklink/audio_rknn.git
sklink
audio_rknn
audio_rknn
master

搜索帮助