diff --git a/BuildTests/BoardDriverTest/makefile b/BuildTests/BoardDriverTest/makefile
index 54afa575520cd02bfd0ac43078bb98191fc67393..6ed32a47e7aadce941a97f0f0159c58769e2f253 100644
--- a/BuildTests/BoardDriverTest/makefile
+++ b/BuildTests/BoardDriverTest/makefile
@@ -54,9 +54,9 @@ testboards:
 clean:
 	rm -f BuildMakefile
 	rm -f BoardList.txt
-	$(MAKE) -s -f makefile.test clean ARCH=AVR8
-	$(MAKE) -s -f makefile.test clean ARCH=XMEGA
-	$(MAKE) -s -f makefile.test clean ARCH=UC3
+	$(MAKE) -s -f makefile.test clean ARCH=AVR8 MCU=at90usb1287
+	$(MAKE) -s -f makefile.test clean ARCH=XMEGA MCU=atxmega128a1u
+	$(MAKE) -s -f makefile.test clean ARCH=UC3 MCU=uc3a0256
 
 %:
 
diff --git a/BuildTests/BoardDriverTest/makefile.test b/BuildTests/BoardDriverTest/makefile.test
index 60e97397dab3d4c82e695e1d5d691d81dc566fa9..11d0372efe69d81414ca2bfd2b6e35bf71aafe3b 100644
--- a/BuildTests/BoardDriverTest/makefile.test
+++ b/BuildTests/BoardDriverTest/makefile.test
@@ -9,11 +9,11 @@
 #         LUFA Project Makefile.
 # --------------------------------------
 
-MCU          = at90usb1287
-ARCH         = AVR8
-BOARD        = NONE
-F_CPU        = 8000000
-F_USB        = $(F_CPU)
+MCU          = 
+ARCH         = 
+BOARD        = 
+F_CPU        = $(F_USB)
+F_USB        = 8000000
 OPTIMIZATION = 1
 TARGET       = Test
 SRC          = $(TARGET).c
diff --git a/BuildTests/ModuleTest/makefile b/BuildTests/ModuleTest/makefile
index a756c309cd23efd2032f6feb5c2db8290bb21aeb..93a49e8d98bafcac68be1e933fa261d57c020cb7 100644
--- a/BuildTests/ModuleTest/makefile
+++ b/BuildTests/ModuleTest/makefile
@@ -48,9 +48,9 @@ end:
 	$(MAKE) -s -f makefile.test clean elf ARCH=UC3 MCU=$(@:%.uc3=%)
 
 clean:
-	$(MAKE) -s -f makefile.test clean ARCH=AVR8
-	$(MAKE) -s -f makefile.test clean ARCH=XMEGA
-	$(MAKE) -s -f makefile.test clean ARCH=UC3
+	$(MAKE) -s -f makefile.test clean ARCH=AVR8 MCU=$(firstword $(AVR8_FAMILIES))
+	$(MAKE) -s -f makefile.test clean ARCH=XMEGA MCU=$(firstword $(XMEGA_FAMILIES))
+	$(MAKE) -s -f makefile.test clean ARCH=UC3 MCU=$(firstword $(UC3_FAMILIES))
 
 %:
 
diff --git a/BuildTests/ModuleTest/makefile.test b/BuildTests/ModuleTest/makefile.test
index b3307f897008d53b894db005ced460ea77ff4284..f92ef9c33faef5382316f4c30e6b77e75190c274 100644
--- a/BuildTests/ModuleTest/makefile.test
+++ b/BuildTests/ModuleTest/makefile.test
@@ -9,10 +9,14 @@
 #         LUFA Project Makefile.
 # --------------------------------------
 
-MCU          = at90usb1287
-ARCH         = AVR8
+MCU          = 
+ARCH         = 
 BOARD        = NONE
-F_CPU        = 8000000
+F_CPU        = $(F_USB)
+OPTIMIZATION = 1
+TARGET       = Test
+SRC          = $(TARGET)_C.c $(TARGET)_CPP.cpp Dummy.S $(LUFA_SRC_USB)
+LUFA_PATH    = ../../LUFA/
 
 ifeq ($(ARCH), AVR8)
 F_USB        = 8000000
@@ -22,11 +26,6 @@ else ifeq ($(ARCH), UC3)
 F_USB        = 48000000
 endif
 
-OPTIMIZATION = 1
-TARGET       = Test
-SRC          = $(TARGET)_C.c $(TARGET)_CPP.cpp Dummy.S $(LUFA_SRC_USB)
-LUFA_PATH    = ../../LUFA/
-
 # Generic C/C++ compiler flags
 CC_FLAGS  = -Wextra
 CC_FLAGS += -Werror
diff --git a/BuildTests/ModuleTest/makefile.uc3 b/BuildTests/ModuleTest/makefile.uc3
deleted file mode 100644
index 5628748ee7e611759c010985060eb9e503061bf4..0000000000000000000000000000000000000000
--- a/BuildTests/ModuleTest/makefile.uc3
+++ /dev/null
@@ -1,513 +0,0 @@
-# Hey Emacs, this is a -*- makefile -*-
-#----------------------------------------------------------------------------
-# WinAVR Makefile Template written by Eric B. Weddington, J�rg Wunsch, et al.
-#  >> Modified for use with the LUFA project. <<
-#
-# Released to the Public Domain
-#
-# Additional material for this makefile was written by:
-# Peter Fleury
-# Tim Henigan
-# Colin O'Flynn
-# Reiner Patommel
-# Markus Pfaff
-# Sander Pool
-# Frederik Rouleau
-# Carlos Lamas
-# Dean Camera
-# Opendous Inc.
-# Denver Gingerich
-#
-#----------------------------------------------------------------------------
-# On command line:
-#
-# make all = Make software.
-#
-# make clean = Clean out built project files.
-#
-# make dfu = Download the hex file to the device, using dfu-programmer (must
-#            have dfu-programmer installed).
-#
-# make flip = Download the hex file to the device, using Atmel FLIP (must
-#             have Atmel FLIP installed).
-#
-# make doxygen = Generate DoxyGen documentation for the project (must have
-#                DoxyGen installed)
-#
-# make filename.s = Just compile filename.c into the assembler code only.
-#
-# make filename.i = Create a preprocessed source file for use in submitting
-#                   bug reports to the GCC project.
-#
-# To rebuild project do "make clean" then "make all".
-#----------------------------------------------------------------------------
-
-
-# MCU name
-MCU = uc3a3256
-
-
-# Targeted chip architecture (see library "Architectures" documentation)
-ARCH = UC3
-
-
-# Target board (see library "Board Types" documentation, NONE for projects not requiring
-# LUFA board drivers). If USER is selected, put custom board drivers in a directory called 
-# "Board" inside the application directory.
-BOARD = NONE
-
-
-# Processor frequency.
-#     This will define a symbol, F_CPU, in all source code files equal to the
-#     processor frequency in Hz. You can then use this symbol in your source code to
-#     calculate timings. Do NOT tack on a 'UL' at the end, this will be done
-#     automatically to create a 32-bit value in your source code.
-#
-#     This should be the frequency the system core runs at, after the system clock
-#     has been set up correctly and started.
-F_CPU = 12000000
-
-
-# USB controller master clock frequency.
-#     This will define a symbol, F_USB, in all source code files equal to the
-#     input clock frequency of the USB controller's clock generator in Hz.
-#
-#     For the UC3 chips, this should be equal to 48MHz or 96MHz.
-F_USB = 48000000
-
-
-# Output format. (can be srec, ihex, binary)
-FORMAT = ihex
-
-
-# Target file name (without extension).
-TARGET = Test
-
-
-# Object files directory
-#     To put object files in current directory, use a dot (.), do NOT make
-#     this an empty or blank macro!
-OBJDIR = .
-
-
-# Path to the LUFA library
-LUFA_PATH = ../..
-
-
-# LUFA library compile-time options and predefined tokens (add '-D' before each token)
-LUFA_OPTS = 
-
-
-# Create the LUFA source path variables by including the LUFA root makefile
-include $(LUFA_PATH)/LUFA/makefile
-
-
-# List C source files here. (C dependencies are automatically generated.)
-SRC = Test_C.c                   \
-      $(LUFA_SRC_USB)            \
-      $(LUFA_SRC_USBCLASS)
-
-
-# List C++ source files here. (C dependencies are automatically generated.)
-CPPSRC = Test_CPP.cpp
-
-
-# List Assembler source files here.
-#     Make them always end in a capital .S.  Files ending in a lowercase .s
-#     will not be considered source files but generated files (assembler
-#     output from the compiler), and will be deleted upon "make clean"!
-#     Even though the DOS/Win* filesystem matches both .s and .S the same,
-#     it will preserve the spelling of the filenames, and gcc itself does
-#     care about how the name is spelled on its command-line.
-ASRC = Dummy.S                 \
-       $(LUFA_PATH)/LUFA/Platform/UC3/Exception.S
-
-
-# Optimization level, can be [0, 1, 2, 3, s]. 
-#     0 = turn off optimization. s = optimize for size.
-#     (Note: 3 is not always the best optimization level. See avr-libc FAQ.)
-OPT = 1
-
-
-# List any extra directories to look for include files here.
-#     Each directory must be seperated by a space.
-#     Use forward slashes for directory separators.
-#     For a directory that has spaces, enclose it in quotes.
-EXTRAINCDIRS = $(LUFA_PATH)/
-
-
-# Compiler flag to set the C Standard level.
-#     c89   = "ANSI" C
-#     gnu89 = c89 plus GCC extensions
-#     c99   = ISO C99 standard (not yet fully implemented)
-#     gnu99 = c99 plus GCC extensions
-CSTANDARD = -std=gnu99
-
-
-# Place -D or -U options here for C sources
-CDEFS  = -DF_CPU=$(F_CPU)UL
-CDEFS += -DF_USB=$(F_USB)UL
-CDEFS += -DBOARD=BOARD_$(BOARD)
-CDEFS += -DARCH=ARCH_$(ARCH)
-CDEFS += $(LUFA_OPTS)
-
-
-# Place -D or -U options here for ASM sources
-ADEFS  = -DF_CPU=$(F_CPU)
-ADEFS += -DF_USB=$(F_USB)UL
-ADEFS += -DBOARD=BOARD_$(BOARD)
-ADEFS += -DARCH=ARCH_$(ARCH)
-ADEFS += $(LUFA_OPTS)
-
-# Place -D or -U options here for C++ sources
-CPPDEFS  = -DF_CPU=$(F_CPU)UL
-CPPDEFS += -DF_USB=$(F_USB)UL
-CPPDEFS += -DBOARD=BOARD_$(BOARD)
-CPPDEFS += -DARCH=ARCH_$(ARCH)
-CPPDEFS += $(LUFA_OPTS)
-
-
-# Debugging level.
-DEBUG = 3
-
-
-#---------------- Compiler Options C ----------------
-#  -g*:          generate debugging information
-#  -O*:          optimization level
-#  -f...:        tuning, see GCC manual and avr-libc documentation
-#  -Wall...:     warning level
-#  -Wa,...:      tell GCC to pass this to the assembler.
-#    -adhlns...: create assembler listing
-CFLAGS = -g$(DEBUG)
-CFLAGS += $(CDEFS)
-CFLAGS += -O$(OPT)
-CFLAGS += -funsigned-char
-CFLAGS += -funsigned-bitfields
-CFLAGS += -ffunction-sections
-CFLAGS += -fno-strict-aliasing
-CFLAGS += -masm-addr-pseudos
-#CFLAGS += -Wa,-adhlns=$(<:%.c=$(OBJDIR)/%.lst)
-CFLAGS += $(patsubst %,-I%,$(EXTRAINCDIRS))
-CFLAGS += $(CSTANDARD)
-CFLAGS += -Werror
-CFLAGS += -Wall
-CFLAGS += -Wextra
-CFLAGS += -Wstrict-prototypes
-CFLAGS += -Wformat=2
-CFLAGS += -Winit-self
-CFLAGS += -Wswitch-enum
-CFLAGS += -Wunused
-CFLAGS += -Wundef
-CFLAGS += -Wpointer-arith
-CFLAGS += -Wcast-align
-CFLAGS += -Wwrite-strings
-CFLAGS += -Wlogical-op
-CFLAGS += -Wmissing-parameter-type
-CFLAGS += -Wmissing-declarations
-CFLAGS += -Wmissing-field-initializers
-CFLAGS += -Wmissing-format-attribute
-#CFLAGS += -Wredundant-decls
-CFLAGS += -Wnested-externs
-CFLAGS += -Woverlength-strings
-#CFLAGS += -Wswitch-default
-#CFLAGS += -Wc++-compat
-#CFLAGS += -Wcast-qual
-#CFLAGS += -Wconversion
-#CFLAGS += -Wjump-misses-init
-#CFLAGS += -pedantic
-
-
-#---------------- Compiler Options C++ ----------------
-#  -g*:          generate debugging information
-#  -O*:          optimization level
-#  -f...:        tuning, see GCC manual and avr-libc documentation
-#  -Wall...:     warning level
-#  -Wa,...:      tell GCC to pass this to the assembler.
-#    -adhlns...: create assembler listing
-CPPFLAGS = -g$(DEBUG)
-CPPFLAGS += $(CPPDEFS)
-CPPFLAGS += -O$(OPT)
-CPPFLAGS += -funsigned-char
-CPPFLAGS += -funsigned-bitfields
-CPPFLAGS += -ffunction-sections
-CPPFLAGS += -fno-strict-aliasing
-CPPFLAGS += -fno-exceptions
-CPPFLAGS += -masm-addr-pseudos
-CPPFLAGS += -Wall
-CPPFLAGS += -Wundef
-#CPPFLAGS += -Wa,-adhlns=$(<:%.cpp=$(OBJDIR)/%.lst)
-CPPFLAGS += $(patsubst %,-I%,$(EXTRAINCDIRS))
-#CPPFLAGS += $(CSTANDARD)
-
-
-#---------------- Assembler Options ----------------
-#  -Wa,...:   tell GCC to pass this to the assembler.
-#  -adhlns:   create listing
-#  -gstabs:   have the assembler create line number information; note that
-#             for use in COFF files, additional information about filenames
-#             and function names needs to be present in the assembler source
-#             files -- see avr-libc docs [FIXME: not yet described there]
-#  -listing-cont-lines: Sets the maximum number of continuation lines of hex 
-#       dump that will be displayed for a given single line of source input.
-ASFLAGS = $(ADEFS)
-#ASFLAGS += -Wa,-adhlns=$(<:%.S=$(OBJDIR)/%.lst),-gstabs,--listing-cont-lines=100
-
-
-#---------------- Linker Options ----------------
-#  -Wl,...:     tell GCC to pass this to linker.
-#    -Map:      create map file
-#    --cref:    add cross reference to  map file
-#LDFLAGS  = -Wl,-Map=$(TARGET).map,--cref
-LDFLAGS += -Wl,--gc-sections --rodata-writable
-LDFLAGS += -Wl,--direct-data
-#LDFLAGS += -T linker_script.x
-
-
-#============================================================================
-
-
-# Define programs and commands.
-SHELL = sh
-CC = avr32-gcc
-OBJCOPY = avr32-objcopy
-OBJDUMP = avr32-objdump
-SIZE = avr32-size
-AR = avr32-ar rcs
-NM = avr32-nm
-REMOVE = rm -f
-REMOVEDIR = rm -rf
-COPY = cp
-WINSHELL = cmd
-
-
-# Define Messages
-# English
-MSG_ERRORS_NONE = Errors: none
-MSG_BEGIN = -------- begin --------
-MSG_END = --------  end  --------
-MSG_SIZE_BEFORE = Size before: 
-MSG_SIZE_AFTER = Size after:
-MSG_COFF = Converting to AVR COFF:
-MSG_FLASH = Creating load file for Flash:
-MSG_EEPROM = Creating load file for EEPROM:
-MSG_EXTENDED_LISTING = Creating Extended Listing:
-MSG_SYMBOL_TABLE = Creating Symbol Table:
-MSG_LINKING = Linking:
-MSG_COMPILING = Compiling C:
-MSG_COMPILING_CPP = Compiling C++:
-MSG_ASSEMBLING = Assembling:
-MSG_CLEANING = Cleaning project:
-MSG_CREATING_LIBRARY = Creating library:
-
-
-
-
-# Define all object files.
-OBJ = $(SRC:%.c=$(OBJDIR)/%.o) $(CPPSRC:%.cpp=$(OBJDIR)/%.o) $(ASRC:%.S=$(OBJDIR)/%.o) 
-
-# Define all listing files.
-LST = $(SRC:%.c=$(OBJDIR)/%.lst) $(CPPSRC:%.cpp=$(OBJDIR)/%.lst) $(ASRC:%.S=$(OBJDIR)/%.lst) 
-
-
-# Compiler flags to generate dependency files.
-#GENDEPFLAGS = -MMD -MP -MF .dep/$(@F).d
-
-
-# Combine all necessary flags and optional flags.
-# Add target processor to flags.
-ALL_CFLAGS = -mpart=$(MCU) -I. $(CFLAGS) $(GENDEPFLAGS)
-ALL_CPPFLAGS = -mpart=$(MCU) -I. -x c++ $(CPPFLAGS) $(GENDEPFLAGS)
-ALL_ASFLAGS = -mpart=$(MCU) -I. -x assembler-with-cpp $(ASFLAGS)
-
-
-
-
-
-# Default target.
-all: begin gccversion sizebefore build sizeafter end
-
-# Change the build target to build a HEX file or a library.
-build: elf hex lss sym
-#build: lib
-
-
-elf: $(TARGET).elf
-hex: $(TARGET).hex
-lss: $(TARGET).lss
-sym: $(TARGET).sym
-LIBNAME=lib$(TARGET).a
-lib: $(LIBNAME)
-
-
-
-# Eye candy.
-# AVR Studio 3.x does not check make's exit code but relies on
-# the following magic strings to be generated by the compile job.
-begin:
-	@echo
-	@echo $(MSG_BEGIN)
-
-end:
-	@echo $(MSG_END)
-	@echo
-
-
-# Display size of file.
-HEXSIZE = $(SIZE) --target=$(FORMAT) $(TARGET).hex
-ELFSIZE = $(SIZE) $(MCU_FLAG) $(FORMAT_FLAG) $(TARGET).elf
-MCU_FLAG = $(shell $(SIZE) --help | grep -- --mcu > /dev/null && echo --mcu=$(MCU) )
-FORMAT_FLAG = $(shell $(SIZE) --help | grep -- --format=.*avr > /dev/null && echo --format=avr )
-
-
-sizebefore:
-	@if test -f $(TARGET).elf; then echo; echo $(MSG_SIZE_BEFORE); $(ELFSIZE); \
-	2>/dev/null; echo; fi
-
-sizeafter:
-	@if test -f $(TARGET).elf; then echo; echo $(MSG_SIZE_AFTER); $(ELFSIZE); \
-	2>/dev/null; echo; fi
-
-
-
-# Display compiler version information.
-gccversion : 
-	@$(CC) --version
-
-
-# Program the device.  
-flip: $(TARGET).hex
-	batchisp -hardware usb -device $(MCU) -operation erase f
-	batchisp -hardware usb -device $(MCU) -operation loadbuffer $(TARGET).hex program
-	batchisp -hardware usb -device $(MCU) -operation start reset 0
-
-dfu: $(TARGET).hex
-	dfu-programmer $(MCU) erase
-	dfu-programmer $(MCU) flash $(TARGET).hex
-	dfu-programmer $(MCU) reset
-
-
-# Create final output files (.hex, .eep) from ELF output file.
-%.hex: %.elf
-	@echo
-	@echo $(MSG_FLASH) $@
-	$(OBJCOPY) -O $(FORMAT) -R .eeprom -R .fuse -R .lock -R .signature $< $@
-
-# Create extended listing file from ELF output file.
-%.lss: %.elf
-	@echo
-	@echo $(MSG_EXTENDED_LISTING) $@
-	$(OBJDUMP) -h -S -z $< > $@
-
-# Create a symbol table from ELF output file.
-%.sym: %.elf
-	@echo
-	@echo $(MSG_SYMBOL_TABLE) $@
-	$(NM) -n $< > $@
-
-
-
-# Create library from object files.
-.SECONDARY : $(TARGET).a
-.PRECIOUS : $(OBJ)
-%.a: $(OBJ)
-	@echo
-	@echo $(MSG_CREATING_LIBRARY) $@
-	$(AR) $@ $(OBJ)
-
-
-# Link: create ELF output file from object files.
-.SECONDARY : $(TARGET).elf
-.PRECIOUS : $(OBJ)
-%.elf: $(OBJ)
-	@echo
-	@echo $(MSG_LINKING) $@
-	$(CC) $(ALL_CFLAGS) $^ --output $@ $(LDFLAGS)
-
-
-# Compile: create object files from C source files.
-$(OBJDIR)/%.o : %.c
-	@echo
-	@echo $(MSG_COMPILING) $<
-	$(CC) -c $(ALL_CFLAGS) $< -o $@ 
-
-
-# Compile: create object files from C++ source files.
-$(OBJDIR)/%.o : %.cpp
-	@echo
-	@echo $(MSG_COMPILING_CPP) $<
-	$(CC) -c $(ALL_CPPFLAGS) $< -o $@ 
-
-
-# Compile: create assembler files from C source files.
-%.s : %.c
-	$(CC) -S $(ALL_CFLAGS) $< -o $@
-
-
-# Compile: create assembler files from C++ source files.
-%.s : %.cpp
-	$(CC) -S $(ALL_CPPFLAGS) $< -o $@
-
-
-# Assemble: create object files from assembler source files.
-$(OBJDIR)/%.o : %.S
-	@echo
-	@echo $(MSG_ASSEMBLING) $<
-	$(CC) -c $(ALL_ASFLAGS) $< -o $@
-
-
-# Create preprocessed source for use in sending a bug report.
-%.i : %.c
-	$(CC) -E -mmcu=$(MCU) -I. $(CFLAGS) $< -o $@ 
-
-
-# Target: clean project.
-clean: begin clean_list end
-
-clean_list :
-	@echo
-	@echo $(MSG_CLEANING)
-	$(REMOVE) $(TARGET).hex
-	$(REMOVE) $(TARGET).cof
-	$(REMOVE) $(TARGET).elf
-	$(REMOVE) $(TARGET).map
-	$(REMOVE) $(TARGET).sym
-	$(REMOVE) $(TARGET).lss
-	$(REMOVE) $(SRC:%.c=$(OBJDIR)/%.o) $(CPPSRC:%.cpp=$(OBJDIR)/%.o) $(ASRC:%.S=$(OBJDIR)/%.o)
-	$(REMOVE) $(SRC:%.c=$(OBJDIR)/%.lst) $(CPPSRC:%.cpp=$(OBJDIR)/%.lst) $(ASRC:%.S=$(OBJDIR)/%.lst)
-	$(REMOVE) $(SRC:.c=.s)
-	$(REMOVE) $(SRC:.c=.d)
-	$(REMOVE) $(SRC:.c=.i)
-	$(REMOVEDIR) .dep
-
-doxygen:
-	@echo Generating Project Documentation \($(TARGET)\)...
-	@if ( ( cat Doxygen.conf ; echo "HTML_STYLESHEET=$(LUFA_PATH)/LUFA/DoxygenPages/Style/Style.css" ) | doxygen - 2>&1 | grep -v "warning: ignoring unsupported tag" ;); then \
-	  exit 1; \
-	fi;
-	@echo Documentation Generation Complete.
-
-clean_doxygen:
-	rm -rf Documentation
-
-checksource:
-	@for f in $(SRC) $(CPPSRC) $(ASRC); do \
-		if [ -f $$f ]; then \
-			echo "Found Source File: $$f" ; \
-		else \
-			echo "Source File Not Found: $$f" ; \
-		fi; done 
-
-
-# Create object files directory
-$(shell mkdir $(OBJDIR) 2>/dev/null)
-
-
-# Include the dependency files.
--include $(shell mkdir .dep 2>/dev/null) $(wildcard .dep/*)
-
-
-# Listing of phony targets.
-.PHONY : all begin finish end sizebefore sizeafter gccversion \
-build elf hex lss sym doxygen clean clean_list clean_doxygen  \
-dfu flip checksource
-
diff --git a/BuildTests/SingleUSBModeTest/makefile b/BuildTests/SingleUSBModeTest/makefile
index 096d4b3d1d6291258703609f3a0613295823c769..56231c06abfe2c7aeb6770322ef403e3101b9007 100644
--- a/BuildTests/SingleUSBModeTest/makefile
+++ b/BuildTests/SingleUSBModeTest/makefile
@@ -6,11 +6,10 @@
 #           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.
+# 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/
@@ -35,9 +34,9 @@ compile:
 	$(MAKE) -s -f makefile.test clean elf ARCH=UC3 MCU=uc3a0256 CCFLAGS='-D USB_HOST_ONLY'
 
 clean:
-	$(MAKE) -s -f makefile.test clean ARCH=AVR8
-	$(MAKE) -s -f makefile.test clean ARCH=XMEGA
-	$(MAKE) -s -f makefile.test clean ARCH=UC3
+	$(MAKE) -s -f makefile.test clean ARCH=AVR8 MCU=at90usb1287
+	$(MAKE) -s -f makefile.test clean ARCH=XMEGA MCU=atxmega128a1u
+	$(MAKE) -s -f makefile.test clean ARCH=UC3 MCU=uc3a0256
 
 %:
 
diff --git a/BuildTests/SingleUSBModeTest/makefile.test b/BuildTests/SingleUSBModeTest/makefile.test
index 0a0c0be3b15222379707311e8020da372b26706f..d8b9be5b40bd5707c8495141714de34faf02c38f 100644
--- a/BuildTests/SingleUSBModeTest/makefile.test
+++ b/BuildTests/SingleUSBModeTest/makefile.test
@@ -9,10 +9,10 @@
 #         LUFA Project Makefile.
 # --------------------------------------
 
-MCU          = at90usb1287
-ARCH         = AVR8
+MCU          = 
+ARCH         = 
 BOARD        = NONE
-F_CPU        = 8000000
+F_CPU        = $(F_USB)
 
 ifeq ($(ARCH), AVR8)
 F_USB        = 8000000
diff --git a/BuildTests/StaticAnalysisTest/makefile b/BuildTests/StaticAnalysisTest/makefile
index aecb67792f82659fc50139daf2a791ce7d0d5aee..d2151eed1cf1683097f8f170fe15fb4fad23fe48 100644
--- a/BuildTests/StaticAnalysisTest/makefile
+++ b/BuildTests/StaticAnalysisTest/makefile
@@ -29,6 +29,7 @@ end:
 	@echo
 
 %:
+	
 
 .PHONY: all begin end
 
diff --git a/LUFA/CodeTemplates/makefile_template b/LUFA/CodeTemplates/makefile_template
index 0be15b2c996950aa18df3f1a83d328a9cbfe9de5..25a41dd15b264e003b79b2e7d1bb5523b2841980 100644
--- a/LUFA/CodeTemplates/makefile_template
+++ b/LUFA/CodeTemplates/makefile_template
@@ -16,7 +16,7 @@ F_CPU        = 8000000
 F_USB        = $(F_CPU)
 OPTIMIZATION = s
 TARGET       = Target
-SRC          = $(TARGET).c $(LUFA_SRC_USB) $(LUFA_SRC_USBCLASS)
+SRC          = $(TARGET).c $(LUFA_SRC_USB) $(LUFA_SRC_USBCLASS) $(LUFA_SRC_PLATFORM)
 LUFA_PATH    = ../../LUFA/
 CC_FLAGS     = -DUSE_LUFA_CONFIG_HEADER -IConfig/
 LD_FLAGS     =