From 3126cbbf96a24afd447ece00248e5ece39dd088a Mon Sep 17 00:00:00 2001 From: Dean Camera Date: Tue, 5 Apr 2016 21:10:07 +1000 Subject: [PATCH] Update to DMBS release-20160403 release. --- .../DMBS/{Modules.md => ModulesOverview.md} | 20 +++- LUFA/Build/DMBS/DMBS/WritingYourOwnModules.md | 94 +++++++++++++++++++ LUFA/Build/DMBS/DMBS/atprogram.md | 8 ++ LUFA/Build/DMBS/DMBS/atprogram.mk | 10 +- LUFA/Build/DMBS/DMBS/avrdude.md | 8 ++ LUFA/Build/DMBS/DMBS/avrdude.mk | 10 +- LUFA/Build/DMBS/DMBS/core.md | 26 ++++- LUFA/Build/DMBS/DMBS/core.mk | 12 ++- LUFA/Build/DMBS/DMBS/cppcheck.md | 8 ++ LUFA/Build/DMBS/DMBS/cppcheck.mk | 10 +- LUFA/Build/DMBS/DMBS/dfu.md | 8 ++ LUFA/Build/DMBS/DMBS/dfu.mk | 10 +- LUFA/Build/DMBS/DMBS/doxygen.md | 8 ++ LUFA/Build/DMBS/DMBS/doxygen.mk | 13 ++- LUFA/Build/DMBS/DMBS/gcc.md | 8 ++ LUFA/Build/DMBS/DMBS/gcc.mk | 10 +- LUFA/Build/DMBS/DMBS/hid.md | 8 ++ LUFA/Build/DMBS/DMBS/hid.mk | 10 +- LUFA/Build/DMBS/Readme.md | 18 +++- LUFA/Build/DMBS/Template/makefile | 11 +-- 20 files changed, 254 insertions(+), 56 deletions(-) rename LUFA/Build/DMBS/DMBS/{Modules.md => ModulesOverview.md} (50%) create mode 100644 LUFA/Build/DMBS/DMBS/WritingYourOwnModules.md diff --git a/LUFA/Build/DMBS/DMBS/Modules.md b/LUFA/Build/DMBS/DMBS/ModulesOverview.md similarity index 50% rename from LUFA/Build/DMBS/DMBS/Modules.md rename to LUFA/Build/DMBS/DMBS/ModulesOverview.md index 65caf8a605..1fd9cc11cc 100644 --- a/LUFA/Build/DMBS/DMBS/Modules.md +++ b/LUFA/Build/DMBS/DMBS/ModulesOverview.md @@ -3,7 +3,7 @@ DMBS - Dean's Makefile Build System Modules Overview ---------------- +---------------- The following modules are currently included: @@ -16,11 +16,23 @@ The following modules are currently included: - [GCC](gcc.md) - Compiling/Assembling/Linking with GCC - [HID](hid.md) - Device Programming -To use a module, you will need to add the following boilerplate to your +## Importing modules into your project makefile + +To use a module, it is recommended to add the following boilerplate to your makefile: # Include DMBS build script makefiles DMBS_PATH ?= ../DMBS -Which is then used to indicate the location of your DMBS installation, relative -to the current directory. +Which can then used to indicate the location of your DMBS installation, relative +to the current directory, when importing modules. For example: + + DMBS_PATH ?= ../DMBS + include $(DMBS_PATH)/core.mk + include $(DMBS_PATH)/gcc.mk + +Imports the `CORE` and `GCC` modules from DMBS using a single path relative to +your project's makefile. + +If you wish to write your own DMBS module(s), +[see the documentation here for more details.](WritingYourOwnModules.md) diff --git a/LUFA/Build/DMBS/DMBS/WritingYourOwnModules.md b/LUFA/Build/DMBS/DMBS/WritingYourOwnModules.md new file mode 100644 index 0000000000..3ecbb33124 --- /dev/null +++ b/LUFA/Build/DMBS/DMBS/WritingYourOwnModules.md @@ -0,0 +1,94 @@ +DMBS - Dean's Makefile Build System +=================================== + + +Writing Your Own Modules +------------------------ + +A DMBS module consists of the several boilerplate sections, explained below. + +## The DMBS module hooks + +Your module needs to advertise to DMBS its name, its makefile targets, the +required and optional variables, and the variables and macros the module +provides for use elsewhere. This is achieved with the following section: + + DMBS_BUILD_MODULES += EXAMPLE + DMBS_BUILD_TARGETS += example-target another-target + DMBS_BUILD_MANDATORY_VARS += MANDATORY_NAME ALSO_MANDATORY + DMBS_BUILD_OPTIONAL_VARS += OPTIONAL_NAME ALSO_OPTIONAL + DMBS_BUILD_PROVIDED_VARS += MEANING_OF_LIFE + DMBS_BUILD_PROVIDED_MACROS += STRIP_WHITESPACE + +The example above declares that this module is called `EXAMPLE`, and exposes the +listed targets, variable requirements and provides variables and macros. + +Your module name and provided variable/macro names must be unique, however you +can (and should) re-use variable names where appropriate if they apply to +several modules (such as `ARCH` to specify the project's microcontroller +architecture). Re-using targets is not recommended, but can be used to extend +the dependencies of another module's targets. + +## Importing the CORE module + +Next, your module should always import the DMBS `CORE` module, via the +following: + + # Conditionally import the CORE module of DMBS if it is not already imported + DMBS_MODULE_PATH := $(patsubst %/,%,$(dir $(lastword $(MAKEFILE_LIST)))) + ifeq ($(findstring CORE, $(DMBS_BUILD_MODULES)),) + include $(DMBS_MODULE_PATH)/core.mk + endif + +This ensures that the `make help` target is always available. In addition, the +`CORE` module exposes some [commonly used macros and variables](core.md) to +your module. + +## Setting optional variable's defaults + +If a variable is optional, you should provide a default value. Do this via the +`?=` operator of `make`, which sets a variable's value if it has not yet been +set: + + MY_OPTIONAL_VARIABLE ?= some_default_value + +## Sanity checking user input + +Sanity checks are what make DMBS useful. Where possible, validate user input and +convert generated errors to human-friendly messages. This can be achieved by +enforcing that all the declared module mandatory variables have been set by the +user: + + # Sanity-check values of mandatory user-supplied variables + $(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) + +Or even if they are boolean (`Y` or `N`) variables that have an invalid value: + + $(call ERROR_IF_NONBOOL, SOME_BOOL_VARIABLE) + +## Adding targets + +The meat of a DMBS module is the targets, which are run when the user types +`make {target name}` from the command line. These can be as complex or simple +as you like. See the GNU make manual for information on writing make targets. + + example-target: + echo "Your DMBS module works!" + +## And finally, list the PHONYs + +Important in GNU Make is the concept of phony targets; this special directive +tells make that a given target should never be considered a valid file. Listing +phonies ensures that, for example, if your module had a target called `build`, +it would always run when the user types `make build` from the command line, even +if a file called `build` existed in the user project folder. + +You can list module-internal targets here, as well as mark all public targets +via the module header's `DMBS_BUILD_TARGETS` variable. + + # Phony build targets for this module + .PHONY: $(DMBS_BUILD_TARGETS) some-module-internal-target another-internal-target diff --git a/LUFA/Build/DMBS/DMBS/atprogram.md b/LUFA/Build/DMBS/DMBS/atprogram.md index d84cc9860c..ea1b0d9194 100644 --- a/LUFA/Build/DMBS/DMBS/atprogram.md +++ b/LUFA/Build/DMBS/DMBS/atprogram.md @@ -109,3 +109,11 @@ this module. + +## Module Changelog: + +The changes to this module since its initial release are listed below, as of the +DMBS version where the change was made. + +### 20160403 +Initial release. diff --git a/LUFA/Build/DMBS/DMBS/atprogram.mk b/LUFA/Build/DMBS/DMBS/atprogram.mk index 5c433d7dbc..a505275aed 100644 --- a/LUFA/Build/DMBS/DMBS/atprogram.mk +++ b/LUFA/Build/DMBS/DMBS/atprogram.mk @@ -13,11 +13,11 @@ DMBS_BUILD_OPTIONAL_VARS += ATPROGRAM_PROGRAMMER ATPROGRAM_INTERFACE ATPROGRAM DMBS_BUILD_PROVIDED_VARS += DMBS_BUILD_PROVIDED_MACROS += -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)) +# Conditionally import the CORE module of DMBS if it is not already imported +DMBS_MODULE_PATH := $(patsubst %/,%,$(dir $(lastword $(MAKEFILE_LIST)))) +ifeq ($(findstring CORE, $(DMBS_BUILD_MODULES)),) + include $(DMBS_MODULE_PATH)/core.mk +endif # Default values of optionally user-supplied variables ATPROGRAM_PROGRAMMER ?= atmelice diff --git a/LUFA/Build/DMBS/DMBS/avrdude.md b/LUFA/Build/DMBS/DMBS/avrdude.md index 6af6c70fda..d6c71ce6db 100644 --- a/LUFA/Build/DMBS/DMBS/avrdude.md +++ b/LUFA/Build/DMBS/DMBS/avrdude.md @@ -114,3 +114,11 @@ this module. + +## Module Changelog: + +The changes to this module since its initial release are listed below, as of the +DMBS version where the change was made. + +### 20160403 +Initial release. diff --git a/LUFA/Build/DMBS/DMBS/avrdude.mk b/LUFA/Build/DMBS/DMBS/avrdude.mk index 6dba68de45..c4bac8fd0e 100644 --- a/LUFA/Build/DMBS/DMBS/avrdude.mk +++ b/LUFA/Build/DMBS/DMBS/avrdude.mk @@ -13,11 +13,11 @@ DMBS_BUILD_OPTIONAL_VARS += AVRDUDE_PROGRAMMER AVRDUDE_PORT AVRDUDE_FLAGS AVRD DMBS_BUILD_PROVIDED_VARS += DMBS_BUILD_PROVIDED_MACROS += -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)) +# Conditionally import the CORE module of DMBS if it is not already imported +DMBS_MODULE_PATH := $(patsubst %/,%,$(dir $(lastword $(MAKEFILE_LIST)))) +ifeq ($(findstring CORE, $(DMBS_BUILD_MODULES)),) + include $(DMBS_MODULE_PATH)/core.mk +endif # Default values of optionally user-supplied variables AVRDUDE_PROGRAMMER ?= jtagicemkii diff --git a/LUFA/Build/DMBS/DMBS/core.md b/LUFA/Build/DMBS/DMBS/core.md index a6faf74d16..c7c9767904 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. + Current version of this DMBS release, as a ISO 8601 integer (such as `160403` for `2016-04-03`). @@ -109,8 +109,28 @@ this module. - - + + + + + + + + + + + + + +
N/AThis module provides no macros.DMBS_CHECK_VERSIONMacro to check the current DMBS version against the first argument and abort if the required version is newer than the current version.
ERROR_IF_UNSETMacro to check the given makefile variable name passed as the first argument, and abort if it has not been set by any makefile module.
ERROR_IF_EMPTYMacro to check the given makefile variable name passed as the first argument, and abort if it has an empty value.
ERROR_IF_NONBOOLMacro to check the given makefile variable name passed as the first argument, and abort if it has a value other than `Y` or `N`.
+ +## Module Changelog: + +The changes to this module since its initial release are listed below, as of the +DMBS version where the change was made. + +### 20160403 +Initial release. diff --git a/LUFA/Build/DMBS/DMBS/core.mk b/LUFA/Build/DMBS/DMBS/core.mk index 913731e697..7fdb7f229a 100644 --- a/LUFA/Build/DMBS/DMBS/core.mk +++ b/LUFA/Build/DMBS/DMBS/core.mk @@ -11,12 +11,20 @@ DMBS_BUILD_TARGETS += help list_targets list_modules list_mandatory list DMBS_BUILD_MANDATORY_VARS += DMBS_BUILD_OPTIONAL_VARS += DMBS_BUILD_PROVIDED_VARS += DMBS_VERSION -DMBS_BUILD_PROVIDED_MACROS += +DMBS_BUILD_PROVIDED_MACROS += DMBS_CHECK_VERSION ERROR_IF_UNSET ERROR_IF_EMPTY ERROR_IF_NONBOOL SHELL = /bin/sh # Current DMBS release version -DMBS_VERSION = 0.4 +DMBS_VERSION := 20160403 + +# 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))) + +# Macros to use in other modules to check various conditions +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)) # 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)) diff --git a/LUFA/Build/DMBS/DMBS/cppcheck.md b/LUFA/Build/DMBS/DMBS/cppcheck.md index d10e39040d..ec0e38d020 100644 --- a/LUFA/Build/DMBS/DMBS/cppcheck.md +++ b/LUFA/Build/DMBS/DMBS/cppcheck.md @@ -124,3 +124,11 @@ this module. + +## Module Changelog: + +The changes to this module since its initial release are listed below, as of the +DMBS version where the change was made. + +### 20160403 +Initial release. diff --git a/LUFA/Build/DMBS/DMBS/cppcheck.mk b/LUFA/Build/DMBS/DMBS/cppcheck.mk index 70b9ed721e..9b82fc3b08 100644 --- a/LUFA/Build/DMBS/DMBS/cppcheck.mk +++ b/LUFA/Build/DMBS/DMBS/cppcheck.mk @@ -14,11 +14,11 @@ DMBS_BUILD_OPTIONAL_VARS += CPPCHECK_INCLUDES CPPCHECK_EXCLUDES CPPCHECK_MSG_T DMBS_BUILD_PROVIDED_VARS += DMBS_BUILD_PROVIDED_MACROS += -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)) +# Conditionally import the CORE module of DMBS if it is not already imported +DMBS_MODULE_PATH := $(patsubst %/,%,$(dir $(lastword $(MAKEFILE_LIST)))) +ifeq ($(findstring CORE, $(DMBS_BUILD_MODULES)),) + include $(DMBS_MODULE_PATH)/core.mk +endif # Default values of optionally user-supplied variables CPPCHECK_INCLUDES ?= diff --git a/LUFA/Build/DMBS/DMBS/dfu.md b/LUFA/Build/DMBS/DMBS/dfu.md index a674d4e75b..456bbf6f5f 100644 --- a/LUFA/Build/DMBS/DMBS/dfu.md +++ b/LUFA/Build/DMBS/DMBS/dfu.md @@ -112,3 +112,11 @@ this module. + +## Module Changelog: + +The changes to this module since its initial release are listed below, as of the +DMBS version where the change was made. + +### 20160403 +Initial release. diff --git a/LUFA/Build/DMBS/DMBS/dfu.mk b/LUFA/Build/DMBS/DMBS/dfu.mk index 1349e17a8c..1eb22b864f 100644 --- a/LUFA/Build/DMBS/DMBS/dfu.mk +++ b/LUFA/Build/DMBS/DMBS/dfu.mk @@ -13,11 +13,11 @@ DMBS_BUILD_OPTIONAL_VARS += DMBS_BUILD_PROVIDED_VARS += DMBS_BUILD_PROVIDED_MACROS += -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)) +# Conditionally import the CORE module of DMBS if it is not already imported +DMBS_MODULE_PATH := $(patsubst %/,%,$(dir $(lastword $(MAKEFILE_LIST)))) +ifeq ($(findstring CORE, $(DMBS_BUILD_MODULES)),) + include $(DMBS_MODULE_PATH)/core.mk +endif # Sanity-check values of mandatory user-supplied variables $(foreach MANDATORY_VAR, $(DMBS_BUILD_MANDATORY_VARS), $(call ERROR_IF_UNSET, $(MANDATORY_VAR))) diff --git a/LUFA/Build/DMBS/DMBS/doxygen.md b/LUFA/Build/DMBS/DMBS/doxygen.md index 11f6be5e33..837704aca0 100644 --- a/LUFA/Build/DMBS/DMBS/doxygen.md +++ b/LUFA/Build/DMBS/DMBS/doxygen.md @@ -108,3 +108,11 @@ this module. + +## Module Changelog: + +The changes to this module since its initial release are listed below, as of the +DMBS version where the change was made. + +### 20160403 +Initial release. diff --git a/LUFA/Build/DMBS/DMBS/doxygen.mk b/LUFA/Build/DMBS/DMBS/doxygen.mk index 73bc7ff401..45639ad156 100644 --- a/LUFA/Build/DMBS/DMBS/doxygen.mk +++ b/LUFA/Build/DMBS/DMBS/doxygen.mk @@ -13,11 +13,11 @@ DMBS_BUILD_OPTIONAL_VARS += DOXYGEN_CONF DOXYGEN_FAIL_ON_WARNING DOXYGEN_OVERR DMBS_BUILD_PROVIDED_VARS += DMBS_BUILD_PROVIDED_MACROS += -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)) +# Conditionally import the CORE module of DMBS if it is not already imported +DMBS_MODULE_PATH := $(patsubst %/,%,$(dir $(lastword $(MAKEFILE_LIST)))) +ifeq ($(findstring CORE, $(DMBS_BUILD_MODULES)),) + include $(DMBS_MODULE_PATH)/core.mk +endif # Default values of optionally user-supplied variables DOXYGEN_CONF ?= doxyfile @@ -59,5 +59,4 @@ 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: $(DMBS_BUILD_TARGETS) + diff --git a/LUFA/Build/DMBS/DMBS/gcc.md b/LUFA/Build/DMBS/DMBS/gcc.md index d25085fa67..f516da5ff1 100644 --- a/LUFA/Build/DMBS/DMBS/gcc.md +++ b/LUFA/Build/DMBS/DMBS/gcc.md @@ -194,3 +194,11 @@ this module. + +## Module Changelog: + +The changes to this module since its initial release are listed below, as of the +DMBS version where the change was made. + +### 20160403 +Initial release. diff --git a/LUFA/Build/DMBS/DMBS/gcc.mk b/LUFA/Build/DMBS/DMBS/gcc.mk index c7299edff8..e33c9c0843 100644 --- a/LUFA/Build/DMBS/DMBS/gcc.mk +++ b/LUFA/Build/DMBS/DMBS/gcc.mk @@ -13,11 +13,11 @@ DMBS_BUILD_OPTIONAL_VARS += BOARD OPTIMIZATION C_STANDARD CPP_STANDARD F_CPU C DMBS_BUILD_PROVIDED_VARS += DMBS_BUILD_PROVIDED_MACROS += -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)) +# Conditionally import the CORE module of DMBS if it is not already imported +DMBS_MODULE_PATH := $(patsubst %/,%,$(dir $(lastword $(MAKEFILE_LIST)))) +ifeq ($(findstring CORE, $(DMBS_BUILD_MODULES)),) + include $(DMBS_MODULE_PATH)/core.mk +endif # Default values of optionally user-supplied variables COMPILER_PATH ?= diff --git a/LUFA/Build/DMBS/DMBS/hid.md b/LUFA/Build/DMBS/DMBS/hid.md index 691a422bab..b2dfbf7136 100644 --- a/LUFA/Build/DMBS/DMBS/hid.md +++ b/LUFA/Build/DMBS/DMBS/hid.md @@ -119,3 +119,11 @@ this module. + +## Module Changelog: + +The changes to this module since its initial release are listed below, as of the +DMBS version where the change was made. + +### 20160403 +Initial release. diff --git a/LUFA/Build/DMBS/DMBS/hid.mk b/LUFA/Build/DMBS/DMBS/hid.mk index 3575f37773..7a0ad9d0e6 100644 --- a/LUFA/Build/DMBS/DMBS/hid.mk +++ b/LUFA/Build/DMBS/DMBS/hid.mk @@ -13,13 +13,11 @@ DMBS_BUILD_OPTIONAL_VARS += DMBS_BUILD_PROVIDED_VARS += DMBS_BUILD_PROVIDED_MACROS += -SHELL = /bin/sh - +# Conditionally import the CORE module of DMBS if it is not already imported DMBS_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)) +ifeq ($(findstring CORE, $(DMBS_BUILD_MODULES)),) + include $(DMBS_MODULE_PATH)/core.mk +endif # Sanity-check values of mandatory user-supplied variables $(foreach MANDATORY_VAR, $(DMBS_BUILD_MANDATORY_VARS), $(call ERROR_IF_UNSET, $(MANDATORY_VAR))) diff --git a/LUFA/Build/DMBS/Readme.md b/LUFA/Build/DMBS/Readme.md index 05125ce5b6..f4f7a5f15c 100644 --- a/LUFA/Build/DMBS/Readme.md +++ b/LUFA/Build/DMBS/Readme.md @@ -35,7 +35,8 @@ are included via a GNU Make `include` directive. While the DMBS `core` module is always required, you can pick and choose what other modules you wish to add to your user project. -[See here for the documentation on the individual modules provided by DMBS.](DMBS/Modules.md) +[See here for the documentation on the individual modules provided by DMBS.](DMBS/ModulesOverview.md) +If you're interested in writing your own DMBS module(s), [see here.](DMBS/WritingYourOwnModules.md) Here's an example user makefile: @@ -72,6 +73,21 @@ As modules are added, you can get a list of available targets by simply typing as well as mandatory and optional variables and exposed variables and macros. +Distribution +---------------- + +You can embed DMBS in your project any way you like - some options are: +1. A git submodule +2. A source tarball +3. A manually copied extracted archive + +The intention of DMBS is that users can just import it from whatever source +they like. If your project needs to extend the existing modules in an unusual +manner, or if you want to provide your own modules, you can include them in +your project repository (or submit a patch to DMBS if your module is generic +enough to warrant wide use). + + License ---------------- diff --git a/LUFA/Build/DMBS/Template/makefile b/LUFA/Build/DMBS/Template/makefile index ba60ab9c2e..d88292388c 100644 --- a/LUFA/Build/DMBS/Template/makefile +++ b/LUFA/Build/DMBS/Template/makefile @@ -20,18 +20,13 @@ LD_FLAGS = # Default target all: -# Include LUFA-specific DMBS extension modules -DMBS_LUFA_PATH ?= $(LUFA_PATH)/Build/LUFA -include $(DMBS_LUFA_PATH)/lufa-sources.mk -include $(DMBS_LUFA_PATH)/lufa-gcc.mk - -# Include common DMBS build system modules -DMBS_PATH ?= $(LUFA_PATH)/Build/DMBS/DMBS +# Include DMBS build script makefiles +DMBS_PATH ?= ../DMBS include $(DMBS_PATH)/core.mk +include $(DMBS_PATH)/gcc.mk include $(DMBS_PATH)/cppcheck.mk include $(DMBS_PATH)/doxygen.mk include $(DMBS_PATH)/dfu.mk -include $(DMBS_PATH)/gcc.mk include $(DMBS_PATH)/hid.mk include $(DMBS_PATH)/avrdude.mk include $(DMBS_PATH)/atprogram.mk