Makes it a bit more standard too.
Implements two new make rules: 'net_set_fuses' executes a single ssh command, 'net_upload' pipes hex through ssh connection. The example also showcases the FORCE_MONITOR_PORT feature.
This is support for https://code.google.com/p/arduino-tiny The arduino-tiny project provides a boards.txt file and a whole separate Arduino core modified to work with attinies. Arduino.mk will now switch to that core if it finds a 'build.core' parameter in boards.txt and a folder in $(ALTERNATE_CORE_PATH)/cores by that name.
Include files are searched for in the include search path made up from, among other places, the -I switches given to the gcc compiler. The . (dot) used for the current directory is not in the search path when the IDE builds the project and does not seem to be needed in any reasonable case. Maybe it was included because someone thought it meant to "search in the same directory as the file being compiled", but I cannot tell because the switch was already included in the first commit in this repo. In any case, the current file directory is already searched by gcc before the search path is consulted, in any case, so this switch is not needed to cause this behavior. Including the "-I." switch causes compiles to fail when libraries include a header which is coincidentally named the same as one of the user headers. For example, if the user has a Udp.h file in his sketch folder, the compile will fail if it includes the EthernetUdp.h file. A simple example is the examples/WebServer code. It fails if you do this: touch examples/WebServer/Udp.h make -C examples/WebServer But it builds ok from the IDE which does not include "." in the search path. Similarly, HelloWorld fails for the same reason if you do this: touch examples/HelloWorld/Print.h make -C examples/HelloWorld Remove the -I. switch from the CPPFLAGS directive altogether to prevent this include filename confusion and to more closely model the behavior of the IDE. Fixes #303. It may also work to move the -I. to the end of the search path, but this still would compile differently from the IDE and so it is considered not to be a useful feature to retain in any case. -- I did not add a test case here because it's not clear to me how it should be added. Should I modify HelloWorld as described above, or should I add examples/TestSearchPath/ with the same files explicitly for this test? It would be clearer for me if there was an explicit "tests" directory independent from "examples".
Subject to change during the beta phase, as its already different than 1.5.6, also may change when packaged for Debian (usually symlinked) Fixes issue #301
Double-quoting was added in 7618da7 to allow for spaces in paths, that was a bad idea as: 1. most GNU Make functions can't handle spaces 2. it breaks variable expansion on Linux/OSX e.g. ~/sketchbook 3. Windows doesn't like double-quotes - see d5c7ed1 So basically, don't put spaces in your paths, as most Make functions can't handle them, even if escaped, and its a bit dangerous when shelling out to grep etc. Single-quoting is no better either.
homebrew Refer to sudar/homebrew-arduino-mk#2 (comment)
We currently pass the -D (do not erase) option to avrdude unconditionally in order to work around an Arduino Mega bootloader bug. However, this has the side-effect of breaking the ispload target for all non-XMEGA chips, since a write operation on these chips essentially ANDs the new program with the existing memory contents. If the memory is not first erased to contain only 0xff, the resulting image is garbage. This patch makes it so we pass -D when we're using the Arduino bootloader but don't pass it when we're using ISP directly.
curl handles it ok luckily.