Skip to content

Instantly share code, notes, and snippets.

@faustinoaq
Last active April 10, 2019 20:58
Show Gist options
  • Save faustinoaq/4ba5c8dcd46d69bfa8eecd578d1a71cd to your computer and use it in GitHub Desktop.
Save faustinoaq/4ba5c8dcd46d69bfa8eecd578d1a71cd to your computer and use it in GitHub Desktop.
Makefile for arduino.cr
# Compiled using LLVM 6 with AVR target support
# Digispark Attiny85 version
CC=avr-gcc
AR=avr-ar
OBJCOPY=avr-objcopy
STRIP=avr-strip
SIZE=/home/main/.arduino15/packages/arduino/tools/avr-gcc/4.8.1-arduino5/bin/avr-size
CRYSTAL=/run/media/main/5E7F72DC50CCBB04/crystal-master-4f5c55d-0.27.1-dev/bin/crystal
AVR-INCLUDE=$(HOME)/.arduino15/packages/arduino/tools/avr-gcc/4.8.1-arduino5/avr/include/
CORE=$(HOME)/.arduino15/packages/digistump/hardware/avr/1.6.7/cores/tiny/
VARIANT=$(HOME)/.arduino15/packages/digistump/hardware/avr/1.6.7/variants/digispark/
# MICRONUCLEUS=/home/main/.arduino15/packages/digistump/tools/micronucleus/2.0a4/micronucleus
MICRONUCLEUS=/home/main/micronucleus/commandline/micronucleus
WIRING=wiring
WIRING_DIGITAL=wiring_digital
WIRING_ANALOG=wiring_analog
WINTERRUPTS=WInterrupts
WIRING_SHIFT=wiring_shift
WIRING_PULSE=wiring_pulse
PINS_ARDUINO=pins_arduino
TARGET=blink1
PORT=/dev/ttyACM0
FREQ=8000000L
MMCU=attiny85
MACRO1=ARDUINO_AVR_DIGISPARK
MACRO2=ARDUINO_ARCH_AVR
all: lib crystal static link strip size hex upload clean
lib:
$(CC) -c -DF_CPU=$(FREQ) -Os $(CORE)$(WIRING).c -o $(WIRING).o -mmcu=$(MMCU) -I$(AVR-INCLUDE) -I$(VARIANT) -I$(CORE) -D$(MACRO1) -D$(MACRO2)
$(CC) -c -DF_CPU=$(FREQ) -Os $(CORE)$(WIRING_DIGITAL).c -o $(WIRING_DIGITAL).o -mmcu=$(MMCU) -I$(AVR-INCLUDE) -I$(VARIANT) -I$(CORE) -D$(MACRO1) -D$(MACRO2)
$(CC) -c -DF_CPU=$(FREQ) -Os $(CORE)$(WIRING_ANALOG).c -o $(WIRING_ANALOG).o -mmcu=$(MMCU) -I$(AVR-INCLUDE) -I$(VARIANT) -I$(CORE) -D$(MACRO1) -D$(MACRO2)
$(CC) -c -DF_CPU=$(FREQ) -Os $(CORE)$(WINTERRUPTS).c -o $(WINTERRUPTS).o -mmcu=$(MMCU) -I$(AVR-INCLUDE) -I$(VARIANT) -I$(CORE) -D$(MACRO1) -D$(MACRO2)
$(CC) -c -DF_CPU=$(FREQ) -Os $(CORE)$(WIRING_SHIFT).c -o $(WIRING_SHIFT).o -mmcu=$(MMCU) -I$(AVR-INCLUDE) -I$(VARIANT) -I$(CORE) -D$(MACRO1) -D$(MACRO2)
$(CC) -c -DF_CPU=$(FREQ) -Os $(CORE)$(WIRING_PULSE).c -o $(WIRING_PULSE).o -mmcu=$(MMCU) -I$(AVR-INCLUDE) -I$(VARIANT) -I$(CORE) -D$(MACRO1) -D$(MACRO2)
$(CC) -c -DF_CPU=$(FREQ) -Os $(CORE)$(PINS_ARDUINO).c -o $(PINS_ARDUINO).o -mmcu=$(MMCU) -I$(AVR-INCLUDE) -I$(VARIANT) -I$(CORE) -D$(MACRO1) -D$(MACRO2)
# $(CC) -c -DF_CPU=$(FREQ) -Os $(CORE)$(HOOKS).c -o $(HOOKS).o -mmcu=$(MMCU) -I$(AVR-INCLUDE) -I$(VARIANT) -I$(CORE)
crystal:
$(CRYSTAL) build --single-module --cross-compile --target=avr-unknown-unknown --mcpu=$(MMCU) $(TARGET).cr -s --prelude="./arduino" --release --no-debug
static:
$(AR) rcs libcore.a $(WIRING).o $(WIRING_DIGITAL).o $(WIRING_ANALOG).o $(WINTERRUPTS).o $(WIRING_SHIFT).o $(WIRING_PULSE).o $(PINS_ARDUINO).o
link:
$(CC) -mmcu=$(MMCU) -o $(TARGET) $(TARGET).o libcore.a -lc -lm
strip:
$(STRIP) -s $(TARGET)
size:
$(SIZE) -A $(TARGET)
hex:
$(OBJCOPY) -O ihex -R .eeprom $(TARGET) $(TARGET).hex
upload:
$(MICRONUCLEUS) -cdigispark --timeout 60 $(TARGET).hex
clean:
mkdir -p tmp
mv *.hex *.a *.o $(TARGET) tmp
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment