summaryrefslogtreecommitdiffstats
path: root/BuildTests/ModuleTest
diff options
context:
space:
mode:
Diffstat (limited to 'BuildTests/ModuleTest')
-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
6 files changed, 320 insertions, 0 deletions
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