From 2cde257fe11886bebbfe4aea816268c2739d89bb Mon Sep 17 00:00:00 2001 From: Dean Camera Date: Wed, 26 Apr 2017 20:45:40 +1000 Subject: Update to latest DMBS revision. --- LUFA/Build/DMBS/DMBS/WritingYourOwnModules.md | 1 + LUFA/Build/DMBS/DMBS/core.md | 2 +- LUFA/Build/DMBS/DMBS/core.mk | 2 +- LUFA/Build/DMBS/DMBS/gcc.md | 17 ++++++++++++----- LUFA/Build/DMBS/DMBS/gcc.mk | 19 +++++++++++-------- 5 files changed, 26 insertions(+), 15 deletions(-) (limited to 'LUFA/Build') diff --git a/LUFA/Build/DMBS/DMBS/WritingYourOwnModules.md b/LUFA/Build/DMBS/DMBS/WritingYourOwnModules.md index 3ecbb3312..16df7a53b 100644 --- a/LUFA/Build/DMBS/DMBS/WritingYourOwnModules.md +++ b/LUFA/Build/DMBS/DMBS/WritingYourOwnModules.md @@ -63,6 +63,7 @@ user: $(foreach MANDATORY_VAR, $(DMBS_BUILD_MANDATORY_VARS), $(call ERROR_IF_UNSET, $(MANDATORY_VAR))) As well as complaining if they are set, but currently empty: + $(call ERROR_IF_EMPTY, SOME_MANDATORY_VARIABLE) $(call ERROR_IF_EMPTY, SOME_OPTIONAL_BUT_NON_EMPTY_VARIABLE) diff --git a/LUFA/Build/DMBS/DMBS/core.md b/LUFA/Build/DMBS/DMBS/core.md index c7c976790..406abfecd 100644 --- a/LUFA/Build/DMBS/DMBS/core.md +++ b/LUFA/Build/DMBS/DMBS/core.md @@ -95,7 +95,7 @@ syntax) if desired, as they are provided by this module. DMBS_VERSION - Current version of this DMBS release, as a ISO 8601 integer (such as `160403` for `2016-04-03`). + Current version of this DMBS release, as a ISO 8601 integer (such as `20160403` for `2016-04-03`). diff --git a/LUFA/Build/DMBS/DMBS/core.mk b/LUFA/Build/DMBS/DMBS/core.mk index 1c55569e5..1edbd178c 100644 --- a/LUFA/Build/DMBS/DMBS/core.mk +++ b/LUFA/Build/DMBS/DMBS/core.mk @@ -16,7 +16,7 @@ DMBS_BUILD_PROVIDED_MACROS += DMBS_CHECK_VERSION ERROR_IF_UNSET ERROR_IF_EMPTY E SHELL = /bin/sh # Current DMBS release version -DMBS_VERSION := 20160717 +DMBS_VERSION := 20170426 # Macro to check the DMBS version, aborts if the given DMBS version is below the current version DMBS_CHECK_VERSION ?= $(if $(filter-out 0, $(shell test $(DMBS_VERSION) -lt $(1); echo $$?)), , $(error DMBS version $(1) or newer required, current version is $(DMBS_VERSION))) diff --git a/LUFA/Build/DMBS/DMBS/gcc.md b/LUFA/Build/DMBS/DMBS/gcc.md index f516da5ff..d28fd9ae4 100644 --- a/LUFA/Build/DMBS/DMBS/gcc.md +++ b/LUFA/Build/DMBS/DMBS/gcc.md @@ -83,7 +83,7 @@ variable per line) in the user makefile to be able to use this module: TARGET Name of the application output file prefix (e.g. `TestApplication`). - + ARCH Target device architecture (e.g. `AVR8`). @@ -103,6 +103,10 @@ be assumed. + + + + @@ -143,6 +147,10 @@ be assumed. + + + + @@ -159,10 +167,6 @@ be assumed. - - - -
COMPILER_PATHPath to the compiler to use, in case a specific compiler should be substituted for the one in the system's `PATH` variable. Default is blank (use `PATH` provided compiler).
OPTIMIZATION Optimization level to use when compiling C and C++ source files. Default is `s` (optimize for smallest size).LINKER_RELAXATIONS Boolean, if `Y` linker relaxations will be enabled to slightly reduce the resulting binary's size. Default is `Y`.
JUMP_TABLESBoolean, if `Y` jump tables will be enabled to slightly reduce the resulting binary's size - note that this can cause incorrect jumps if the binary is relocated after compilation, such as for a bootloader. Default is `N`.
OBJDIR Directory to store the intermediate object files, as they are generated from the source files. Default is `obj`.DEBUG_LEVEL Level of the debugging information to generate in the compiled object files. Debug is 2 (medium level debugging information).
COMPILER_PATHPath to the compiler to use, in case a specific compiler should be substituted for the one in the system's `PATH` variable. Default is blank (use `PATH` provided compiler).
@@ -200,5 +204,8 @@ this module. The changes to this module since its initial release are listed below, as of the DMBS version where the change was made. +### 20170426 +Added `JUMP_TABLES` optional variable. + ### 20160403 Initial release. diff --git a/LUFA/Build/DMBS/DMBS/gcc.mk b/LUFA/Build/DMBS/DMBS/gcc.mk index 3affa6346..6126cf97f 100644 --- a/LUFA/Build/DMBS/DMBS/gcc.mk +++ b/LUFA/Build/DMBS/DMBS/gcc.mk @@ -9,7 +9,7 @@ DMBS_BUILD_MODULES += GCC DMBS_BUILD_TARGETS += size symbol-sizes all lib elf bin hex lss clean mostlyclean DMBS_BUILD_MANDATORY_VARS += TARGET ARCH MCU SRC -DMBS_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 +DMBS_BUILD_OPTIONAL_VARS += COMPILER_PATH 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 JUMP_TABLES DMBS_BUILD_PROVIDED_VARS += DMBS_BUILD_PROVIDED_MACROS += @@ -34,6 +34,7 @@ OBJECT_FILES ?= DEBUG_FORMAT ?= dwarf-2 DEBUG_LEVEL ?= 2 LINKER_RELAXATIONS ?= Y +JUMP_TABLES ?= N # Sanity check user supplied values $(foreach MANDATORY_VAR, $(DMBS_BUILD_MANDATORY_VARS), $(call ERROR_IF_UNSET, $(MANDATORY_VAR))) @@ -47,6 +48,7 @@ $(call ERROR_IF_EMPTY, OBJDIR) $(call ERROR_IF_EMPTY, DEBUG_FORMAT) $(call ERROR_IF_EMPTY, DEBUG_LEVEL) $(call ERROR_IF_NONBOOL, LINKER_RELAXATIONS) +$(call ERROR_IF_NONBOOL, JUMP_TABLES) # Determine the utility prefix to use for the selected architecture ifeq ($(ARCH), AVR8) @@ -117,7 +119,14 @@ ifneq ($(F_CPU),) BASE_CC_FLAGS += -DF_CPU=$(F_CPU)UL endif ifeq ($(LINKER_RELAXATIONS), Y) -BASE_CC_FLAGS += -mrelax + BASE_CC_FLAGS += -mrelax +endif +ifeq ($(JUMP_TABLES), N) + # 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 endif # Additional language specific compiler flags @@ -125,12 +134,6 @@ 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 -# 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 - # 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) -- cgit v1.2.3