aboutsummaryrefslogtreecommitdiff
path: root/bin/build.sh
diff options
context:
space:
mode:
authorSelene ToyKeeper2018-11-03 16:24:02 -0600
committerSelene ToyKeeper2018-11-03 16:24:02 -0600
commita8118a67a1eb5d9a0c400b3055d71be7d9f1ed54 (patch)
treed4fb32412a45a2491d3ccb1aed1ac7a8ab92b8c8 /bin/build.sh
parentSplit flashing scripts into firmware vs fuses, to help prevent accidental bri... (diff)
downloadanduril-a8118a67a1eb5d9a0c400b3055d71be7d9f1ed54.tar.gz
anduril-a8118a67a1eb5d9a0c400b3055d71be7d9f1ed54.tar.bz2
anduril-a8118a67a1eb5d9a0c400b3055d71be7d9f1ed54.zip
Reduced duplication across build scripts, replaced per-MCU scripts with a tiny wrapper for the main script.
Diffstat (limited to 'bin/build.sh')
-rwxr-xr-xbin/build.sh30
1 files changed, 30 insertions, 0 deletions
diff --git a/bin/build.sh b/bin/build.sh
new file mode 100755
index 0000000..6920a3f
--- /dev/null
+++ b/bin/build.sh
@@ -0,0 +1,30 @@
+#!/bin/bash
+
+# Instead of using a Makefile, since most of the firmwares here build in the
+# same exact way, here's a script to do the same thing
+
+export ATTINY=$1 ; shift
+export PROGRAM=$1 ; shift
+export MCU=attiny$ATTINY
+export CC=avr-gcc
+export OBJCOPY=avr-objcopy
+export CFLAGS="-Wall -g -Os -mmcu=$MCU -c -std=gnu99 -DATTINY=$ATTINY -I.. -I../.. -I../../.. -fshort-enums"
+export OFLAGS="-Wall -g -Os -mmcu=$MCU"
+export LDFLAGS=
+export OBJCOPYFLAGS='--set-section-flags=.eeprom=alloc,load --change-section-lma .eeprom=0 --no-change-warnings -O ihex'
+export OBJS=$PROGRAM.o
+
+for arg in "$*" ; do
+ OTHERFLAGS="$OTHERFLAGS $arg"
+done
+
+function run () {
+ echo $*
+ $*
+ if [ x"$?" != x0 ]; then exit 1 ; fi
+}
+
+run $CC $OTHERFLAGS $CFLAGS -o $PROGRAM.o -c $PROGRAM.c
+run $CC $OFLAGS $LDFLAGS -o $PROGRAM.elf $PROGRAM.o
+run $OBJCOPY $OBJCOPYFLAGS $PROGRAM.elf $PROGRAM.hex
+run avr-size -C --mcu=$MCU $PROGRAM.elf | grep Full