nes-proj/cpu/avr/Makefile.avr
barner 265f45feba - Fix build of contiki-2.x AVR port.
- Generate symbol tables for loadable modules.
2006-12-22 16:54:36 +00:00

127 lines
3.3 KiB
Makefile

# $Id: Makefile.avr,v 1.5 2006/12/22 16:54:36 barner Exp $
### Check if we are running under Windows
ifndef WINDIR
ifdef OS
ifneq (,$(findstring Windows,$(OS)))
WINDIR := Windows
endif
endif
endif
.SUFFIXES:
### Define the CPU directory
CONTIKI_CPU=$(CONTIKI)/cpu/avr
### Define the source files we have in the AVR port
AVR = leds-arch.c leds.c clock.c
SENSORS = #sensors.c button.c pir.c irq.c vib.c sound.c radio.c ctsrts.c \
#lm71.c
UIPDRIVERS = #me.c me_tabs.c slip.c tr1001-drv.c tr1001.c crc16.c
SYSAPPS = codeprop-tmp.c
ELFLOADER = elfloader.c elfloader-avr.c symtab-avr.c
# loader-arch.c
TARGETLIBS = clock.c flash.c mtarch.c
CONTIKI_TARGET_SOURCEFILES += ${AVR} $(SENSORS) \
$(SYSAPPS) $(ELFLOADER) \
$(TARGETLIBS) $(UIPDRIVERS)
CONTIKI_SOURCEFILES += $(CONTIKI_TARGET_SOURCEFILES)
### Compiler definitions
CC = avr-gcc
LD = avr-ld
AS = avr-as
AR = avr-ar
OBJCOPY = avr-objcopy
STRIP = avr-strip
CFLAGSNO = -I. -I$(CONTIKI)/core -I$(CONTIKI_CPU) \
-I$(CONTIKI)/platform/$(TARGET) \
${addprefix -I,$(APPDIRS)} \
-Wall -mmcu=$(MCU) -gstabs
CFLAGS = $(CFLAGSNO) -Os
BOOTLOADER_START = 0x1e000
LDFLAGS = -mmcu=$(MCU) -Wl,-Map=contiki-$(TARGET).map \
-Wl,--section-start=.bootloader=$(BOOTLOADER_START)
### Setup directory search path for source files
CONTIKI_TARGET_DIRS_CONCAT = ${addprefix $(CONTIKI)/platform/$(TARGET)/, \
$(CONTIKI_TARGET_DIRS)}
vpath %.c $(PROJECTDIRS) $(CONTIKI)/cpu/avr/dev \
$(CONTIKIDIRS) $(APPDIRS) $(CONTIKI_TARGET_DIRS_CONCAT) \
$(CONTIKI_CPU)
### Compilation rules
$(OBJECTDIR)/%.o: %.c
$(CC) $(CFLAGS) -c $< -o $@
%.o: %.c
$(CC) $(CFLAGS) -c $< -o $@
%.ko: %.o
$(STRIP) -K _init -K _fini --strip-unneeded -g -x $< -o $@
%.elf: %.co $(PROJECT_OBJECTFILES) contiki-$(TARGET).a
$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $(filter-out %.a,$^) $(filter %.a,$^) $(LDLIBS)
%.hex: %.out
$(OBJCOPY) $^ -O ihex $@
# Add a namelist to the kernel
%.out: %.co $(PROJECT_OBJECTFILES) contiki-$(TARGET).a
$(CONTIKI)/tools/make-empty-symbols
$(CC) $(LDFLAGS) $(CFLAGS) -o $@ $^ $(LIBC) symbols.c
$(CONTIKI)/tools/avr-make-symbols $@
$(CC) $(LDFLAGS) $(CFLAGS) -o $@ $^ $(LIBC) symbols.c
$(CONTIKI)/tools/avr-make-symbols $@
$(CC) $(LDFLAGS) $(CFLAGS) -o $@ $^ $(LIBC) symbols.c
#%.hex: %.elf
# $(OBJCOPY) -R .eeprom $^ -O ihex $@
%.eep: %.out
-$(OBJCOPY) -j .eeprom --set-section-flags=.eeprom="alloc,load" \
--change-section-lma .eeprom=0 -O ihex $^ $@
%-stripped.o: %.c
$(CC) $(CFLAGS) -c $< -o $@
$(STRIP) --strip-unneeded -g -x $@
#%.ce: %.c
# $(CC) $(CFLAGS) -DPROCESS_LOADABLE -c $< -o $@
$(STRIP) --strip-unneeded -g -x $@
%.ce: %.co
$(LD) -i -r --unresolved-symbols=ignore-in-object-files -mavr5 -o $@ $^
$(STRIP) --strip-unneeded -g -x $@
%.co: %.c
$(CC) $(CFLAGS) -DAUTOSTART_ENABLE -c $< -o $@
%-stripped.o: %.o
$(STRIP) --strip-unneeded -g -x -o $@ $<
%.o: ${CONTIKI_TARGET}/loader/%.S
$(AS) -o $(notdir $(<:.S=.o)) $<
%.srec: %.$(TARGET)
$(OBJCOPY) -O srec $< $@
### Upload image
%.u: %.hex
avrdude ${AVRDUDE_OPTIONS} -P ${AVRDUDE_PORT} -c ${AVRDUDE_PROGRAMMER} -p ${MCU} -U flash:w:$<
.PHONY: symbols.c
symbols.c:
${CONTIKI}/tools/avr-make-symbols core.firmware > symbols.c