COMPILE_PREX := /opt/jd/riscv64-elf-x86_64-20201104/bin/riscv64-unknown-elf-

define my-dir
$(strip	\
	$(eval _md_file_:=$$(lastword $$(MAKEFILE_LIST)))	\
	$(if $(filter $(CLEAR_VARS),$(_md_file_)),	\
		$(error LOCAL_PATH must be set before including $$(CLEAR_VARS))	\
		,	\
		$(patsubst %/,%,$(dir $(_md_file_)))	\
	)	\
)
endef

CC := $(COMPILE_PREX)gcc
CPP := $(COMPILE_PREX)g++
CXX := $(COMPILE_PREX)g++
AR := $(COMPILE_PREX)ar
STRIP := $(COMPILE_PREX)strip

LOCAL_PATH := $(call my-dir)

LOCAL_SRC_FILES := $(shell find $(LOCAL_PATH)/src -name "*.c" -o -name "*.cpp" -o -name "*.cc")

OBJS_DIR := $(LOCAL_PATH)/objs
# 注意：原版这里只处理了.c后缀，如果你有.cpp或.cc文件，建议修改此处逻辑，这里先保持你原有的映射
OBJS = $(patsubst %.c,%.o,$(LOCAL_SRC_FILES))

APP_INCS = $(addprefix -I, $(shell find $(LOCAL_PATH)/include -type d))
APP_INCS += $(addprefix -I, $(shell find $(LOCAL_PATH)/include -type d))

CFLAGS := $(APP_INCS)

.PHONY: all rm_objs clean

# 1. 将目标更改为静态库 .a 文件
all: libjdsmart_demo.a rm_objs

# 2. 使用 $(AR) 命令打包静态库，替换掉原来的 $(CC) 链接命令
libjdsmart_demo.a: $(OBJS)
	$(AR) rcs $@ $^

# 3. 编译 .o 文件 (去掉了 -fPIC，因为纯静态库通常不需要位置无关代码)
%.o:%.c
	$(CC) -Wall -c $(CFLAGS) $< -o $@

rm_objs:
	rm -rf $(OBJS)

# 4. 修改 clean 规则以清理静态库文件
clean: rm_objs
	rm -rf libjdsmart_demo.a
