aboutsummaryrefslogtreecommitdiffstats
path: root/LUFA
diff options
context:
space:
mode:
authorDean Camera <dean@fourwalledcubicle.com>2012-06-01 22:32:43 +0000
committerDean Camera <dean@fourwalledcubicle.com>2012-06-01 22:32:43 +0000
commit56e792c95b1a29e61d9204a8f7f305d7f33261f1 (patch)
tree9a4fe8e631f6d4ec98942b4e7f1dc2349d25283f /LUFA
parente309f42af3389afc8a11fb7475cdd808d89aef98 (diff)
downloadlufa-56e792c95b1a29e61d9204a8f7f305d7f33261f1.tar.gz
lufa-56e792c95b1a29e61d9204a8f7f305d7f33261f1.tar.bz2
lufa-56e792c95b1a29e61d9204a8f7f305d7f33261f1.zip
Switch over Demos, Bootloaders and Projects to the new and improved build system.
Diffstat (limited to 'LUFA')
-rw-r--r--LUFA/Build/lufa.avrdude.in54
-rw-r--r--LUFA/Build/lufa.build.in182
-rw-r--r--LUFA/Build/lufa.core.in73
-rw-r--r--LUFA/Build/lufa.dfu.in71
-rw-r--r--LUFA/Build/lufa.doxygen.in52
-rw-r--r--LUFA/Build/lufa.sources.in86
-rw-r--r--LUFA/CodeTemplates/makefile_template33
-rw-r--r--LUFA/DoxygenPages/ChangeLog.txt1
-rw-r--r--LUFA/makefile112
9 files changed, 577 insertions, 87 deletions
diff --git a/LUFA/Build/lufa.avrdude.in b/LUFA/Build/lufa.avrdude.in
new file mode 100644
index 000000000..f16a7720c
--- /dev/null
+++ b/LUFA/Build/lufa.avrdude.in
@@ -0,0 +1,54 @@
+#
+# LUFA Library
+# Copyright (C) Dean Camera, 2012.
+#
+# dean [at] fourwalledcubicle [dot] com
+# www.lufa-lib.org
+#
+
+LUFA_BUILD_MODULES += AVRDUDE
+LUFA_BUILD_TARGETS += program
+
+# -----------------------------------------------------------------------------
+# LUFA DFU Bootloader Buildsystem Makefile Module.
+# -----------------------------------------------------------------------------
+# DESCRIPTION:
+# Provides a set of targets to re-program a device using the open source
+# avr-dude utility.
+# -----------------------------------------------------------------------------
+# TARGETS:
+#
+# program - Program target with application using avr-dude
+#
+# MANDATORY PARAMETERS:
+#
+# MCU - Microcontroller device model name
+# TARGET - Application name
+#
+# OPTIONAL PARAMETERS:
+#
+# AVRDUDE_PROGRAMMER - Name of programming hardware to use
+# AVRDUDE_PORT - Name of communication port to use
+# AVRDUDE_FLAGS - Flags to pass to avr-dude
+#
+# -----------------------------------------------------------------------------
+
+# Output Messages
+MSG_AVRDUDE_CMD = ' [AVRDUDE] :'
+
+# Default values of user-supplied variables
+AVRDUDE_PROGRAMMER ?= jtagicemkii
+AVRDUDE_PORT ?= usb
+AVRDUDE_FLAGS ?= -U flash:w:$(TARGET).hex
+
+# Sanity check the user MCU and TARGET makefile options
+ifeq ($(MCU),)
+ $(error Makefile MCU value not set.)
+endif
+ifeq ($(TARGET),)
+ $(error Makefile TARGET value not set.)
+endif
+
+program: $(TARGET).hex
+ @echo $(MSG_AVRDUDE_CMD) Programming device \"$(MCU)\" with settings \"$(AVRDUDE_FLAGS)\" using \"$(AVRDUDE_PROGRAMMER)\" on port \"$(AVRDUDE_PORT)\"
+ avrdude -p $(MCU) -P $(AVRDUDE_PORT) -c $(AVRDUDE_PROGRAMMER) $(AVRDUDE_FLAGS)
diff --git a/LUFA/Build/lufa.build.in b/LUFA/Build/lufa.build.in
new file mode 100644
index 000000000..e9921efb7
--- /dev/null
+++ b/LUFA/Build/lufa.build.in
@@ -0,0 +1,182 @@
+#
+# LUFA Library
+# Copyright (C) Dean Camera, 2012.
+#
+# dean [at] fourwalledcubicle [dot] com
+# www.lufa-lib.org
+#
+
+LUFA_BUILD_MODULES += BUILD
+LUFA_BUILD_TARGETS += size checksource all elf hex clean
+
+# -----------------------------------------------------------------------------
+# LUFA Compiler Buildsystem Makefile Module.
+# -----------------------------------------------------------------------------
+# DESCRIPTION:
+# Provides a set of targets to build a C, C++ and/or Assembly application
+# via the AVR-GCC compiler.
+# -----------------------------------------------------------------------------
+# TARGETS:
+#
+# size - List application size
+# checksource - Check existance of listed input source files
+# all - Build application and list size
+# elf - Build application ELF debug object file
+# hex - Build application HEX object files
+# clean - Remove output files
+#
+# MANDATORY PARAMETERS:
+#
+# TARGET - Application name
+# ARCH - Device architecture name
+# MCU - Microcontroller device model name
+# SRC - List of input source files (.c, .cpp/.c++, .S)
+# F_USB - Speed of the input clock of the USB controller
+# in Hz
+# LUFA_PATH - Path to the LUFA library core
+#
+# OPTIONAL PARAMETERS:
+#
+# BOARD - LUFA board hardware
+# OPTIMIZATION - Optimization level
+# C_STANDARD - C Language Standard to use
+# CPP_STANDARD - C++ Language Standard to use
+# F_CPU - Speed of the CPU, in Hz
+# CC_FLAGS - Flags to pass to the compiler
+# LD_FLAGS - Flags to pass to the linker
+#
+# -----------------------------------------------------------------------------
+
+# Output Messages
+MSG_BUILD_BEGIN = Begin compilation of project \"$(TARGET)\"...
+MSG_BUILD_END = Finished building project \"$(TARGET)\"...
+MSG_COMPILE_CMD = ' [CC] :'
+MSG_REMOVE_CMD = ' [RM] :'
+MSG_LINKER_CMD = ' [LNK] :'
+MSG_SIZE_CMD = ' [SIZE] :'
+MSG_OBJCPY_CMD = ' [OBJCPY] :'
+MSG_OBJDMP_CMD = ' [OBJDMP] :'
+
+# Sanity check the user MCU, TARGET, ARCH, SRC, F_USB and LUFA_PATH makefile options
+ifeq ($(TARGET),)
+ $(error Makefile TARGET value not set.)
+endif
+ifeq ($(ARCH),)
+ $(error Makefile ARCH value not set.)
+endif
+ifeq ($(MCU),)
+ $(error Makefile MCU value not set.)
+endif
+ifeq ($(SRC),)
+ $(error Makefile SRC value not set.)
+endif
+ifeq ($(F_USB),)
+ $(error Makefile F_USB value not set.)
+endif
+ifeq ($(LUFA_PATH),)
+ $(error Makefile LUFA_PATH value not set.)
+endif
+
+# Default values of user-supplied variables
+BOARD ?= NONE
+OPTIMIZATION ?= s
+F_CPU ?=
+C_STANDARD ?= c99
+CPP_STANDARD ?= c++98
+
+# Convert input source file list to differentiate them by type
+C_SOURCE = $(filter %.c, $(SRC))
+CPP_SOURCE = $(filter %.cpp, $(SRC)) $(filter %.c++, $(SRC))
+ASM_SOURCE = $(filter %.S, $(SRC))
+
+# Convert input source filenames into a list of required output object files
+OBJECT_FILES = $(C_SOURCE:%.c=%.o) $(CPP_SOURCE:%.c++=%.o) $(CPP_SOURCE:%.c++=%.o) $(ASM_SOURCE:%.S=%.o)
+
+# Create a list of flags to pass to the compiler
+CC_FLAGS += -mmcu=$(MCU) -I. -I$(LUFA_PATH)/.. -gdwarf-2 -pipe
+CC_FLAGS += -Wall -Wstrict-prototypes
+CC_FLAGS += -fno-strict-aliasing -funsigned-char -funsigned-bitfields -ffunction-sections -fshort-enums -fno-inline-small-functions -fpack-struct -fshort-enums
+CC_FLAGS += -DARCH=ARCH_$(ARCH) -DBOARD=BOARD_$(BOARD) -DF_USB=$(F_USB)UL
+ifneq ($(F_CPU),)
+ CC_FLAGS += -DF_CPU=$(F_CPU)UL
+endif
+
+# Create a list of flags to pass to the linker
+LD_FLAGS += -Wl,-Map=$(TARGET).map,--cref -Wl,--relax -Wl,--gc-sections -lm
+
+# Create a list of unknown source file types, if any are found throw an error
+UNKNOWN_SOURCE = $(filter-out $(C_SOURCE) $(CPP_SOURCE) $(ASM_SOURCE), $(SRC))
+ifneq ($(UNKNOWN_SOURCE),)
+ $(error Unknown input source formats: $(UNKNOWN_SOURCE))
+endif
+
+# Determine flags to pass to the size utility based on its reported features
+SIZE_MCU_FLAG = $(shell avr-size --help | grep -- --mcu > /dev/null && echo --mcu=$(MCU) )
+SIZE_FORMAT_FLAG = $(shell avr-size --help | grep -- --format=.*avr > /dev/null && echo --format=avr )
+
+
+begin:
+ @echo ""
+ @echo $(MSG_BUILD_BEGIN)
+
+end:
+ @echo $(MSG_BUILD_END)
+ @echo ""
+
+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
+
+size:
+ @echo $(MSG_SIZE_CMD) Determining size of \"$(TARGET).elf\"
+ @if test -f $(TARGET).elf; then \
+ avr-size $(SIZE_MCU_FLAG) $(SIZE_FORMAT_FLAG) $(TARGET).elf ; 2>/dev/null; \
+ fi
+
+.PHONY: begin hex lss end size
+all: begin hex end size
+
+elf: $(TARGET).elf
+hex: $(TARGET).hex $(TARGET).eep
+lss: $(TARGET).lss
+
+%.o: %.c
+ @echo $(MSG_COMPILE_CMD) Compiling C file \"$^\"
+ avr-gcc -c $(CC_FLAGS) -O$(OPTIMIZATION) --std=$(C_STANDARD) $< -o $@
+
+%.o: %.cpp
+%.o: %.c++
+ @echo $(MSG_COMPILE_CMD) Compiling C++ file \"$^\"
+ avr-gcc -c $(CC_FLAGS) -O$(OPTIMIZATION) --std=$(CPP_STANDARD) -x c++ $< -o $@
+
+%.o: %.S
+ @echo $(MSG_COMPILE_CMD) Assembling \"$^\"
+ avr-gcc -c $(CC_FLAGS) -x assembler-with-cpp $< -o $@
+
+.PRECIOUS : $(OBJECT_FILES)
+%.elf: $(OBJECT_FILES)
+ @echo $(MSG_LINKER_CMD) Linking object files into \"$@\"
+ avr-gcc $^ $(CC_FLAGS) $(LD_FLAGS) -o $@
+
+%.hex: %.elf
+ @echo $(MSG_OBJCPY_CMD) Extracting HEX file data from \"$@\"
+ avr-objcopy -O ihex -R .eeprom -R .fuse -R .lock -R .signature $< $@
+
+%.eep: %.elf
+ @echo $(MSG_OBJCPY_CMD) Extracting EEP file data from \"$@\"
+ avr-objcopy -j .eeprom --set-section-flags=.eeprom="alloc,load" --change-section-lma .eeprom=0 --no-change-warnings -O ihex $< $@ || exit 0
+
+%.lss: %.elf
+ @echo $(MSG_OBJDMP_CMD) Extracting LSS file data from \"$@\"
+ avr-objdump -h -S -z $< > $@
+
+clean:
+ @echo $(MSG_REMOVE_CMD) Removing object files \"$(OBJECT_FILES)\"
+ rm -f $(OBJECT_FILES)
+ @echo $(MSG_REMOVE_CMD) Removing output files \"$(TARGET).elf $(TARGET).hex $(TARGET).eep $(TARGET).map $(TARGET).lss\"
+ rm -f $(TARGET).elf $(TARGET).hex $(TARGET).eep $(TARGET).map $(TARGET).lss
diff --git a/LUFA/Build/lufa.core.in b/LUFA/Build/lufa.core.in
new file mode 100644
index 000000000..71c35e035
--- /dev/null
+++ b/LUFA/Build/lufa.core.in
@@ -0,0 +1,73 @@
+#
+# LUFA Library
+# Copyright (C) Dean Camera, 2012.
+#
+# dean [at] fourwalledcubicle [dot] com
+# www.lufa-lib.org
+#
+
+LUFA_BUILD_MODULES += CORE
+LUFA_BUILD_TARGETS += list_targets list_modules help
+
+# -----------------------------------------------------------------------------
+# LUFA Core Buildsystem Makefile Module.
+# -----------------------------------------------------------------------------
+# DESCRIPTION:
+# Provides a set of core build targets for the LUFA buildsystem
+# -----------------------------------------------------------------------------
+# TARGETS:
+#
+# info - Build system information
+# help - Build system help
+# list_targets - List all build targets
+# list_modules - List all build modules
+#
+# MANDATORY PARAMETERS:
+#
+# (None)
+#
+# OPTIONAL PARAMETERS:
+#
+# (None)
+#
+# -----------------------------------------------------------------------------
+
+info:
+ @echo "==================================================================="
+ @echo " LUFA Build System 2.0 "
+ @echo " (C) Dean Camera { dean @ fourwalledcubicle . com } "
+ @echo "==================================================================="
+
+.PHONY: info
+help: info
+ @echo "DESCRIPTION: "
+ @echo " This build system is a set of makefile modules for (GNU) Make, to "
+ @echo " provide a simple system for building LUFA powered applications. "
+ @echo " Each makefile module can be included from within a user makefile, "
+ @echo " to expose the build rules documented in the comments at the top of"
+ @echo " each build module. "
+ @echo " "
+ @echo "USAGE: "
+ @echo " To execute a rule, define all variables indicated in the desired "
+ @echo " module as a required parameter before including the build module "
+ @echo " in your project makefile. Parameters marked as optional will "
+ @echo " assume a default value in the module if not user-assigned. "
+ @echo "==================================================================="
+ @echo " Currently Used Modules in this application: "
+ @echo " "
+ @echo " [" $(sort $(LUFA_BUILD_MODULES)) "]"
+ @echo " "
+ @echo " "
+ @echo " Currently Available Build Targets in this application: "
+ @echo " "
+ @echo " [" $(sort $(LUFA_BUILD_TARGETS)) "]"
+ @echo "==================================================================="
+ @echo " The LUFA BuildSystem 2.0 - Powered By Unicorns (tm) "
+ @echo "==================================================================="
+
+list_targets:
+ @echo Currently Available Build Targets: $(sort $(LUFA_BUILD_TARGETS))
+
+list_modules:
+ @echo Currently Build Modules: $(sort $(LUFA_BUILD_MODULES))
+
diff --git a/LUFA/Build/lufa.dfu.in b/LUFA/Build/lufa.dfu.in
new file mode 100644
index 000000000..f04472e3b
--- /dev/null
+++ b/LUFA/Build/lufa.dfu.in
@@ -0,0 +1,71 @@
+#
+# LUFA Library
+# Copyright (C) Dean Camera, 2012.
+#
+# dean [at] fourwalledcubicle [dot] com
+# www.lufa-lib.org
+#
+
+LUFA_BUILD_MODULES += DFU
+LUFA_BUILD_TARGETS += flip flip-ee dfu dfu-ee
+
+# -----------------------------------------------------------------------------
+# LUFA DFU Bootloader Buildsystem Makefile Module.
+# -----------------------------------------------------------------------------
+# DESCRIPTION:
+# Provides a set of targets to re-program a device currently running a DFU
+# class bootloader with a project's FLASH and EEPROM files.
+# -----------------------------------------------------------------------------
+# TARGETS:
+#
+# flip - Program FLASH into target via Atmel FLIP
+# flip-ee - Program EEPROM into target via Atmel FLIP
+# dfu - Program FLASH into target via dfu-programmer
+# dfu-ee - Program EEPROM into target via dfu-programmer
+#
+# MANDATORY PARAMETERS:
+#
+# MCU - Microcontroller device model name
+# TARGET - Application name
+#
+# OPTIONAL PARAMETERS:
+#
+# (None)
+#
+# -----------------------------------------------------------------------------
+
+# Output Messages
+MSG_DFU_CMD = ' [DFU] :'
+
+# Sanity check the user MCU and TARGET makefile options
+ifeq ($(MCU),)
+ $(error Makefile MCU value not set.)
+endif
+ifeq ($(TARGET),)
+ $(error Makefile TARGET value not set.)
+endif
+
+flip: $(TARGET).hex
+ @echo $(MSG_DFU_CMD) Programming FLASH with batchisp using \"$(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
+
+flip-ee: $(TARGET).eep
+ cp $(TARGET).eep $(TARGET)eep.hex
+ @echo $(MSG_DFU_CMD) Programming EEPROM with batchisp using \"$(TARGET).eep\"
+ batchisp -hardware usb -device $(MCU) -operation memory EEPROM erase
+ batchisp -hardware usb -device $(MCU) -operation memory EEPROM loadbuffer $(TARGET)eep.hex program
+ batchisp -hardware usb -device $(MCU) -operation start reset 0
+ rm $(TARGET)eep.hex
+
+dfu: $(TARGET).hex
+ @echo $(MSG_DFU_CMD) Programming FLASH with dfu-programmer using \"$(TARGET).hex\"
+ dfu-programmer $(MCU) erase
+ dfu-programmer $(MCU) flash $(TARGET).hex
+ dfu-programmer $(MCU) reset
+
+dfu-ee: $(TARGET).hex $(TARGET).eep
+ @echo $(MSG_DFU_CMD) Programming EEPROM with dfu-programmer using \"$(TARGET).eep\"
+ dfu-programmer $(MCU) eeprom-flash $(TARGET).eep
+ dfu-programmer $(MCU) reset \ No newline at end of file
diff --git a/LUFA/Build/lufa.doxygen.in b/LUFA/Build/lufa.doxygen.in
new file mode 100644
index 000000000..9efbbcbcc
--- /dev/null
+++ b/LUFA/Build/lufa.doxygen.in
@@ -0,0 +1,52 @@
+#
+# LUFA Library
+# Copyright (C) Dean Camera, 2012.
+#
+# dean [at] fourwalledcubicle [dot] com
+# www.lufa-lib.org
+#
+
+LUFA_BUILD_MODULES += DOXYGEN
+LUFA_BUILD_TARGETS += doxygen
+
+# -----------------------------------------------------------------------------
+# LUFA Doxygen Buildsystem Makefile Module.
+# -----------------------------------------------------------------------------
+# DESCRIPTION:
+# Provides a set of targets to automatically build Doxygen documentation for
+# a project (see www.doxygen.org).
+# -----------------------------------------------------------------------------
+# TARGETS:
+#
+# doxygen - Build Doxygen Documentation
+#
+# MANDATORY PARAMETERS:
+#
+# (None)
+#
+# OPTIONAL PARAMETERS:
+#
+# DOXYGEN_CONF - Doxygen configuration filename
+# DOXYGEN_FAIL_ON_WARNING - Set to Y to fail the build on Doxygen warnings,
+# N to continue even if warnings occur
+# DOXYGEN_OVERRIDE_PARAMS - Parameters to override in the doxygen
+# configuration file
+# -----------------------------------------------------------------------------
+
+# Output Messages
+MSG_DOXYGEN_CMD = ' [DOXYGEN] :'
+
+# Default values of user-supplied variables
+DOXYGEN_CONF ?= Doxygen.conf
+DOXYGEN_FAIL_ON_WARNING ?= Y
+DOXYGEN_OVERRIDE_PARAMS ?= QUIET=YES
+
+# Determine Doxygen invocation command
+DOXYGEN_CMD = ( cat Doxygen.conf ; $(DOXYGEN_OVERRIDE_PARAMS:%=echo "%";)) | doxygen -
+ifeq ($(DOXYGEN_FAIL_ON_WARNING), Y)
+ DOXYGEN_CMD = if ( ( cat Doxygen.conf $(DOXYGEN_OVERRIDE_PARAMS:%=; echo "%") ) | doxygen - 2>&1 | grep -v "warning: ignoring unsupported tag" ;); then exit 1; fi;
+endif
+
+doxygen:
+ @echo $(MSG_DOXYGEN_CMD) Configuration file \"$(DOXYGEN_CONF)\" with parameters \"$(DOXYGEN_OVERRIDE_PARAMS)\"
+ $(DOXYGEN_CMD)
diff --git a/LUFA/Build/lufa.sources.in b/LUFA/Build/lufa.sources.in
new file mode 100644
index 000000000..9985933b6
--- /dev/null
+++ b/LUFA/Build/lufa.sources.in
@@ -0,0 +1,86 @@
+#
+# LUFA Library
+# Copyright (C) Dean Camera, 2012.
+#
+# dean [at] fourwalledcubicle [dot] com
+# www.lufa-lib.org
+#
+
+LUFA_BUILD_MODULES += SOURCES
+LUFA_BUILD_TARGETS +=
+
+# -----------------------------------------------------------------------------
+# LUFA Sources Buildsystem Makefile Module.
+# -----------------------------------------------------------------------------
+# DESCRIPTION:
+# Provides a set of makefile variables for the various LUFA module sources.
+# Once included, the sources required to use a given LUFA module will become
+# available using the makefile variable names listed in the LUFA project
+# documentation.
+# -----------------------------------------------------------------------------
+# TARGETS:
+#
+# (None)
+#
+# MANDATORY PARAMETERS:
+#
+# LUFA_PATH - Path to the LUFA library core
+# ARCH - Device architecture name
+#
+# OPTIONAL PARAMETERS:
+#
+# (None)
+#
+# -----------------------------------------------------------------------------
+
+# Sanity check the user LUFA_PATH and ARCH makefile options
+ifeq ($(LUFA_PATH),)
+ $(error Makefile LUFA_PATH value not set.)
+endif
+ifeq ($(ARCH),)
+ $(error Makefile ARCH value not set.)
+endif
+
+# Allow LUFA_ROOT_PATH to be overridden elsewhere to support legacy LUFA makefiles
+LUFA_ROOT_PATH ?= $(LUFA_PATH)
+
+# Construct LUFA module source variables
+LUFA_SRC_USB = $(LUFA_ROOT_PATH)/Drivers/USB/Core/$(ARCH)/Device_$(ARCH).c \
+ $(LUFA_ROOT_PATH)/Drivers/USB/Core/$(ARCH)/Endpoint_$(ARCH).c \
+ $(LUFA_ROOT_PATH)/Drivers/USB/Core/$(ARCH)/Host_$(ARCH).c \
+ $(LUFA_ROOT_PATH)/Drivers/USB/Core/$(ARCH)/Pipe_$(ARCH).c \
+ $(LUFA_ROOT_PATH)/Drivers/USB/Core/$(ARCH)/USBController_$(ARCH).c \
+ $(LUFA_ROOT_PATH)/Drivers/USB/Core/$(ARCH)/USBInterrupt_$(ARCH).c \
+ $(LUFA_ROOT_PATH)/Drivers/USB/Core/$(ARCH)/EndpointStream_$(ARCH).c \
+ $(LUFA_ROOT_PATH)/Drivers/USB/Core/$(ARCH)/PipeStream_$(ARCH).c \
+ $(LUFA_ROOT_PATH)/Drivers/USB/Core/ConfigDescriptor.c \
+ $(LUFA_ROOT_PATH)/Drivers/USB/Core/DeviceStandardReq.c \
+ $(LUFA_ROOT_PATH)/Drivers/USB/Core/Events.c \
+ $(LUFA_ROOT_PATH)/Drivers/USB/Core/HostStandardReq.c \
+ $(LUFA_ROOT_PATH)/Drivers/USB/Core/USBTask.c \
+ $(LUFA_ROOT_PATH)/Drivers/USB/Class/Common/HIDParser.c
+LUFA_SRC_USBCLASS = $(LUFA_ROOT_PATH)/Drivers/USB/Class/Device/AudioClassDevice.c \
+ $(LUFA_ROOT_PATH)/Drivers/USB/Class/Device/CDCClassDevice.c \
+ $(LUFA_ROOT_PATH)/Drivers/USB/Class/Device/HIDClassDevice.c \
+ $(LUFA_ROOT_PATH)/Drivers/USB/Class/Device/MassStorageClassDevice.c \
+ $(LUFA_ROOT_PATH)/Drivers/USB/Class/Device/MIDIClassDevice.c \
+ $(LUFA_ROOT_PATH)/Drivers/USB/Class/Device/RNDISClassDevice.c \
+ $(LUFA_ROOT_PATH)/Drivers/USB/Class/Host/AndroidAccessoryClassHost.c \
+ $(LUFA_ROOT_PATH)/Drivers/USB/Class/Host/AudioClassHost.c \
+ $(LUFA_ROOT_PATH)/Drivers/USB/Class/Host/CDCClassHost.c \
+ $(LUFA_ROOT_PATH)/Drivers/USB/Class/Host/HIDClassHost.c \
+ $(LUFA_ROOT_PATH)/Drivers/USB/Class/Host/MassStorageClassHost.c \
+ $(LUFA_ROOT_PATH)/Drivers/USB/Class/Host/MIDIClassHost.c \
+ $(LUFA_ROOT_PATH)/Drivers/USB/Class/Host/PrinterClassHost.c \
+ $(LUFA_ROOT_PATH)/Drivers/USB/Class/Host/RNDISClassHost.c \
+ $(LUFA_ROOT_PATH)/Drivers/USB/Class/Host/StillImageClassHost.c
+LUFA_SRC_TEMPERATURE = $(LUFA_ROOT_PATH)/Drivers/Board/Temperature.c
+LUFA_SRC_SERIAL = $(LUFA_ROOT_PATH)/Drivers/Peripheral/$(ARCH)/Serial_$(ARCH).c
+LUFA_SRC_TWI = $(LUFA_ROOT_PATH)/Drivers/Peripheral/$(ARCH)/TWI_$(ARCH).c
+
+# Build a list of all available module sources
+LUFA_SRC_ALL_FILES = $(LUFA_SRC_USB) \
+ $(LUFA_SRC_USBCLASS) \
+ $(LUFA_SRC_TEMPERATURE) \
+ $(LUFA_SRC_SERIAL) \
+ $(LUFA_SRC_TWI) \ No newline at end of file
diff --git a/LUFA/CodeTemplates/makefile_template b/LUFA/CodeTemplates/makefile_template
new file mode 100644
index 000000000..6f3c1c706
--- /dev/null
+++ b/LUFA/CodeTemplates/makefile_template
@@ -0,0 +1,33 @@
+#
+# LUFA Library
+# Copyright (C) Dean Camera, 2012.
+#
+# dean [at] fourwalledcubicle [dot] com
+# www.lufa-lib.org
+#
+# --------------------------------------
+# LUFA Project Makefile.
+# --------------------------------------
+
+MCU = at90usb1287
+ARCH = AVR8
+BOARD = USBKEY
+F_CPU = 8000000
+F_USB = $(F_CPU)
+OPTIMIZATION = s
+TARGET = Target
+SRC = $(TARGET).c $(LUFA_SRC_USB) $(LUFA_SRC_USBCLASS)
+LUFA_PATH = ../../LUFA/
+CC_FLAGS = -DUSE_LUFA_CONFIG_HEADER -IConfig/
+LD_FLAGS =
+
+# Default target
+all:
+
+# Include LUFA build script makefiles
+include $(LUFA_PATH)/Build/lufa.core.in
+include $(LUFA_PATH)/Build/lufa.sources.in
+include $(LUFA_PATH)/Build/lufa.build.in
+include $(LUFA_PATH)/Build/lufa.doxygen.in
+include $(LUFA_PATH)/Build/lufa.dfu.in
+include $(LUFA_PATH)/Build/lufa.avrdude.in
diff --git a/LUFA/DoxygenPages/ChangeLog.txt b/LUFA/DoxygenPages/ChangeLog.txt
index 43a1b6f6e..14c9ef0b3 100644
--- a/LUFA/DoxygenPages/ChangeLog.txt
+++ b/LUFA/DoxygenPages/ChangeLog.txt
@@ -9,6 +9,7 @@
* \section Sec_ChangeLogXXXXXX Version XXXXXX
* <b>New:</b>
* - Core:
+ * - Added new, revamped modular build system with new makefile templates
* - Added support for the BitWizard Multio and Big-Multio boards
* - Added support for the DorkbotPDX Duce board
* - Added support for the Olimex AVR-USB-32U4 board
diff --git a/LUFA/makefile b/LUFA/makefile
index eac5cb335..3fbf7ac36 100644
--- a/LUFA/makefile
+++ b/LUFA/makefile
@@ -5,100 +5,38 @@
# dean [at] fourwalledcubicle [dot] com
# www.lufa-lib.org
#
+# ---------------------------------------
+# Makefile for the LUFA library itself.
+# ---------------------------------------
-# Makefile for the LUFA library itself. This can be used to generate the library documentation.
+LUFA_VERSION_NUM = $(shell grep LUFA_VERSION_STRING Version.h | cut -d'"' -f2)
+EXCLUDE_FROM_EXPORT = Documentation DoxygenPages CodeTemplates Build *.conf *.tar *.o *.lss *.lst *.hex *.elf *.bin
+DOXYGEN_OVERRIDE_PARAMS = PROJECT_NUMBER=$(LUFA_VERSION_NUM)
-
-# Check to see if the LUFA_PATH variable has not been set (the makefile is not being included from a project makefile)
-ifeq ($(origin LUFA_PATH), undefined)
- LUFA_ROOT_PATH = .
- ARCH = {AVR8,UC3,XMEGA}
-else
- LUFA_ROOT_PATH = $(LUFA_PATH)/LUFA
-endif
-
-# Check to see if the chip architecture has not been defined in the user makefile, set a default architecture if not
-ifeq ($(origin ARCH), undefined)
- ARCH = AVR8
-endif
-
-# Define module source file lists
-LUFA_SRC_USB = $(LUFA_ROOT_PATH)/Drivers/USB/Core/$(ARCH)/Device_$(ARCH).c \
- $(LUFA_ROOT_PATH)/Drivers/USB/Core/$(ARCH)/Endpoint_$(ARCH).c \
- $(LUFA_ROOT_PATH)/Drivers/USB/Core/$(ARCH)/Host_$(ARCH).c \
- $(LUFA_ROOT_PATH)/Drivers/USB/Core/$(ARCH)/Pipe_$(ARCH).c \
- $(LUFA_ROOT_PATH)/Drivers/USB/Core/$(ARCH)/USBController_$(ARCH).c \
- $(LUFA_ROOT_PATH)/Drivers/USB/Core/$(ARCH)/USBInterrupt_$(ARCH).c \
- $(LUFA_ROOT_PATH)/Drivers/USB/Core/$(ARCH)/EndpointStream_$(ARCH).c \
- $(LUFA_ROOT_PATH)/Drivers/USB/Core/$(ARCH)/PipeStream_$(ARCH).c \
- $(LUFA_ROOT_PATH)/Drivers/USB/Core/ConfigDescriptor.c \
- $(LUFA_ROOT_PATH)/Drivers/USB/Core/DeviceStandardReq.c \
- $(LUFA_ROOT_PATH)/Drivers/USB/Core/Events.c \
- $(LUFA_ROOT_PATH)/Drivers/USB/Core/HostStandardReq.c \
- $(LUFA_ROOT_PATH)/Drivers/USB/Core/USBTask.c \
- $(LUFA_ROOT_PATH)/Drivers/USB/Class/Common/HIDParser.c
-LUFA_SRC_USBCLASS = $(LUFA_ROOT_PATH)/Drivers/USB/Class/Device/AudioClassDevice.c \
- $(LUFA_ROOT_PATH)/Drivers/USB/Class/Device/CDCClassDevice.c \
- $(LUFA_ROOT_PATH)/Drivers/USB/Class/Device/HIDClassDevice.c \
- $(LUFA_ROOT_PATH)/Drivers/USB/Class/Device/MassStorageClassDevice.c \
- $(LUFA_ROOT_PATH)/Drivers/USB/Class/Device/MIDIClassDevice.c \
- $(LUFA_ROOT_PATH)/Drivers/USB/Class/Device/RNDISClassDevice.c \
- $(LUFA_ROOT_PATH)/Drivers/USB/Class/Host/AndroidAccessoryClassHost.c \
- $(LUFA_ROOT_PATH)/Drivers/USB/Class/Host/AudioClassHost.c \
- $(LUFA_ROOT_PATH)/Drivers/USB/Class/Host/CDCClassHost.c \
- $(LUFA_ROOT_PATH)/Drivers/USB/Class/Host/HIDClassHost.c \
- $(LUFA_ROOT_PATH)/Drivers/USB/Class/Host/MassStorageClassHost.c \
- $(LUFA_ROOT_PATH)/Drivers/USB/Class/Host/MIDIClassHost.c \
- $(LUFA_ROOT_PATH)/Drivers/USB/Class/Host/PrinterClassHost.c \
- $(LUFA_ROOT_PATH)/Drivers/USB/Class/Host/RNDISClassHost.c \
- $(LUFA_ROOT_PATH)/Drivers/USB/Class/Host/StillImageClassHost.c
-LUFA_SRC_TEMPERATURE = $(LUFA_ROOT_PATH)/Drivers/Board/Temperature.c
-LUFA_SRC_SERIAL = $(LUFA_ROOT_PATH)/Drivers/Peripheral/$(ARCH)/Serial_$(ARCH).c
-LUFA_SRC_TWI = $(LUFA_ROOT_PATH)/Drivers/Peripheral/$(ARCH)/TWI_$(ARCH).c
-
-
-# Check to see if the LUFA_PATH variable has not been set (the makefile is not being included from a project makefile)
-ifeq ($(origin LUFA_PATH), undefined)
- LUFA_VERSION_NUM = $(shell grep LUFA_VERSION_STRING Version.h | cut -d'"' -f2)
-
- LUFA_SRC_ALL_FILES = $(LUFA_SRC_USB) \
- $(LUFA_SRC_USBCLASS) \
- $(LUFA_SRC_TEMPERATURE) \
- $(LUFA_SRC_SERIAL) \
- $(LUFA_SRC_TWI)
-
- EXCLUDE_FROM_EXPORT = Documentation DoxygenPages CodeTemplates *.conf *.tar *.o *.lss *.lst *.hex *.elf *.bin
-
- all:
-
- clean:
- rm -f $(LUFA_SRC_ALL_FILES:%.c=%.o)
- rm -f $(LUFA_SRC_ALL_FILES:%.c=%.lst)
-
- clean_list:
-
- doxygen:
- @echo Generating LUFA Library Documentation...
-
- @if ( ( cat Doxygen.conf ; echo "PROJECT_NUMBER=$(LUFA_VERSION_NUM)" ) | doxygen - 2>&1 | grep -v "warning: ignoring unsupported tag" ;); then \
- exit 1; \
- fi;
-
- @echo Documentation Generation Complete.
-
- clean_doxygen:
- rm -rf Documentation
-
- checksource:
-
- export_tar:
+export_tar:
@echo Exporting LUFA library to a TAR archive...
@tar -cf LUFA_$(LUFA_VERSION_NUM).tar --directory=. $(EXCLUDE_FROM_EXPORT:%=--exclude=%) *
@tar -cf LUFA_$(LUFA_VERSION_NUM)_Code_Templates.tar CodeTemplates
@echo Export LUFA_$(LUFA_VERSION_NUM).tar complete.
- version:
+version:
@echo "LUFA $(LUFA_VERSION_NUM)"
- .PHONY: all clean clean_list doxygen clean_doxygen checksource export_tar version
+# Check if this is being included from a legacy or non LUFA build system makefile
+ifneq ($(LUFA_PATH),)
+ LUFA_ROOT_PATH = $(LUFA_PATH)/LUFA/
+ include $(LUFA_PATH)/LUFA/Build/lufa.sources.in
+else
+ LUFA_PATH = .
+ ARCH = {AVR8,UC3,XMEGA}
+
+ all:
+
+ clean:
+ rm -f $(LUFA_SRC_ALL_FILES:%.c=%.o)
+ rm -f $(LUFA_SRC_ALL_FILES:%.c=%.lst)
+
+ # Include LUFA build script makefiles
+ include Build/lufa.sources.in
+ include Build/lufa.doxygen.in
endif