2 # Project name (also used for output file name)
7 # Source files and search directories
9 CSRC += lcd.c led.c rotenc.c
12 CSRC += ssm2603.c at24c.c
13 CSRC += bfin_util.c uzura.c
15 CSRC += effect.c system.c main.c
20 # Optimization level (0, 1, 2, 3, 4 or s)
25 # C Standard level (c89, gnu89, c99 or gnu99)
30 # Processor type for CSRC/ASRC files.
35 # Linker script for the target MCU
40 # Output file format (ihex, bin or both) and debugger type
46 # Include dirs, library dirs and definitions
60 # Object output directory
65 # Programs to build porject
68 OBJCOPY = bfin-elf-objcopy
69 OBJDUMP = bfin-elf-objdump
74 # Define all object files
78 COBJ := $(addprefix $(OBJDIR)/,$(COBJ))
79 AOBJ := $(addprefix $(OBJDIR)/,$(AOBJ))
80 PROJECT := $(OBJDIR)/$(PROJECT)
85 CFLAGS += -std=$(CSTD)
87 CFLAGS += -O$(OPTIMIZE)
88 CFLAGS += -fmessage-length=0
89 CFLAGS += $(addprefix -W,$(WARNINGS))
90 CFLAGS += $(addprefix -I,$(INCDIRS))
91 CFLAGS += $(addprefix -D,$(DEFS))
92 CFLAGS += -Wp,-M,-MP,-MT,$(OBJDIR)/$(*F).o,-MF,$(OBJDIR)/$(*F).d
97 ASFLAGS += $(addprefix -D,$(ADEFS)) -Wa,-g$(DEBUG)
102 LDFLAGS += -Wl,-Map=$(PROJECT).map,--cref,--gc-sections
104 LDFLAGS += $(patsubst %,-L%,$(LIBDIRS)) $(patsubst %,-l%,$(LIBS))
105 #LDFLAGS += -T$(LINKSCRIPT)
106 #LDFLAGS += -nostartfiles
107 #LDFLAGS += -nodefaultlibs
108 #LDFLAGS += -nostdlib
109 #LDFLAGS += -fno-builtin
111 # Combine all necessary flags and optional flags.
112 # Add target processor to flags.
113 ALL_CFLAGS = -mcpu=$(CPU) -I. $(CFLAGS)
114 ALL_ASFLAGS = -mcpu=$(CPU) -I. -x assembler-with-cpp $(ASFLAGS)
119 all: version build size
121 ifeq ($(OUTPUT),ihex)
122 build: elf hex lst sym
125 ifeq ($(OUTPUT),binary)
126 build: elf bin lst sym
129 ifeq ($(OUTPUT),both)
130 build: elf hex bin lst sym
134 $(error "Invalid format: $(OUTPUT)")
144 # Display compiler version information.
150 # Create final output file (.hex or .bin) from ELF output file.
154 $(OBJCOPY) -O ihex $< $@
158 $(OBJCOPY) -O binary $< $@
161 # Create extended listing file from ELF output file.
165 $(OBJDUMP) -h -S -C $< > $@
168 # Create a symbol table from ELF output file.
175 # Display size of file.
179 $(SIZE) -A $(PROJECT).elf
182 # Link: create ELF output file from object files.
184 %.elf: $(AOBJ) $(COBJ)
187 $(CC) $(ALL_CFLAGS) $(AOBJ) $(COBJ) --output $@ $(LDFLAGS)
190 # Compile: create object files from C source files.
192 $(COBJ) : $(OBJDIR)/%.o : %.c
195 $(CC) -c $(ALL_CFLAGS) $< -o $@
198 # Assemble: create object files from assembler source files.
200 $(AOBJ) : $(OBJDIR)/%.o : %.S
203 $(CC) -c $(ALL_ASFLAGS) $< -o $@
206 # Target: clean project.
210 rm -f -r $(OBJDIR) | exit 0
213 # Load: Load ldr for Blackfin
216 bfin-elf-ldr -T BF592 -c $(PROJECT).ldr $(PROJECT).elf
217 bfin-elf-ldr -l $(PROJECT).ldr /dev/ttyUSB0 -b 57600 -C
223 minicom -b 57600 -D /dev/ttyUSB0
226 # Include the dependency files.
228 -include $(shell mkdir $(OBJDIR) 2>/dev/null) $(wildcard $(OBJDIR)/*.d)