builddir = .ninja ninja_required_version = 1.3 # Tools ar = /usr/bin/avr-gcc-ar cxx = /usr/bin/avr-g++ cc = /usr/bin/avr-gcc objcopy = /usr/bin/avr-objcopy avrdude = /usr/bin/avrdude # Flags asmflags = -c -g -x assembler-with-cpp -flto -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10600 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR cflags = -Wall -c -g -Os -w -std=gnu11 -ffunction-sections -fdata-sections -flto -fno-fat-lto-objects -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10600 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR cxxflags = -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10600 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR linkflags = -mmcu=atmega328p -Wl,-gc-sections -Os core = /usr/share/arduino/hardware/arduino/avr/cores/arduino/ # These are the same for CC, CXX and ASM includes = $ -I$core $ -I/usr/share/arduino/hardware/arduino/avr/variants/standard/ rule ar command = $ar rcs $out $in description = AR $out rule cc command = $cc $cflags $includes -MD -MF $out.d $in -o $out description = CC $out depfile = $out.d deps = gcc rule asm command = $cc $asmflags $includes -MD -MF $out.d $in -o $out description = AR $out depfile = $out.d deps = gcc rule cxx command = $cxx $cxxflags $includes -MD -MF $out.d $in -o $out description = CXX $out depfile = $out.d deps = gcc rule link command = $cc $linkflags -o $out $in -lc -lm description = LINK $out rule objcopy command = $objcopy -O ihex -R .eeprom $in $out description = OBJCOPY $out # Core ASM things build wiring_pulse.S.o: asm $core/wiring_pulse.S # Core CC things build WInterrupts.o: cc $core/WInterrupts.c build hooks.o: cc $core/hooks.c build wiring.o: cc $core/wiring.c build wiring_analog.o: cc $core/wiring_analog.c build wiring_digital.o: cc $core/wiring_digital.c build wiring_pulse.o: cc $core/wiring_pulse.c build wiring_shift.o: cc $core/wiring_shift.c # Core CXX things build CDC.o: cxx $core/CDC.cpp build HardwareSerial.o: cxx $core/HardwareSerial.cpp build HardwareSerial0.o: cxx $core/HardwareSerial0.cpp build HardwareSerial1.o: cxx $core/HardwareSerial1.cpp build HardwareSerial2.o: cxx $core/HardwareSerial2.cpp build HardwareSerial3.o: cxx $core/HardwareSerial3.cpp build IPAddress.o: cxx $core/IPAddress.cpp build PluggableUSB.o: cxx $core/PluggableUSB.cpp build Print.o: cxx $core/Print.cpp build Stream.o: cxx $core/Stream.cpp build Tone.o: cxx $core/Tone.cpp build USBCore.o: cxx $core/USBCore.cpp build WMath.o: cxx $core/WMath.cpp build WString.o: cxx $core/WString.cpp build abi.o: cxx $core/abi.cpp build new.o: cxx $core/new.cpp build core.a: ar WInterrupts.o hooks.o wiring.o wiring_analog.o wiring_digital.o wiring_pulse.o wiring_shift.o wiring_pulse.S.o $ CDC.o HardwareSerial.o HardwareSerial0.o HardwareSerial1.o HardwareSerial2.o HardwareSerial3.o IPAddress.o PluggableUSB.o Print.o $ Stream.o Tone.o USBCore.o WMath.o WString.o abi.o new.o # The main build step build dactylino.o: cxx dactylino.cpp build dactylino.elf: link dactylino.o core.a build dactylino.hex: objcopy dactylino.elf default dactylino.hex rule avrdude command = /usr/bin/avrdude -C/etc/avrdude.conf -v -patmega328p -carduino -P/dev/ttyACM0 -b115200 -D -Uflash:w:$in:i build upload: avrdude dactylino.hex