summaryrefslogtreecommitdiffstats
path: root/BuildTests
diff options
context:
space:
mode:
Diffstat (limited to 'BuildTests')
-rw-r--r--BuildTests/BoardDriverTest/Board/Board.h82
-rw-r--r--BuildTests/BoardDriverTest/Board/Buttons.h92
-rw-r--r--BuildTests/BoardDriverTest/Board/Dataflash.h197
-rw-r--r--BuildTests/BoardDriverTest/Board/Joystick.h104
-rw-r--r--BuildTests/BoardDriverTest/Board/LEDs.h132
-rw-r--r--BuildTests/BoardDriverTest/BoardDeviceMap.cfg89
-rw-r--r--BuildTests/BoardDriverTest/Test.c115
-rw-r--r--BuildTests/BoardDriverTest/makefile69
-rw-r--r--BuildTests/BoardDriverTest/makefile.test35
-rw-r--r--BuildTests/BootloaderTest/BootloaderDeviceMap.cfg167
-rw-r--r--BuildTests/BootloaderTest/makefile65
-rw-r--r--BuildTests/ModuleTest/Dummy.S41
-rw-r--r--BuildTests/ModuleTest/Modules.h56
-rw-r--r--BuildTests/ModuleTest/Test_C.c31
-rw-r--r--BuildTests/ModuleTest/Test_CPP.cpp31
-rw-r--r--BuildTests/ModuleTest/makefile67
-rw-r--r--BuildTests/ModuleTest/makefile.test94
-rw-r--r--BuildTests/SingleUSBModeTest/Dummy.S42
-rw-r--r--BuildTests/SingleUSBModeTest/Test.c32
-rw-r--r--BuildTests/SingleUSBModeTest/makefile57
-rw-r--r--BuildTests/SingleUSBModeTest/makefile.test75
-rw-r--r--BuildTests/StaticAnalysisTest/makefile47
-rw-r--r--BuildTests/makefile24
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;