Files
AC707N/SDK/Makefile
T
2025-12-03 11:12:34 +08:00

218 lines
5.8 KiB
Makefile

# make 编译并下载
# make VERBOSE=1 显示编译详细过程
# make clean 清除编译临时文件
#
# 注意: Linux 下编译方式:
# 1. 从 http://pkgman.jieliapp.com/doc/all 处找到下载链接
# 2. 下载后,解压到 /opt/jieli 目录下,保证
# /opt/jieli/common/bin/clang 存在(注意目录层次)
# 3. 确认 ulimit -n 的结果足够大(建议大于8096),否则链接可能会因为打开文件太多而失败
# 可以通过 ulimit -n 8096 来设置一个较大的值
#
# 工具路径设置
ifeq ($(OS), Windows_NT)
# Windows 下工具链位置
TOOL_DIR := C:/JL/pi32/bin
CC := clang.exe
CXX := clang.exe
LD := pi32v2-lto-wrapper.exe
AR := llvm-ar.exe
export MKDIR := mkdir_win -p
RM := rm -rf
export SYS_LIB_DIR := C:/JL/pi32/pi32v2-lib/r3-large
export SYS_INC_DIR := C:/JL/pi32/pi32v2-include
export EXT_CFLAGS := # Windows 下不需要 -D__SHELL__
export PATH:=$(TOOL_DIR);$(PATH)
## 后处理脚本
export FIXBAT := tools/utils/fixbat.exe # 用于处理 utf8->gbk 编码问题
export POST_SCRIPT := cpu/br35/tools/download.bat
export RUN_POST_SCRIPT := cpu\br35\tools\download.bat
else
# Linux 下工具链位置
TOOL_DIR := /opt/jieli/pi32v2/bin
CC := clang
CXX := clang
LD := lto-wrapper
AR := lto-ar
export MKDIR := mkdir -p
RM := rm -rf
export OBJDUMP := $(TOOL_DIR)/objdump
export OBJCOPY := $(TOOL_DIR)/objcopy
export OBJSIZEDUMP := $(TOOL_DIR)/objsizedump
export SYS_LIB_DIR := $(TOOL_DIR)/../lib/r3-large
export SYS_INC_DIR := $(TOOL_DIR)/../include
export EXT_CFLAGS := -D__SHELL__ # Linux 下需要这个保证正确处理 download.c
export PATH:=$(TOOL_DIR):$(PATH)
## 后处理脚本
export FIXBAT := touch # Linux下不需要处理 bat 编码问题
export POST_SCRIPT := cpu/br35/tools/download.sh
export RUN_POST_SCRIPT := bash $(POST_SCRIPT)
endif
export CC := $(TOOL_DIR)/$(CC)
export CXX := $(TOOL_DIR)/$(CXX)
export LD := $(TOOL_DIR)/$(LD)
export AR := $(TOOL_DIR)/$(AR)
# 输出文件设置
export OUT_ELF := cpu/br35/tools/sdk.elf
export OBJ_FILE := $(OUT_ELF).objs.txt
# 编译路径设置
export BUILD_DIR := objs
# 编译参数设置
export CFLAGS := \
-target pi32v2 \
-mcpu=r3 \
-integrated-as \
-flto \
-Wuninitialized \
-Wno-invalid-noreturn \
-fno-common \
-integrated-as \
-Oz \
-g \
-flto \
-fallow-pointer-null \
-fprefer-gnu-section \
-Wno-shift-negative-value \
-Wframe-larger-than=256 \
-Wincompatible-pointer-types \
-Wreturn-type \
-Wimplicit-function-declaration \
-mllvm -pi32v2-large-program=true \
-fms-extensions \
-fdiscrete-bitfield-abi \
-fno-unwind-tables \
-ffunction-sections \
-fdata-sections \
-fmessage-length=0 \
# C++额外的编译参数
export CXXFLAGS := \
-std=gnu++14 \
-fno-exceptions \
-fno-rtti \
# 宏定义
export DEFINES := \
-DSUPPORT_MS_EXTENSIONS \
-DCONFIG_RELEASE_ENABLE \
-DLWIP_USE_BT \
-DCONFIG_CPU_BR35 \
-DCONFIG_USB_SUPPORT_MRX_TX \
-DCONFIG_IIC_VERSION2 \
-DCONFIG_PRINT_FLOAT_ENABLE \
-DCONFIG_NEW_BREDR_ENABLE \
-DCONFIG_NEW_MODEM_ENABLE \
-DCONFIG_NEW_TWS_FORWARD_ENABLE \
-DCONFIG_UCOS_ENABLE \
-DCONFIG_EQ_SUPPORT_ASYNC \
-DEQ_CORE_V1 \
-DWTS_DEC_IN_MASK \
-DCONFIG_SIN_TONE_V2 \
-DCONFIG_DNS_ENABLE \
-DCONFIG_DMS_MALLOC \
-DCONFIG_MMU_ENABLE \
-DCONFIG_AEC_M=256 \
-DCONFIG_AUDIO_ONCHIP \
-DCONFIG_MEDIA_NEW_ENABLE \
-DCONFIG_SUPPORT_EX_TWS_ADJUST \
-D__GCC_PI32V2__ \
-DCONFIG_NEW_ECC_ENABLE \
-DCONFIG_CODE_MOVABLE_ENABLE \
-DTCFG_USER_TWS_ENABLE=0 \
-DCONFIG_EFFECT_CORE_V2_ENABLE \
-DCONFIG_OS_AFFINITY_ENABLE=0 \
-DEXPORT_CONFIG_USB_ENABLE=1 \
-DEXPORT_CONFIG_SD_ENABLE=1 \
-DEXPORT_FMNA_ENABLE=1 \
-DCONFIG_APP_UI_ENABLE=1 \
-DEVENT_HANDLER_NUM_CONFIG=2 \
-DEVENT_TOUCH_ENABLE_CONFIG=0 \
-DEVENT_POOL_SIZE_CONFIG=256 \
-DCONFIG_EVENT_KEY_MAP_ENABLE=0 \
-DTIMER_POOL_NUM_CONFIG=15 \
-DAPP_ASYNC_POOL_NUM_CONFIG=0 \
-DVFS_FILE_POOL_NUM_CONFIG=1 \
-DFS_VERSION=0x020001 \
-DFATFS_VERSION=0x020101 \
-DSDFILE_VERSION=0x020000 \
-DVFS_ENABLE=1 \
-DVM_MAX_SIZE_CONFIG=64*1024 \
-DVM_ITEM_MAX_NUM=256 \
-DCONFIG_NEW_CFG_TOOL_ENABLE \
-DCONFIG_WATCH_CASE_ENABLE=1 \
-DCONFIG_LITE_AEC_ENABLE=0 \
-DAUDIO_REC_LITE \
-DAUDIO_DEC_LITE \
-DAUDIO_REC_POOL_NUM=1 \
-DAUDIO_DEC_POOL_NUM=3 \
-DCONFIG_BTCTRLER_TASK_DEL_ENABLE \
-DCONFIG_LINK_DISTURB_SCAN_ENABLE=0 \
-DCONFIG_UPDATA_ENABLE \
-DCONFIG_OTA_UPDATA_ENABLE \
-DEXPORT_PLATFORM_AUDIO_SMART_VOICE_ENABLE=1 \
-DEXPORT_PLATFORM_AUDIO_PDM_ENABLE=0 \
-DEXPORT_PLATFORM_AUDIO_ALINK_ENABLE=0 \
-DEXPORT_PLATFORM_AUDIO_TDM_ENABLE=0 \
-DEXPORT_PLATFORM_AUDIO_SPDIF_ENABLE=0 \
-DEXPORT_PLATFORM_AUDIO_FM_ENABLE=0 \
-DEXPORT_PLATFORM_AUDIO_WM8978_ENABLE=0 \
-DEXPORT_PLATFORM_AUDIO_UART_SENDER_ENABLE=1 \
-DEXPORT_PLATFORM_AUDIO_EFFECT_DEMO_ENABLE=0 \
-DEXPORT_PLATFORM_HW_MATH_VERSION=0 \
-DLVGL_COMMIT_HASH=\"release/v8.4_2409c8dfc6b8d9ae3f7970e1c333e743e0fd2911\" \
-D_XOPEN_SOURCE=700 \
-D_GNU_SOURCE \
-D__ELF__ \
export DEFINES += $(EXT_CFLAGS) # 额外的一些定义
# 头文件搜索路径
export INCLUDES := \
@build/include_dir.txt \
-I$(SYS_INC_DIR)
VERBOSE ?= 0
ifeq ($(VERBOSE), 1)
export QUITE :=
else
export QUITE := @
endif
# 一些旧的 make 不支持 file 函数,需要 make 的时候指定 LINK_AT=0 make
export LINK_AT ?= 1
# 表示下面的不是一个文件的名字,无论是否存在 all, clean, pre_build 这样的文件
# 还是要执行命令
# see: https://www.gnu.org/software/make/manual/html_node/Phony-Targets.html
.PHONY: all clean pre_build
# 不要使用 make 预设置的规则
# see: https://www.gnu.org/software/make/manual/html_node/Suffix-Rules.html
.SUFFIXES:
all: pre_build
make -f build/Makefile.mk
pre_build:
$(info +CC build/genFileList.c)
$(QUITE) $(CC) $(CFLAGS) $(DEFINES) $(INCLUDES) -D__LD__ -E -P build/genFileList.c -o build/fileList.mk
clean:
$(QUITE) $(RM) $(OUT_ELF)
$(QUITE) $(RM) $(BUILD_DIR)