Replace the LUFA build system with DMBS.
[pub/lufa.git] / LUFA / Build / DMBS / DMBS / core.md
1 DMBS - Dean's Makefile Build System
2 ===================================
3
4
5 Module: CORE
6 ------------
7
8 The CORE module provides the core DMBS infrastructure used by other DMBS
9 modules, and must always be imported. Additionally, this module provides the
10 help system for DMBS.
11
12 ## Importing This Module into a Makefile:
13
14 To use this module in your application makefile, add the following code to your
15 makefile:
16
17 include $(DMBS_PATH)/core.mk
18
19 ## Prerequisites:
20
21 None.
22
23 ## Build Targets:
24
25 The following targets are supported by this module:
26
27 <table>
28 <tbody>
29 <tr>
30 <td>help</td>
31 <td>Show help for the current project, including a list of all available targets, variables and macros from the imported modules.</td>
32 </tr>
33 <tr>
34 <td>list_targets</td>
35 <td>Show a list of all build targets from the imported modules.</td>
36 </tr>
37 <tr>
38 <td>list_modules</td>
39 <td>Show a list of all imported modules.</td>
40 </tr>
41 <tr>
42 <td>list_mandatory</td>
43 <td>Show a list of all mandatory variables from the imported modules.</td>
44 </tr>
45 <tr>
46 <td>list_optional</td>
47 <td>Show a list of all optional variables from the imported modules.</td>
48 </tr>
49 <tr>
50 <td>list_provided</td>
51 <td>Show a list of all variables provided by the imported modules.</td>
52 </tr>
53 <tr>
54 <td>list_macros</td>
55 <td>Show a list of all macros provided by the imported modules.</td>
56 </tr>
57 </tbody>
58 </table>
59
60 ## Mandatory Variables:
61
62 The following variables must be defined (with a `NAME = VALUE` syntax, one
63 variable per line) in the user makefile to be able to use this module:
64
65 <table>
66 <tbody>
67 <tr>
68 <td>N/A</td>
69 <td>This module has no mandatory variables.</td>
70 </tr>
71 </tbody>
72 </table>
73
74 ## Optional Variables:
75
76 The following variables may be defined (with a `NAME = VALUE` syntax, one
77 variable per line) in the user makefile. If not specified, a default value will
78 be assumed.
79
80 <table>
81 <tbody>
82 <tr>
83 <td>N/A</td>
84 <td>This module has no optional variables.</td>
85 </tr>
86 </tbody>
87 </table>
88
89 ## Provided Variables:
90
91 The following variables may be referenced in a user makefile (via `$(NAME)`
92 syntax) if desired, as they are provided by this module.
93
94 <table>
95 <tbody>
96 <tr>
97 <td>DMBS_VERSION</td>
98 <td>Current version of this DMBS release, as a ISO 8601 integer (such as `160403` for `2016-04-03`).</td>
99 </tr>
100 </tbody>
101 </table>
102
103 ## Provided Macros:
104
105 The following macros may be referenced in a user makefile (via
106 `$(call NAME, ARG1, ARG2, ...)` syntax) if desired, as they are provided by
107 this module.
108
109 <table>
110 <tbody>
111 <tr>
112 <td>DMBS_CHECK_VERSION</td>
113 <td>Macro to check the current DMBS version against the first argument and abort if the required version is newer than the current version.</td>
114 </tr>
115 <tr>
116 <td>ERROR_IF_UNSET</td>
117 <td>Macro to check the given makefile variable name passed as the first argument, and abort if it has not been set by any makefile module.</td>
118 </tr>
119 <tr>
120 <td>ERROR_IF_EMPTY</td>
121 <td>Macro to check the given makefile variable name passed as the first argument, and abort if it has an empty value.</td>
122 </tr>
123 <tr>
124 <td>ERROR_IF_NONBOOL</td>
125 <td>Macro to check the given makefile variable name passed as the first argument, and abort if it has a value other than `Y` or `N`.</td>
126 </tr>
127 </tbody>
128 </table>
129
130 ## Module Changelog:
131
132 The changes to this module since its initial release are listed below, as of the
133 DMBS version where the change was made.
134
135 ### 20160403
136 Initial release.