diff options
author | Jack Humbert <jack.humb@gmail.com> | 2017-07-07 11:55:23 -0400 |
---|---|---|
committer | Jack Humbert <jack.humb@gmail.com> | 2017-07-07 11:55:23 -0400 |
commit | 60b30c036397cb5627fa374bb930794b225daa29 (patch) | |
tree | e156c2d6b27f01db6985f2cc560c9c345d48fdac /BuildTests |
Squashed 'lib/lufa/' content from commit 385d40300
git-subtree-dir: lib/lufa
git-subtree-split: 385d4030035dbaf41591309dbde47653bd03841b
Diffstat (limited to 'BuildTests')
23 files changed, 1744 insertions, 0 deletions
diff --git a/BuildTests/BoardDriverTest/Board/Board.h b/BuildTests/BoardDriverTest/Board/Board.h new file mode 100644 index 0000000000..33b65fe4cd --- /dev/null +++ b/BuildTests/BoardDriverTest/Board/Board.h @@ -0,0 +1,82 @@ +/* + LUFA Library + Copyright (C) Dean Camera, 2017. + + dean [at] fourwalledcubicle [dot] com + www.lufa-lib.org +*/ + +/* + Copyright 2017 Dean Camera (dean [at] fourwalledcubicle [dot] com) + + Permission to use, copy, modify, distribute, and sell this + software and its documentation for any purpose is hereby granted + without fee, provided that the above copyright notice appear in + all copies and that both that the copyright notice and this + permission notice and warranty disclaimer appear in supporting + documentation, and that the name of the author not be used in + advertising or publicity pertaining to distribution of the + software without specific, written prior permission. + + The author disclaims all warranties with regard to this + software, including all implied warranties of merchantability + and fitness. In no event shall the author be liable for any + special, indirect or consequential damages or any damages + whatsoever resulting from loss of use, data or profits, whether + in an action of contract, negligence or other tortious action, + arising out of or in connection with the use or performance of + this software. +*/ + +/** \file + * \brief LUFA Custom Board Hardware Information Driver (Template) + * + * This is a stub driver header file, for implementing custom board + * layout hardware with compatible LUFA board specific drivers. If + * the library is configured to use the BOARD_USER board mode, this + * driver file should be completed and copied into the "/Board/" folder + * inside the application's folder. + * + * This stub is for the board-specific component of the LUFA Board Hardware + * information driver. + */ + +#ifndef __BOARD_USER_H__ +#define __BOARD_USER_H__ + + /* Includes: */ + // TODO: Add any required includes here + + /* Enable C linkage for C++ Compilers: */ + #if defined(__cplusplus) + extern "C" { + #endif + + /* Preprocessor Checks: */ + #if !defined(__INCLUDE_FROM_BOARD_H) + #error Do not include this file directly. Include LUFA/Drivers/Board/Board.h instead. + #endif + + /* Public Interface - May be used in end-application: */ + /* Macros: */ + /** Indicates the board has a hardware Buttons mounted if defined. */ +// #define BOARD_HAS_BUTTONS + + /** Indicates the board has a hardware Dataflash mounted if defined. */ +// #define BOARD_HAS_DATAFLASH + + /** Indicates the board has a hardware Joystick mounted if defined. */ +// #define BOARD_HAS_JOYSTICK + + /** Indicates the board has a hardware LEDs mounted if defined. */ +// #define BOARD_HAS_LEDS + + /* Disable C linkage for C++ Compilers: */ + #if defined(__cplusplus) + } + #endif + +#endif + +/** @} */ + diff --git a/BuildTests/BoardDriverTest/Board/Buttons.h b/BuildTests/BoardDriverTest/Board/Buttons.h new file mode 100644 index 0000000000..c1a23ef087 --- /dev/null +++ b/BuildTests/BoardDriverTest/Board/Buttons.h @@ -0,0 +1,92 @@ +/* + LUFA Library + Copyright (C) Dean Camera, 2017. + + dean [at] fourwalledcubicle [dot] com + www.lufa-lib.org +*/ + +/* + Copyright 2017 Dean Camera (dean [at] fourwalledcubicle [dot] com) + + Permission to use, copy, modify, distribute, and sell this + software and its documentation for any purpose is hereby granted + without fee, provided that the above copyright notice appear in + all copies and that both that the copyright notice and this + permission notice and warranty disclaimer appear in supporting + documentation, and that the name of the author not be used in + advertising or publicity pertaining to distribution of the + software without specific, written prior permission. + + The author disclaims all warranties with regard to this + software, including all implied warranties of merchantability + and fitness. In no event shall the author be liable for any + special, indirect or consequential damages or any damages + whatsoever resulting from loss of use, data or profits, whether + in an action of contract, negligence or other tortious action, + arising out of or in connection with the use or performance of + this software. +*/ + +/** \file + * \brief LUFA Custom Board Button Hardware Driver (Template) + * + * This is a stub driver header file, for implementing custom board + * layout hardware with compatible LUFA board specific drivers. If + * the library is configured to use the BOARD_USER board mode, this + * driver file should be completed and copied into the "/Board/" folder + * inside the application's folder. + * + * This stub is for the board-specific component of the LUFA Buttons driver, + * for the control of physical board-mounted GPIO pushbuttons. + */ + +#ifndef __BUTTONS_USER_H__ +#define __BUTTONS_USER_H__ + + /* Includes: */ + // TODO: Add any required includes here + + /* Enable C linkage for C++ Compilers: */ + #if defined(__cplusplus) + extern "C" { + #endif + + /* Preprocessor Checks: */ + #if !defined(__INCLUDE_FROM_BUTTONS_H) + #error Do not include this file directly. Include LUFA/Drivers/Board/Buttons.h instead. + #endif + + #define BOARD_DUMMY_BUTTONS_IMPLEMENTATION + + /* Public Interface - May be used in end-application: */ + /* Macros: */ + /** Button mask for the first button on the board. */ + #define BUTTONS_BUTTON1 (1 << 0) + + /* Inline Functions: */ + #if !defined(__DOXYGEN__) + static inline void Buttons_Init(void) + { + + } + + static inline void Buttons_Disable(void) + { + + } + + static inline uint8_t Buttons_GetStatus(void) ATTR_WARN_UNUSED_RESULT; + static inline uint8_t Buttons_GetStatus(void) + { + return 0; + } + #endif + + /* Disable C linkage for C++ Compilers: */ + #if defined(__cplusplus) + } + #endif + +#endif + diff --git a/BuildTests/BoardDriverTest/Board/Dataflash.h b/BuildTests/BoardDriverTest/Board/Dataflash.h new file mode 100644 index 0000000000..86726a2923 --- /dev/null +++ b/BuildTests/BoardDriverTest/Board/Dataflash.h @@ -0,0 +1,197 @@ +/* + LUFA Library + Copyright (C) Dean Camera, 2017. + + dean [at] fourwalledcubicle [dot] com + www.lufa-lib.org +*/ + +/* + Copyright 2017 Dean Camera (dean [at] fourwalledcubicle [dot] com) + + Permission to use, copy, modify, distribute, and sell this + software and its documentation for any purpose is hereby granted + without fee, provided that the above copyright notice appear in + all copies and that both that the copyright notice and this + permission notice and warranty disclaimer appear in supporting + documentation, and that the name of the author not be used in + advertising or publicity pertaining to distribution of the + software without specific, written prior permission. + + The author disclaims all warranties with regard to this + software, including all implied warranties of merchantability + and fitness. In no event shall the author be liable for any + special, indirect or consequential damages or any damages + whatsoever resulting from loss of use, data or profits, whether + in an action of contract, negligence or other tortious action, + arising out of or in connection with the use or performance of + this software. +*/ + +/** \file + * \brief LUFA Custom Board Dataflash Hardware Driver (Template) + * + * This is a stub driver header file, for implementing custom board + * layout hardware with compatible LUFA board specific drivers. If + * the library is configured to use the BOARD_USER board mode, this + * driver file should be completed and copied into the "/Board/" folder + * inside the application's folder. + * + * This stub is for the board-specific component of the LUFA Dataflash + * driver. +*/ + +#ifndef __DATAFLASH_USER_H__ +#define __DATAFLASH_USER_H__ + + /* Includes: */ + // TODO: Add any required includes here + + /* Preprocessor Checks: */ + #if !defined(__INCLUDE_FROM_DATAFLASH_H) + #error Do not include this file directly. Include LUFA/Drivers/Board/Dataflash.h instead. + #endif + + #define BOARD_DUMMY_DATAFLASH_IMPLEMENTATION + + /* Private Interface - For use in library only: */ + #if !defined(__DOXYGEN__) + /* Macros: */ + #define DATAFLASH_CHIPCS_MASK 0 + #define DATAFLASH_CHIPCS_DDR 0 + #define DATAFLASH_CHIPCS_PORT 0 + #endif + + /* Public Interface - May be used in end-application: */ + /* Macros: */ + /** Constant indicating the total number of dataflash ICs mounted on the selected board. */ + #define DATAFLASH_TOTALCHIPS 1 + + /** Mask for no dataflash chip selected. */ + #define DATAFLASH_NO_CHIP 0 + + /** Mask for the first dataflash chip selected. */ + #define DATAFLASH_CHIP1 0 + + /** Mask for the second dataflash chip selected. */ + #define DATAFLASH_CHIP2 0 + + /** Internal main memory page size for the board's dataflash ICs. */ + #define DATAFLASH_PAGE_SIZE 0 + + /** Total number of pages inside each of the board's dataflash ICs. */ + #define DATAFLASH_PAGES 0 + + /* Inline Functions: */ + /** Initializes the dataflash driver so that commands and data may be sent to an attached dataflash IC. + * The microcontroller's SPI driver MUST be initialized before any of the dataflash commands are used. + */ + static inline void Dataflash_Init(void) + { + + } + + /** Sends a byte to the currently selected dataflash IC, and returns a byte from the dataflash. + * + * \param[in] Byte Byte of data to send to the dataflash + * + * \return Last response byte from the dataflash + */ + static inline uint8_t Dataflash_TransferByte(const uint8_t Byte) ATTR_ALWAYS_INLINE; + static inline uint8_t Dataflash_TransferByte(const uint8_t Byte) + { + return 0; + } + + /** Sends a byte to the currently selected dataflash IC, and ignores the next byte from the dataflash. + * + * \param[in] Byte Byte of data to send to the dataflash + */ + static inline void Dataflash_SendByte(const uint8_t Byte) ATTR_ALWAYS_INLINE; + static inline void Dataflash_SendByte(const uint8_t Byte) + { + + } + + /** Sends a dummy byte to the currently selected dataflash IC, and returns the next byte from the dataflash. + * + * \return Last response byte from the dataflash + */ + static inline uint8_t Dataflash_ReceiveByte(void) ATTR_ALWAYS_INLINE ATTR_WARN_UNUSED_RESULT; + static inline uint8_t Dataflash_ReceiveByte(void) + { + return 0; + } + + /** Determines the currently selected dataflash chip. + * + * \return Mask of the currently selected Dataflash chip, either \ref DATAFLASH_NO_CHIP if no chip is selected + * or a DATAFLASH_CHIPn mask (where n is the chip number). + */ + static inline uint8_t Dataflash_GetSelectedChip(void) ATTR_ALWAYS_INLINE ATTR_WARN_UNUSED_RESULT; + static inline uint8_t Dataflash_GetSelectedChip(void) + { + return 0; + } + + /** Selects the given dataflash chip. + * + * \param[in] ChipMask Mask of the Dataflash IC to select, in the form of a \c DATAFLASH_CHIPn mask (where n is + * the chip number). + */ + static inline void Dataflash_SelectChip(const uint8_t ChipMask) ATTR_ALWAYS_INLINE; + static inline void Dataflash_SelectChip(const uint8_t ChipMask) + { + + } + + /** Deselects the current dataflash chip, so that no dataflash is selected. */ + static inline void Dataflash_DeselectChip(void) ATTR_ALWAYS_INLINE; + static inline void Dataflash_DeselectChip(void) + { + + } + + /** Selects a dataflash IC from the given page number, which should range from 0 to + * ((DATAFLASH_PAGES * DATAFLASH_TOTALCHIPS) - 1). For boards containing only one + * dataflash IC, this will select DATAFLASH_CHIP1. If the given page number is outside + * the total number of pages contained in the boards dataflash ICs, all dataflash ICs + * are deselected. + * + * \param[in] PageAddress Address of the page to manipulate, ranging from + * 0 to ((DATAFLASH_PAGES * DATAFLASH_TOTALCHIPS) - 1). + */ + static inline void Dataflash_SelectChipFromPage(const uint16_t PageAddress) + { + + } + + /** Toggles the select line of the currently selected dataflash IC, so that it is ready to receive + * a new command. + */ + static inline void Dataflash_ToggleSelectedChipCS(void) + { + + } + + /** Spin-loops while the currently selected dataflash is busy executing a command, such as a main + * memory page program or main memory to buffer transfer. + */ + static inline void Dataflash_WaitWhileBusy(void) + { + + } + + /** Sends a set of page and buffer address bytes to the currently selected dataflash IC, for use with + * dataflash commands which require a complete 24-bit address. + * + * \param[in] PageAddress Page address within the selected dataflash IC + * \param[in] BufferByte Address within the dataflash's buffer + */ + static inline void Dataflash_SendAddressBytes(uint16_t PageAddress, const uint16_t BufferByte) + { + + } + +#endif + diff --git a/BuildTests/BoardDriverTest/Board/Joystick.h b/BuildTests/BoardDriverTest/Board/Joystick.h new file mode 100644 index 0000000000..86a7d7681d --- /dev/null +++ b/BuildTests/BoardDriverTest/Board/Joystick.h @@ -0,0 +1,104 @@ +/* + LUFA Library + Copyright (C) Dean Camera, 2017. + + dean [at] fourwalledcubicle [dot] com + www.lufa-lib.org +*/ + +/* + Copyright 2017 Dean Camera (dean [at] fourwalledcubicle [dot] com) + + Permission to use, copy, modify, distribute, and sell this + software and its documentation for any purpose is hereby granted + without fee, provided that the above copyright notice appear in + all copies and that both that the copyright notice and this + permission notice and warranty disclaimer appear in supporting + documentation, and that the name of the author not be used in + advertising or publicity pertaining to distribution of the + software without specific, written prior permission. + + The author disclaims all warranties with regard to this + software, including all implied warranties of merchantability + and fitness. In no event shall the author be liable for any + special, indirect or consequential damages or any damages + whatsoever resulting from loss of use, data or profits, whether + in an action of contract, negligence or other tortious action, + arising out of or in connection with the use or performance of + this software. +*/ + +/** \file + * \brief LUFA Custom Board Joystick Hardware Driver (Template) + * + * This is a stub driver header file, for implementing custom board + * layout hardware with compatible LUFA board specific drivers. If + * the library is configured to use the BOARD_USER board mode, this + * driver file should be completed and copied into the "/Board/" folder + * inside the application's folder. + * + * This stub is for the board-specific component of the LUFA Joystick + * driver, for a digital four-way (plus button) joystick. +*/ + +#ifndef __JOYSTICK_USER_H__ +#define __JOYSTICK_USER_H__ + + /* Includes: */ + // TODO: Add any required includes here + + /* Enable C linkage for C++ Compilers: */ + #if defined(__cplusplus) + extern "C" { + #endif + + /* Preprocessor Checks: */ + #if !defined(__INCLUDE_FROM_JOYSTICK_H) + #error Do not include this file directly. Include LUFA/Drivers/Board/Joystick.h instead. + #endif + + #define BOARD_DUMMY_JOYSTICK_IMPLEMENTATION + + /* Public Interface - May be used in end-application: */ + /* Macros: */ + /** Mask for the joystick being pushed in the left direction. */ + #define JOY_LEFT 0 + + /** Mask for the joystick being pushed in the right direction. */ + #define JOY_RIGHT 0 + + /** Mask for the joystick being pushed in the upward direction. */ + #define JOY_UP 0 + + /** Mask for the joystick being pushed in the downward direction. */ + #define JOY_DOWN 0 + + /** Mask for the joystick being pushed inward. */ + #define JOY_PRESS 0 + + /* Inline Functions: */ + #if !defined(__DOXYGEN__) + static inline void Joystick_Init(void) + { + + } + + static inline void Joystick_Disable(void) + { + + } + + static inline uint8_t Joystick_GetStatus(void) ATTR_WARN_UNUSED_RESULT; + static inline uint8_t Joystick_GetStatus(void) + { + return 0; + } + #endif + + /* Disable C linkage for C++ Compilers: */ + #if defined(__cplusplus) + } + #endif + +#endif + diff --git a/BuildTests/BoardDriverTest/Board/LEDs.h b/BuildTests/BoardDriverTest/Board/LEDs.h new file mode 100644 index 0000000000..548d24232c --- /dev/null +++ b/BuildTests/BoardDriverTest/Board/LEDs.h @@ -0,0 +1,132 @@ +/* + LUFA Library + Copyright (C) Dean Camera, 2017. + + dean [at] fourwalledcubicle [dot] com + www.lufa-lib.org +*/ + +/* + Copyright 2017 Dean Camera (dean [at] fourwalledcubicle [dot] com) + + Permission to use, copy, modify, distribute, and sell this + software and its documentation for any purpose is hereby granted + without fee, provided that the above copyright notice appear in + all copies and that both that the copyright notice and this + permission notice and warranty disclaimer appear in supporting + documentation, and that the name of the author not be used in + advertising or publicity pertaining to distribution of the + software without specific, written prior permission. + + The author disclaims all warranties with regard to this + software, including all implied warranties of merchantability + and fitness. In no event shall the author be liable for any + special, indirect or consequential damages or any damages + whatsoever resulting from loss of use, data or profits, whether + in an action of contract, negligence or other tortious action, + arising out of or in connection with the use or performance of + this software. +*/ + +/** \file + * \brief LUFA Custom Board LED Hardware Driver (Template) + * + * This is a stub driver header file, for implementing custom board + * layout hardware with compatible LUFA board specific drivers. If + * the library is configured to use the BOARD_USER board mode, this + * driver file should be completed and copied into the "/Board/" folder + * inside the application's folder. + * + * This stub is for the board-specific component of the LUFA LEDs driver, + * for the LEDs (up to four) mounted on most development boards. +*/ + +#ifndef __LEDS_USER_H__ +#define __LEDS_USER_H__ + + /* Includes: */ + // TODO: Add any required includes here + +/* Enable C linkage for C++ Compilers: */ + #if defined(__cplusplus) + extern "C" { + #endif + + /* Preprocessor Checks: */ + #if !defined(__INCLUDE_FROM_LEDS_H) + #error Do not include this file directly. Include LUFA/Drivers/Board/LEDS.h instead. + #endif + + #define BOARD_DUMMY_LEDS_IMPLEMENTATION + + /* Public Interface - May be used in end-application: */ + /* Macros: */ + /** LED mask for the first LED on the board. */ + #define LEDS_LED1 (1 << 0) + + /** LED mask for the second LED on the board. */ + #define LEDS_LED2 (1 << 1) + + /** LED mask for the third LED on the board. */ + #define LEDS_LED3 (1 << 2) + + /** LED mask for the fourth LED on the board. */ + #define LEDS_LED4 (1 << 3) + + /** LED mask for all the LEDs on the board. */ + #define LEDS_ALL_LEDS (LEDS_LED1 | LEDS_LED2 | LEDS_LED3 | LEDS_LED4) + + /** LED mask for none of the board LEDs. */ + #define LEDS_NO_LEDS 0 + + /* Inline Functions: */ + #if !defined(__DOXYGEN__) + static inline void LEDs_Init(void) + { + + } + + static inline void LEDs_Disable(void) + { + + } + + static inline void LEDs_TurnOnLEDs(const uint8_t LEDMask) + { + + } + + static inline void LEDs_TurnOffLEDs(const uint8_t LEDMask) + { + + } + + static inline void LEDs_SetAllLEDs(const uint8_t LEDMask) + { + + } + + static inline void LEDs_ChangeLEDs(const uint8_t LEDMask, const uint8_t ActiveMask) + { + + } + + static inline void LEDs_ToggleLEDs(const uint8_t LEDMask) + { + + } + + static inline uint8_t LEDs_GetLEDs(void) ATTR_WARN_UNUSED_RESULT; + static inline uint8_t LEDs_GetLEDs(void) + { + return 0; + } + #endif + + /* Disable C linkage for C++ Compilers: */ + #if defined(__cplusplus) + } + #endif + +#endif + diff --git a/BuildTests/BoardDriverTest/BoardDeviceMap.cfg b/BuildTests/BoardDriverTest/BoardDeviceMap.cfg new file mode 100644 index 0000000000..c12050941d --- /dev/null +++ b/BuildTests/BoardDriverTest/BoardDeviceMap.cfg @@ -0,0 +1,89 @@ +# +# LUFA Library +# Copyright (C) Dean Camera, 2017. +# +# dean [at] fourwalledcubicle [dot] com +# www.lufa-lib.org +# +# +# ============================================================================= +# Board configuration map script, processed with the "BoardDriverTest" +# makefile. This script file maps the possible LUFA target BOARD makefile +# values in user projects to a specific architecture and device. This mapping is +# then used by the makefile to build all possible drivers for that board, to +# detect any missing or erroneous functions. To add a new board mapping, use +# the syntax: +# +# BOARD DEFINE = {ARCH} : {MCU} : +# +# And re-run the makefile. Note that each board may have only one target. +# ============================================================================= +# +# +# ----------------- AVR8 Boards ------------------ +BOARD_ADAFRUITU4 = AVR8 : atmega32u4 : +BOARD_ATAVRUSBRF01 = AVR8 : at90usb1287 : +BOARD_BENITO = AVR8 : at90usb162 : +BOARD_BIGMULTIO = AVR8 : atmega32u4 : +BOARD_BLACKCAT = AVR8 : at90usb162 : +BOARD_BUI = AVR8 : at90usb646 : +BOARD_BUMBLEB = AVR8 : at90usb162 : +BOARD_CULV3 = AVR8 : atmega32u4 : +BOARD_DUCE = AVR8 : atmega32u2 : +BOARD_EVK527 = AVR8 : atmega32u4 : +BOARD_JMDBU2 = AVR8 : atmega32u2 : +BOARD_LEONARDO = AVR8 : atmega32u4 : +BOARD_MAXIMUS = AVR8 : at90usb162 : +BOARD_MICROPENDOUS_32U2 = AVR8 : atmega32u2 : +BOARD_MICROPENDOUS_A = AVR8 : at90usb1287 : +BOARD_MICROPENDOUS_1 = AVR8 : at90usb162 : +BOARD_MICROPENDOUS_2 = AVR8 : atmega32u4 : +BOARD_MICROPENDOUS_3 = AVR8 : at90usb1287 : +BOARD_MICROPENDOUS_4 = AVR8 : at90usb1287 : +BOARD_MICROPENDOUS_DIP = AVR8 : at90usb1287 : +BOARD_MICROPENDOUS_REV1 = AVR8 : at90usb1287 : +BOARD_MICROPENDOUS_REV2 = AVR8 : at90usb1287 : +BOARD_MICROSIN162 = AVR8 : atmega162 : +BOARD_MINIMUS = AVR8 : atmega32u2 : +BOARD_MULTIO = AVR8 : at90usb162 : +BOARD_NONE = AVR8 : at90usb1287 : +BOARD_OLIMEX162 = AVR8 : at90usb162 : +BOARD_OLIMEX32U4 = AVR8 : atmega32u4 : +BOARD_OLIMEXT32U4 = AVR8 : atmega32u4 : +BOARD_OLIMEXISPMK2 = AVR8 : at90usb162 : +BOARD_RZUSBSTICK = AVR8 : at90usb1287 : +BOARD_SPARKFUN8U2 = AVR8 : atmega8u2 : +BOARD_STK525 = AVR8 : at90usb647 : +BOARD_STK526 = AVR8 : at90usb162 : +BOARD_TEENSY = AVR8 : at90usb162 : +BOARD_TEENSY2 = AVR8 : at90usb646 : +BOARD_TUL = AVR8 : atmega32u4 : +BOARD_UDIP = AVR8 : atmega32u2 : +BOARD_UNO = AVR8 : atmega8u2 : +BOARD_USB2AX = AVR8 : atmega32u2 : +BOARD_USB2AX_V3 = AVR8 : atmega32u2 : +BOARD_USB2AX_V31 = AVR8 : atmega32u2 : +BOARD_USBFOO = AVR8 : atmega162 : +BOARD_USBKEY = AVR8 : at90usb1287 : +BOARD_USBTINYMKII = AVR8 : at90usb162 : +BOARD_USER = AVR8 : at90usb1287 : +BOARD_XPLAIN = AVR8 : at90usb1287 : +BOARD_XPLAIN_REV1 = AVR8 : at90usb1287 : +BOARD_STANGE_ISP = AVR8 : at90usb162 : +BOARD_U2S = AVR8 : atmega32u2 : +BOARD_YUN = AVR8 : atmega32u4 : +BOARD_MICRO = AVR8 : atmega32u4 : +BOARD_POLOLUMICRO = AVR8 : atmega32u4 : +BOARD_XPLAINED_MINI = AVR8 : atmega32u4 : +# +# ----------------- XMEGA Boards ----------------- +BOARD_A3BU_XPLAINED = XMEGA : atxmega256a3bu : +BOARD_B1_XPLAINED = XMEGA : atxmega128b1 : +BOARD_C3_XPLAINED = XMEGA : atxmega384c3 : +# +# ------------------ UC3 Boards ------------------ +BOARD_EVK1100 = UC3 : uc3a0512 : +BOARD_EVK1101 = UC3 : uc3b0256 : +BOARD_EVK1104 = UC3 : uc3a3256 : +BOARD_UC3A3_XPLAINED = UC3 : uc3a3256 : +# diff --git a/BuildTests/BoardDriverTest/Test.c b/BuildTests/BoardDriverTest/Test.c new file mode 100644 index 0000000000..8baa4460ba --- /dev/null +++ b/BuildTests/BoardDriverTest/Test.c @@ -0,0 +1,115 @@ +/* + LUFA Library + Copyright (C) Dean Camera, 2017. + + dean [at] fourwalledcubicle [dot] com + www.lufa-lib.org +*/ + +/* + Copyright 2017 Dean Camera (dean [at] fourwalledcubicle [dot] com) + + Permission to use, copy, modify, distribute, and sell this + software and its documentation for any purpose is hereby granted + without fee, provided that the above copyright notice appear in + all copies and that both that the copyright notice and this + permission notice and warranty disclaimer appear in supporting + documentation, and that the name of the author not be used in + advertising or publicity pertaining to distribution of the + software without specific, written prior permission. + + The author disclaims all warranties with regard to this + software, including all implied warranties of merchantability + and fitness. In no event shall the author be liable for any + special, indirect or consequential damages or any damages + whatsoever resulting from loss of use, data or profits, whether + in an action of contract, negligence or other tortious action, + arising out of or in connection with the use or performance of + this software. +*/ + +#include <LUFA/Common/Common.h> +#include <LUFA/Drivers/Board/Board.h> +#include <LUFA/Drivers/Board/Buttons.h> +#include <LUFA/Drivers/Board/Dataflash.h> +#include <LUFA/Drivers/Board/LEDs.h> +#include <LUFA/Drivers/Board/Joystick.h> + +#if defined(BOARD_HAS_BUTTONS) == defined(BOARD_DUMMY_BUTTONS_IMPLEMENTATION) + #error Mismatch between BOARD_HAS_BUTTONS and implementation. +#endif + +#if defined(BOARD_HAS_DATAFLASH) == defined(BOARD_DUMMY_DATAFLASH_IMPLEMENTATION) + #error Mismatch between BOARD_HAS_DATAFLASH and implementation. +#endif + +#if defined(BOARD_HAS_LEDS) == defined(BOARD_DUMMY_LEDS_IMPLEMENTATION) + #error Mismatch between BOARD_HAS_LEDS and implementation. +#endif + +#if defined(BOARD_HAS_JOYSTICK) == defined(BOARD_DUMMY_JOYSTICK_IMPLEMENTATION) + #error Mismatch between BOARD_HAS_JOYSTICK and implementation. +#endif + +int main(void) +{ + uint_reg_t Dummy; + + /* ============================= + * Buttons Compile Check + * ============================= */ + // cppcheck-suppress redundantAssignment + Dummy = BUTTONS_BUTTON1; + Buttons_Init(); + // cppcheck-suppress redundantAssignment + Dummy = Buttons_GetStatus(); + Buttons_Disable(); + + /* ============================= + * Dataflash Compile Check + * ============================= */ + // cppcheck-suppress redundantAssignment + Dummy = DATAFLASH_TOTALCHIPS + DATAFLASH_NO_CHIP + DATAFLASH_CHIP1 + DATAFLASH_PAGE_SIZE + DATAFLASH_PAGES; + Dataflash_Init(); + Dataflash_TransferByte(0); + Dataflash_SendByte(0); + // cppcheck-suppress redundantAssignment + Dummy = Dataflash_ReceiveByte(); + // cppcheck-suppress redundantAssignment + Dummy = Dataflash_GetSelectedChip(); + Dataflash_SelectChip(DATAFLASH_CHIP1); + Dataflash_DeselectChip(); + Dataflash_SelectChipFromPage(0); + Dataflash_ToggleSelectedChipCS(); + Dataflash_WaitWhileBusy(); + Dataflash_SendAddressBytes(0, 0); + + /* ============================= + * LEDs Compile Check + * ============================= */ + // cppcheck-suppress redundantAssignment + Dummy = LEDS_LED1 + LEDS_LED2 + LEDS_LED3 + LEDS_LED4; + LEDs_Init(); + LEDs_TurnOnLEDs(LEDS_ALL_LEDS); + LEDs_TurnOffLEDs(LEDS_ALL_LEDS); + LEDs_SetAllLEDs(LEDS_ALL_LEDS); + LEDs_ChangeLEDs(LEDS_ALL_LEDS, LEDS_NO_LEDS); + LEDs_ToggleLEDs(LEDS_ALL_LEDS); + // cppcheck-suppress redundantAssignment + Dummy = LEDs_GetLEDs(); + LEDs_Disable(); + + /* ============================= + * Joystick Compile Check + * ============================= */ + // cppcheck-suppress redundantAssignment + Dummy = JOY_LEFT + JOY_RIGHT + JOY_UP + JOY_DOWN + JOY_PRESS; + Joystick_Init(); + // cppcheck-suppress redundantAssignment + Dummy = Joystick_GetStatus(); + Joystick_Disable(); + + (void)Dummy; +} + + diff --git a/BuildTests/BoardDriverTest/makefile b/BuildTests/BoardDriverTest/makefile new file mode 100644 index 0000000000..8414d91862 --- /dev/null +++ b/BuildTests/BoardDriverTest/makefile @@ -0,0 +1,69 @@ +# +# LUFA Library +# Copyright (C) Dean Camera, 2017. +# +# dean [at] fourwalledcubicle [dot] com +# www.lufa-lib.org +# + +# Makefile for the board driver build test. This +# test attempts to build a dummy project with all +# possible board targets using their respective +# compiler. + +# Path to the LUFA library core +LUFA_PATH := ../../LUFA/ + +# Build test cannot be run with multiple parallel jobs +.NOTPARALLEL: + +all: begin makeboardlist testboards clean end + +begin: + @echo Executing build test "BoardDriverTest". + @echo + +end: + @echo Build test "BoardDriverTest" complete. + @echo + +makeboardlist: + @grep "BOARD_" $(patsubst %/,%,$(LUFA_PATH))/Common/BoardTypes.h | cut -d'#' -f2 | cut -d' ' -f2 | grep "BOARD_" > BoardList.txt + +testboards: + @echo "buildtest:" > BuildMakefile + + @while read line; \ + do \ + build_cfg=`grep "$$line " BoardDeviceMap.cfg | grep -v "#" | cut -d'=' -f2- | sed 's/ //g'`; \ + \ + build_board=$$line; \ + build_arch=`echo $$build_cfg | cut -d':' -f1`; \ + build_mcu=`echo $$build_cfg | cut -d':' -f2`; \ + \ + if ( test -z "$$build_cfg" ); then \ + echo "No matching information set for board $$build_board"; \ + else \ + echo "Found board configuration for $$build_board - $$build_arch, $$build_mcu"; \ + \ + printf "\t@echo Building dummy project for $$build_board...\n" >> BuildMakefile; \ + printf "\t$(MAKE) -f makefile.test clean elf MCU=%s ARCH=%s BOARD=%s\n\n" $$build_mcu $$build_arch $$build_board >> BuildMakefile; \ + fi; \ + done < BoardList.txt + + $(MAKE) -f BuildMakefile buildtest + +clean: + rm -f BuildMakefile + rm -f BoardList.txt + $(MAKE) -f makefile.test clean BOARD=NONE ARCH=AVR8 MCU=at90usb1287 + $(MAKE) -f makefile.test clean BOARD=NONE ARCH=XMEGA MCU=atxmega128a1u + $(MAKE) -f makefile.test clean BOARD=NONE ARCH=UC3 MCU=uc3a0256 + +%: + +.PHONY: all begin end makeboardlist testboards clean + +# Include common DMBS build system modules +DMBS_PATH ?= $(LUFA_PATH)/Build/DMBS/DMBS +include $(DMBS_PATH)/core.mk diff --git a/BuildTests/BoardDriverTest/makefile.test b/BuildTests/BoardDriverTest/makefile.test new file mode 100644 index 0000000000..373a15e753 --- /dev/null +++ b/BuildTests/BoardDriverTest/makefile.test @@ -0,0 +1,35 @@ +# +# LUFA Library +# Copyright (C) Dean Camera, 2017. +# +# dean [at] fourwalledcubicle [dot] com +# www.lufa-lib.org +# +# -------------------------------------- +# LUFA Project Makefile. +# -------------------------------------- + +# Run "make help" for target help. + +MCU = +ARCH = +BOARD = +F_CPU = $(F_USB) +F_USB = 8000000 +OPTIMIZATION = 1 +TARGET = Test +SRC = $(TARGET).c +LUFA_PATH = ../../LUFA +CC_FLAGS = -Werror +DEBUG_LEVEL = 0 + + +# Include LUFA-specific DMBS extension modules +DMBS_LUFA_PATH ?= $(LUFA_PATH)/Build/LUFA +include $(DMBS_LUFA_PATH)/lufa-sources.mk +include $(DMBS_LUFA_PATH)/lufa-gcc.mk + +# Include common DMBS build system modules +DMBS_PATH ?= $(LUFA_PATH)/Build/DMBS/DMBS +include $(DMBS_PATH)/core.mk +include $(DMBS_PATH)/gcc.mk diff --git a/BuildTests/BootloaderTest/BootloaderDeviceMap.cfg b/BuildTests/BootloaderTest/BootloaderDeviceMap.cfg new file mode 100644 index 0000000000..e02d0a30d4 --- /dev/null +++ b/BuildTests/BootloaderTest/BootloaderDeviceMap.cfg @@ -0,0 +1,167 @@ +# +# LUFA Library +# Copyright (C) Dean Camera, 2017. +# +# dean [at] fourwalledcubicle [dot] com +# www.lufa-lib.org +# +# +# ============================================================================= +# Bootloader configuration map script, processed with the "BootloaderTest" +# makefile. This script file defines the targets for each LUFA bootloader, +# which are then built as part of the build test to ensure that there are no +# failures on all standard configurations. To add a new build target for a +# bootloader to this script, use the format: +# +# BOOTLOADER = {ARCH} : {MCU} : {BOARD} : {FLASH SIZE KB} : {BOOT SIZE KB} : {F_USB MHZ} +# +# And re-run the makefile. +# ============================================================================= +# +# +# ------------ CDC Bootloader -------------------- +CDC = AVR8 : at90usb1287 : XPLAIN : 128 : 8 : 8 : +CDC = AVR8 : at90usb1287 : NONE : 128 : 8 : 8 : +CDC = AVR8 : at90usb1287 : NONE : 128 : 4 : 8 : +CDC = AVR8 : at90usb647 : NONE : 64 : 4 : 8 : +CDC = AVR8 : at90usb1286 : NONE : 128 : 8 : 8 : +CDC = AVR8 : at90usb1286 : NONE : 128 : 4 : 8 : +CDC = AVR8 : at90usb646 : NONE : 64 : 4 : 8 : +CDC = AVR8 : atmega32u4 : NONE : 32 : 4 : 8 : +CDC = AVR8 : atmega16u4 : NONE : 16 : 4 : 8 : +CDC = AVR8 : atmega32u2 : NONE : 32 : 4 : 8 : +CDC = AVR8 : atmega16u2 : NONE : 16 : 4 : 8 : +CDC = AVR8 : atmega8u2 : NONE : 8 : 4 : 8 : +CDC = AVR8 : at90usb162 : NONE : 16 : 4 : 8 : +CDC = AVR8 : at90usb82 : NONE : 8 : 4 : 8 : +CDC = AVR8 : at90usb1287 : NONE : 128 : 8 : 16 : +CDC = AVR8 : at90usb1287 : NONE : 128 : 4 : 16 : +CDC = AVR8 : at90usb647 : NONE : 64 : 4 : 16 : +CDC = AVR8 : at90usb1286 : NONE : 128 : 8 : 16 : +CDC = AVR8 : at90usb1286 : NONE : 128 : 4 : 16 : +CDC = AVR8 : at90usb646 : NONE : 64 : 4 : 16 : +CDC = AVR8 : atmega32u4 : NONE : 32 : 4 : 16 : +CDC = AVR8 : atmega16u4 : NONE : 16 : 4 : 16 : +CDC = AVR8 : atmega32u2 : NONE : 32 : 4 : 16 : +CDC = AVR8 : atmega16u2 : NONE : 16 : 4 : 16 : +CDC = AVR8 : atmega8u2 : NONE : 8 : 4 : 16 : +CDC = AVR8 : at90usb162 : NONE : 16 : 4 : 16 : +CDC = AVR8 : at90usb82 : NONE : 8 : 4 : 16 : +# +# ------------ DFU Bootloader -------------------- +DFU = AVR8 : at90usb1287 : XPLAIN : 128 : 8 : 8 : +DFU = AVR8 : at90usb1287 : NONE : 128 : 8 : 8 : +DFU = AVR8 : at90usb1287 : NONE : 128 : 4 : 8 : +DFU = AVR8 : at90usb647 : NONE : 64 : 4 : 8 : +DFU = AVR8 : at90usb1286 : NONE : 128 : 8 : 8 : +DFU = AVR8 : at90usb1286 : NONE : 128 : 4 : 8 : +DFU = AVR8 : at90usb646 : NONE : 64 : 4 : 8 : +DFU = AVR8 : atmega32u4 : NONE : 32 : 4 : 8 : +DFU = AVR8 : atmega16u4 : NONE : 16 : 4 : 8 : +DFU = AVR8 : atmega32u2 : NONE : 32 : 4 : 8 : +DFU = AVR8 : atmega16u2 : NONE : 16 : 4 : 8 : +DFU = AVR8 : atmega8u2 : NONE : 8 : 4 : 8 : +DFU = AVR8 : at90usb162 : NONE : 16 : 4 : 8 : +DFU = AVR8 : at90usb82 : NONE : 8 : 4 : 8 : +DFU = AVR8 : at90usb1287 : NONE : 128 : 8 : 16 : +DFU = AVR8 : at90usb1287 : NONE : 128 : 4 : 16 : +DFU = AVR8 : at90usb647 : NONE : 64 : 4 : 16 : +DFU = AVR8 : at90usb1286 : NONE : 128 : 8 : 16 : +DFU = AVR8 : at90usb1286 : NONE : 128 : 4 : 16 : +DFU = AVR8 : at90usb646 : NONE : 64 : 4 : 16 : +DFU = AVR8 : atmega32u4 : NONE : 32 : 4 : 16 : +DFU = AVR8 : atmega16u4 : NONE : 16 : 4 : 16 : +DFU = AVR8 : atmega32u2 : NONE : 32 : 4 : 16 : +DFU = AVR8 : atmega16u2 : NONE : 16 : 4 : 16 : +DFU = AVR8 : atmega8u2 : NONE : 8 : 4 : 16 : +DFU = AVR8 : at90usb162 : NONE : 16 : 4 : 16 : +DFU = AVR8 : at90usb82 : NONE : 8 : 4 : 16 : +# +# ------------ HID Bootloader -------------------- +HID = AVR8 : at90usb1287 : NONE : 128 : 8 : 8 : +HID = AVR8 : at90usb1287 : NONE : 128 : 4 : 8 : +HID = AVR8 : at90usb647 : NONE : 64 : 4 : 8 : +HID = AVR8 : at90usb1286 : NONE : 128 : 8 : 8 : +HID = AVR8 : at90usb1286 : NONE : 128 : 4 : 8 : +HID = AVR8 : at90usb646 : NONE : 64 : 4 : 8 : +HID = AVR8 : atmega32u4 : NONE : 32 : 4 : 8 : +HID = AVR8 : atmega16u4 : NONE : 16 : 4 : 8 : +HID = AVR8 : atmega32u2 : NONE : 32 : 2 : 8 : +HID = AVR8 : atmega32u2 : NONE : 32 : 4 : 8 : +HID = AVR8 : atmega16u2 : NONE : 16 : 2 : 8 : +HID = AVR8 : atmega16u2 : NONE : 16 : 4 : 8 : +HID = AVR8 : atmega8u2 : NONE : 8 : 2 : 8 : +HID = AVR8 : atmega8u2 : NONE : 8 : 4 : 8 : +HID = AVR8 : at90usb162 : NONE : 16 : 2 : 8 : +HID = AVR8 : at90usb162 : NONE : 16 : 4 : 8 : +HID = AVR8 : at90usb162 : NONE : 16 : 2 : 8 : +HID = AVR8 : at90usb162 : NONE : 16 : 4 : 8 : +HID = AVR8 : at90usb1287 : NONE : 128 : 8 : 8 : +HID = AVR8 : at90usb1287 : NONE : 128 : 4 : 8 : +HID = AVR8 : at90usb647 : NONE : 64 : 4 : 8 : +HID = AVR8 : at90usb1286 : NONE : 128 : 8 : 16 : +HID = AVR8 : at90usb1286 : NONE : 128 : 4 : 16 : +HID = AVR8 : at90usb646 : NONE : 64 : 4 : 16 : +HID = AVR8 : atmega32u4 : NONE : 32 : 4 : 16 : +HID = AVR8 : atmega16u4 : NONE : 16 : 4 : 16 : +HID = AVR8 : atmega32u2 : NONE : 32 : 2 : 16 : +HID = AVR8 : atmega32u2 : NONE : 32 : 4 : 16 : +HID = AVR8 : atmega16u2 : NONE : 16 : 2 : 16 : +HID = AVR8 : atmega16u2 : NONE : 16 : 4 : 16 : +HID = AVR8 : atmega8u2 : NONE : 8 : 2 : 16 : +HID = AVR8 : atmega8u2 : NONE : 8 : 4 : 16 : +HID = AVR8 : at90usb162 : NONE : 16 : 2 : 16 : +HID = AVR8 : at90usb162 : NONE : 16 : 4 : 16 : +HID = AVR8 : at90usb162 : NONE : 16 : 2 : 16 : +HID = AVR8 : at90usb162 : NONE : 16 : 4 : 16 : +# +# ---------- Printer Bootloader ------------------ +Printer = AVR8 : at90usb1287 : NONE : 128 : 8 : 8 : +Printer = AVR8 : at90usb1287 : NONE : 128 : 4 : 8 : +Printer = AVR8 : at90usb647 : NONE : 64 : 4 : 8 : +Printer = AVR8 : at90usb1286 : NONE : 128 : 8 : 8 : +Printer = AVR8 : at90usb1286 : NONE : 128 : 4 : 8 : +Printer = AVR8 : at90usb646 : NONE : 64 : 4 : 8 : +Printer = AVR8 : atmega32u4 : NONE : 32 : 4 : 8 : +Printer = AVR8 : atmega16u4 : NONE : 16 : 4 : 8 : +Printer = AVR8 : atmega32u2 : NONE : 32 : 4 : 8 : +Printer = AVR8 : atmega16u2 : NONE : 16 : 4 : 8 : +Printer = AVR8 : atmega8u2 : NONE : 8 : 4 : 8 : +Printer = AVR8 : at90usb162 : NONE : 16 : 4 : 8 : +Printer = AVR8 : at90usb82 : NONE : 8 : 4 : 8 : +Printer = AVR8 : at90usb1287 : NONE : 128 : 8 : 16 : +Printer = AVR8 : at90usb1287 : NONE : 128 : 4 : 16 : +Printer = AVR8 : at90usb647 : NONE : 64 : 4 : 16 : +Printer = AVR8 : at90usb1286 : NONE : 128 : 8 : 16 : +Printer = AVR8 : at90usb1286 : NONE : 128 : 4 : 16 : +Printer = AVR8 : at90usb646 : NONE : 64 : 4 : 16 : +Printer = AVR8 : atmega32u4 : NONE : 32 : 4 : 16 : +Printer = AVR8 : atmega16u4 : NONE : 16 : 4 : 16 : +Printer = AVR8 : atmega32u2 : NONE : 32 : 4 : 16 : +Printer = AVR8 : atmega16u2 : NONE : 16 : 4 : 16 : +Printer = AVR8 : atmega8u2 : NONE : 8 : 4 : 16 : +Printer = AVR8 : at90usb162 : NONE : 16 : 4 : 16 : +Printer = AVR8 : at90usb82 : NONE : 8 : 4 : 16 : +# +# ---------- Mass Storage Bootloader ----------------- +MassStorage = AVR8 : at90usb1287 : XPLAIN : 128 : 8 : 8 : +MassStorage = AVR8 : at90usb1287 : NONE : 128 : 8 : 8 : +MassStorage = AVR8 : at90usb1287 : NONE : 128 : 4 : 8 : +MassStorage = AVR8 : at90usb647 : NONE : 64 : 4 : 8 : +MassStorage = AVR8 : at90usb1286 : NONE : 128 : 8 : 8 : +MassStorage = AVR8 : at90usb1286 : NONE : 128 : 4 : 8 : +MassStorage = AVR8 : at90usb646 : NONE : 64 : 4 : 8 : +MassStorage = AVR8 : atmega32u4 : LEONARDO : 32 : 4 : 16 : +MassStorage = AVR8 : atmega32u4 : NONE : 32 : 4 : 8 : +MassStorage = AVR8 : atmega16u4 : NONE : 16 : 4 : 8 : +MassStorage = AVR8 : atmega32u2 : NONE : 32 : 4 : 8 : +MassStorage = AVR8 : at90usb1287 : NONE : 128 : 8 : 16 : +MassStorage = AVR8 : at90usb1287 : NONE : 128 : 4 : 16 : +MassStorage = AVR8 : at90usb647 : NONE : 64 : 4 : 16 : +MassStorage = AVR8 : at90usb1286 : NONE : 128 : 8 : 16 : +MassStorage = AVR8 : at90usb1286 : NONE : 128 : 4 : 16 : +MassStorage = AVR8 : at90usb646 : NONE : 64 : 4 : 16 : +MassStorage = AVR8 : atmega32u4 : NONE : 32 : 4 : 16 : +MassStorage = AVR8 : atmega16u4 : NONE : 16 : 4 : 16 : +MassStorage = AVR8 : atmega32u2 : NONE : 32 : 4 : 16 : +# diff --git a/BuildTests/BootloaderTest/makefile b/BuildTests/BootloaderTest/makefile new file mode 100644 index 0000000000..34bdf1b364 --- /dev/null +++ b/BuildTests/BootloaderTest/makefile @@ -0,0 +1,65 @@ +# +# LUFA Library +# Copyright (C) Dean Camera, 2017. +# +# dean [at] fourwalledcubicle [dot] com +# www.lufa-lib.org +# + +# Makefile for the bootloader build test. This +# test attempts to build all the bootloaders +# with all supported device configurations. + +# Path to the LUFA library core +LUFA_PATH := ../../LUFA/ + +# Build test cannot be run with multiple parallel jobs +.NOTPARALLEL: + +all: begin testbootloaders clean end + +begin: + @echo Executing build test "BootloaderTest". + @echo + +end: + @echo Build test "BootloaderTest" complete. + @echo + +testbootloaders: + @echo "buildtest:" > BuildMakefile + + @while read line; \ + do \ + build_cfg=`echo $$line | grep -v "#" | sed 's/ //g'`; \ + \ + if ( test -n "$$build_cfg" ); then \ + build_bootloader=`echo $$build_cfg | cut -d'=' -f1`; \ + build_cfg=`echo $$build_cfg | cut -d'=' -f2-`; \ + \ + build_arch=`echo $$build_cfg | cut -d':' -f1`; \ + build_mcu=`echo $$build_cfg | cut -d':' -f2`; \ + build_board=`echo $$build_cfg | cut -d':' -f3`; \ + build_flashsize=`echo $$build_cfg | cut -d':' -f4`; \ + build_bootsize=`echo $$build_cfg | cut -d':' -f5`; \ + build_fusb=`echo $$build_cfg | cut -d':' -f6`; \ + \ + printf "Found '%s' bootloader configuration (FLASH: %3s KB | BOOT: %3s KB | MCU: %12s / %4s | BOARD: %s | F_USB: %sMHz)\n" $$build_bootloader $$build_flashsize $$build_bootsize $$build_mcu $$build_arch $$build_board $$build_fusb; \ + \ + printf "\t@echo Building bootloader %s - %s - FLASH: %s KB, BOOT: %s KB, BOARD: %s, F_USB: %sMHz\n" $$build_bootloader $$build_mcu $$build_flashsize $$build_bootsize $$build_board $$build_fusb >> BuildMakefile; \ + printf "\t$(MAKE) -C $(patsubst %/,%,$(LUFA_PATH))/../Bootloaders/%s/ clean elf ARCH=%s MCU=%s BOARD=%s FLASH_SIZE_KB=%s BOOT_SECTION_SIZE_KB=%s F_USB=%s000000 DEBUG_LEVEL=0\n\n" $$build_bootloader $$build_arch $$build_mcu $$build_board $$build_flashsize $$build_bootsize $$build_fusb >> BuildMakefile; \ + fi; \ + done < BootloaderDeviceMap.cfg + + $(MAKE) -f BuildMakefile buildtest + +clean: + rm -f BuildMakefile + +%: + +.PHONY: all begin end testbootloaders clean + +# Include common DMBS build system modules +DMBS_PATH ?= $(LUFA_PATH)/Build/DMBS/DMBS +include $(DMBS_PATH)/core.mk diff --git a/BuildTests/ModuleTest/Dummy.S b/BuildTests/ModuleTest/Dummy.S new file mode 100644 index 0000000000..b44cf4c256 --- /dev/null +++ b/BuildTests/ModuleTest/Dummy.S @@ -0,0 +1,41 @@ +/* + LUFA Library + Copyright (C) Dean Camera, 2017. + + dean [at] fourwalledcubicle [dot] com + www.lufa-lib.org +*/ + +/* + Copyright 2017 Dean Camera (dean [at] fourwalledcubicle [dot] com) + + Permission to use, copy, modify, distribute, and sell this + software and its documentation for any purpose is hereby granted + without fee, provided that the above copyright notice appear in + all copies and that both that the copyright notice and this + permission notice and warranty disclaimer appear in supporting + documentation, and that the name of the author not be used in + advertising or publicity pertaining to distribution of the + software without specific, written prior permission. + + The author disclaims all warranties with regard to this + software, including all implied warranties of merchantability + and fitness. In no event shall the author be liable for any + special, indirect or consequential damages or any damages + whatsoever resulting from loss of use, data or profits, whether + in an action of contract, negligence or other tortious action, + arising out of or in connection with the use or performance of + this software. +*/ + +.section .text + + +# Mandatory entry point for successful compilation and link +.global main +main: + + +# Mandatory callback needed for base compile of the USB driver +.global CALLBACK_USB_GetDescriptor +CALLBACK_USB_GetDescriptor: diff --git a/BuildTests/ModuleTest/Modules.h b/BuildTests/ModuleTest/Modules.h new file mode 100644 index 0000000000..686183245d --- /dev/null +++ b/BuildTests/ModuleTest/Modules.h @@ -0,0 +1,56 @@ +/* + LUFA Library + Copyright (C) Dean Camera, 2017. + + dean [at] fourwalledcubicle [dot] com + www.lufa-lib.org +*/ + +/* + Copyright 2017 Dean Camera (dean [at] fourwalledcubicle [dot] com) + + Permission to use, copy, modify, distribute, and sell this + software and its documentation for any purpose is hereby granted + without fee, provided that the above copyright notice appear in + all copies and that both that the copyright notice and this + permission notice and warranty disclaimer appear in supporting + documentation, and that the name of the author not be used in + advertising or publicity pertaining to distribution of the + software without specific, written prior permission. + + The author disclaims all warranties with regard to this + software, including all implied warranties of merchantability + and fitness. In no event shall the author be liable for any + special, indirect or consequential damages or any damages + whatsoever resulting from loss of use, data or profits, whether + in an action of contract, negligence or other tortious action, + arising out of or in connection with the use or performance of + this software. +*/ + +#include <LUFA/Common/Common.h> + +#include <LUFA/Platform/Platform.h> + +#include <LUFA/Drivers/USB/USB.h> +#include <LUFA/Drivers/Misc/RingBuffer.h> +#include <LUFA/Drivers/Misc/TerminalCodes.h> + +#if (ARCH == ARCH_AVR8) + #if defined(ADC) + #include <LUFA/Drivers/Peripheral/ADC.h> + #endif + + #include <LUFA/Drivers/Peripheral/Serial.h> + #include <LUFA/Drivers/Peripheral/SerialSPI.h> + #include <LUFA/Drivers/Peripheral/SPI.h> + + #if defined(TWCR) + #include <LUFA/Drivers/Peripheral/TWI.h> + #endif +#elif (ARCH == ARCH_XMEGA) + #include <LUFA/Drivers/Peripheral/Serial.h> + #include <LUFA/Drivers/Peripheral/SerialSPI.h> + #include <LUFA/Drivers/Peripheral/SPI.h> + #include <LUFA/Drivers/Peripheral/TWI.h> +#endif diff --git a/BuildTests/ModuleTest/Test_C.c b/BuildTests/ModuleTest/Test_C.c new file mode 100644 index 0000000000..3c3f5a2ab7 --- /dev/null +++ b/BuildTests/ModuleTest/Test_C.c @@ -0,0 +1,31 @@ +/* + LUFA Library + Copyright (C) Dean Camera, 2017. + + dean [at] fourwalledcubicle [dot] com + www.lufa-lib.org +*/ + +/* + Copyright 2017 Dean Camera (dean [at] fourwalledcubicle [dot] com) + + Permission to use, copy, modify, distribute, and sell this + software and its documentation for any purpose is hereby granted + without fee, provided that the above copyright notice appear in + all copies and that both that the copyright notice and this + permission notice and warranty disclaimer appear in supporting + documentation, and that the name of the author not be used in + advertising or publicity pertaining to distribution of the + software without specific, written prior permission. + + The author disclaims all warranties with regard to this + software, including all implied warranties of merchantability + and fitness. In no event shall the author be liable for any + special, indirect or consequential damages or any damages + whatsoever resulting from loss of use, data or profits, whether + in an action of contract, negligence or other tortious action, + arising out of or in connection with the use or performance of + this software. +*/ + +#include "Modules.h" diff --git a/BuildTests/ModuleTest/Test_CPP.cpp b/BuildTests/ModuleTest/Test_CPP.cpp new file mode 100644 index 0000000000..3c3f5a2ab7 --- /dev/null +++ b/BuildTests/ModuleTest/Test_CPP.cpp @@ -0,0 +1,31 @@ +/* + LUFA Library + Copyright (C) Dean Camera, 2017. + + dean [at] fourwalledcubicle [dot] com + www.lufa-lib.org +*/ + +/* + Copyright 2017 Dean Camera (dean [at] fourwalledcubicle [dot] com) + + Permission to use, copy, modify, distribute, and sell this + software and its documentation for any purpose is hereby granted + without fee, provided that the above copyright notice appear in + all copies and that both that the copyright notice and this + permission notice and warranty disclaimer appear in supporting + documentation, and that the name of the author not be used in + advertising or publicity pertaining to distribution of the + software without specific, written prior permission. + + The author disclaims all warranties with regard to this + software, including all implied warranties of merchantability + and fitness. In no event shall the author be liable for any + special, indirect or consequential damages or any damages + whatsoever resulting from loss of use, data or profits, whether + in an action of contract, negligence or other tortious action, + arising out of or in connection with the use or performance of + this software. +*/ + +#include "Modules.h" diff --git a/BuildTests/ModuleTest/makefile b/BuildTests/ModuleTest/makefile new file mode 100644 index 0000000000..50f1909a38 --- /dev/null +++ b/BuildTests/ModuleTest/makefile @@ -0,0 +1,67 @@ +# +# LUFA Library +# Copyright (C) Dean Camera, 2017. +# +# dean [at] fourwalledcubicle [dot] com +# www.lufa-lib.org +# + +# Makefile for the module build test. This test +# attempts to build as many modules as possible +# under all supported architectures, and include +# all module headers in a simple C and C++ +# application. + +# Path to the LUFA library core +LUFA_PATH := ../../LUFA/ + +# Build test cannot be run with multiple parallel jobs +.NOTPARALLEL: + +# List of device families per architecture, one device per architecture sub-family +AVR8_FAMILIES := at90usb1287 at90usb1286 atmega16u4 atmega16u2 at90usb162 +XMEGA_FAMILIES := atxmega128a1u atxmega128a3u atxmega256a3bu atxmega128a4u atxmega128b1 atxmega128b3 atxmega128c3 atxmega32c4 +UC3_FAMILIES := uc3a0256 uc3a1256 uc3a3256 uc3a4256 uc3b0256 uc3b1256 + +# List of all device families, with a family postfix +DEVICE_FAMILIES := $(AVR8_FAMILIES:%=%.avr8) $(XMEGA_FAMILIES:%=%.xmega) $(UC3_FAMILIES:%=%.uc3) + + +all: begin $(DEVICE_FAMILIES) clean end + +arch_avr8: begin $(AVR8_FAMILIES:%=%.avr8) end +arch_xmega: begin $(XMEGA_FAMILIES:%=%.xmega) end +arch_uc3: begin $(UC3_FAMILIES:%=%.uc3) end + +begin: + @echo Executing build test "ModuleTest". + @echo + +end: + @echo Build test "ModuleTest" complete. + @echo + +%.avr8: + @echo Building ModuleTest for ARCH=AVR8 MCU=$(@:%.avr8=%)... + $(MAKE) -f makefile.test clean elf ARCH=AVR8 MCU=$(@:%.avr8=%) + +%.xmega: + @echo Building ModuleTest for ARCH=XMEGA MCU=$(@:%.xmega=%)... + $(MAKE) -f makefile.test clean elf ARCH=XMEGA MCU=$(@:%.xmega=%) + +%.uc3: + @echo Building ModuleTest for ARCH=UC3 MCU=$(@:%.uc3=%)... + $(MAKE) -f makefile.test clean elf ARCH=UC3 MCU=$(@:%.uc3=%) + +clean: + $(MAKE) -f makefile.test clean ARCH=AVR8 MCU=$(firstword $(AVR8_FAMILIES)) + $(MAKE) -f makefile.test clean ARCH=XMEGA MCU=$(firstword $(XMEGA_FAMILIES)) + $(MAKE) -f makefile.test clean ARCH=UC3 MCU=$(firstword $(UC3_FAMILIES)) + +%: + +.PHONY: all arch_avr8 arch_xmega arch_uc3 begin end + +# Include common DMBS build system modules +DMBS_PATH ?= $(LUFA_PATH)/Build/DMBS/DMBS +include $(DMBS_PATH)/core.mk diff --git a/BuildTests/ModuleTest/makefile.test b/BuildTests/ModuleTest/makefile.test new file mode 100644 index 0000000000..5eeb40398c --- /dev/null +++ b/BuildTests/ModuleTest/makefile.test @@ -0,0 +1,94 @@ +# +# LUFA Library +# Copyright (C) Dean Camera, 2017. +# +# dean [at] fourwalledcubicle [dot] com +# www.lufa-lib.org +# +# -------------------------------------- +# LUFA Project Makefile. +# -------------------------------------- + +# Run "make help" for target help. + +MCU = +ARCH = +BOARD = NONE +F_CPU = $(F_USB) +OPTIMIZATION = 1 +TARGET = Test +SRC = $(TARGET)_C.c $(TARGET)_CPP.cpp Dummy.S $(LUFA_SRC_USB) +LUFA_PATH = ../../LUFA +DEBUG_LEVEL = 0 + +ifeq ($(ARCH), AVR8) + F_USB = 8000000 +else ifeq ($(ARCH), XMEGA) + F_USB = 48000000 +else ifeq ($(ARCH), UC3) + F_USB = 48000000 +endif + +# Generic C/C++ compiler flags +CC_FLAGS = -Wextra +CC_FLAGS += -Werror +CC_FLAGS += -Wformat=2 +CC_FLAGS += -Winit-self +CC_FLAGS += -Wswitch-enum +CC_FLAGS += -Wunused +CC_FLAGS += -Wundef +CC_FLAGS += -Wpointer-arith +CC_FLAGS += -Wcast-align +CC_FLAGS += -Wwrite-strings +CC_FLAGS += -Wlogical-op +CC_FLAGS += -Wmissing-declarations +CC_FLAGS += -Wmissing-field-initializers +CC_FLAGS += -Wmissing-format-attribute +CC_FLAGS += -Woverlength-strings +CC_FLAGS += -Wswitch-default +CC_FLAGS += -Wfloat-equal +CC_FLAGS += -Waggregate-return +CC_FLAGS += -Wmissing-include-dirs + +# Disable warnings not supported by the version of GCC used for UC3 targets (FIXME) +ifneq ($(ARCH), UC3) + CC_FLAGS += -Wdouble-promotion +endif + +# Only enable redundant declaration warnings for AVR8 target (FIXME) +ifeq ($(ARCH), AVR8) + CC_FLAGS += -Wredundant-decls +endif + +# C compiler only flags +C_FLAGS += -Wmissing-parameter-type +C_FLAGS += -Wmissing-prototypes +C_FLAGS += -Wnested-externs +C_FLAGS += -Wbad-function-cast +C_FLAGS += -Wstrict-prototypes +C_FLAGS += -Wold-style-definition + +# Disable warnings not supported by the version of GCC used for UC3 targets (FIXME) +ifneq ($(ARCH), UC3) + C_FLAGS += -Wunsuffixed-float-constants + C_FLAGS += -Wjump-misses-init +endif + +# Only check C++ compatibility on the build files, to ensure headers are C++ compatible +Test_C.c Test_CPP.cpp: CC_FLAGS += -Wc++-compat + +# Potential additional warnings to enable in the future (FIXME) +#CC_FLAGS += -Wcast-qual +#CC_FLAGS += -Wconversion +#CC_FLAGS += -Wsign-conversion +#CC_FLAGS += -pedantic + +# Include LUFA-specific DMBS extension modules +DMBS_LUFA_PATH ?= $(LUFA_PATH)/Build/LUFA +include $(DMBS_LUFA_PATH)/lufa-sources.mk +include $(DMBS_LUFA_PATH)/lufa-gcc.mk + +# Include common DMBS build system modules +DMBS_PATH ?= $(LUFA_PATH)/Build/DMBS/DMBS +include $(DMBS_PATH)/core.mk +include $(DMBS_PATH)/gcc.mk diff --git a/BuildTests/SingleUSBModeTest/Dummy.S b/BuildTests/SingleUSBModeTest/Dummy.S new file mode 100644 index 0000000000..1be4228d2d --- /dev/null +++ b/BuildTests/SingleUSBModeTest/Dummy.S @@ -0,0 +1,42 @@ +/* + LUFA Library + Copyright (C) Dean Camera, 2017. + + dean [at] fourwalledcubicle [dot] com + www.lufa-lib.org +*/ + +/* + Copyright 2017 Dean Camera (dean [at] fourwalledcubicle [dot] com) + + Permission to use, copy, modify, distribute, and sell this + software and its documentation for any purpose is hereby granted + without fee, provided that the above copyright notice appear in + all copies and that both that the copyright notice and this + permission notice and warranty disclaimer appear in supporting + documentation, and that the name of the author not be used in + advertising or publicity pertaining to distribution of the + software without specific, written prior permission. + + The author disclaims all warranties with regard to this + software, including all implied warranties of merchantability + and fitness. In no event shall the author be liable for any + special, indirect or consequential damages or any damages + whatsoever resulting from loss of use, data or profits, whether + in an action of contract, negligence or other tortious action, + arising out of or in connection with the use or performance of + this software. +*/ + +.section .text + + +# Mandatory entry point for successful compilation and link +.global main +main: + # Force code generation of the base USB stack + call USB_Init + +# Mandatory callback needed for base compile of the USB driver +.global CALLBACK_USB_GetDescriptor +CALLBACK_USB_GetDescriptor: diff --git a/BuildTests/SingleUSBModeTest/Test.c b/BuildTests/SingleUSBModeTest/Test.c new file mode 100644 index 0000000000..7ac2e008f3 --- /dev/null +++ b/BuildTests/SingleUSBModeTest/Test.c @@ -0,0 +1,32 @@ +/* + LUFA Library + Copyright (C) Dean Camera, 2017. + + dean [at] fourwalledcubicle [dot] com + www.lufa-lib.org +*/ + +/* + Copyright 2017 Dean Camera (dean [at] fourwalledcubicle [dot] com) + + Permission to use, copy, modify, distribute, and sell this + software and its documentation for any purpose is hereby granted + without fee, provided that the above copyright notice appear in + all copies and that both that the copyright notice and this + permission notice and warranty disclaimer appear in supporting + documentation, and that the name of the author not be used in + advertising or publicity pertaining to distribution of the + software without specific, written prior permission. + + The author disclaims all warranties with regard to this + software, including all implied warranties of merchantability + and fitness. In no event shall the author be liable for any + special, indirect or consequential damages or any damages + whatsoever resulting from loss of use, data or profits, whether + in an action of contract, negligence or other tortious action, + arising out of or in connection with the use or performance of + this software. +*/ + +#include <LUFA/Common/Common.h> +#include <LUFA/Drivers/USB/USB.h> diff --git a/BuildTests/SingleUSBModeTest/makefile b/BuildTests/SingleUSBModeTest/makefile new file mode 100644 index 0000000000..7921ab6ca2 --- /dev/null +++ b/BuildTests/SingleUSBModeTest/makefile @@ -0,0 +1,57 @@ +# +# LUFA Library +# Copyright (C) Dean Camera, 2017. +# +# dean [at] fourwalledcubicle [dot] com +# www.lufa-lib.org +# + +# Makefile for the single USB mode build test. +# This test attempts to build the USB module +# under fixed device and fixed host modes under +# all supported architectures + +# Path to the LUFA library core +LUFA_PATH := ../../LUFA/ + +# Build test cannot be run with multiple parallel jobs +.NOTPARALLEL: + +all: begin compile clean end + +begin: + @echo Executing build test "SingleUSBModeTest". + @echo + +end: + @echo Build test "SingleUSBModeTest" complete. + @echo + +compile: + @echo Building SingleUSBModeTest for ARCH=AVR8 in device only mode... + $(MAKE) -f makefile.test clean elf ARCH=AVR8 MCU=at90usb1287 CC_FLAGS='-D USB_DEVICE_ONLY' + + @echo Building SingleUSBModeTest for ARCH=AVR8 in host only mode... + $(MAKE) -f makefile.test clean elf ARCH=AVR8 MCU=at90usb1287 CC_FLAGS='-D USB_HOST_ONLY' + + @echo Building SingleUSBModeTest for ARCH=XMEGA in device only mode... + $(MAKE) -f makefile.test clean elf ARCH=XMEGA MCU=atxmega128a1u CC_FLAGS='-D USB_DEVICE_ONLY' + + @echo Building SingleUSBModeTest for ARCH=UC3 in device only mode... + $(MAKE) -f makefile.test clean elf ARCH=UC3 MCU=uc3a0256 CC_FLAGS='-D USB_DEVICE_ONLY' + + @echo Building SingleUSBModeTest for ARCH=UC3 in host only mode... + $(MAKE) -f makefile.test clean elf ARCH=UC3 MCU=uc3a0256 CC_FLAGS='-D USB_HOST_ONLY' + +clean: + $(MAKE) -f makefile.test clean ARCH=AVR8 MCU=at90usb1287 + $(MAKE) -f makefile.test clean ARCH=XMEGA MCU=atxmega128a1u + $(MAKE) -f makefile.test clean ARCH=UC3 MCU=uc3a0256 + +%: + +.PHONY: begin end compile clean + +# Include common DMBS build system modules +DMBS_PATH ?= $(LUFA_PATH)/Build/DMBS/DMBS +include $(DMBS_PATH)/core.mk diff --git a/BuildTests/SingleUSBModeTest/makefile.test b/BuildTests/SingleUSBModeTest/makefile.test new file mode 100644 index 0000000000..365c7d00b5 --- /dev/null +++ b/BuildTests/SingleUSBModeTest/makefile.test @@ -0,0 +1,75 @@ +# +# LUFA Library +# Copyright (C) Dean Camera, 2017. +# +# dean [at] fourwalledcubicle [dot] com +# www.lufa-lib.org +# +# -------------------------------------- +# LUFA Project Makefile. +# -------------------------------------- + +# Run "make help" for target help. + +MCU = +ARCH = +BOARD = NONE +F_CPU = $(F_USB) +DEBUG_LEVEL = 0 + +ifeq ($(ARCH), AVR8) + F_USB = 8000000 +else ifeq ($(ARCH), XMEGA) + F_USB = 48000000 +else ifeq ($(ARCH), UC3) + F_USB = 48000000 +endif + +OPTIMIZATION = 1 +TARGET = Test +SRC = Test.c Dummy.S $(LUFA_SRC_USB) +LUFA_PATH = ../../LUFA + +# Generic C/C++ compiler flags +CC_FLAGS = -Wextra +CC_FLAGS += -Werror +CC_FLAGS += -Wformat=2 +CC_FLAGS += -Winit-self +CC_FLAGS += -Wswitch-enum +CC_FLAGS += -Wunused +CC_FLAGS += -Wundef +CC_FLAGS += -Wpointer-arith +CC_FLAGS += -Wcast-align +CC_FLAGS += -Wwrite-strings +CC_FLAGS += -Wlogical-op +CC_FLAGS += -Wmissing-declarations +CC_FLAGS += -Wmissing-field-initializers +CC_FLAGS += -Wmissing-format-attribute +CC_FLAGS += -Woverlength-strings + +# Only enable rendundant declaration warnings for AVR8 target (FIXME) +ifeq ($(ARCH), AVR8) + CC_FLAGS += -Wredundant-decls +endif + +# C compiler only flags +C_FLAGS += -Wmissing-parameter-type +C_FLAGS += -Wnested-externs + +# Potential additional warnings to enable in the future (FIXME) +#CC_FLAGS += -Wswitch-default +#CC_FLAGS += -Wc++-compat +#CC_FLAGS += -Wcast-qual +#CC_FLAGS += -Wconversion +#CC_FLAGS += -Wjump-misses-init +#CC_FLAGS += -pedantic + +# Include LUFA-specific DMBS extension modules +DMBS_LUFA_PATH ?= $(LUFA_PATH)/Build/LUFA +include $(DMBS_LUFA_PATH)/lufa-sources.mk +include $(DMBS_LUFA_PATH)/lufa-gcc.mk + +# Include common DMBS build system modules +DMBS_PATH ?= $(LUFA_PATH)/Build/DMBS/DMBS +include $(DMBS_PATH)/core.mk +include $(DMBS_PATH)/gcc.mk diff --git a/BuildTests/StaticAnalysisTest/makefile b/BuildTests/StaticAnalysisTest/makefile new file mode 100644 index 0000000000..0041234d19 --- /dev/null +++ b/BuildTests/StaticAnalysisTest/makefile @@ -0,0 +1,47 @@ +# +# LUFA Library +# Copyright (C) Dean Camera, 2017. +# +# dean [at] fourwalledcubicle [dot] com +# www.lufa-lib.org +# + +# Static anlysis of the entire LUFA source tree, using the free cross-platform "cppcheck" tool. + +# Path to the LUFA library core +LUFA_PATH := ../../LUFA/ + +CPPCHECK_EXCLUDES := FATFs/ \ + PetiteFATFs/ \ + uip/ + +CPPCHECK_INCLUDES := $(patsubst %/,%,$(LUFA_PATH))/CodeTemplates/ \ + $(patsubst %/,%,$(LUFA_PATH))/../Projects/AVRISP-MKII/ + +CPPCHECK_FLAGS := -U TEMPLATE_FUNC_NAME -U __GNUC__ -U __DOXYGEN__ + +CPPCHECK_SUPPRESS := variableScope missingInclude unusedFunction + +SRC := $(patsubst %/,%,$(LUFA_PATH))/.. + +# Build test cannot be run with multiple parallel jobs +.NOTPARALLEL: + +all: begin cppcheck end + +begin: + @echo Executing build test "StaticAnalysisTest". + @echo + +end: + @echo Build test "StaticAnalysisTest" complete. + @echo + +%: + +.PHONY: all begin end + +# Include common DMBS build system modules +DMBS_PATH ?= $(LUFA_PATH)/Build/DMBS/DMBS +include $(DMBS_PATH)/core.mk +include $(DMBS_PATH)/cppcheck.mk diff --git a/BuildTests/makefile b/BuildTests/makefile new file mode 100644 index 0000000000..369ea9ad29 --- /dev/null +++ b/BuildTests/makefile @@ -0,0 +1,24 @@ +# +# LUFA Library +# Copyright (C) Dean Camera, 2017. +# +# dean [at] fourwalledcubicle [dot] com +# www.lufa-lib.org +# + +# Makefile to build all the LUFA Build Tests. Build Tests are +# used to verify the correctness of the LUFA library, and are +# not intended to be modified or compiled by non-developers. + +all: + +%: + @echo Executing \"make $@\" on all LUFA build tests. + @echo + $(MAKE) -C BoardDriverTest $@ + $(MAKE) -C BootloaderTest $@ + $(MAKE) -C ModuleTest $@ + $(MAKE) -C SingleUSBModeTest $@ + $(MAKE) -C StaticAnalysisTest $@ + @echo + @echo LUFA build test \"make $@\" operation complete. |