Files
E502_ADC_BFfirmware/makefile

173 lines
3.9 KiB
Makefile

BUILDDIR = build
CONFIG ?= release
CONFIGDIR = $(BUILDDIR)/$(CONFIG)
OBJDIR = $(CONFIGDIR)/objs
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
LDRFLAGS = -T BF527
MCU = bf523-0.2
# List all default C defines here, like -D_DEBUG=1
DDEFS =
# List all default ASM defines here, like -D_DEBUG=1
DADEFS =
# List all default directories to look for include files here
DINCDIR =
# List the default directory to look for the libraries here
DLIBDIR =
# List all default libraries here
DLIBS =
#
# End of default section
##############################################################################################
##############################################################################################
# Start of user section
#
# Define project name here
PROJECT = l502-BFfirmware0
# Define linker script file here
LDSCRIPT= gcc/l502-bf.ld
BINDIR = $(CONFIGDIR)/bin
RESULT_FILES = $(BINDIR)/$(PROJECT).elf $(BINDIR)/$(PROJECT).ldr
# List all user C define here, like -D_DEBUG=1
UDEFS = NDEBUG CLOCK_INIT_CB
ifeq ($(CONFIG), debug)
UDEFS += __DEBUG
OPT = -O0
else
OPT = -O3
endif
# List C source files here
SRC = src/main.c \
src/l502_init.c \
src/l502_fpga.c \
src/l502_sport_tx.c \
src/l502_stream.c \
src/l502_async.c \
src/l502_cmd.c \
src/l502_hdma.c \
src/l502_params.c \
src/l502_tests.c \
src/l502_user_process.c \
FFT_and_FP_math/C/FFT_FP_realisation.c
# List ASM source files here
ASRC = gcc/l502-bf_basiccrt.s
# List all user directories here
UINCDIR = src gcc FFT_and_FP_math/C
# List the user directory to look for the libraries here
# List all user libraries here
ULIBS =
#
# End of user defines
##############################################################################################
INCDIR = $(patsubst %,-I%,$(DINCDIR) $(UINCDIR))
LIBDIR = $(patsubst %,-L%,$(DLIBDIR) $(ULIBDIR))
DEFS = $(patsubst %,-D%,$(DDEFS) $(UDEFS)) # = $(DDEFS) $(UDEFS)
ADEFS = $(DADEFS) $(UADEFS)
#OBJS = $(ASRC:.s=.o) $(SRC:.c=.o)
OBJS = $(addprefix $(OBJDIR)/, $(notdir $(sort $(SRC:.c=.o))))
AOBJS = $(addprefix $(OBJDIR)/, $(notdir $(sort $(ASRC:.s=.o))))
LIBS = $(DLIBS) $(ULIBS)
MCFLAGS = -mcpu=$(MCU)
ASFLAGS = $(MCFLAGS) -g -mthumb -gdwarf-2 -Wa,-amhls=$(<:.s=.lst) $(ADEFS)
#-gdwarf-2
ANOMALY_FLAGS = -mspecld-anomaly -mcsync-anomaly
CPFLAGS = $(MCFLAGS) $(OPT) $(ANOMALY_FLAGS) -std=gnu99 -g -Wall -Wstrict-prototypes -Wa,-ahlms=$(addprefix $(LSTDIR)/, $(notdir $(@:.o=.lst))) $(DEFS)
#LDFLAGS = $(MCFLAGS) -T$(LDSCRIPT) -nostartfiles -N -Wl,-Map=$(BINDIR)/$(PROJECT).map,--cref,--gc-sections $(LIBDIR) -lm
LDFLAGS = $(MCFLAGS) -T$(LDSCRIPT) -nostartfiles -N -Map=$(BINDIR)/$(PROJECT).map,--cref, -lm
#
# Generate dependency information
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 $@
$(AOBJS) : $(ASRC)
$(AS) -c $(CPFLAGS) -I . $(INCDIR) $< -o $@
$(BINDIR)/$(PROJECT).elf: $(OBJS) $(AOBJS) $(LDSCRIPT)
$(CC) $(OBJS) $(AOBJS) $(LDFLAGS) $(LIBS) -o $@
$(BINDIR)/$(PROJECT).ldr: $(BINDIR)/$(PROJECT).elf
$(LDR) $(LDRFLAGS) -c $@ $<
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)
clean:
-rm -fR $(CONFIGDIR)
-include $(wildcard $(DEPDIR)/*)