3 # Copyright (C) Dean Camera, 2012.
\r
5 # dean [at] fourwalledcubicle [dot] com
\r
9 LUFA_BUILD_MODULES += CORE
\r
10 LUFA_BUILD_TARGETS += help list_targets list_modules list_mandatory list_optional list_provided list_macros
\r
11 LUFA_BUILD_MANDATORY_VARS +=
\r
12 LUFA_BUILD_OPTIONAL_VARS +=
\r
13 LUFA_BUILD_PROVIDED_VARS +=
\r
14 LUFA_BUILD_PROVIDED_MACROS +=
\r
16 # -----------------------------------------------------------------------------
\r
17 # LUFA Core Build System Makefile Module.
\r
18 # -----------------------------------------------------------------------------
\r
20 # Provides a set of core build targets for the LUFA build system
\r
21 # -----------------------------------------------------------------------------
\r
24 # help - Build system help
\r
25 # list_targets - List all build targets
\r
26 # list_modules - List all build modules
\r
27 # list_mandatory - List all mandatory make variables required by
\r
28 # the included build modules of the application
\r
29 # list_optional - List all optional make variables required by
\r
30 # the included build modules of the application
\r
31 # list_provided - List all provided make variables from the
\r
32 # included build modules of the application
\r
33 # list_macros - List all provided make macros from the
\r
34 # included build modules of the application
\r
36 # MANDATORY PARAMETERS:
\r
40 # OPTIONAL PARAMETERS:
\r
44 # PROVIDED VARIABLES:
\r
52 # -----------------------------------------------------------------------------
\r
56 # Build sorted and filtered lists of the included build module data
\r
57 SORTED_LUFA_BUILD_MODULES = $(sort $(LUFA_BUILD_MODULES))
\r
58 SORTED_LUFA_BUILD_TARGETS = $(sort $(LUFA_BUILD_TARGETS))
\r
59 SORTED_LUFA_MANDATORY_VARS = $(sort $(LUFA_BUILD_MANDATORY_VARS))
\r
60 SORTED_LUFA_OPTIONAL_VARS = $(filter-out $(SORTED_LUFA_MANDATORY_VARS), $(sort $(LUFA_BUILD_OPTIONAL_VARS)))
\r
61 SORTED_LUFA_PROVIDED_VARS = $(sort $(LUFA_BUILD_PROVIDED_VARS))
\r
62 SORTED_LUFA_PROVIDED_MACROS = $(sort $(LUFA_BUILD_PROVIDED_MACROS))
\r
64 # Create printable versions of the sorted build module data (use "(None)" when no data is available)
\r
65 PRINTABLE_LUFA_BUILD_MODULES = $(if $(strip $(SORTED_LUFA_BUILD_MODULES)), $(SORTED_LUFA_BUILD_MODULES), (None))
\r
66 PRINTABLE_LUFA_BUILD_TARGETS = $(if $(strip $(SORTED_LUFA_BUILD_TARGETS)), $(SORTED_LUFA_BUILD_TARGETS), (None))
\r
67 PRINTABLE_LUFA_MANDATORY_VARS = $(if $(strip $(SORTED_LUFA_MANDATORY_VARS)), $(SORTED_LUFA_MANDATORY_VARS), (None))
\r
68 PRINTABLE_LUFA_OPTIONAL_VARS = $(if $(strip $(SORTED_LUFA_OPTIONAL_VARS)), $(SORTED_LUFA_OPTIONAL_VARS), (None))
\r
69 PRINTABLE_LUFA_PROVIDED_VARS = $(if $(strip $(SORTED_LUFA_PROVIDED_VARS)), $(SORTED_LUFA_PROVIDED_VARS), (None))
\r
70 PRINTABLE_LUFA_PROVIDED_MACROS = $(if $(strip $(SORTED_LUFA_PROVIDED_MACROS)), $(SORTED_LUFA_PROVIDED_MACROS), (None))
\r
73 @echo "==================================================================="
\r
74 @echo " LUFA Build System 2.0 "
\r
75 @echo " (C) Dean Camera, 2012 { dean @ fourwalledcubicle . com } "
\r
76 @echo "==================================================================="
\r
77 @echo "DESCRIPTION: "
\r
78 @echo " This build system is a set of makefile modules for (GNU) Make, to "
\r
79 @echo " provide a simple system for building LUFA powered applications. "
\r
80 @echo " Each makefile module can be included from within a user makefile, "
\r
81 @echo " to expose the build rules documented in the comments at the top of"
\r
82 @echo " each build module. "
\r
85 @echo " To execute a rule, define all variables indicated in the desired "
\r
86 @echo " module as a required parameter before including the build module "
\r
87 @echo " in your project makefile. Parameters marked as optional will "
\r
88 @echo " assume a default value in the modules if not user-assigned. "
\r
90 @echo " By default the target output shows both a friendly summary, as "
\r
91 @echo " well as the actual invoked command. To suppress the output of the "
\r
92 @echo " invoked commands and show only the friendly command output, run "
\r
93 @echo " make with the \"-s\" switch added before the target(s). "
\r
94 @echo "==================================================================="
\r
96 @echo " Currently used build system modules in this application: "
\r
98 @printf " %b" "$(PRINTABLE_LUFA_BUILD_MODULES:%= - %\n)"
\r
101 @echo " Currently available build targets in this application: "
\r
103 @printf " %b" "$(PRINTABLE_LUFA_BUILD_TARGETS:%= - %\n)"
\r
106 @echo " Mandatory variables required by the selected build Modules: "
\r
108 @printf " %b" "$(PRINTABLE_LUFA_MANDATORY_VARS:%= - %\n)"
\r
111 @echo " Optional variables required by the selected build Modules: "
\r
113 @printf " %b" "$(PRINTABLE_LUFA_OPTIONAL_VARS:%= - %\n)"
\r
116 @echo " Variables provided by the selected build Modules: "
\r
118 @printf " %b" "$(PRINTABLE_LUFA_PROVIDED_VARS:%= - %\n)"
\r
121 @echo " Macros provided by the selected build Modules: "
\r
123 @printf " %b" "$(PRINTABLE_LUFA_PROVIDED_MACROS:%= - %\n)"
\r
125 @echo "==================================================================="
\r
126 @echo " The LUFA BuildSystem 2.0 - Powered By Unicorns (tm) "
\r
127 @echo "==================================================================="
\r
130 @echo Currently Used Build System Modules: $(PRINTABLE_LUFA_BUILD_MODULES)
\r
133 @echo Currently Available Build Targets: $(PRINTABLE_LUFA_BUILD_TARGETS)
\r
136 @echo Mandatory Variables for Included Modules: $(PRINTABLE_LUFA_MANDATORY_VARS)
\r
139 @echo Optional Variables for Included Modules: $(PRINTABLE_LUFA_OPTIONAL_VARS)
\r
142 @echo Variables Provided by the Included Modules: $(PRINTABLE_LUFA_PROVIDED_VARS)
\r
145 @echo Macros Provided by the Included Modules: $(PRINTABLE_LUFA_PROVIDED_MACROS)
\r
147 # Disable default in-built make rules (those that are needed are explicitly
\r
148 # defined, and doing so has performance benefits when recursively building)
\r
151 # Phony build targets for this module
\r
152 .PHONY: help list_modules list_targets list_mandatory list_optional list_provided list_macros
\r