check for sim module fw file
[RRG-proxmark3.git] / common_arm / Makefile.hal
blob455672e5f058deb3dd026bb8f1efd559c3c82366
1 # Default platform if no platform specified
2 PLATFORM?=PM3RDV4
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)
6 %/Makefile.hal: ;
7 -include armsrc/Standalone/Makefile.hal
8 -include Standalone/Makefile.hal
9 ifndef DEFAULT_STANDALONE
10 $(error Could not find armsrc/Standalone/Makefile.hal)
11 endif
13 define KNOWN_PLATFORM_DEFINITIONS
15 Known 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 +--------------------------------------------+
31 endef
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.:
39 PLATFORM=PM3OTHER
41 or if you have a Proxmark 3 RDV4 with the BT add-on:
42 PLATFORM=PM3RDV4
43 PLATFORM_EXTRAS=BTADDON
45 Default standalone mode is $(DEFAULT_STANDALONE).
46 To disable standalone modes, set explicitly an empty STANDALONE:
47 STANDALONE=
48 endef
50 define KNOWN_DEFINITIONS
51 $(KNOWN_PLATFORM_DEFINITIONS)
52 $(KNOWN_STANDALONE_DEFINITIONS)
53 $(HELP_DEFINITIONS)
54 endef
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
63 else
64     $(error Invalid or empty PLATFORM: $(PLATFORM). $(KNOWN_DEFINITIONS))
65 endif
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)))
72 endif
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)))
76 endif
77 ifneq (,$(PLATFORM_EXTRAS_TMP))
78     $(error Unknown PLATFORM_EXTRAS token(s): $(PLATFORM_EXTRAS_TMP))
79 endif
81 # common LF support
82 PLATFORM_DEFS += \
83     -DWITH_LF \
84     -DWITH_HITAG
86 # common HF support
87 PLATFORM_DEFS += \
88     -DWITH_ISO15693 \
89     -DWITH_LEGICRF \
90     -DWITH_ISO14443b \
91     -DWITH_ISO14443a \
92     -DWITH_ICLASS \
93     -DWITH_FELICA \
94     -DWITH_NFCBARCODE \
95     -DWITH_HFSNIFF \
96     -DWITH_HFPLOT
99 # Standalone mode
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))
102 endif
103 PLATFORM_DEFS+=$(STANDALONE_PLATFORM_DEFS)
105 $(info $(findstring WITH_STANDALONE_*,$(PLATFORM_DEFS)))
107 # Misc
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
116 endif
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))
124 endif
126 PLATFORM_EXTRAS_INFO = $(PLATFORM_EXTRAS)
127 # info when no extra
128 ifeq (,$(PLATFORM_EXTRAS_INFO))
129     PLATFORM_EXTRAS_INFO = No extra selected
130 endif
132 # info when no standalone mode
133 ifeq (,$(PLATFORM_DEFS_INFO_STANDALONE))
134     PLATFORM_DEFS_INFO_STANDALONE = No standalone mode selected
135 endif
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
144 endif
146 export PLATFORM
147 export PLATFORM_EXTRAS
148 export PLATFORM_EXTRAS_INFO
149 export PLTNAME
150 export PLATFORM_DEFS
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 ===================================================================)