* application makefile. The system is written in GNU Make, and each module is independant of\r
* one-another.\r
*\r
- * To use a LUFA build system module, simply add an include to your project makefile:\r
+ * For details on the prerequisites needed for Linux and Windows machines to be able to use the LUFA\r
+ * build system, see \ref Sec_Prerequisites.\r
+ *\r
+ * To use a LUFA build system module, simply add an include to your project makefile. All user projects\r
+ * should at a minimum include \ref Page_BuildModule_CORE for base functionality:\r
* \code\r
- * include $(LUFA_PATH)/Build/lufa.core.in\r
+ * include $(LUFA_PATH)/Build/lufa_core.mk\r
* \endcode\r
*\r
- * And the associated build module targets will be added to your project's build makefile automatically.\r
- * To call a build target, run <tt>make {TARGET_NAME}</tt> from the command line, substituting in\r
- * the appropriate target name.\r
+ * Once included in your project makefile, the associated build module targets will be added to your\r
+ * project's build makefile targets automatically. To call a build target, run <tt>make {TARGET_NAME}</tt>\r
+ * from the command line, substituting in the appropriate target name.\r
*\r
* \see \ref Sec_AppConfigParams for a copy of the sample LUFA project makefile.\r
*\r
* \li \subpage Page_BuildModule_CPPCHECK - Static Code Analysis\r
* \li \subpage Page_BuildModule_DFU - Device Programming\r
* \li \subpage Page_BuildModule_DOXYGEN - Automated Source Code Documentation\r
+ * \li \subpage Page_BuildModule_HID - Device Programming\r
* \li \subpage Page_BuildModule_SOURCES - LUFA Module Source Code Variables\r
*/\r
\r
*\r
* The BUILD LUFA build system module, providing targets for the compilation,\r
* assembling and linking of an application from source code into binary files\r
- * suitable for programming into a target device.\r
+ * suitable for programming into a target device, using the GCC compiler.\r
*\r
* To use this module in your application makefile, add the following code:\r
* \code\r
- * include $(LUFA_PATH)/Build/lufa.build.in\r
+ * include $(LUFA_PATH)/Build/lufa_build.mk\r
* \endcode\r
*\r
* \section SSec_BuildModule_BUILD_Requirements Requirements\r
- * This module requires the the architecture appropriate binaries of the GCC compiler are available in your\r
+ * This module requires the the architecture appropriate binaries of the GCC compiler are available in your\r
* system's <b>PATH</b> variable. The GCC compiler and associated toolchain is distributed in Atmel AVR Studio\r
* 5.x and Atmel Studio 6.x installation directories, as well as in many third party distribution packages.\r
*\r
* <td>Display a size-sorted list of symbols from the compiled application, in decimal bytes.</td>\r
* </tr>\r
* <tr>\r
+ * <td><tt>lib</tt></td>\r
+ * <td>Build and archive all source files into a library A binary file.</td>\r
+ * </tr>\r
+ * <tr>\r
* <td><tt>all</tt></td>\r
* <td>Build and link the application into ELF debug and HEX binary files.</td>\r
* </tr>\r
* <td><tt>clean</tt></td>\r
* <td>Remove all intermediatary files and binary output files.</td>\r
* </tr>\r
+ * <tr>\r
+ * <td><tt>mostlyclean</tt></td>\r
+ * <td>Remove all intermediatary files but preserve any binary output files.</td>\r
+ * </tr>\r
+ * <tr>\r
+ * <td><tt><i><filename></i>.s</tt></td>\r
+ * <td>Create an assembly listing of a given input C/C++ source file.</td>\r
+ * </tr>\r
* </table>\r
*\r
* \section SSec_BuildModule_BUILD_MandatoryParams Mandatory Parameters\r
* <td>Version of the C++ standard to apply when compiling C++ source files (see GCC manual).</td>\r
* </tr>\r
* <tr>\r
+ * <td><tt>DEBUG_FORMAT</tt></td>\r
+ * <td>Format of the debug information to embed in the generated object files (see GCC manual).</td>\r
+ * </tr>\r
+ * <tr>\r
+ * <td><tt>DEBUG_LEVEL</tt></td>\r
+ * <td>Level of the debugging information to embed in the generated object files (see GCC manual).</td>\r
+ * </tr>\r
+ * <tr>\r
* <td><tt>F_CPU</tt></td>\r
* <td>Speed of the processor CPU clock, in Hz.</td>\r
* </tr>\r
* </tr>\r
* <tr>\r
* <td><tt>CC_FLAGS</tt></td>\r
- * <td>Common flags to pass to the compiler, assembler and linker, after the automatically generated flags.</td>\r
+ * <td>Common flags to pass to the C/C++ compiler and assembler, after the automatically generated flags.</td>\r
* </tr>\r
* <tr>\r
* <td><tt>LD_FLAGS</tt></td>\r
* <tr>\r
* <td><tt>OBJDIR</tt></td>\r
* <td>Directory to place the generated object and dependency files. If set to "." the same folder as the source file will be used.\r
- * \note When this option is enabled, all source filenames must be unique.</td>\r
+ * \note When this option is enabled, all source filenames <b>must</b> be unique.</td>\r
+ * </tr>\r
+ * <tr>\r
+ * <td><tt>OBJECT_FILES</tt></td>\r
+ * <td>List of additional object files that should be linked into the resulting binary.</td>\r
* </tr>\r
* </table>\r
*\r
- * \section SSec_BuildModule_BUILD_ProvideVariables Module Provided Variables\r
+ * \section SSec_BuildModule_BUILD_ProvidedVariables Module Provided Variables\r
*\r
* <table>\r
* <tr>\r
*\r
* To use this module in your application makefile, add the following code:\r
* \code\r
- * include $(LUFA_PATH)/Build/lufa.core.in\r
+ * include $(LUFA_PATH)/Build/lufa_core.mk\r
* \endcode\r
*\r
* \section SSec_BuildModule_CORE_Requirements Requirements\r
* </tr>\r
* </table>\r
*\r
- * \section SSec_BuildModule_CORE_ProvideVariables Module Provided Variables\r
+ * \section SSec_BuildModule_CORE_ProvidedVariables Module Provided Variables\r
*\r
* <table>\r
* <tr>\r
*\r
* To use this module in your application makefile, add the following code:\r
* \code\r
- * include $(LUFA_PATH)/Build/lufa.atprogram.in\r
+ * include $(LUFA_PATH)/Build/lufa_atprogram.mk\r
* \endcode\r
*\r
* \section SSec_BuildModule_ATPROGRAM_Requirements Requirements\r
* </tr>\r
* </table>\r
*\r
- * \section SSec_BuildModule_ATPROGRAM_ProvideVariables Module Provided Variables\r
+ * \section SSec_BuildModule_ATPROGRAM_ProvidedVariables Module Provided Variables\r
*\r
* <table>\r
* <tr>\r
*\r
* To use this module in your application makefile, add the following code:\r
* \code\r
- * include $(LUFA_PATH)/Build/lufa.avrdude.in\r
+ * include $(LUFA_PATH)/Build/lufa_avrdude.mk\r
* \endcode\r
*\r
* \section SSec_BuildModule_AVRDUDE_Requirements Requirements\r
* This module requires the <tt>avrdude</tt> utility to be available in your system's <b>PATH</b>\r
* variable. The <tt>avrdude</tt> utility is distributed in the old WinAVR project releases for\r
- * Windows (<a>winavr.sourceforge.net</a>) or can be installed on *nix systems via the project's\r
+ * Windows (<a>http://winavr.sourceforge.net</a>) or can be installed on *nix systems via the project's\r
* source code (<a>https://savannah.nongnu.org/projects/avrdude</a>) or through the package manager.\r
*\r
* \section SSec_BuildModule_AVRDUDE_Targets Targets\r
* <td>Program the device FLASH memory with the application's executable data.</td>\r
* </tr>\r
* <tr>\r
- * <td><tt>avrdude</tt></td>\r
+ * <td><tt>avrdude-ee</tt></td>\r
* <td>Program the device EEPROM memory with the application's EEPROM data.</td>\r
* </tr>\r
* </table>\r
* <td>Name of the programmer or debugger tool to communicate with (e.g. <tt>jtagicemkii</tt>).</td>\r
* </tr>\r
* <tr>\r
- * <td><tt>ATPROGRAM_PORT</tt></td>\r
+ * <td><tt>AVRDUDE_PORT</tt></td>\r
* <td>Name of the communication port to use when when programming with the connected tool (e.g. <tt>COM2</tt>, <tt>/dev/ttyUSB0</tt> or <tt>usb</tt>).</td>\r
* </tr>\r
* <tr>\r
- * <td><tt>ATPROGRAM_FLAGS</tt></td>\r
+ * <td><tt>AVRDUDE_FLAGS</tt></td>\r
* <td>Additional flags to pass to avrdude when programming, applied after the automatically generated flags.</td>\r
* </tr>\r
* </table>\r
*\r
- * \section SSec_BuildModule_AVRDUDE_ProvideVariables Module Provided Variables\r
+ * \section SSec_BuildModule_AVRDUDE_ProvidedVariables Module Provided Variables\r
*\r
* <table>\r
* <tr>\r
*\r
* To use this module in your application makefile, add the following code:\r
* \code\r
- * include $(LUFA_PATH)/Build/lufa.cppcheck.in\r
+ * include $(LUFA_PATH)/Build/lufa_cppcheck.mk\r
* \endcode\r
*\r
* \section SSec_BuildModule_CPPCHECK_Requirements Requirements\r
* </tr>\r
* </table>\r
*\r
- * \section SSec_BuildModule_CPPCHECK_ProvideVariables Module Provided Variables\r
+ * \section SSec_BuildModule_CPPCHECK_ProvidedVariables Module Provided Variables\r
*\r
* <table>\r
* <tr>\r
*\r
* The DFU programming utility LUFA build system module, providing targets to reprogram an\r
* Atmel processor FLASH and EEPROM memories with a project's compiled binary output files.\r
- * This module requires a DFU class bootloader to be running in the target.\r
+ * This module requires a DFU class bootloader to be running in the target, compatible with\r
+ * the DFU bootloader protocol as published by Atmel.\r
*\r
* To use this module in your application makefile, add the following code:\r
* \code\r
- * include $(LUFA_PATH)/Build/lufa.dfu.in\r
+ * include $(LUFA_PATH)/Build/lufa_dfu.mk\r
* \endcode\r
*\r
* \section SSec_BuildModule_DFU_Requirements Requirements\r
* </tr>\r
* </table>\r
*\r
- * \section SSec_BuildModule_DFU_ProvideVariables Module Provided Variables\r
+ * \section SSec_BuildModule_DFU_ProvidedVariables Module Provided Variables\r
*\r
* <table>\r
* <tr>\r
*\r
* To use this module in your application makefile, add the following code:\r
* \code\r
- * include $(LUFA_PATH)/Build/lufa.doxygen.in\r
+ * include $(LUFA_PATH)/Build/lufa_doxygen.mk\r
* \endcode\r
*\r
* \section SSec_BuildModule_DOXYGEN_Requirements Requirements\r
* This module requires the <tt>doxygen</tt> utility from the Doxygen website\r
- * (<a>http://www.stack.nl/~dimitri/doxygen/</a>) to be available in your system's <b>PATH</b>\r
- * variable. On *nix systems the <tt>doxygen</tt> utility can be installed via the project's source\r
- * code or through the package manager.\r
+ * (<a>http://www.doxygen.org/</a>) to be available in your system's <b>PATH</b> variable. On *nix\r
+ * systems the <tt>doxygen</tt> utility can be installed via the project's source code or through\r
+ * the package manager.\r
*\r
* \section SSec_BuildModule_DOXYGEN_Targets Targets\r
*\r
* <td><tt>doxygen</tt></td>\r
* <td>Generate project documentation.</td>\r
* </tr>\r
+ * <tr>\r
+ * <td><tt>doxygen_create</tt></td>\r
+ * <td>Create a new Doxygen configuration file using the latest template.</td>\r
+ * </tr>\r
+ * <tr>\r
+ * <td><tt>doxygen_upgrade</tt></td>\r
+ * <td>Upgrade an existing Doxygen configuration file to the latest template</td>\r
+ * </tr>\r
* </table>\r
*\r
* \section SSec_BuildModule_DOXYGEN_MandatoryParams Mandatory Parameters\r
* </tr>\r
* </table>\r
*\r
- * \section SSec_BuildModule_DOXYGEN_ProvideVariables Module Provided Variables\r
+ * \section SSec_BuildModule_DOXYGEN_ProvidedVariables Module Provided Variables\r
*\r
* <table>\r
* <tr>\r
* </table>\r
*/\r
\r
+ /** \page Page_BuildModule_HID The HID build module\r
+ *\r
+ * The HID programming utility LUFA build system module, providing targets to reprogram an\r
+ * Atmel processor's FLASH memory with a project's compiled binary output file. This module\r
+ * requires a HID class bootloader to be running in the target, using a protocol compatible\r
+ * with the PJRC "HalfKay" protocol (<a>http://www.pjrc.com/teensy/halfkay_protocol.html</a>).\r
+ *\r
+ * To use this module in your application makefile, add the following code:\r
+ * \code\r
+ * include $(LUFA_PATH)/Build/lufa_hid.mk\r
+ * \endcode\r
+ *\r
+ * \section SSec_BuildModule_HID_Requirements Requirements\r
+ * This module requires either the <tt>hid_bootloader_cli</tt> utility from the included LUFA HID\r
+ * class bootloader API subdirectory, or the <tt>teensy_loader_cli</tt> utility from PJRC\r
+ * (<a>http://www.pjrc.com/teensy/loader_cli.html</a>) to be available in your system's <b>PATH</b>\r
+ * variable.\r
+ *\r
+ * \section SSec_BuildModule_HID_Targets Targets\r
+ *\r
+ * <table>\r
+ * <tr>\r
+ * <td><tt>hid</tt></td>\r
+ * <td>Program the device FLASH memory with the application's executable data using <tt>hid_bootloader_cli</tt>.</td>\r
+ * </tr>\r
+ * <tr>\r
+ * <td><tt>hid-ee</tt></td>\r
+ * <td>Program the device EEPROM memory with the application's EEPROM data using <tt>hid_bootloader_cli</tt> and\r
+ * a temporary AVR application programmed into the target's FLASH.\r
+ * \note This will erase the currently loaded application in the target.</td>\r
+ * </tr>\r
+ * <tr>\r
+ * <td><tt>teensy</tt></td>\r
+ * <td>Program the device FLASH memory with the application's executable data using <tt>teensy_loader_cli</tt>.</td>\r
+ * </tr>\r
+ * <tr>\r
+ * <td><tt>teensy-ee</tt></td>\r
+ * <td>Program the device EEPROM memory with the application's EEPROM data using <tt>teensy_loader_cli</tt> and\r
+ * a temporary AVR application programmed into the target's FLASH.\r
+ * \note This will erase the currently loaded application in the target.</td>\r
+ * </tr>\r
+ * </table>\r
+ *\r
+ * \section SSec_BuildModule_HID_MandatoryParams Mandatory Parameters\r
+ *\r
+ * <table>\r
+ * <tr>\r
+ * <td><tt>MCU</tt></td>\r
+ * <td>Name of the Atmel processor model (e.g. <tt>at90usb1287</tt>).</td>\r
+ * </tr>\r
+ * <tr>\r
+ * <td><tt>TARGET</tt></td>\r
+ * <td>Name of the application output file prefix (e.g. <tt>TestApplication</tt>).</td>\r
+ * </tr>\r
+ * </table>\r
+ *\r
+ * \section SSec_BuildModule_HID_OptionalParams Optional Parameters\r
+ *\r
+ * <table>\r
+ * <tr>\r
+ * <td><i>None</i></td>\r
+ * </tr>\r
+ * </table>\r
+ *\r
+ * \section SSec_BuildModule_HID_ProvidedVariables Module Provided Variables\r
+ *\r
+ * <table>\r
+ * <tr>\r
+ * <td><i>None</i></td>\r
+ * </tr>\r
+ * </table> \r
+ *\r
+ * \section SSec_BuildModule_HID_ProvidedMacros Module Provided Macros\r
+ *\r
+ * <table>\r
+ * <tr>\r
+ * <td><i>None</i></td>\r
+ * </tr>\r
+ * </table>\r
+ */\r
+ \r
/** \page Page_BuildModule_SOURCES The SOURCES build module\r
*\r
* The SOURCES LUFA build system module, providing variables listing the various LUFA source files\r
*\r
* To use this module in your application makefile, add the following code:\r
* \code\r
- * include $(LUFA_PATH)/Build/lufa.sources.in\r
+ * include $(LUFA_PATH)/Build/lufa_sources.mk\r
* \endcode\r
*\r
* \section SSec_BuildModule_SOURCES_Requirements Requirements\r
* </tr>\r
* </table>\r
*\r
- * \section SSec_BuildModule_SOURCES_ProvideVariables Module Provided Variables\r
+ * \section SSec_BuildModule_SOURCES_ProvidedVariables Module Provided Variables\r
*\r
* <table>\r
* <tr>\r