I think its wonderful so many make contributions like this. Good job.
If I may make a suggestion, break out F_CPU, ARDUINO, and microcontroller type into their own variables, at the top, and then add them into the CFLAGS and LINK_FLAGS lines. These are the things which people are most likely to customize and the microcontroller type and CPU frequency are ones which are likely to change frequently. For example, I have three different uC's I target (mega2560, atmega328p, and atmega8) and two different clock speeds (8Mhz and 16Mhz).
If you elect to support multiple clock speeds and/or CPU type, you might also take that into consideration for your obj location, as otherwise without a clean you'll get a bad build and changing requires rebuilding the whole project unless obj location is taken into consideration. Oh well, just good for thought.
Aside from that, most people are not likely to require debugging support to be compiled into the binary. As such, the '-g' flag isn't likely to benefit, as for as far as I know, it requires a JTAG device.
If you're feeling adventurous, you might also consider adding support for avrdude to support something like an 'upload' or 'install' target.
At any rate, over all the makefile looks good and easy to read. Kudos for breaking out the various core directories, project directories, and libraries.