From 231658362eca0f882f1fc28642ffe160926461f1 Mon Sep 17 00:00:00 2001 From: Dean Camera Date: Tue, 15 Dec 2015 22:23:08 +1100 Subject: Replace LUFA build system with DMBS. --- LUFA/Build/DMBS | 1 + LUFA/Build/HID_EEPROM_Loader/HID_EEPROM_Loader.c | 61 ---- LUFA/Build/HID_EEPROM_Loader/makefile | 42 --- LUFA/Build/lufa_atprogram.mk | 97 +------ LUFA/Build/lufa_avrdude.mk | 80 +----- LUFA/Build/lufa_build.mk | 338 ++--------------------- LUFA/Build/lufa_core.mk | 169 +----------- LUFA/Build/lufa_cppcheck.mk | 101 +------ LUFA/Build/lufa_dfu.mk | 89 +----- LUFA/Build/lufa_doxygen.mk | 94 +------ LUFA/Build/lufa_hid.mk | 90 +----- LUFA/Build/lufa_sources.mk | 10 +- 12 files changed, 36 insertions(+), 1136 deletions(-) create mode 160000 LUFA/Build/DMBS delete mode 100644 LUFA/Build/HID_EEPROM_Loader/HID_EEPROM_Loader.c delete mode 100644 LUFA/Build/HID_EEPROM_Loader/makefile diff --git a/LUFA/Build/DMBS b/LUFA/Build/DMBS new file mode 160000 index 000000000..7dfe3cf63 --- /dev/null +++ b/LUFA/Build/DMBS @@ -0,0 +1 @@ +Subproject commit 7dfe3cf63ab428690112b79ce5d5261945a9118c diff --git a/LUFA/Build/HID_EEPROM_Loader/HID_EEPROM_Loader.c b/LUFA/Build/HID_EEPROM_Loader/HID_EEPROM_Loader.c deleted file mode 100644 index 2ec44093c..000000000 --- a/LUFA/Build/HID_EEPROM_Loader/HID_EEPROM_Loader.c +++ /dev/null @@ -1,61 +0,0 @@ -/* - LUFA Library - Copyright (C) Dean Camera, 2015. - - dean [at] fourwalledcubicle [dot] com - www.lufa-lib.org -*/ - -/* - Copyright 2015 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 - * - * Special application to extract an EEPROM image stored in FLASH memory, and - * copy it to the device EEPROM. This application is designed to be used with - * the HID build system module of LUFA to program the EEPROM of a target device - * that uses the HID bootloader protocol, which does not have native EEPROM - * programming support. - */ - -#include -#include -#include - -/* References to the binary EEPROM data linked in the AVR's FLASH memory space */ -extern const char _binary_InputEEData_bin_start[]; -extern const char _binary_InputEEData_bin_end[]; -extern const char _binary_InputEEData_bin_size[]; - -/* Friendly names for the embedded binary data stored in FLASH memory space */ -#define InputEEData _binary_InputEEData_bin_start -#define InputEEData_size ((int)_binary_InputEEData_bin_size) - -int main(void) -{ - /* Copy out the embedded EEPROM data from FLASH to EEPROM memory space */ - for (uint16_t i = 0; i < InputEEData_size; i++) - eeprom_update_byte((uint8_t*)i, pgm_read_byte(&InputEEData[i])); - - /* Infinite loop once complete */ - for (;;); -} diff --git a/LUFA/Build/HID_EEPROM_Loader/makefile b/LUFA/Build/HID_EEPROM_Loader/makefile deleted file mode 100644 index 763574898..000000000 --- a/LUFA/Build/HID_EEPROM_Loader/makefile +++ /dev/null @@ -1,42 +0,0 @@ -# -# LUFA Library -# Copyright (C) Dean Camera, 2015. -# -# dean [at] fourwalledcubicle [dot] com -# www.lufa-lib.org -# -# -------------------------------------- -# LUFA Project Makefile. -# -------------------------------------- - -# Run "make help" for target help. - -MCU = at90usb1287 -ARCH = AVR8 -F_CPU = 1000000 -F_USB = $(F_CPU) -OPTIMIZATION = s -TARGET = HID_EEPROM_Loader -SRC = $(TARGET).c -LUFA_PATH = ../../../LUFA -CC_FLAGS = -LD_FLAGS = -OBJECT_FILES = InputEEData.o - -# Default target -all: - -# Determine the AVR sub-architecture of the build main application object file -FIND_AVR_SUBARCH = avr$(shell avr-objdump -f $(TARGET).o | grep architecture | cut -d':' -f3 | cut -d',' -f1) - -# Create a linkable object file with the input binary EEPROM data stored in the FLASH section -InputEEData.o: InputEEData.bin $(TARGET).o $(MAKEFILE_LIST) - @echo $(MSG_OBJCPY_CMD) Converting \"$<\" to a object file \"$@\" - avr-objcopy -I binary -O elf32-avr -B $(call FIND_AVR_SUBARCH) --rename-section .data=.progmem.data,contents,alloc,readonly,data $< $@ - -# Include LUFA build script makefiles -include $(LUFA_PATH)/Build/lufa_core.mk -include $(LUFA_PATH)/Build/lufa_build.mk -include $(LUFA_PATH)/Build/lufa_cppcheck.mk -include $(LUFA_PATH)/Build/lufa_doxygen.mk -include $(LUFA_PATH)/Build/lufa_hid.mk diff --git a/LUFA/Build/lufa_atprogram.mk b/LUFA/Build/lufa_atprogram.mk index d55b02b76..86988d1ca 100644 --- a/LUFA/Build/lufa_atprogram.mk +++ b/LUFA/Build/lufa_atprogram.mk @@ -6,98 +6,5 @@ # www.lufa-lib.org # -LUFA_BUILD_MODULES += ATPROGRAM -LUFA_BUILD_TARGETS += atprogram atprogram-ee -LUFA_BUILD_MANDATORY_VARS += MCU TARGET -LUFA_BUILD_OPTIONAL_VARS += ATPROGRAM_PROGRAMMER ATPROGRAM_INTERFACE ATPROGRAM_PORT -LUFA_BUILD_PROVIDED_VARS += -LUFA_BUILD_PROVIDED_MACROS += - -# ----------------------------------------------------------------------------- -# LUFA ATPROGRAM Programmer Buildsystem Makefile Module. -# ----------------------------------------------------------------------------- -# DESCRIPTION: -# Provides a set of targets to re-program a device using the Atmel atprogram -# utility in AVR Studio 5.x and Atmel Studio 6.0 onwards. -# ----------------------------------------------------------------------------- -# TARGETS: -# -# atprogram - Program target FLASH with application using -# atprogram -# atprogram-ee - Program target EEPROM with application data -# using atprogram -# -# MANDATORY PARAMETERS: -# -# MCU - Microcontroller device model name -# TARGET - Application name -# -# OPTIONAL PARAMETERS: -# -# ATPROGRAM_PROGRAMMER - Name of programming hardware to use -# ATPROGRAM_INTERFACE - Name of programming interface to use -# ATPROGRAM_PORT - Name of communication port to use -# -# PROVIDED VARIABLES: -# -# (None) -# -# PROVIDED MACROS: -# -# (None) -# -# ----------------------------------------------------------------------------- - -SHELL = /bin/sh - -ERROR_IF_UNSET ?= $(if $(filter undefined, $(origin $(strip $(1)))), $(error Makefile $(strip $(1)) value not set)) -ERROR_IF_EMPTY ?= $(if $(strip $($(strip $(1)))), , $(error Makefile $(strip $(1)) option cannot be blank)) -ERROR_IF_NONBOOL ?= $(if $(filter Y N, $($(strip $(1)))), , $(error Makefile $(strip $(1)) option must be Y or N)) - -# Default values of optionally user-supplied variables -ATPROGRAM_PROGRAMMER ?= atmelice -ATPROGRAM_INTERFACE ?= jtag -ATPROGRAM_PORT ?= - -# Sanity check user supplied values -$(foreach MANDATORY_VAR, $(LUFA_BUILD_MANDATORY_VARS), $(call ERROR_IF_UNSET, $(MANDATORY_VAR))) -$(call ERROR_IF_EMPTY, MCU) -$(call ERROR_IF_EMPTY, TARGET) -$(call ERROR_IF_EMPTY, ATPROGRAM_PROGRAMMER) -$(call ERROR_IF_EMPTY, ATPROGRAM_INTERFACE) - -# Output Messages -MSG_ATPROGRAM_CMD := ' [ATPRGRM] :' - -# Construct base atprogram command flags -BASE_ATPROGRAM_FLAGS := --tool $(ATPROGRAM_PROGRAMMER) --interface $(ATPROGRAM_INTERFACE) --device $(MCU) -ifneq ($(ATPROGRAM_PORT),) - BASE_ATPROGRAM_FLAGS += --port $(ATPROGRAM_PORT) -endif - -# Construct the flags to use for the various memory spaces -ifeq ($(ARCH), AVR8) - ATPROGRAM_FLASH_FLAGS := --chiperase --flash - ATPROGRAM_EEPROM_FLAGS := --eeprom -else ifeq ($(ARCH), XMEGA) - ATPROGRAM_FLASH_FLAGS := --erase --flash - ATPROGRAM_EEPROM_FLAGS := --eeprom -else ifeq ($(ARCH), UC3) - ATPROGRAM_FLASH_FLAGS := --erase - ATPROGRAM_EEPROM_FLAGS := --eeprom -else - $(error Unsupported architecture "$(ARCH)") -endif - -# Programs in the target FLASH memory using ATPROGRAM -atprogram: $(TARGET).elf $(MAKEFILE_LIST) - @echo $(MSG_ATPROGRAM_CMD) Programming device \"$(MCU)\" FLASH using \"$(ATPROGRAM_PROGRAMMER)\" - atprogram $(BASE_ATPROGRAM_FLAGS) program $(ATPROGRAM_FLASH_FLAGS) --file $< - -# Programs in the target EEPROM memory using ATPROGRAM -atprogram-ee: $(TARGET).elf $(MAKEFILE_LIST) - @echo $(MSG_ATPROGRAM_CMD) Programming device \"$(MCU)\" EEPROM using \"$(ATPROGRAM_PROGRAMMER)\" - atprogram $(BASE_ATPROGRAM_FLAGS) program $(ATPROGRAM_EEPROM_FLAGS) --file $< - -# Phony build targets for this module -.PHONY: atprogram atprogram-ee +DMBS_PATH := $(LUFA_PATH)/Build/DMBS/DMBS +include $(DMBS_PATH)/atprogram.mk diff --git a/LUFA/Build/lufa_avrdude.mk b/LUFA/Build/lufa_avrdude.mk index 06c87e3d3..649215f5a 100644 --- a/LUFA/Build/lufa_avrdude.mk +++ b/LUFA/Build/lufa_avrdude.mk @@ -6,81 +6,5 @@ # www.lufa-lib.org # -LUFA_BUILD_MODULES += AVRDUDE -LUFA_BUILD_TARGETS += avrdude avrdude-ee -LUFA_BUILD_MANDATORY_VARS += MCU TARGET -LUFA_BUILD_OPTIONAL_VARS += AVRDUDE_PROGRAMMER AVRDUDE_PORT AVRDUDE_FLAGS -LUFA_BUILD_PROVIDED_VARS += -LUFA_BUILD_PROVIDED_MACROS += - -# ----------------------------------------------------------------------------- -# LUFA AVRDUDE Programmer Buildsystem Makefile Module. -# ----------------------------------------------------------------------------- -# DESCRIPTION: -# Provides a set of targets to re-program a device using the open source -# avr-dude utility. -# ----------------------------------------------------------------------------- -# TARGETS: -# -# avrdude - Program target FLASH with application using -# avrdude -# avrdude-ee - Program target EEPROM with application data -# using avrdude -# -# 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 -# -# PROVIDED VARIABLES: -# -# (None) -# -# PROVIDED MACROS: -# -# (None) -# -# ----------------------------------------------------------------------------- - -SHELL = /bin/sh - -ERROR_IF_UNSET ?= $(if $(filter undefined, $(origin $(strip $(1)))), $(error Makefile $(strip $(1)) value not set)) -ERROR_IF_EMPTY ?= $(if $(strip $($(strip $(1)))), , $(error Makefile $(strip $(1)) option cannot be blank)) -ERROR_IF_NONBOOL ?= $(if $(filter Y N, $($(strip $(1)))), , $(error Makefile $(strip $(1)) option must be Y or N)) - -# Default values of optionally user-supplied variables -AVRDUDE_PROGRAMMER ?= jtagicemkii -AVRDUDE_PORT ?= usb -AVRDUDE_FLAGS ?= - -# Sanity check user supplied values -$(foreach MANDATORY_VAR, $(LUFA_BUILD_MANDATORY_VARS), $(call ERROR_IF_UNSET, $(MANDATORY_VAR))) -$(call ERROR_IF_EMPTY, MCU) -$(call ERROR_IF_EMPTY, TARGET) -$(call ERROR_IF_EMPTY, AVRDUDE_PROGRAMMER) -$(call ERROR_IF_EMPTY, AVRDUDE_PORT) - -# Output Messages -MSG_AVRDUDE_CMD := ' [AVRDUDE] :' - -# Construct base avrdude command flags -BASE_AVRDUDE_FLAGS := -p $(MCU) -P $(AVRDUDE_PORT) -c $(AVRDUDE_PROGRAMMER) - -# Programs in the target FLASH memory using AVRDUDE -avrdude: $(TARGET).hex $(MAKEFILE_LIST) - @echo $(MSG_AVRDUDE_CMD) Programming device \"$(MCU)\" FLASH using \"$(AVRDUDE_PROGRAMMER)\" on port \"$(AVRDUDE_PORT)\" - avrdude $(BASE_AVRDUDE_FLAGS) -U flash:w:$< $(AVRDUDE_FLAGS) - -# Programs in the target EEPROM memory using AVRDUDE -avrdude-ee: $(TARGET).eep $(MAKEFILE_LIST) - @echo $(MSG_AVRDUDE_CMD) Programming device \"$(MCU)\" EEPROM using \"$(AVRDUDE_PROGRAMMER)\" on port \"$(AVRDUDE_PORT)\" - avrdude $(BASE_AVRDUDE_FLAGS) -U eeprom:w:$< $(AVRDUDE_FLAGS) - -# Phony build targets for this module -.PHONY: avrdude avrdude-ee +DMBS_PATH := $(LUFA_PATH)/Build/DMBS/DMBS +include $(DMBS_PATH)/avrdude.mk diff --git a/LUFA/Build/lufa_build.mk b/LUFA/Build/lufa_build.mk index 9f1125d99..3c41da000 100644 --- a/LUFA/Build/lufa_build.mk +++ b/LUFA/Build/lufa_build.mk @@ -6,346 +6,40 @@ # www.lufa-lib.org # -LUFA_BUILD_MODULES += BUILD -LUFA_BUILD_TARGETS += size symbol-sizes all lib elf bin hex lss clean mostlyclean -LUFA_BUILD_MANDATORY_VARS += TARGET ARCH MCU SRC F_USB LUFA_PATH -LUFA_BUILD_OPTIONAL_VARS += BOARD OPTIMIZATION C_STANDARD CPP_STANDARD F_CPU C_FLAGS CPP_FLAGS ASM_FLAGS CC_FLAGS LD_FLAGS OBJDIR OBJECT_FILES DEBUG_TYPE DEBUG_LEVEL LINKER_RELAXATIONS COMPILER_PATH -LUFA_BUILD_PROVIDED_VARS += -LUFA_BUILD_PROVIDED_MACROS += - -# ----------------------------------------------------------------------------- -# LUFA GCC 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 built application size -# symbol-sizes - Print application symbols from the binary ELF -# file as a list sorted by size in bytes -# all - Build application and list size -# lib - Build and archive source files into a library -# elf - Build application ELF debug object file -# bin - Build application BIN binary object file -# hex - Build application HEX object file -# lss - Build application LSS assembly listing file -# clean - Remove all project intermediary and binary -# output files -# mostlyclean - Remove intermediary output files, but -# preserve binaries -# .s - Compile C/C++ source file into an assembly file -# for manual code inspection -# -# MANDATORY PARAMETERS: -# -# TARGET - Application name -# ARCH - Device architecture name -# MCU - Microcontroller device model name -# SRC - List of input source files (*.c, *.cpp, *.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 -# C_FLAGS - Flags to pass to the C compiler only -# CPP_FLAGS - Flags to pass to the C++ compiler only -# ASM_FLAGS - Flags to pass to the assembler only -# CC_FLAGS - Common flags to pass to the C/C++ compiler and -# assembler -# LD_FLAGS - Flags to pass to the linker -# LINKER_RELAXATIONS - Enable or disable linker relaxations to -# decrease binary size (note: can cause link -# failures on systems with an unpatched binutils) -# OBJDIR - Directory for the output object and dependency -# files; if equal to ".", the output files will -# be generated in the same folder as the sources -# OBJECT_FILES - Extra object files to link in to the binaries -# DEBUG_FORMAT - Format of the debugging information to -# generate in the compiled object files -# DEBUG_LEVEL - Level the debugging information to generate in -# the compiled object files -# COMPILER_PATH - Location of the GCC toolchain to use -# -# PROVIDED VARIABLES: -# -# (None) -# -# PROVIDED MACROS: -# -# (None) -# -# ----------------------------------------------------------------------------- - -SHELL = /bin/sh +DMBS_BUILD_MODULES += +DMBS_BUILD_TARGETS += +DMBS_BUILD_MANDATORY_VARS += F_USB +DMBS_BUILD_OPTIONAL_VARS += BOARD +DMBS_BUILD_PROVIDED_VARS += +DMBS_BUILD_PROVIDED_MACROS += ERROR_IF_UNSET ?= $(if $(filter undefined, $(origin $(strip $(1)))), $(error Makefile $(strip $(1)) value not set)) ERROR_IF_EMPTY ?= $(if $(strip $($(strip $(1)))), , $(error Makefile $(strip $(1)) option cannot be blank)) ERROR_IF_NONBOOL ?= $(if $(filter Y N, $($(strip $(1)))), , $(error Makefile $(strip $(1)) option must be Y or N)) -# Default values of optionally user-supplied variables -COMPILER_PATH ?= -BOARD ?= NONE -OPTIMIZATION ?= s -F_CPU ?= -C_STANDARD ?= gnu99 -CPP_STANDARD ?= gnu++98 -C_FLAGS ?= -CPP_FLAGS ?= -ASM_FLAGS ?= -CC_FLAGS ?= -OBJDIR ?= . -OBJECT_FILES ?= -DEBUG_FORMAT ?= dwarf-2 -DEBUG_LEVEL ?= 2 -LINKER_RELAXATIONS ?= Y - # Sanity check user supplied values -$(foreach MANDATORY_VAR, $(LUFA_BUILD_MANDATORY_VARS), $(call ERROR_IF_UNSET, $(MANDATORY_VAR))) -$(call ERROR_IF_EMPTY, MCU) -$(call ERROR_IF_EMPTY, TARGET) $(call ERROR_IF_EMPTY, ARCH) $(call ERROR_IF_EMPTY, F_USB) -$(call ERROR_IF_EMPTY, LUFA_PATH) -$(call ERROR_IF_EMPTY, BOARD) -$(call ERROR_IF_EMPTY, OPTIMIZATION) -$(call ERROR_IF_EMPTY, C_STANDARD) -$(call ERROR_IF_EMPTY, CPP_STANDARD) -$(call ERROR_IF_EMPTY, OBJDIR) -$(call ERROR_IF_EMPTY, DEBUG_FORMAT) -$(call ERROR_IF_EMPTY, DEBUG_LEVEL) -$(call ERROR_IF_NONBOOL, LINKER_RELAXATIONS) + +# Default values of optionally user-supplied variables +BOARD ?= NONE # Determine the utility prefix to use for the selected architecture -ifeq ($(ARCH), AVR8) - CROSS := $(COMPILER_PATH)avr -else ifeq ($(ARCH), XMEGA) - CROSS := $(COMPILER_PATH)avr +ifeq ($(ARCH), XMEGA) $(warning The XMEGA device support is currently EXPERIMENTAL (incomplete and/or non-functional), and is included for preview purposes only.) else ifeq ($(ARCH), UC3) - CROSS := $(COMPILER_PATH)avr32 $(warning The UC3 device support is currently EXPERIMENTAL (incomplete and/or non-functional), and is included for preview purposes only.) -else - $(error Unsupported architecture "$(ARCH)") -endif - -# Output Messages -MSG_INFO_MESSAGE := ' [INFO] :' -MSG_COMPILE_CMD := ' [GCC] :' -MSG_ASSEMBLE_CMD := ' [GAS] :' -MSG_NM_CMD := ' [NM] :' -MSG_REMOVE_CMD := ' [RM] :' -MSG_LINK_CMD := ' [LNK] :' -MSG_ARCHIVE_CMD := ' [AR] :' -MSG_SIZE_CMD := ' [SIZE] :' -MSG_OBJCPY_CMD := ' [OBJCPY] :' -MSG_OBJDMP_CMD := ' [OBJDMP] :' - -# Convert input source file list to differentiate them by type -C_SOURCE := $(filter %.c, $(SRC)) -CPP_SOURCE := $(filter %.cpp, $(SRC)) -ASM_SOURCE := $(filter %.S, $(SRC)) - -# 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 file formats: $(UNKNOWN_SOURCE)) endif -# Convert input source filenames into a list of required output object files -OBJECT_FILES += $(addsuffix .o, $(basename $(SRC))) - -# Check if an output object file directory was specified instead of the input file location -ifneq ($(OBJDIR),.) - # Prefix all the object filenames with the output object file directory path - OBJECT_FILES := $(addprefix $(patsubst %/,%,$(OBJDIR))/, $(notdir $(OBJECT_FILES))) - - # Check if any object file (without path) appears more than once in the object file list - ifneq ($(words $(sort $(OBJECT_FILES))), $(words $(OBJECT_FILES))) - $(error Cannot build with OBJDIR parameter set - one or more object file name is not unique) - endif - - # Create the output object file directory if it does not exist and add it to the virtual path list - $(shell mkdir $(OBJDIR) 2> /dev/null) - VPATH += $(dir $(SRC)) -endif - -# Create a list of dependency files from the list of object files -DEPENDENCY_FILES := $(OBJECT_FILES:%.o=%.d) - -# Create a list of common flags to pass to the compiler/linker/assembler -BASE_CC_FLAGS := -pipe -g$(DEBUG_FORMAT) -g$(DEBUG_LEVEL) -ifeq ($(ARCH), AVR8) - BASE_CC_FLAGS += -mmcu=$(MCU) -fshort-enums -fno-inline-small-functions -fpack-struct -else ifeq ($(ARCH), XMEGA) - BASE_CC_FLAGS += -mmcu=$(MCU) -fshort-enums -fno-inline-small-functions -fpack-struct -else ifeq ($(ARCH), UC3) - BASE_CC_FLAGS += -mpart=$(MCU:at32%=%) -masm-addr-pseudos -endif -BASE_CC_FLAGS += -Wall -fno-strict-aliasing -funsigned-char -funsigned-bitfields -ffunction-sections -BASE_CC_FLAGS += -I. -I$(patsubst %/,%,$(LUFA_PATH))/.. -BASE_CC_FLAGS += -DARCH=ARCH_$(ARCH) -DBOARD=BOARD_$(BOARD) -DF_USB=$(F_USB)UL -ifneq ($(F_CPU),) - BASE_CC_FLAGS += -DF_CPU=$(F_CPU)UL -endif -ifeq ($(LINKER_RELAXATIONS), Y) -BASE_CC_FLAGS += -mrelax -endif +# LUFA specific standard build options +C_FLAGS += -I. -I$(patsubst %/,%,$(LUFA_PATH))/.. +C_FLAGS += -DARCH=ARCH_$(ARCH) -DBOARD=BOARD_$(BOARD) -DF_USB=$(F_USB)UL # This flag is required for bootloaders as GCC will emit invalid jump table # assembly code for devices with large amounts of flash; the jump table target # is extracted from FLASH without using the correct ELPM instruction, resulting # in a pseudo-random jump target. -BASE_CC_FLAGS += -fno-jump-tables - -# Additional language specific compiler flags -BASE_C_FLAGS := -x c -O$(OPTIMIZATION) -std=$(C_STANDARD) -Wstrict-prototypes -BASE_CPP_FLAGS := -x c++ -O$(OPTIMIZATION) -std=$(CPP_STANDARD) -BASE_ASM_FLAGS := -x assembler-with-cpp - -# Create a list of flags to pass to the linker -BASE_LD_FLAGS := -lm -Wl,-Map=$(TARGET).map,--cref -Wl,--gc-sections -ifeq ($(LINKER_RELAXATIONS), Y) - BASE_LD_FLAGS += -Wl,--relax -endif -ifeq ($(ARCH), AVR8) - BASE_LD_FLAGS += -mmcu=$(MCU) -else ifeq ($(ARCH), XMEGA) - BASE_LD_FLAGS += -mmcu=$(MCU) -else ifeq ($(ARCH), UC3) - BASE_LD_FLAGS += -mpart=$(MCU:at32%=%) --rodata-writable --direct-data -endif - -# Determine flags to pass to the size utility based on its reported features (only invoke if size target required) -# and on an architecture where this non-standard patch is available -ifneq ($(ARCH), UC3) -size: SIZE_MCU_FLAG := $(shell $(CROSS)-size --help | grep -- --mcu > /dev/null && echo --mcu=$(MCU) ) -size: SIZE_FORMAT_FLAG := $(shell $(CROSS)-size --help | grep -- --format=.*avr > /dev/null && echo --format=avr ) -endif - -# Pre-build informational target, to give compiler and project name information when building -build_begin: - @echo $(MSG_INFO_MESSAGE) Begin compilation of project \"$(TARGET)\"... - @echo "" - @$(CROSS)-gcc --version - -# Post-build informational target, to project name information when building has completed -build_end: - @echo $(MSG_INFO_MESSAGE) Finished building project \"$(TARGET)\". - -# Prints size information of a compiled application (FLASH, RAM and EEPROM usages) -size: $(TARGET).elf - @echo $(MSG_SIZE_CMD) Determining size of \"$<\" - @echo "" - $(CROSS)-size $(SIZE_MCU_FLAG) $(SIZE_FORMAT_FLAG) $< - -# Prints size information on the symbols within a compiled application in decimal bytes -symbol-sizes: $(TARGET).elf - @echo $(MSG_NM_CMD) Extracting \"$<\" symbols with decimal byte sizes - $(CROSS)-nm --size-sort --demangle --radix=d $< - -# Cleans intermediary build files, leaving only the compiled application files -mostlyclean: - @echo $(MSG_REMOVE_CMD) Removing object files of \"$(TARGET)\" - rm -f $(OBJECT_FILES) - @echo $(MSG_REMOVE_CMD) Removing dependency files of \"$(TARGET)\" - rm -f $(DEPENDENCY_FILES) - -# Cleans all build files, leaving only the original source code -clean: mostlyclean - @echo $(MSG_REMOVE_CMD) Removing output files of \"$(TARGET)\" - rm -f $(TARGET).elf $(TARGET).hex $(TARGET).bin $(TARGET).eep $(TARGET).map $(TARGET).lss $(TARGET).sym lib$(TARGET).a - -# Performs a complete build of the user application and prints size information afterwards -all: build_begin elf hex bin lss sym size build_end - -# Helper targets, to build a specific type of output file without having to know the project target name -lib: lib$(TARGET).a -elf: $(TARGET).elf -hex: $(TARGET).hex $(TARGET).eep -bin: $(TARGET).bin -lss: $(TARGET).lss -sym: $(TARGET).sym - -# Default target to *create* the user application's specified source files; if this rule is executed by -# make, the input source file doesn't exist and an error needs to be presented to the user -$(SRC): - $(error Source file does not exist: $@) - -# Compiles an input C source file and generates an assembly listing for it -%.s: %.c $(MAKEFILE_LIST) - @echo $(MSG_COMPILE_CMD) Generating assembly from C file \"$(notdir $<)\" - $(CROSS)-gcc -S $(BASE_CC_FLAGS) $(BASE_C_FLAGS) $(CC_FLAGS) $(C_FLAGS) $< -o $@ - -# Compiles an input C++ source file and generates an assembly listing for it -%.s: %.cpp $(MAKEFILE_LIST) - @echo $(MSG_COMPILE_CMD) Generating assembly from C++ file \"$(notdir $<)\" - $(CROSS)-gcc -S $(BASE_CC_FLAGS) $(BASE_CPP_FLAGS) $(CC_FLAGS) $(CPP_FLAGS) $< -o $@ - -# Compiles an input C source file and generates a linkable object file for it -$(OBJDIR)/%.o: %.c $(MAKEFILE_LIST) - @echo $(MSG_COMPILE_CMD) Compiling C file \"$(notdir $<)\" - $(CROSS)-gcc -c $(BASE_CC_FLAGS) $(BASE_C_FLAGS) $(CC_FLAGS) $(C_FLAGS) -MMD -MP -MF $(@:%.o=%.d) $< -o $@ - -# Compiles an input C++ source file and generates a linkable object file for it -$(OBJDIR)/%.o: %.cpp $(MAKEFILE_LIST) - @echo $(MSG_COMPILE_CMD) Compiling C++ file \"$(notdir $<)\" - $(CROSS)-gcc -c $(BASE_CC_FLAGS) $(BASE_CPP_FLAGS) $(CC_FLAGS) $(CPP_FLAGS) -MMD -MP -MF $(@:%.o=%.d) $< -o $@ - -# Assembles an input ASM source file and generates a linkable object file for it -$(OBJDIR)/%.o: %.S $(MAKEFILE_LIST) - @echo $(MSG_ASSEMBLE_CMD) Assembling \"$(notdir $<)\" - $(CROSS)-gcc -c $(BASE_CC_FLAGS) $(BASE_ASM_FLAGS) $(CC_FLAGS) $(ASM_FLAGS) -MMD -MP -MF $(@:%.o=%.d) $< -o $@ - -# Generates a library archive file from the user application, which can be linked into other applications -.PRECIOUS : $(OBJECT_FILES) -.SECONDARY : %.a -%.a: $(OBJECT_FILES) - @echo $(MSG_ARCHIVE_CMD) Archiving object files into \"$@\" - $(CROSS)-ar rcs $@ $(OBJECT_FILES) - -# Generates an ELF debug file from the user application, which can be further processed for FLASH and EEPROM data -# files, or used for programming and debugging directly -.PRECIOUS : $(OBJECT_FILES) -.SECONDARY : %.elf -%.elf: $(OBJECT_FILES) - @echo $(MSG_LINK_CMD) Linking object files into \"$@\" - $(CROSS)-gcc $^ -o $@ $(BASE_LD_FLAGS) $(LD_FLAGS) - -# Extracts out the loadable FLASH memory data from the project ELF file, and creates an Intel HEX format file of it -%.hex: %.elf - @echo $(MSG_OBJCPY_CMD) Extracting HEX file data from \"$<\" - $(CROSS)-objcopy -O ihex -R .eeprom -R .fuse -R .lock -R .signature $< $@ - -# Extracts out the loadable FLASH memory data from the project ELF file, and creates an Binary format file of it -%.bin: %.elf - @echo $(MSG_OBJCPY_CMD) Extracting BIN file data from \"$<\" - $(CROSS)-objcopy -O binary -R .eeprom -R .fuse -R .lock -R .signature $< $@ - -# Extracts out the loadable EEPROM memory data from the project ELF file, and creates an Intel HEX format file of it -%.eep: %.elf - @echo $(MSG_OBJCPY_CMD) Extracting EEP file data from \"$<\" - $(CROSS)-objcopy -O ihex -j .eeprom --set-section-flags=.eeprom="alloc,load" --change-section-lma .eeprom=0 --no-change-warnings $< $@ || exit 0 - -# Creates an assembly listing file from an input project ELF file, containing interleaved assembly and source data -%.lss: %.elf - @echo $(MSG_OBJDMP_CMD) Extracting LSS file data from \"$<\" - $(CROSS)-objdump -h -d -S -z $< > $@ - -# Creates a symbol file listing the loadable and discarded symbols from an input project ELF file -%.sym: %.elf - @echo $(MSG_NM_CMD) Extracting SYM file data from \"$<\" - $(CROSS)-nm -n $< > $@ - -# Include build dependency files --include $(DEPENDENCY_FILES) +C_FLAGS += -fno-jump-tables -# Phony build targets for this module -.PHONY: build_begin build_end size symbol-sizes lib elf hex lss clean mostlyclean +DMBS_PATH := $(LUFA_PATH)/Build/DMBS/DMBS +include $(DMBS_PATH)/gcc.mk diff --git a/LUFA/Build/lufa_core.mk b/LUFA/Build/lufa_core.mk index 3067845e7..62cef9046 100644 --- a/LUFA/Build/lufa_core.mk +++ b/LUFA/Build/lufa_core.mk @@ -6,170 +6,5 @@ # www.lufa-lib.org # -LUFA_BUILD_MODULES += CORE -LUFA_BUILD_TARGETS += help list_targets list_modules list_mandatory list_optional list_provided list_macros -LUFA_BUILD_MANDATORY_VARS += -LUFA_BUILD_OPTIONAL_VARS += -LUFA_BUILD_PROVIDED_VARS += -LUFA_BUILD_PROVIDED_MACROS += - -# ----------------------------------------------------------------------------- -# LUFA Core Build System Makefile Module. -# ----------------------------------------------------------------------------- -# DESCRIPTION: -# Provides a set of core build targets for the LUFA build system -# ----------------------------------------------------------------------------- -# TARGETS: -# -# help - Build system help -# list_targets - List all build targets -# list_modules - List all build modules -# list_mandatory - List all mandatory make variables required by -# the included build modules of the application -# list_optional - List all optional make variables required by -# the included build modules of the application -# list_provided - List all provided make variables from the -# included build modules of the application -# list_macros - List all provided make macros from the -# included build modules of the application -# -# MANDATORY PARAMETERS: -# -# (None) -# -# OPTIONAL PARAMETERS: -# -# (None) -# -# PROVIDED VARIABLES: -# -# (None) -# -# PROVIDED MACROS: -# -# (None) -# -# ----------------------------------------------------------------------------- - -SHELL = /bin/sh - -# Converts a given input to a printable output using "(None)" if no items are in the list -CONVERT_TO_PRINTABLE = $(if $(strip $(1)), $(1), (None)) - - -# Build sorted and filtered lists of the included build module data -SORTED_LUFA_BUILD_MODULES = $(sort $(LUFA_BUILD_MODULES)) -SORTED_LUFA_BUILD_TARGETS = $(sort $(LUFA_BUILD_TARGETS)) -SORTED_LUFA_MANDATORY_VARS = $(sort $(LUFA_BUILD_MANDATORY_VARS)) -SORTED_LUFA_OPTIONAL_VARS = $(filter-out $(SORTED_LUFA_MANDATORY_VARS), $(sort $(LUFA_BUILD_OPTIONAL_VARS))) -SORTED_LUFA_PROVIDED_VARS = $(sort $(LUFA_BUILD_PROVIDED_VARS)) -SORTED_LUFA_PROVIDED_MACROS = $(sort $(LUFA_BUILD_PROVIDED_MACROS)) - -# Create printable versions of the sorted build module data (use "(None)" when no data is available) -PRINTABLE_LUFA_BUILD_MODULES = $(call CONVERT_TO_PRINTABLE, $(SORTED_LUFA_BUILD_MODULES)) -PRINTABLE_LUFA_BUILD_TARGETS = $(call CONVERT_TO_PRINTABLE, $(SORTED_LUFA_BUILD_TARGETS)) -PRINTABLE_LUFA_MANDATORY_VARS = $(call CONVERT_TO_PRINTABLE, $(SORTED_LUFA_MANDATORY_VARS)) -PRINTABLE_LUFA_OPTIONAL_VARS = $(call CONVERT_TO_PRINTABLE, $(SORTED_LUFA_OPTIONAL_VARS)) -PRINTABLE_LUFA_PROVIDED_VARS = $(call CONVERT_TO_PRINTABLE, $(SORTED_LUFA_PROVIDED_VARS)) -PRINTABLE_LUFA_PROVIDED_MACROS = $(call CONVERT_TO_PRINTABLE, $(SORTED_LUFA_PROVIDED_MACROS)) - -help: - @echo "===================================================================" - @echo " LUFA Build System 2.0 " - @echo " (C) Dean Camera, 2015 { dean @ fourwalledcubicle . com } " - @echo "===================================================================" - @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 modules if not user-assigned. " - @echo " " - @echo " By default the target output shows both a friendly summary, as " - @echo " well as the actual invoked command. To suppress the output of the " - @echo " invoked commands and show only the friendly command output, run " - @echo " make with the \"-s\" switch added before the target(s). " - @echo " " - @echo "SEE ALSO: " - @echo " For more information, see the 'Build System' chapter of the LUFA " - @echo " project documentation. " - @echo "===================================================================" - @echo " " - @echo " Currently used build system modules in this application: " - @echo " " - @printf " %b" "$(PRINTABLE_LUFA_BUILD_MODULES:%= - %\n)" - @echo " " - @echo " " - @echo " Currently available build targets in this application: " - @echo " " - @printf " %b" "$(PRINTABLE_LUFA_BUILD_TARGETS:%= - %\n)" - @echo " " - @echo " " - @echo " Mandatory variables required by the selected build Modules: " - @echo " " - @printf " %b" "$(PRINTABLE_LUFA_MANDATORY_VARS:%= - %\n)" - @echo " " - @echo " " - @echo " Optional variables required by the selected build Modules: " - @echo " " - @printf " %b" "$(PRINTABLE_LUFA_OPTIONAL_VARS:%= - %\n)" - @echo " " - @echo " " - @echo " Variables provided by the selected build Modules: " - @echo " " - @printf " %b" "$(PRINTABLE_LUFA_PROVIDED_VARS:%= - %\n)" - @echo " " - @echo " " - @echo " Macros provided by the selected build Modules: " - @echo " " - @printf " %b" "$(PRINTABLE_LUFA_PROVIDED_MACROS:%= - %\n)" - @echo " " - @echo "===================================================================" - @echo " The LUFA BuildSystem 2.0 - Powered By Positive Thinking (tm) " - @echo "===================================================================" - -# Lists build modules included by the project makefile, in alphabetical order -list_modules: - @echo Currently Used Build System Modules: - @printf " %b" "$(PRINTABLE_LUFA_BUILD_MODULES:%= - %\n)" - -# Lists build targets included by the project makefile, in alphabetical order -list_targets: - @echo Currently Available Build Targets: - @printf " %b" "$(PRINTABLE_LUFA_BUILD_TARGETS:%= - %\n)" - -# Lists mandatory variables that must be set by the project makefile, in alphabetical order -list_mandatory: - @echo Mandatory Variables for Included Modules: - @printf " %b" "$(PRINTABLE_LUFA_MANDATORY_VARS:%= - %\n)" - -# Lists optional variables that must be set by the project makefile, in alphabetical order -list_optional: - @echo Optional Variables for Included Modules: - @printf " %b" "$(PRINTABLE_LUFA_OPTIONAL_VARS:%= - %\n)" - -# Lists variables provided by the included build modules, in alphabetical order -list_provided: - @echo Variables Provided by the Included Modules: - @printf " %b" "$(PRINTABLE_LUFA_PROVIDED_VARS:%= - %\n)" - -# Lists macros provided by the included build modules, in alphabetical order -list_macros: - @echo Macros Provided by the Included Modules: - @printf " %b" "$(PRINTABLE_LUFA_PROVIDED_MACROS:%= - %\n)" - -# Disable default in-built make rules (those that are needed are explicitly -# defined, and doing so has performance benefits when recursively building) -ifeq ($(filter -r,$(MAKEFLAGS)),) - MAKEFLAGS += -r -endif -.SUFFIXES: - -# Phony build targets for this module -.PHONY: help list_modules list_targets list_mandatory list_optional list_provided list_macros +DMBS_PATH := $(LUFA_PATH)/Build/DMBS/DMBS +include $(DMBS_PATH)/core.mk diff --git a/LUFA/Build/lufa_cppcheck.mk b/LUFA/Build/lufa_cppcheck.mk index b96232338..801a4c15c 100644 --- a/LUFA/Build/lufa_cppcheck.mk +++ b/LUFA/Build/lufa_cppcheck.mk @@ -6,102 +6,5 @@ # www.lufa-lib.org # -LUFA_BUILD_MODULES += CPPCHECK -LUFA_BUILD_TARGETS += cppcheck cppcheck-config -LUFA_BUILD_MANDATORY_VARS += SRC -LUFA_BUILD_OPTIONAL_VARS += CPPCHECK_INCLUDES CPPCHECK_EXCLUDES CPPCHECK_MSG_TEMPLATE CPPCHECK_ENABLE \ - CPPCHECK_SUPPRESS CPPCHECK_FAIL_ON_WARNING CPPCHECK_QUIET CPPCHECK_FLAGS -LUFA_BUILD_PROVIDED_VARS += -LUFA_BUILD_PROVIDED_MACROS += - -# ----------------------------------------------------------------------------- -# LUFA CPPCheck Buildsystem Makefile Module. -# ----------------------------------------------------------------------------- -# DESCRIPTION: -# Provides a set of targets to scan a project with the free "cppcheck" static -# analysis tool, to check for code errors at runtime -# (see http://cppcheck.sourceforge.net). -# ----------------------------------------------------------------------------- -# TARGETS: -# -# cppcheck - Scan the project with CPPCheck -# cppcheck-config - Use CPPCheck to look for missing include files -# -# MANDATORY PARAMETERS: -# -# SRC - List of source files to statically analyze -# -# OPTIONAL PARAMETERS: -# -# CPPCHECK_INCLUDES - Extra include paths to search for missing -# header files -# CPPCHECK_EXCLUDES - Source file paths to exclude checking (can be -# a path fragment if desired) -# CPPCHECK_MSG_TEMPLATE - Template for cppcheck error and warning output -# CPPCHECK_ENABLE - General cppcheck category checks to enable -# CPPCHECK_SUPPRESS - Specific cppcheck warnings to disable by ID -# CPPCHECK_FAIL_ON_WARNING - Set to Y to fail the build on cppcheck -# warnings, N to continue even if warnings occur -# CPPCHECK_QUIET - Enable cppcheck verbose or quiet output mode -# CPPCHECK_FLAGS - Additional flags to pass to cppcheck -# -# PROVIDED VARIABLES: -# -# (None) -# -# PROVIDED MACROS: -# -# (None) -# -# ----------------------------------------------------------------------------- - -SHELL = /bin/sh - -ERROR_IF_UNSET ?= $(if $(filter undefined, $(origin $(strip $(1)))), $(error Makefile $(strip $(1)) value not set)) -ERROR_IF_EMPTY ?= $(if $(strip $($(strip $(1)))), , $(error Makefile $(strip $(1)) option cannot be blank)) -ERROR_IF_NONBOOL ?= $(if $(filter Y N, $($(strip $(1)))), , $(error Makefile $(strip $(1)) option must be Y or N)) - -# Default values of optionally user-supplied variables -CPPCHECK_INCLUDES ?= -CPPCHECK_EXCLUDES ?= -CPPCHECK_MSG_TEMPLATE ?= {file}:{line}: {severity} ({id}): {message} -CPPCHECK_ENABLE ?= all -CPPCHECK_SUPPRESS ?= variableScope missingInclude -CPPCHECK_FAIL_ON_WARNING ?= Y -CPPCHECK_QUIET ?= Y -CPPCHECK_FLAGS ?= - -# Sanity check user supplied values -$(foreach MANDATORY_VAR, $(LUFA_BUILD_MANDATORY_VARS), $(call ERROR_IF_UNSET, $(MANDATORY_VAR))) -$(call ERROR_IF_EMPTY, SRC) -$(call ERROR_IF_EMPTY, CPPCHECK_MSG_TEMPLATE) -$(call ERROR_IF_EMPTY, CPPCHECK_ENABLE) -$(call ERROR_IF_NONBOOL, CPPCHECK_FAIL_ON_WARNING) -$(call ERROR_IF_NONBOOL, CPPCHECK_QUIET) - -# Build a default argument list for cppcheck -BASE_CPPCHECK_FLAGS := --template="$(CPPCHECK_MSG_TEMPLATE)" $(CPPCHECK_INCLUDES:%=-I%) $(CPPCHECK_EXCLUDES:%=-i%) --inline-suppr --force --std=c99 - -# Sanity check parameters and construct additional command line arguments to cppcheck -ifeq ($(CPPCHECK_FAIL_ON_WARNING), Y) - BASE_CPPCHECK_FLAGS += --error-exitcode=1 -endif -ifeq ($(CPPCHECK_QUIET), Y) - BASE_CPPCHECK_FLAGS += --quiet -endif - -# Output Messages -MSG_CPPCHECK_CMD := ' [CPPCHECK]:' - -# Checks the CPPCheck configuration as used in the user project, to determine if any paths are missing or invalid -cppcheck-config: $(MAKEFILE_LIST) - @echo $(MSG_CPPCHECK_CMD) Checking cppcheck configuration check on source files - cppcheck $(BASE_CPPCHECK_FLAGS) --check-config $(CPPCHECK_FLAGS) $(SRC) - -# Runs a static analysis using CPPCheck to determine if there are any issues -cppcheck: $(MAKEFILE_LIST) - @echo $(MSG_CPPCHECK_CMD) Performing static analysis on source files - cppcheck $(BASE_CPPCHECK_FLAGS) --enable=$(CPPCHECK_ENABLE) $(CPPCHECK_SUPPRESS:%=--suppress=%) $(CPPCHECK_FLAGS) $(SRC) - -# Phony build targets for this module -.PHONY: cppcheck-config cppcheck +DMBS_PATH := $(LUFA_PATH)/Build/DMBS/DMBS +include $(DMBS_PATH)/cppcheck.mk diff --git a/LUFA/Build/lufa_dfu.mk b/LUFA/Build/lufa_dfu.mk index b19df057e..2100ae8f7 100644 --- a/LUFA/Build/lufa_dfu.mk +++ b/LUFA/Build/lufa_dfu.mk @@ -6,90 +6,5 @@ # www.lufa-lib.org # -LUFA_BUILD_MODULES += DFU -LUFA_BUILD_TARGETS += flip flip-ee dfu dfu-ee -LUFA_BUILD_MANDATORY_VARS += MCU TARGET -LUFA_BUILD_OPTIONAL_VARS += -LUFA_BUILD_PROVIDED_VARS += -LUFA_BUILD_PROVIDED_MACROS += - -# ----------------------------------------------------------------------------- -# 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) -# -# PROVIDED VARIABLES: -# -# (None) -# -# PROVIDED MACROS: -# -# (None) -# -# ----------------------------------------------------------------------------- - -SHELL = /bin/sh - -ERROR_IF_UNSET ?= $(if $(filter undefined, $(origin $(strip $(1)))), $(error Makefile $(strip $(1)) value not set)) -ERROR_IF_EMPTY ?= $(if $(strip $($(strip $(1)))), , $(error Makefile $(strip $(1)) option cannot be blank)) -ERROR_IF_NONBOOL ?= $(if $(filter Y N, $($(strip $(1)))), , $(error Makefile $(strip $(1)) option must be Y or N)) - -# Sanity-check values of mandatory user-supplied variables -$(foreach MANDATORY_VAR, $(LUFA_BUILD_MANDATORY_VARS), $(call ERROR_IF_UNSET, $(MANDATORY_VAR))) -$(call ERROR_IF_EMPTY, MCU) -$(call ERROR_IF_EMPTY, TARGET) - -# Output Messages -MSG_COPY_CMD := ' [CP] :' -MSG_REMOVE_CMD := ' [RM] :' -MSG_DFU_CMD := ' [DFU] :' - -# Programs in the target FLASH memory using BATCHISP, the command line tool used by FLIP -flip: $(TARGET).hex $(MAKEFILE_LIST) - @echo $(MSG_DFU_CMD) Programming FLASH with batchisp using \"$<\" - batchisp -hardware usb -device $(MCU) -operation erase f loadbuffer $< program - batchisp -hardware usb -device $(MCU) -operation start reset 0 - -# Programs in the target EEPROM memory using BATCHISP, the command line tool used by FLIP -flip-ee: $(TARGET).eep $(MAKEFILE_LIST) - @echo $(MSG_COPY_CMD) Copying EEP file to temporary file \"$<.hex\" - cp $< $<.hex - @echo $(MSG_DFU_CMD) Programming EEPROM with batchisp using \"$<.hex\" - batchisp -hardware usb -device $(MCU) -operation memory EEPROM loadbuffer $<.hex program - batchisp -hardware usb -device $(MCU) -operation start reset 0 - @echo $(MSG_REMOVE_CMD) Removing temporary file \"$<.hex\" - rm $<.hex - -# Programs in the target FLASH memory using DFU-PROGRAMMER -dfu: $(TARGET).hex $(MAKEFILE_LIST) - @echo $(MSG_DFU_CMD) Programming FLASH with dfu-programmer using \"$<\" - dfu-programmer $(MCU) erase - dfu-programmer $(MCU) flash $< - dfu-programmer $(MCU) reset - -# Programs in the target EEPROM memory using DFU-PROGRAMMER -dfu-ee: $(TARGET).eep $(MAKEFILE_LIST) - @echo $(MSG_DFU_CMD) Programming EEPROM with dfu-programmer using \"$<\" - dfu-programmer $(MCU) flash --eeprom $< - dfu-programmer $(MCU) reset - -# Phony build targets for this module -.PHONY: flip flip-ee dfu dfu-ee +DMBS_PATH := $(LUFA_PATH)/Build/DMBS/DMBS +include $(DMBS_PATH)/dfu.mk diff --git a/LUFA/Build/lufa_doxygen.mk b/LUFA/Build/lufa_doxygen.mk index c2c516f92..64afd4a5a 100644 --- a/LUFA/Build/lufa_doxygen.mk +++ b/LUFA/Build/lufa_doxygen.mk @@ -6,95 +6,5 @@ # www.lufa-lib.org # -LUFA_BUILD_MODULES += DOXYGEN -LUFA_BUILD_TARGETS += doxygen doxygen_upgrade doxygen_create -LUFA_BUILD_MANDATORY_VARS += LUFA_PATH -LUFA_BUILD_OPTIONAL_VARS += DOXYGEN_CONF DOXYGEN_FAIL_ON_WARNING DOXYGEN_OVERRIDE_PARAMS -LUFA_BUILD_PROVIDED_VARS += -LUFA_BUILD_PROVIDED_MACROS += - -# ----------------------------------------------------------------------------- -# 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 -# doxygen_create - Create a new Doxygen configuration file using -# the latest template -# doxygen_upgrade - Upgrade an existing Doxygen configuration file -# to the latest template -# -# MANDATORY PARAMETERS: -# -# LUFA_PATH - Path to the LUFA library core -# -# 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 -# PROVIDED VARIABLES: -# -# (None) -# -# PROVIDED MACROS: -# -# (None) -# -# ----------------------------------------------------------------------------- - -SHELL = /bin/sh - -ERROR_IF_UNSET ?= $(if $(filter undefined, $(origin $(strip $(1)))), $(error Makefile $(strip $(1)) value not set)) -ERROR_IF_EMPTY ?= $(if $(strip $($(strip $(1)))), , $(error Makefile $(strip $(1)) option cannot be blank)) -ERROR_IF_NONBOOL ?= $(if $(filter Y N, $($(strip $(1)))), , $(error Makefile $(strip $(1)) option must be Y or N)) - -# Default values of optionally user-supplied variables -DOXYGEN_CONF ?= doxyfile -DOXYGEN_FAIL_ON_WARNING ?= Y -DOXYGEN_OVERRIDE_PARAMS ?= QUIET=YES HTML_EXTRA_STYLESHEET=$(patsubst %/,%,$(LUFA_PATH))/DoxygenPages/Style/Style.css - -# Sanity check user supplied values -$(foreach MANDATORY_VAR, $(LUFA_BUILD_MANDATORY_VARS), $(call ERROR_IF_UNSET, $(MANDATORY_VAR))) -$(call ERROR_IF_EMPTY, DOXYGEN_CONF) -$(call ERROR_IF_EMPTY, LUFA_PATH) -$(call ERROR_IF_NONBOOL, DOXYGEN_FAIL_ON_WARNING) - -# Output Messages -MSG_DOXYGEN_CMD := ' [DOXYGEN] :' - -# Determine Doxygen invocation command -BASE_DOXYGEN_CMD := ( cat $(DOXYGEN_CONF) $(DOXYGEN_OVERRIDE_PARAMS:%=; echo "%") ) | doxygen - -ifeq ($(DOXYGEN_FAIL_ON_WARNING), Y) - DOXYGEN_CMD := if ( $(BASE_DOXYGEN_CMD) 2>&1 | grep -v -e "[Ww]arning:\|recompile doxygen" ;); then exit 1; fi; -else - DOXYGEN_CMD := $(BASE_DOXYGEN_CMD) -endif - -# Error if the specified Doxygen configuration file does not exist -$(DOXYGEN_CONF): - $(error Doxygen configuration file $@ does not exist) - -# Builds the project documentation using the specified configuration file and the DOXYGEN tool -doxygen: $(DOXYGEN_CONF) $(MAKEFILE_LIST) - @echo $(MSG_DOXYGEN_CMD) Configuration file \"$(DOXYGEN_CONF)\" with parameters \"$(DOXYGEN_OVERRIDE_PARAMS)\" - $(DOXYGEN_CMD) - -# Upgrades an existing Doxygen configuration file to the latest Doxygen template, preserving settings -doxygen_upgrade: $(DOXYGEN_CONF) $(MAKEFILE_LIST) - @echo $(MSG_DOXYGEN_CMD) Upgrading configuration file \"$(DOXYGEN_CONF)\" with latest template - doxygen -u $(DOXYGEN_CONF) > /dev/null - -# Creates a new Doxygen configuration file with the set file name -doxygen_create: $(MAKEFILE_LIST) - @echo $(MSG_DOXYGEN_CMD) Creating new configuration file \"$(DOXYGEN_CONF)\" with latest template - doxygen -g $(DOXYGEN_CONF) > /dev/null - -# Phony build targets for this module -.PHONY: doxygen doxygen_upgrade doxygen_create +DMBS_PATH := $(LUFA_PATH)/Build/DMBS/DMBS +include $(DMBS_PATH)/doxygen.mk diff --git a/LUFA/Build/lufa_hid.mk b/LUFA/Build/lufa_hid.mk index 32a32a83c..86ca145bf 100644 --- a/LUFA/Build/lufa_hid.mk +++ b/LUFA/Build/lufa_hid.mk @@ -6,91 +6,5 @@ # www.lufa-lib.org # -LUFA_BUILD_MODULES += HID -LUFA_BUILD_TARGETS += hid hid-ee teensy teensy-ee -LUFA_BUILD_MANDATORY_VARS += MCU TARGET -LUFA_BUILD_OPTIONAL_VARS += -LUFA_BUILD_PROVIDED_VARS += -LUFA_BUILD_PROVIDED_MACROS += - -# ----------------------------------------------------------------------------- -# LUFA HID Bootloader Buildsystem Makefile Module. -# ----------------------------------------------------------------------------- -# DESCRIPTION: -# Provides a set of targets to re-program a device currently running a HID -# class bootloader with a project's FLASH files. -# ----------------------------------------------------------------------------- -# TARGETS: -# -# hid - Program FLASH into target via -# hid_bootloader_cli -# hid-ee - Program EEPROM into target via a temporary -# AVR application and hid_bootloader_cli -# teensy - Program FLASH into target via -# teensy_loader_cli -# teensy-ee - Program EEPROM into target via a temporary -# AVR application and teensy_loader_cli -# -# MANDATORY PARAMETERS: -# -# MCU - Microcontroller device model name -# TARGET - Application name -# -# OPTIONAL PARAMETERS: -# -# (None) -# -# PROVIDED VARIABLES: -# -# (None) -# -# PROVIDED MACROS: -# -# (None) -# -# ----------------------------------------------------------------------------- - -SHELL = /bin/sh - -LUFA_MODULE_PATH := $(patsubst %/,%,$(dir $(lastword $(MAKEFILE_LIST)))) - -ERROR_IF_UNSET ?= $(if $(filter undefined, $(origin $(strip $(1)))), $(error Makefile $(strip $(1)) value not set)) -ERROR_IF_EMPTY ?= $(if $(strip $($(strip $(1)))), , $(error Makefile $(strip $(1)) option cannot be blank)) -ERROR_IF_NONBOOL ?= $(if $(filter Y N, $($(strip $(1)))), , $(error Makefile $(strip $(1)) option must be Y or N)) - -# Sanity-check values of mandatory user-supplied variables -$(foreach MANDATORY_VAR, $(LUFA_BUILD_MANDATORY_VARS), $(call ERROR_IF_UNSET, $(MANDATORY_VAR))) -$(call ERROR_IF_EMPTY, MCU) -$(call ERROR_IF_EMPTY, TARGET) - -# Output Messages -MSG_HID_BOOTLOADER_CMD := ' [HID] :' -MSG_OBJCPY_CMD := ' [OBJCPY] :' -MSG_MAKE_CMD := ' [MAKE] :' - -# Programs in the target FLASH memory using the HID_BOOTLOADER_CLI tool -hid: $(TARGET).hex $(MAKEFILE_LIST) - @echo $(MSG_HID_BOOTLOADER_CMD) Programming FLASH with hid_bootloader_cli using \"$<\" - hid_bootloader_cli -mmcu=$(MCU) -v $< - -# Programs in the target EEPROM memory using the HID_BOOTLOADER_CLI tool (note: clears target FLASH memory) -hid-ee: $(TARGET).eep $(MAKEFILE_LIST) - @echo $(MSG_OBJCPY_CMD) Converting \"$<\" to a binary file \"InputEEData.bin\" - avr-objcopy -I ihex -O binary $< $(LUFA_MODULE_PATH)/HID_EEPROM_Loader/InputEEData.bin - @echo $(MSG_MAKE_CMD) Making EEPROM loader application for \"$<\" - $(MAKE) -C $(LUFA_MODULE_PATH)/HID_EEPROM_Loader/ MCU=$(MCU) clean hid - -# Programs in the target FLASH memory using the TEENSY_BOOTLOADER_CLI tool -teensy: $(TARGET).hex $(MAKEFILE_LIST) - @echo $(MSG_HID_BOOTLOADER_CMD) Programming FLASH with teensy_loader_cli using \"$<\" - teensy_loader_cli -mmcu=$(MCU) -v $< - -# Programs in the target EEPROM memory using the TEENSY_BOOTLOADER_CLI tool (note: clears target FLASH memory) -teensy-ee: $(TARGET).hex $(MAKEFILE_LIST) - @echo $(MSG_OBJCPY_CMD) Converting \"$<\" to a binary file \"InputEEData.bin\" - avr-objcopy -I ihex -O binary $< $(LUFA_MODULE_PATH)/HID_EEPROM_Loader/InputEEData.bin - @echo $(MSG_MAKE_CMD) Making EEPROM loader application for \"$<\" - $(MAKE) -s -C $(LUFA_MODULE_PATH)/HID_EEPROM_Loader/ MCU=$(MCU) clean teensy - -# Phony build targets for this module -.PHONY: hid hid-ee teensy teensy-ee +DMBS_PATH := $(LUFA_PATH)/Build/DMBS/DMBS +include $(DMBS_PATH)/hid.mk diff --git a/LUFA/Build/lufa_sources.mk b/LUFA/Build/lufa_sources.mk index 73a8f7fe1..ad1a47711 100644 --- a/LUFA/Build/lufa_sources.mk +++ b/LUFA/Build/lufa_sources.mk @@ -6,11 +6,11 @@ # www.lufa-lib.org # -LUFA_BUILD_MODULES += SOURCES -LUFA_BUILD_TARGETS += -LUFA_BUILD_MANDATORY_VARS += LUFA_PATH ARCH -LUFA_BUILD_OPTIONAL_VARS += -LUFA_BUILD_PROVIDED_VARS += LUFA_SRC_USB_DEVICE LUFA_SRC_USB_HOST \ +DMBS_BUILD_MODULES += LUFA_SOURCES +DMBS_BUILD_TARGETS += +DMBS_BUILD_MANDATORY_VARS += LUFA_PATH ARCH +DMBS_BUILD_OPTIONAL_VARS += +DMBS_BUILD_PROVIDED_VARS += LUFA_SRC_USB_DEVICE LUFA_SRC_USB_HOST \ LUFA_SRC_USB LUFA_SRC_USBCLASS_DEVICE \ LUFA_SRC_USBCLASS_HOST LUFA_SRC_USBCLASS \ LUFA_SRC_TEMPERATURE LUFA_SRC_SERIAL \ -- cgit v1.2.3