SKETCH=aardremote.cpp

#PORT=/dev/rfcomm0
PORT=/dev/ttyACM0
BAUD=115200

AARDIR=/zooty/arduino/arduino-1.0

CCOPTS=-c \
       -g \
       -Os \
       -w \
       -ffunction-sections \
       -fdata-sections \
       -mmcu=atmega328p \
       -DF_CPU=16000000L \
       -DARDUINO=100 \
       -I../common \
       -I$(AARDIR)/hardware/arduino/cores/arduino \
       -I$(AARDIR)/hardware/arduino/variants/standard

CXXOPTS=-c \
        -g \
        -Os \
        -w \
        -fno-exceptions \
        -ffunction-sections \
        -fdata-sections \
        -mmcu=atmega328p \
        -DF_CPU=16000000L \
        -DARDUINO=100 \
        -I../common \
        -I$(AARDIR)/hardware/arduino/cores/arduino \
        -I$(AARDIR)/hardware/arduino/variants/standard

CSRC=$(AARDIR)/hardware/arduino/cores/arduino/wiring_analog.c \
     $(AARDIR)/hardware/arduino/cores/arduino/WInterrupts.c \
     $(AARDIR)/hardware/arduino/cores/arduino/wiring.c \
     $(AARDIR)/hardware/arduino/cores/arduino/wiring_pulse.c \
     $(AARDIR)/hardware/arduino/cores/arduino/wiring_digital.c \
     $(AARDIR)/hardware/arduino/cores/arduino/wiring_shift.c

CXXSRC=$(AARDIR)/hardware/arduino/cores/arduino/WString.cpp \
       $(AARDIR)/hardware/arduino/cores/arduino/Print.cpp \
       $(AARDIR)/hardware/arduino/cores/arduino/USBCore.cpp \
       $(AARDIR)/hardware/arduino/cores/arduino/WMath.cpp \
       $(AARDIR)/hardware/arduino/cores/arduino/Tone.cpp \
       $(AARDIR)/hardware/arduino/cores/arduino/HardwareSerial.cpp \
       $(AARDIR)/hardware/arduino/cores/arduino/new.cpp \
       $(AARDIR)/hardware/arduino/cores/arduino/Stream.cpp \
       $(AARDIR)/hardware/arduino/cores/arduino/IPAddress.cpp \
       $(AARDIR)/hardware/arduino/cores/arduino/main.cpp \
       $(AARDIR)/hardware/arduino/cores/arduino/HID.cpp \
       $(AARDIR)/hardware/arduino/cores/arduino/CDC.cpp

COBJS=wiring_analog.c.o \
      WInterrupts.c.o \
      wiring.c.o \
      wiring_pulse.c.o \
      wiring_digital.c.o \
      wiring_shift.c.o

CXXOBJS=WString.cpp.o \
        Print.cpp.o \
        USBCore.cpp.o \
        WMath.cpp.o \
        Tone.cpp.o \
        HardwareSerial.cpp.o \
        new.cpp.o \
        Stream.cpp.o \
        IPAddress.cpp.o \
        main.cpp.o \
        HID.cpp.o \
        CDC.cpp.o

#VERBOSITY=-v -v -v -v
VERBOSITY=-v

UPLOAD_CMD=$(AARDIR)/hardware/tools/avrdude \
	-C$(AARDIR)/hardware/tools/avrdude.conf $(VERBOSITY) -patmega328p \
	-carduino -P$(PORT) -b$(BAUD) -D -Uflash:w:$(SKETCH).hex:i

build : $(SKETCH).hex

OBJS=BackgroundIR.cpp.o $(COBJS) $(CXXOBJS)

%.c.o: $(AARDIR)/hardware/arduino/cores/arduino/%.c
	avr-gcc $(CCOPTS) -o$@ $<

%.cpp.o: $(AARDIR)/hardware/arduino/cores/arduino/%.cpp
	avr-g++ $(CXXOPTS) -o$@ $<

%.c.o: %.c
	avr-gcc $(CCOPTS) -o$@ $<

%.cpp.o: %.cpp
	avr-g++ $(CXXOPTS) -o$@ $<

core.a: $(OBJS)
	rm -f core.a
	avr-ar rcs core.a $(OBJS)

$(SKETCH).elf : $(SKETCH).o core.a
	avr-gcc -Os -Wl,--gc-sections -mmcu=atmega328p -o$@ $^ -L. -lm

$(SKETCH).eep : $(SKETCH).elf
	avr-objcopy -O ihex -j .eeprom --set-section-flags=.eeprom=alloc,load \
	--no-change-warnings --change-section-lma .eeprom=0 $^ $@

$(SKETCH).hex : $(SKETCH).elf
	avr-objcopy -O ihex -R .eeprom $^ $@
	avr-size $@

#AARDRESPR=../libaard/aardreset
#AARDRESET=$(AARDRESPR) $(PORT)
#AARDSLEEP=usleep 2000000
AARDRESPR=
AARDRESET=true
AARDSLEEP=true

upload: $(SKETCH).hex $(AARDRESPR)
	$(AARDRESET)
	$(AARDSLEEP)
	$(UPLOAD_CMD) || ( usleep 500000 ; $(UPLOAD_CMD) )

clean::
	rm -f core.a $(OBJS) $(SKETCH).o $(SKETCH).elf $(SKETCH).eep \
	$(SKETCH).hex
