84 lines
2.4 KiB
Makefile
84 lines
2.4 KiB
Makefile
#
|
|
# Makefile for z80/SDCC
|
|
# @author Takahide Matsutsuka <markn@markn.org>
|
|
#
|
|
# $Id: Makefile.z80,v 1.15 2009/12/16 06:47:17 matsutsuka Exp $
|
|
#
|
|
|
|
### Compiler definitions
|
|
CC = sdcc
|
|
LD = link-z80
|
|
AS = as-z80
|
|
AR = sdcclib
|
|
OBJCOPY = objcopy
|
|
STRIP = strip
|
|
|
|
### Custom rules
|
|
CUSTOM_RULE_C_TO_OBJECTDIR_O=1
|
|
CUSTOM_RULE_ALLOBJS_TO_TARGETLIB=1
|
|
CUSTOM_RULE_LINK=1
|
|
|
|
### Default flags
|
|
CFLAGS += --std-c99 -mz80 --opt-code-size
|
|
CFLAGS += --peep-file $(CONTIKI_CPU)/z80peephole.def --fverbose-asm
|
|
ASFLAGS +=
|
|
LDFLAGS += -mz80 --out-fmt-ihx --no-std-crt0
|
|
AROPTS = -a
|
|
|
|
ifdef CONTIKI_PROJECT
|
|
CFLAGS += -DAUTOSTART_ENABLE=1
|
|
CONTIKI_SOURCEFILES += $(CONTIKI_PROJECT).c
|
|
endif
|
|
|
|
### CPU-dependent cleanup files
|
|
CLEAN += *.ihx *.lnk *.sym contiki-$(TARGET).lib *.$(TARGET)
|
|
|
|
### CPU-dependent directories
|
|
CONTIKI_CPU_DIRS = . dev lib loader
|
|
|
|
### CPU-dependent source files
|
|
CONTIKI_SOURCEFILES += strcasecmp.c mtarch.c uip_arch.c \
|
|
libconio_z80.c log-conio.c rs232.c
|
|
|
|
CONTIKI_ASMFILES += uip_arch-asm.S crt0.S
|
|
|
|
CONTIKI_ASMOBJECTFILES = ${addprefix $(OBJECTDIR)/,$(CONTIKI_ASMFILES:.S=.o)}
|
|
|
|
CONTIKI_CASMOBJECTFILES = ${addprefix $(OBJECTDIR)/,$(CONTIKI_CASMFILES:.cS=.o)}
|
|
|
|
CONTIKI_PLATFORM_DIRS = $(PLATFORM_APPDIRS) \
|
|
${addprefix $(CONTIKI)/platform/$(TARGET)/, $(CONTIKI_TARGET_DIRS)}
|
|
|
|
#".cS" suffix means assembler file with #include directive
|
|
#so that a developer can use definitions of C-style include file
|
|
#in assembler file. Make sure the header file contains only compiler
|
|
#directives. (i.e. #define, etc.)
|
|
vpath %.cS $(CONTIKI_PLATFORM_DIRS)
|
|
|
|
#option -MMD doesn't work well on SDCC as of 2.9.0
|
|
$(OBJECTDIR)/%.o: %.c
|
|
$(CC) $(CFLAGS) -c $< -o $@
|
|
|
|
ifndef CUSTOM_RULE_CS_TO_OBJECTDIR_O
|
|
$(OBJECTDIR)/%.o: %.cS
|
|
cp $< $(OBJECTDIR)/$*.c
|
|
$(CC) $(CFLAGS) -E $(OBJECTDIR)/$*.c > $(OBJECTDIR)/tmp
|
|
perl -pe "s/^#(.*)/;$$1/" $(OBJECTDIR)/tmp > $(OBJECTDIR)/$*.S
|
|
$(AS) $(ASFLAGS) -o $@ $(OBJECTDIR)/$*.S
|
|
rm -f $(OBJECTDIR)/tmp
|
|
endif
|
|
|
|
#CUSTOM_RULE_ALLOBJS_TO_TARGETLIB
|
|
contiki-$(TARGET).lib: $(CONTIKI_OBJECTFILES) $(PROJECT_OBJECTFILES) $(CONTIKI_ASMOBJECTFILES) $(CONTIKI_CASMOBJECTFILES)
|
|
rm -f $@
|
|
for target in $^; do echo $$target >> $@; done
|
|
|
|
#CUSTOM_RULE_LINK (workaround for compiling examples)
|
|
$(CONTIKI_PROJECT): $(CONTIKI_PROJECT).ihx
|
|
mv $(CONTIKI_PROJECT).ihx $(CONTIKI_PROJECT).$(TARGET)
|
|
|
|
#CUSTOM_RULE_LINK
|
|
%.ihx: contiki-$(TARGET).lib
|
|
$(CC) $(LDFLAGS) -o $@ $(OBJECTDIR)/crt0.o -lcontiki-$(TARGET).lib
|
|
$(LD) -nf $*
|