aboutsummaryrefslogtreecommitdiff
path: root/arduino-mk
AgeCommit message (Collapse)Author
2013-05-31Added information about the changes that went in v0.10.40.10.4Sudar
2013-05-31Moved all version information and change log into HISTORY.md fileSudar
2013-05-30Enable dependency tracking for libraries and coreMatthijs Kooijman
This makes sure a library or core file gets rebuild when a header file it depends on is changed, preventing weird surprises when the application is recompiled with the new header values but the library isn't. For most users, this won't be strictly needed, but anyone working on a library or even the Arduino core, this is must to prevent surprises or needing a make clean between every build attempt.
2013-05-30Fix creating of $(OBJDIR) in a proper wayMatthijs Kooijman
This adds a dependency on $(OBJDIR) for every rule that creates a file inside $(OBJDIR) but does not already depend on any file within $(OBJDIR). All other dependencies on $(OBJDIR) are removed. These dependencies are added after a | to tell make that this is a "order-only prerequisite". This means that the file inside $(OBJDIR) needs $(OBJDIR) to be present but if $(OBJDIR) changes (which happens whenever a file _inside_ the directory is touched!), there is no need to recompile the file within $(OBJDIR). Implementing this using a generic implicit rule like: $(OBJDIR)/%: | $(OBJDIR) doesn't work, since make doesn't merge the prerequisites of multiple implicit rules like it does for explicit rules. We could use $(LOCAL_OBJS) and friends to create explicit rules to do something like the above, but just adding the dependencies on all rules seems more explicit and future-proof.
2013-05-30Rewrite dependency codePaul Brook
Commit originally by: Paul Brook <paul@codesourcery.com> Port to newer version and commit message by: Matthijs Kooijman <matthijs@stdin.nl> Instead of generating a big list of dependencies at the start, now dependency files are generated whenever a .o file is compiled. This works, since if the .o file does not exist, it should be compiled and make does not need to know about its dependencies. If the .o (and thus the .d) file does exist, the .d file contains all the dependencies used to compile the .o file. If none of those changed, the .o file does not need a recompile, but also the .d file is still accurate (in particular, the dependency list cannot change without one of the dependent .h files or the .cpp file itself changing). This helps to remove a lot of duplication in the code, since now only a single commandline is needed for both compilation and dependency generation. It will probably also run a bit faster now. Note that this commit breaks the creation of $(OBJDIR) since this "accidentally" always worked before because $(DEPFILE) was created before anything else. That will be fixed next.
2013-05-30Compile .ino and .pde files directlyMatthijs Kooijman
Before, they were copied to a .cpp file to add the Arduino.h/WProgram.h include. However, this would cause the compiler error messages to not refer to the right filename, making it hard to use the compiler output in an editor like vim to point out errors. By using gcc's -include option, there is no need to modify the ino/pde file before compiling. However, we will need to explicitely tell gcc that the source file is c++, because of the non-standard extensions.
2013-05-30Let the Makefile decide which include to use for .pde filesMatthijs Kooijman
Previously, the C preprocessor would pick either Arduino.h or WProgram.h based on a define. Now, the Makefile makes the decision earlier. This prevents having to duplicate the #if line in the next commit.
2013-05-30Don't try to read version.txt when it does not existMatthijs Kooijman
This can happen for example when the arduino directory is a checkout from git instead of a released version. Before, cat would show an error which is now prevented. The version still defaults to 100 just like before.
2013-05-30Output configuration info only onceMatthijs Kooijman
Before, the configuration info would be shown again when running a recursive make call, or when make restarted after regenerating the dependencies file. Now, it only shows the info the first time. Closes: #46
2013-05-30Fix raw_upload and reset for normal uploadsMatthijs Kooijman
In commit 90e3c9ad (Fix upload in case of parallelized make), some dependencies were shuffled to (I assume) prevent the reset from happening before or at the same time as the upload when running a parallel make. However, this introduced two problems: - The upload and raw_upload became effectively the same, and both of them did a reset (even though raw_upload should do the upload without a reset). - The reset target does not depend on $(TARGET_HEX) or verify_size, so in a parallel make the reset is executed before / at the same time as the actual compilation (since the reset doesn't seem to be needed for at least the Arduino Uno, apparently avrdude handles this, this probably wasn't noticed by anyone). Because we can't force a specific ordering of dependencies in parallel make and because adding dependencies to the reset target doesn't seem appropriate (you should be able to do a "make reset" without needing to compile everything first), this commit changes the uploading to call $(MAKE) again to do the actual upload. The current approach ensures that: - raw_upload does a compile, size check and upload and upload does the same plus a reset. - A reset is not done if the compilation fails or the size check fails. - verify_size is called only once.
2013-05-30Check that there is exactly one .pde or .ino fileMatthijs Kooijman
When there are none (and no .cpp files either), the build would stall trying to cat all the .d files together (which would result in cat getting no arguments and thus waiting for input on stdin). When there are multiple .ino and/or .pde files, the build could technically work out, the Arduino IDE concatenates all .ino / .pde files together and compiles them as a single compile unit, so unless we implement that as well, it's better to just error out.
2013-05-30Let MONITOR_BAUDRATE detection also look in .pde filesMatthijs Kooijman
Before, it would only look in .ino files. If you had no .ino file but only a .pde file, this would cause the build to hang, since grep would be waiting for input on its stdin.
2013-05-30When detecting MONITOR_BAUDRATE, use $(LOCAL_INO_SRCS)Matthijs Kooijman
Now that this detection code is moved down a bit, it can use the same .ino list as all the other code.
2013-05-30Move MONITOR_BAUDRATE detection further downMatthijs Kooijman
No changes are made to the code, it is only moved. This allows it to use LOCAL_INO_SRCS and LOCAL_INO_PDE_SRCS in the next commit.
2013-02-10Added ifndef ARDUINO_VAR_PATH for compiling for the attinyDaniel Esteban Nombela
2013-01-31Allow adding extra common dependenciesgabriel
2013-01-03Fixed the automatic baudrate detection script that was broken if the line ↵Sudar
already had the tab character
2012-12-23Auto detect sketchbook location even in MACSudar
2012-12-16merge changes from https://github.com/sudargabriel
2012-12-15Merged changes from https://github.com/alohrSudar
2012-12-15Enabled warningsSudar
2012-12-15Show original line number for error messagesAdam Dunlap
2012-12-15Added verify_size actionSudar
2012-12-15Merged all changes from rpavlikSudar
2012-12-15Merged all commits from upstreamSudar
2012-12-14make build dir (OBJDIR) changeablegabriel
2012-11-17add eeprom upload supportgabriel
2012-11-12Added dummy file to verify_size to avoid always being run.Fabio Pugliese Ornellas
2012-11-12Added sketch size verification.Fabio Pugliese Ornellas
2012-11-06removing -w from CPPFLAGS (warnings can be usefull)gabriel
2012-11-02Fix upload in case of parallelized make.Jan Gosmann
2012-11-01Make the makefile error if the arduino port is not present.Ryan Pavlik
2012-11-01Make everybody depend on the makefile, in case cflags are changed, etc.Ryan Pavlik
2012-11-01Be able to silence configuration outputRyan Pavlik
2012-11-01Fixing problem of hanging upload.Jan Gosmann
2012-10-07set USB_VID and USB_PID only for leonardo boardsAndreas Lohr
2012-09-20Provide symbol_sizes and generated_assembly targets.Ryan Pavlik
Also update existing auxiliary targets with help, and make the .PHONY list complete and in order.
2012-09-20Change .sym outputRyan Pavlik
2012-09-20Make disasm more helpfulRyan Pavlik
2012-09-20Use variables instead of hardcoded commandsRyan Pavlik
2012-09-20Add knowledge of device-specific assemblerRyan Pavlik
2012-09-17Added changelogrelease-0.10Martin Oldfield
2012-09-17Added support for the USB PID/VID needed for the Leonardo, as per patches ↵Martin Oldfield
from Dan Villiom Podlaski Christiansen and Marc Plano-Lesay
2012-09-17Only set AVRDUDE_CONF if it's not set, as per Tom Hall's patchMartin Oldfield
2012-09-17Only set OBJDIR if it is not already set; if we do set it make it $BOARD_TAG ↵Martin Oldfield
dependent. This follows comments from Matthias Urlichs and Scott Howard
2012-09-17Fixed ARDUNIO/ARDUINO typo in README.md as per Kalin Kozhuharov's commentMartin Oldfield
2012-09-17Made the size target look at the ELF file, not the hex, as per Jared ↵Martin Oldfield
Szechy's patch. Craig Leres made a similar comment
2012-08-27Making other *FLAGS += rather than =Adam Dunlap
2012-08-23Make listing files more usefulRyan Pavlik
2012-08-23Allow passing extra flagsRyan Pavlik