aboutsummaryrefslogtreecommitdiffstats
path: root/LUFA/Build
diff options
context:
space:
mode:
authorDean Camera <dean@fourwalledcubicle.com>2017-04-26 20:45:40 +1000
committerDean Camera <dean@fourwalledcubicle.com>2017-04-26 20:45:40 +1000
commit2cde257fe11886bebbfe4aea816268c2739d89bb (patch)
tree31ea944c9300215e227035f13f1a55a8db9193e8 /LUFA/Build
parenta8546529926fc87b5d73b75217ec011962e8ccaa (diff)
downloadlufa-2cde257fe11886bebbfe4aea816268c2739d89bb.tar.gz
lufa-2cde257fe11886bebbfe4aea816268c2739d89bb.tar.bz2
lufa-2cde257fe11886bebbfe4aea816268c2739d89bb.zip
Update to latest DMBS revision.
Diffstat (limited to 'LUFA/Build')
-rw-r--r--LUFA/Build/DMBS/DMBS/WritingYourOwnModules.md1
-rw-r--r--LUFA/Build/DMBS/DMBS/core.md2
-rw-r--r--LUFA/Build/DMBS/DMBS/core.mk2
-rw-r--r--LUFA/Build/DMBS/DMBS/gcc.md17
-rw-r--r--LUFA/Build/DMBS/DMBS/gcc.mk19
5 files changed, 26 insertions, 15 deletions
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.
<tbody>
<tr>
<td>DMBS_VERSION</td>
- <td>Current version of this DMBS release, as a ISO 8601 integer (such as `160403` for `2016-04-03`).</td>
+ <td>Current version of this DMBS release, as a ISO 8601 integer (such as `20160403` for `2016-04-03`).</td>
</tr>
</tbody>
</table>
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:
<tr>
<td>TARGET</td>
<td>Name of the application output file prefix (e.g. `TestApplication`).</td>
- </tr>
+ </tr>
<tr>
<td>ARCH</td>
<td>Target device architecture (e.g. `AVR8`).</td>
@@ -104,6 +104,10 @@ be assumed.
<table>
<tbody>
<tr>
+ <td>COMPILER_PATH</td>
+ <td>Path 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).</td>
+ </tr>
+ <tr>
<td>OPTIMIZATION</td>
<td>Optimization level to use when compiling C and C++ source files. Default is `s` (optimize for smallest size).</td>
</tr>
@@ -144,6 +148,10 @@ be assumed.
<td>Boolean, if `Y` linker relaxations will be enabled to slightly reduce the resulting binary's size. Default is `Y`.</td>
</tr>
<tr>
+ <td>JUMP_TABLES</td>
+ <td>Boolean, 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`.</td>
+ </tr>
+ <tr>
<td>OBJDIR</td>
<td>Directory to store the intermediate object files, as they are generated from the source files. Default is `obj`.</td>
</tr>
@@ -159,10 +167,6 @@ be assumed.
<td>DEBUG_LEVEL</td>
<td>Level of the debugging information to generate in the compiled object files. Debug is 2 (medium level debugging information).</td>
</tr>
- <tr>
- <td>COMPILER_PATH</td>
- <td>Path 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).</td>
- </tr>
</tbody>
</table>
@@ -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)