This commit is contained in:
awe
2026-04-07 20:20:46 +03:00
parent fe6297d9b9
commit dff65627fe
7 changed files with 129 additions and 59 deletions

118
makefile
View File

@ -1,6 +1,8 @@
BUILDDIR = build
CONFIG ?= release
BUILDDIR = build
CONFIG ?= release
-include local.mk
CONFIGDIR = $(BUILDDIR)/$(CONFIG)
@ -11,11 +13,46 @@ LSTDIR = $(CONFIGDIR)/lst
DEPDIR = $(CONFIGDIR)/.dep
TRGT = bfin-elf-
CC = $(TRGT)gcc
CP = $(TRGT)objcopy
AS = $(TRGT)gcc -x assembler-with-cpp
LDR = $(TRGT)ldr
BFIN_TOOLCHAIN ?=
CROSS_COMPILE ?=
ifeq ($(strip $(CROSS_COMPILE)),)
ifneq ($(strip $(BFIN_TOOLCHAIN)),)
ifneq ($(wildcard $(BFIN_TOOLCHAIN)/bin/bfin-elf-gcc),)
TRGT = $(BFIN_TOOLCHAIN)/bin/bfin-elf-
else ifneq ($(wildcard $(BFIN_TOOLCHAIN)/bfin-elf-gcc),)
TRGT = $(BFIN_TOOLCHAIN)/bfin-elf-
else
TRGT = $(BFIN_TOOLCHAIN)/bin/bfin-elf-
endif
else
TRGT = bfin-elf-
endif
else
TRGT = $(CROSS_COMPILE)
endif
CC = $(TRGT)gcc
CP = $(TRGT)objcopy
AS = $(TRGT)gcc -x assembler-with-cpp
LDR = $(TRGT)ldr
TOOLCHAIN_SKIP_CHECK_GOALS = clean help print-toolchain
TOOLCHAIN_CHECK = 1
ifneq ($(strip $(MAKECMDGOALS)),)
ifeq ($(strip $(filter-out $(TOOLCHAIN_SKIP_CHECK_GOALS),$(MAKECMDGOALS))),)
TOOLCHAIN_CHECK = 0
endif
endif
ifeq ($(TOOLCHAIN_CHECK),1)
ifeq ($(strip $(shell command -v $(CC) 2>/dev/null)),)
$(error Blackfin GCC toolchain not found: '$(CC)'. Set BFIN_TOOLCHAIN=/abs/path/to/bfin-elf or CROSS_COMPILE=/abs/path/to/bin/bfin-elf-)
endif
ifeq ($(strip $(shell command -v $(LDR) 2>/dev/null)),)
$(error Blackfin loader tool not found: '$(LDR)'. Set BFIN_TOOLCHAIN=/abs/path/to/bfin-elf or CROSS_COMPILE=/abs/path/to/bin/bfin-elf-)
endif
endif
LDRFLAGS = -T BF527
@ -131,14 +168,29 @@ CPFLAGS += -MD -MP -MF $(DEPDIR)/$(@F).d
#bfin-elf-gcc $(CPFLAGS) -I . $(INCDIR) $(LDFLAGS) $(SRC) -o bf-test.elf
.PHONY: all clean prj dirs
.SECONDEXPANSION:
all: dirs $(RESULT_FILES)
$(OBJS) : $$(filter %/$$(basename $$(notdir $$@)).c, $$(SRC)) ##$$(patsubst %.o,%.c, $$@)
$(CC) -c $(CPFLAGS) -I . $(INCDIR) $< -o $@
.PHONY: all clean prj dirs help print-toolchain
.SECONDEXPANSION:
all: dirs $(RESULT_FILES)
help:
@echo "Blackfin firmware build"
@echo " make"
@echo " make CONFIG=debug"
@echo " make BFIN_TOOLCHAIN=/abs/path/to/bfin-elf"
@echo " make CROSS_COMPILE=/abs/path/to/bin/bfin-elf-"
@echo " make print-toolchain"
print-toolchain:
@echo "TRGT=$(TRGT)"
@echo "CC=$(CC)"
@echo "AS=$(AS)"
@echo "CP=$(CP)"
@echo "LDR=$(LDR)"
$(OBJS) : $$(filter %/$$(basename $$(notdir $$@)).c, $$(SRC)) ##$$(patsubst %.o,%.c, $$@)
$(CC) -c $(CPFLAGS) -I . $(INCDIR) $< -o $@
$(AOBJS) : $(ASRC)
$(AS) -c $(CPFLAGS) -I . $(INCDIR) $< -o $@
@ -153,23 +205,23 @@ dirs: $(BUILDDIR) $(CONFIGDIR) $(DEPDIR) $(OBJDIR) $(LSTDIR) $(BINDIR)
$(BINDIR):
mkdir $(BINDIR)
$(LSTDIR):
mkdir $(LSTDIR)
$(OBJDIR):
mkdir $(OBJDIR)
$(BUILDDIR):
mkdir $(BUILDDIR)
$(CONFIGDIR):
mkdir $(CONFIGDIR)
$(DEPDIR):
mkdir $(DEPDIR)
$(BINDIR):
mkdir -p $(BINDIR)
$(LSTDIR):
mkdir -p $(LSTDIR)
$(OBJDIR):
mkdir -p $(OBJDIR)
$(BUILDDIR):
mkdir -p $(BUILDDIR)
$(CONFIGDIR):
mkdir -p $(CONFIGDIR)
$(DEPDIR):
mkdir -p $(DEPDIR)
clean:
-rm -fR $(CONFIGDIR)