Skip to content

Commit

Permalink
chips/avr: Use snek-avr.defs
Browse files Browse the repository at this point in the history
This file should include shared definitions for all atmega 32u4 based
ports, but it wasn't getting used at all. Fix up the contents of this
file and then use it for both itsybitsty ports.

Signed-off-by: Keith Packard <keithp@keithp.com>
  • Loading branch information
keith-packard committed Jun 25, 2019
1 parent acbbbf8 commit be59763
Show file tree
Hide file tree
Showing 3 changed files with 44 additions and 175 deletions.
22 changes: 9 additions & 13 deletions chips/avr/snek-avr.defs
Expand Up @@ -17,12 +17,10 @@ SNEK_AO = $(SNEK_ROOT)/ao
SNEK_LOCAL_VPATH = $(SNEK_AVR):$(SNEK_AO)

SNEK_AVR_SRC = \
ao-snek.c \
snek-io.c \
ao-led.c \
ao-timer.c \
snek-avr-eeprom.c \
ao-snek-avr.c \
ao-usb-avr.c \
ao-stdio.c \
ao-notask.c \
ao-product.c \
ao-panic.c
Expand All @@ -31,13 +29,11 @@ SNEK_AVR_INC = \
ao.h \
ao-arch.h \
ao-arch-funcs.h \
ao-flash.h \
ao-led.h \
ao-notask.h \
ao-pins.h \
ao-product.h \
ao-serial.h \
ao-snek.h \
snek-avr.h \
ao-usb.h

SNEK_AVR_BUILTINS =
Expand All @@ -47,17 +43,20 @@ OPT=-Os
SNEK_CFLAGS = $(SNEK_MOST_WARNINGS) $(SNEK_BASE_CFLAGS)

AO_CFLAGS=\
-std=gnu99 $(WARN_FLAGS) $(OPT) -g
-std=gnu99 $(OPT) -g

AVR_CFLAGS=-DF_CPU=16000000UL -mmcu=atmega32u4 -g -fno-jump-tables $(SNEK_CFLAGS) -mcall-prologues -Waddr-space-convert \
AVR_CFLAGS=-DF_CPU=$(AVR_CLOCK) -mmcu=atmega32u4 -g -fno-jump-tables $(SNEK_CFLAGS) -mcall-prologues -Waddr-space-convert \
-I. -I$(SNEK_AVR) -I$(SNEK_AO) -I$(SNEK_ROOT) $(AO_CFLAGS)

CFLAGS = $(AVR_CFLAGS) $(SNEK_CFLAGS)

LDSCRIPT=$(SNEK_AVR)/snek-avr51.x

LDFLAGS=-Wl,-uvfprintf -lprintf_flt -lm \
-Wl,--defsym -Wl,__TEXT_REGION_LENGTH__=0x8000 \
-Wl,--defsym -Wl,__DATA_REGION_LENGTH__=0x9a0 \
-Wl,--defsym -Wl,__DATA_REGION_LENGTH__=0x880 \
-Wl,--defsym -Wl,__EEPROM_REGION_LENGTH__=0x400 \
-Wl,-T$(LDSCRIPT) \
-Wl,-Map=$(MAP)

CC=avr-gcc
Expand All @@ -75,8 +74,5 @@ IDPRODUCT=0x000a
.elf.hex:
avr-objcopy -O ihex -R .eeprom $^ $@

echo:
echo PROG $(PROG) HEX $(HEX) MAP $(MAP)

ao-product.h: $(SNEK_ROOT)/snek.defs Makefile
python3 $(SNEK_AO)/make-product.py -v $(SNEK_VERSION) -p $(PRODUCT_NAME) > $@
96 changes: 17 additions & 79 deletions ports/itsybitsy3v/Makefile
Expand Up @@ -14,64 +14,13 @@

SNEK_ROOT = ../..
SNEK_AVR = $(SNEK_ROOT)/chips/avr
SNEK_AO = $(SNEK_ROOT)/ao

PROGNAME=snek-itsybitsy3v
PRODUCT_NAME=SnekItsyBitsy3v

SNEK_LOCAL_VPATH = $(SNEK_AVR):$(SNEK_AO)

SNEK_AVR_SRC = \
snek-io.c \
snek-avr-eeprom.c \
ao-snek-avr.c \
ao-usb-avr.c \
ao-notask.c \
ao-product.c \
ao-panic.c

SNEK_AVR_INC = \
ao.h \
ao-arch.h \
ao-arch-funcs.h \
ao-led.h \
ao-notask.h \
ao-pins.h \
ao-product.h \
snek-avr.h \
ao-usb.h

SNEK_AVR_BUILTINS = \
snek-itsybitsy3v.builtin

OPT=-Os

AO_CFLAGS=\
-std=gnu99 $(WARN_FLAGS) $(OPT) -g

AVR_CFLAGS=-DF_CPU=8000000UL -mmcu=atmega32u4 -g -fno-jump-tables $(SNEK_CFLAGS) -mcall-prologues -Waddr-space-convert \
-I. -I$(SNEK_AVR) -I$(SNEK_AO) -I$(SNEK_ROOT) $(AO_CFLAGS)

CFLAGS = $(AVR_CFLAGS) $(SNEK_CFLAGS)

LDSCRIPT=$(SNEK_AVR)/snek-avr51.x

LDFLAGS=-Wl,-uvfprintf -lprintf_flt -lm \
-Wl,--defsym -Wl,__TEXT_REGION_LENGTH__=0x8000 \
-Wl,--defsym -Wl,__DATA_REGION_LENGTH__=0x880 \
-Wl,--defsym -Wl,__EEPROM_REGION_LENGTH__=0x400 \
-Wl,-T$(LDSCRIPT) \
-Wl,-Map=$(MAP)
AVR_CLOCK=8000000UL

CC=avr-gcc

.SUFFIXES: .elf .hex

.elf.hex:
avr-objcopy -O ihex -R .eeprom $^ $@

ao-product.h: $(SNEK_ROOT)/snek.defs Makefile
python3 $(SNEK_AO)/make-product.py -v $(SNEK_VERSION) -p $(PRODUCT_NAME) > $@
include $(SNEK_AVR)/snek-avr.defs

SNEK_LOCAL_SRC = \
$(SNEK_AVR_SRC)
Expand All @@ -80,44 +29,33 @@ SNEK_LOCAL_INC = \
$(SNEK_AVR_INC)

SNEK_LOCAL_BUILTINS = \
$(SNEK_AVR_BUILTINS)
$(SNEK_AVR_BUILTINS) \
snek-itsybitsy3v.builtin

include $(SNEK_ROOT)/snek-install.defs

BASE=$(PROGNAME)-$(SNEK_VERSION)
ELF=$(BASE).elf
HEX=$(BASE).hex
MAP=$(BASE).map
all: $(ELF) $(HEX)

PRODUCT=$(PRODUCT_NAME)-v$(SNEK_VERSION)
IDPRODUCT=0x000a

SNEK_CFLAGS = $(SNEK_MOST_WARNINGS) $(SNEK_BASE_CFLAGS)
$(PROG): Makefile $(SNEK_OBJ)
$(CC) $(CFLAGS) -o $@ $(SNEK_OBJ) $(LDFLAGS)
@awk '/__data_load_end/{printf("ROM used: %d bytes\n", strtonum($$1)); }' $(MAP)

SRC=$(SNEK_SRC)
OBJ=$(SRC:.c=.o)
$(SNEK_OBJ): $(SNEK_INC)

all: $(HEX)
distclean: clean

$(HEX): $(ELF)
clean::
rm -f *.hex *.elf *.map
rm -f ao-product.h

$(ELF): $(SNEK_OBJ)
$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS)
@awk '/__data_load_end/{printf("ROM used: %d bytes\n", strtonum($$1)); }' $(MAP)
install: $(HEX)
install -d $(DESTDIR)$(SHAREDIR)
install -m 0644 $(HEX) $(DESTDIR)$(SHAREDIR)

echo:
echo PROG $(PROG) HEX $(HEX) MAP $(MAP) SNEK_OBJ $(SNEK_OBJ)
uninstall:

ISP=avrisp2

load: $(HEX) ../itsybitsy5v/snek-itsybitsy-install
../itsybitsy5v/snek-itsybitsy-install -quick -isp $(ISP) -hex $(HEX) load

install: $(HEX)
install -d $(DESTDIR)$(SHAREDIR)
install -m 0644 $(HEX) $(DESTDIR)$(SHAREDIR)

clean::
rm -f snek-itsybitsy3v-install
rm -f *.hex *.elf *.map
rm -f ao-product.h
101 changes: 18 additions & 83 deletions ports/itsybitsy5v/Makefile
Expand Up @@ -13,66 +13,14 @@
#

SNEK_ROOT = ../..
SNEK_AO = $(SNEK_ROOT)/ao
SNEK_AVR = $(SNEK_ROOT)/chips/avr

PROGNAME=snek-itsybitsy5v
PRODUCT_NAME=SnekItsyBitsy5v

SNEK_LOCAL_VPATH = $(SNEK_AVR):$(SNEK_AO)

SNEK_AVR_SRC = \
snek-io.c \
snek-avr-eeprom.c \
ao-snek-avr.c \
ao-usb-avr.c \
ao-notask.c \
ao-product.c \
ao-panic.c

SNEK_AVR_INC = \
ao.h \
ao-arch.h \
ao-arch-funcs.h \
ao-led.h \
ao-notask.h \
ao-pins.h \
ao-product.h \
snek-avr.h \
ao-usb.h

SNEK_AVR_BUILTINS = \
snek-itsybitsy5v.builtin

OPT=-Os

AO_CFLAGS=\
-std=gnu99 $(WARN_FLAGS) $(OPT) -g

AVR_CFLAGS=-DF_CPU=16000000UL -mmcu=atmega32u4 -g -fno-jump-tables $(SNEK_CFLAGS) -mcall-prologues -Waddr-space-convert \
-I. -I$(SNEK_AVR) -I$(SNEK_AO) -I$(SNEK_ROOT) $(AO_CFLAGS)

CFLAGS = $(AVR_CFLAGS) $(SNEK_CFLAGS)

LDSCRIPT=$(SNEK_AVR)/snek-avr51.x

LDFLAGS=-Wl,-uvfprintf -lprintf_flt -lm \
-Wl,--defsym -Wl,__TEXT_REGION_LENGTH__=0x8000 \
-Wl,--defsym -Wl,__DATA_REGION_LENGTH__=0x880 \
-Wl,--defsym -Wl,__EEPROM_REGION_LENGTH__=0x400 \
-Wl,-T$(LDSCRIPT) \
-Wl,-Map=$(MAP)

CC=avr-gcc

.SUFFIXES: .elf .hex

.elf.hex:
avr-objcopy -O ihex -R .eeprom $^ $@

ao-product.h: $(SNEK_ROOT)/snek.defs Makefile
python3 $(SNEK_AO)/make-product.py -v $(SNEK_VERSION) -p $(PRODUCT_NAME) > $@
AVR_CLOCK=16000000UL

include $(SNEK_AVR)/snek-avr.defs

SNEK_LOCAL_SRC = \
$(SNEK_AVR_SRC)
Expand All @@ -81,52 +29,39 @@ SNEK_LOCAL_INC = \
$(SNEK_AVR_INC)

SNEK_LOCAL_BUILTINS = \
$(SNEK_AVR_BUILTINS)
$(SNEK_AVR_BUILTINS) \
snek-itsybitsy5v.builtin

include $(SNEK_ROOT)/snek-install.defs

BASE=$(PROGNAME)-$(SNEK_VERSION)
ELF=$(BASE).elf
HEX=$(BASE).hex
MAP=$(BASE).map

PRODUCT=$(PRODUCT_NAME)-v$(SNEK_VERSION)
IDPRODUCT=0x000a

SNEK_CFLAGS = $(SNEK_MOST_WARNINGS) $(SNEK_BASE_CFLAGS)

SRC=$(SNEK_SRC)
OBJ=$(SRC:.c=.o)

all: $(HEX) snek-itsybitsy-install
all: $(ELF) $(HEX) snek-itsybitsy-install

$(HEX): $(ELF)

$(ELF): $(SNEK_OBJ)
$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS)
$(PROG): Makefile $(SNEK_OBJ)
$(CC) $(CFLAGS) -o $@ $(SNEK_OBJ) $(LDFLAGS)
@awk '/__data_load_end/{printf("ROM used: %d bytes\n", strtonum($$1)); }' $(MAP)

echo:
echo PROG $(PROG) HEX $(HEX) MAP $(MAP) SNEK_OBJ $(SNEK_OBJ)

snek-itsybitsy-install: snek-itsybitsy-install.in
$(SNEK_SED) $^ > $@
chmod +x $@

ISP=avrisp2

load: $(HEX) snek-itsybitsy-install
./snek-itsybitsy-install -quick -isp $(ISP) -hex $(HEX) load
install:: $(HEX)
install -d $(DESTDIR)$(SHAREDIR)
install -m 0644 $(HEX) $(DESTDIR)$(SHAREDIR)

install: snek-itsybitsy-install $(HEX) snek-itsybitsy-install.1
install:: snek-itsybitsy-install snek-itsybitsy-install.1
install -d $(DESTDIR)$(BINDIR)
install snek-itsybitsy-install $(DESTDIR)$(BINDIR)
install -d $(DESTDIR)$(SHAREDIR)
install -m 0644 $(HEX) $(DESTDIR)$(SHAREDIR)
install -d $(DESTDIR)$(MANDIR)/man1
install -m 0644 snek-itsybitsy-install.1 $(DESTDIR)$(MANDIR)/man1

clean::
rm -f snek-itsybitsy-install
rm -f *.hex *.elf *.map
rm -f ao-product.h

uninstall::

ISP=avrisp2

load: $(HEX) snek-itsybitsy-install
./snek-itsybitsy-install -quick -isp $(ISP) -hex $(HEX) load

0 comments on commit be59763

Please sign in to comment.