/make/arduino-mk

To get this branch, use:
bzr branch http://bzr.ed.am/make/arduino-mk

« back to all changes in this revision

Viewing changes to arduino.mk

  • Committer: Dan
  • Date: 2012-02-10 17:32:29 UTC
  • Revision ID: dan@waxworlds.org-20120210173229-v02cbsak94fljq7v
search for software in ARDUINODIR; include library/*/utility code in core lib

Show diffs side-by-side

added added

removed removed

Lines of Context:
169
169
OBJECTS := $(addsuffix .o, $(basename $(SOURCES)))
170
170
ARDUINOSRCDIR := $(ARDUINODIR)/hardware/arduino/cores/arduino
171
171
ARDUINOLIB := _arduino.a
172
 
ARDUINOLIBTMP := _arduino.a.tmp
 
172
ARDUINOLIBTMP := $(ARDUINOLIB).tmp
173
173
ARDUINOLIBOBJS := $(patsubst %, $(ARDUINOLIBTMP)/%.o, $(basename $(notdir \
174
174
        $(wildcard $(addprefix $(ARDUINOSRCDIR)/, *.c *.cpp)))))
175
175
ARDUINOLIBOBJS += $(foreach lib, $(LIBRARIES), \
176
176
        $(patsubst %, $(ARDUINOLIBTMP)/%.o, $(basename $(notdir \
177
 
        $(wildcard $(addprefix $(ARDUINODIR)/libraries/$(lib)/, *.c *.cpp))))))
 
177
        $(wildcard $(addprefix $(ARDUINODIR)/libraries/$(lib)/, \
 
178
                *.c *.cpp utility/*.c utility/*.cpp ))))))
178
179
 
179
180
# obtain board parameters from the arduino boards.txt file
180
181
BOARDS_FILE := $(ARDUINODIR)/hardware/arduino/boards.txt
189
190
BOARD_UPLOAD_PROTOCOL := \
190
191
        $(shell sed -ne "s/$(BOARD).upload.protocol=\(.*\)/\1/p" $(BOARDS_FILE))
191
192
 
192
 
# software
193
 
CC := avr-gcc
194
 
CXX := avr-g++
195
 
LD := avr-ld
196
 
AR := avr-ar
197
 
OBJCOPY := avr-objcopy
198
 
AVRDUDE := avrdude
 
193
# prefer software that comes with arduino
 
194
TOOLSDIRPREFIX = $(wildcard $(ARDUINODIR)/hardware/tools/)
 
195
TOOLSAVRDIRPREFIX = $(wildcard $(ARDUINODIR)/hardware/tools/avr/)
 
196
 
 
197
# software (prioritise binaries that came with arduino software)
 
198
FIND_SOFTWARE = $(firstword $(wildcard \
 
199
        $(ARDUINODIR)/hardware/tools/$(1) \
 
200
        $(ARDUINODIR)/hardware/tools/avr/bin/$(1) \
 
201
        ) $(1) )
 
202
CC := $(call FIND_SOFTWARE,avr-gcc)
 
203
CXX := $(call FIND_SOFTWARE,avr-g++)
 
204
LD := $(call FIND_SOFTWARE,avr-ld)
 
205
AR := $(call FIND_SOFTWARE,avr-ar)
 
206
OBJCOPY := $(call FIND_SOFTWARE,avr-objcopy)
 
207
AVRDUDE := $(call FIND_SOFTWARE,avrdude)
199
208
 
200
209
# flags
201
210
CPPFLAGS = -Os -Wall -fno-exceptions -ffunction-sections -fdata-sections
222
231
target: $(TARGET).hex
223
232
 
224
233
upload:
 
234
        @echo "\nUploading to board..."
 
235
        @test -n "$(SERIALDEV)" || { \
 
236
                echo "error: SERIALDEV could not be determined automatically." >&2; \
 
237
                exit 1; }
225
238
        stty -F $(SERIALDEV) hupcl
226
239
        $(AVRDUDE) $(AVRDUDEFLAGS) -U flash:w:$(TARGET).hex:i
227
240
 
236
249
                -e 's/\(.\{12\}\) *\(.*\)/\1 \2/;p' $(BOARDS_FILE)
237
250
 
238
251
monitor:
 
252
        @test -n "$(SERIALDEV)" || { \
 
253
                echo "error: SERIALDEV could not be determined automatically." >&2; \
 
254
                exit 1; }
239
255
        screen $(SERIALDEV)
240
256
 
241
257
# building the target
277
293
$(ARDUINOLIBTMP)/%.o: $(ARDUINODIR)/libraries/*/%.cpp
278
294
        @test -d $(ARDUINOLIBTMP) || mkdir $(ARDUINOLIBTMP)
279
295
        $(COMPILE.cpp) -o $@ $<
 
296
 
 
297
$(ARDUINOLIBTMP)/%.o: $(ARDUINODIR)/libraries/*/utility/%.c
 
298
        @test -d $(ARDUINOLIBTMP) || mkdir $(ARDUINOLIBTMP)
 
299
        $(COMPILE.cpp) -o $@ $<
 
300
 
 
301
$(ARDUINOLIBTMP)/%.o: $(ARDUINODIR)/libraries/*/utility/%.cpp
 
302
        @test -d $(ARDUINOLIBTMP) || mkdir $(ARDUINOLIBTMP)
 
303
        $(COMPILE.cpp) -o $@ $<