1 # Default platform if no platform specified
4 # Standalone Mode info (path depends if make is called at top or from armsrc)
5 # Guard Makefile.hal against implicit rules: (with % to avoid being first goal)
7 -include armsrc/Standalone/Makefile.hal
8 -include Standalone/Makefile.hal
9 ifndef DEFAULT_STANDALONE
10 $(error Could not find armsrc/Standalone/Makefile.hal)
13 define KNOWN_PLATFORM_DEFINITIONS
17 +============================================+
18 | PLATFORM | DESCRIPTION |
19 +============================================+
20 | PM3RDV4 (def) | Proxmark3 rdv4 |
21 +--------------------------------------------+
22 | PM3OTHER | Proxmark3 Generic target |
23 +--------------------------------------------+
25 +============================================+
26 | PLATFORM_EXTRAS | DESCRIPTION |
27 +============================================+
28 | BTADDON | Proxmark3 rdv4 BT add-on |
29 +--------------------------------------------+
33 define HELP_DEFINITIONS
34 Options to define platform, platform extras and/or standalone mode:
35 (1) Run make with your PLATFORM, PLATFORM_EXTRAS and/or STANDALONE choices as follows:
36 make PLATFORM=PM3OTHER STANDALONE=$(HELP_EXAMPLE_STANDALONE)
38 (2) Save a file called Makefile.platform with contents, e.g.:
41 or if you have a Proxmark 3 RDV4 with the BT add-on:
43 PLATFORM_EXTRAS=BTADDON
45 Default standalone mode is $(DEFAULT_STANDALONE).
46 To disable standalone modes, set explicitly an empty STANDALONE:
50 define KNOWN_DEFINITIONS
51 $(KNOWN_PLATFORM_DEFINITIONS)
52 $(KNOWN_STANDALONE_DEFINITIONS)
56 PLTNAME = Unknown Platform
58 ifeq ($(PLATFORM),PM3RDV4)
59 PLATFORM_DEFS = -DWITH_SMARTCARD -DWITH_FLASH -DRDV4
60 PLTNAME = Proxmark3 rdv4
61 else ifeq ($(PLATFORM),PM3OTHER)
62 PLTNAME = Proxmark3 Generic target
64 $(error Invalid or empty PLATFORM: $(PLATFORM). $(KNOWN_DEFINITIONS))
67 # parsing additional PLATFORM_EXTRAS tokens
68 PLATFORM_EXTRAS_TMP:=$(PLATFORM_EXTRAS)
69 ifneq (,$(findstring BTADDON,$(PLATFORM_EXTRAS_TMP)))
70 PLATFORM_DEFS += -DWITH_FPC_USART_HOST
71 PLATFORM_EXTRAS_TMP := $(strip $(filter-out BTADDON,$(PLATFORM_EXTRAS_TMP)))
73 ifneq (,$(findstring FPC_USART_DEV,$(PLATFORM_EXTRAS_TMP)))
74 PLATFORM_DEFS += -DWITH_FPC_USART_DEV
75 PLATFORM_EXTRAS_TMP := $(strip $(filter-out FPC_USART_DEV,$(PLATFORM_EXTRAS_TMP)))
77 ifneq (,$(PLATFORM_EXTRAS_TMP))
78 $(error Unknown PLATFORM_EXTRAS token(s): $(PLATFORM_EXTRAS_TMP))
100 ifneq ($(strip $(filter $(PLATFORM_DEFS),$(STANDALONE_REQ_DEFS))),$(strip $(STANDALONE_REQ_DEFS)))
101 $(error Chosen Standalone mode $(STANDALONE) requires $(strip $(STANDALONE_REQ_DEFS)), unsupported by $(PLTNAME))
103 PLATFORM_DEFS+=$(STANDALONE_PLATFORM_DEFS)
105 $(info $(findstring WITH_STANDALONE_*,$(PLATFORM_DEFS)))
108 #PLATFORM_DEFS += -DWITH_LCD
111 # Add flags dependencies :
113 # WITH_FPC_USART_* needs WITH_FPC_USART :
114 ifneq (,$(findstring WITH_FPC_USART_,$(PLATFORM_DEFS)))
115 PLATFORM_DEFS += -DWITH_FPC_USART
118 PLATFORM_DEFS_INFO = $(strip $(filter-out STANDALONE%, $(subst -DWITH_,,$(PLATFORM_DEFS))))
119 PLATFORM_DEFS_INFO_STANDALONE = $(strip $(subst STANDALONE_,, $(filter STANDALONE%, $(subst -DWITH_,,$(PLATFORM_DEFS)))))
121 # Check that only one Standalone mode has been chosen
122 ifneq (,$(word 2, $(PLATFORM_DEFS_INFO_STANDALONE)))
123 $(error You must choose only one Standalone mode!: $(PLATFORM_DEFS_INFO_STANDALONE))
126 PLATFORM_EXTRAS_INFO = $(PLATFORM_EXTRAS)
128 ifeq (,$(PLATFORM_EXTRAS_INFO))
129 PLATFORM_EXTRAS_INFO = No extra selected
132 # info when no standalone mode
133 ifeq (,$(PLATFORM_DEFS_INFO_STANDALONE))
134 PLATFORM_DEFS_INFO_STANDALONE = No standalone mode selected
137 PLATFORM_CHANGED=false
138 ifneq ($(PLATFORM), $(CACHED_PLATFORM))
139 PLATFORM_CHANGED=true
140 else ifneq ($(PLATFORM_EXTRAS), $(CACHED_PLATFORM_EXTRAS))
141 PLATFORM_CHANGED=true
142 else ifneq ($(PLATFORM_DEFS), $(CACHED_PLATFORM_DEFS))
143 PLATFORM_CHANGED=true
147 export PLATFORM_EXTRAS
148 export PLATFORM_EXTRAS_INFO
151 export PLATFORM_DEFS_INFO
152 export PLATFORM_DEFS_INFO_STANDALONE
153 export PLATFORM_CHANGED
155 $(info ===================================================================)
156 $(info Platform name: $(PLTNAME))
157 $(info PLATFORM: $(PLATFORM))
158 $(info Platform extras: $(PLATFORM_EXTRAS_INFO))
159 $(info Included options: $(PLATFORM_DEFS_INFO))
160 $(info Standalone mode: $(PLATFORM_DEFS_INFO_STANDALONE))
161 $(info ===================================================================)