mirror of
https://github.com/RfidResearchGroup/proxmark3.git
synced 2025-01-07 00:28:07 +08:00
d19754567d
* .h include only the strict minimum for their own parsing * this forces all files to include explicitment their needs and not count on far streched dependencies * this helps Makefile to rebuild only the minimum * according to this rule, most standalone .h are now gone * big app.h is gone * remove seldom __cplusplus, if c++ happens, everything will have to be done properly anyway * all unrequired include were removed * split common/ into common/ (client+arm) and common_arm/ (os+bootloader) * bring zlib to common/ * bring stuff not really/not yet used in common back to armsrc/ or client/ * bring liblua into client/ * bring uart into client/ * move some portions of code around (dbprint, protocols,...) * rename unused files into *_disabled.[ch] to make it explicit * rename soft Uarts between 14a, 14b and iclass, so a standalone could use several without clash * remove PrintAndLogDevice * move deprecated-hid-flasher from client to tools * Makefiles * treat deps in armsrc/ as in client/ * client: stop on warning (-Werror), same as for armsrc/ Tested on: * all standalone modes * Linux
183 lines
5.9 KiB
Text
183 lines
5.9 KiB
Text
# Default platform if no platform specified
|
|
PLATFORM?=PM3RDV4
|
|
|
|
# Standalone Mode info (path depends if make is called at top or from armsrc)
|
|
# Guard Makefile.hal against implicit rules: (with % to avoid being first goal)
|
|
%/Makefile.hal: ;
|
|
-include armsrc/Standalone/Makefile.hal
|
|
-include Standalone/Makefile.hal
|
|
ifndef DEFAULT_STANDALONE
|
|
$(error Could not find armsrc/Standalone/Makefile.hal)
|
|
endif
|
|
|
|
define KNOWN_PLATFORM_DEFINITIONS
|
|
|
|
Known definitions:
|
|
|
|
+==========================================================+
|
|
| PLATFORM | DESCRIPTION |
|
|
+==========================================================+
|
|
| PM3RDV4 (def) | Proxmark3 rdv4 with AT91SAM7S512 |
|
|
+----------------------------------------------------------+
|
|
| PM3EVO | Proxmark3 EVO with AT91SAM7S512 |
|
|
+----------------------------------------------------------+
|
|
| PM3EASY | Proxmark3 rdv3 Easy with AT91SAM7S256 |
|
|
+----------------------------------------------------------+
|
|
| PM3RDV2 | Proxmark3 rdv2 with AT91SAM7S512 |
|
|
+----------------------------------------------------------+
|
|
| PM3OLD256 | Proxmark3 V1 with AT91SAM7S256 |
|
|
+----------------------------------------------------------+
|
|
| PM3OLD512 | Proxmark3 V1 with AT91SAM7S512 |
|
|
+----------------------------------------------------------+
|
|
|
|
+==========================================================+
|
|
| PLATFORM_EXTRAS | DESCRIPTION |
|
|
+==========================================================+
|
|
| BTADDON | Proxmark3 rdv4 BT add-on |
|
|
+----------------------------------------------------------+
|
|
|
|
endef
|
|
|
|
define HELP_DEFINITIONS
|
|
Options to define platform, platform extras and/or standalone mode:
|
|
(1) Run make with PLATFORM, PLATFORM_EXTRAS and/or STANDALONE as follows:
|
|
make PLATFORM=PM3EASY STANDALONE=$(HELP_EXAMPLE_STANDALONE)
|
|
|
|
(2) Save a file called Makefile.platform with contents:
|
|
PLATFORM=PM3EASY
|
|
|
|
or if you have a Proxmark 3 RDV4 with the BT add-on:
|
|
PLATFORM=PM3RDV4
|
|
PLATFORM_EXTRAS=BTADDON
|
|
|
|
Default standalone mode is $(DEFAULT_STANDALONE).
|
|
To disable standalone modes, set explicitly an empty STANDALONE:
|
|
STANDALONE=
|
|
endef
|
|
|
|
define KNOWN_DEFINITIONS
|
|
$(KNOWN_PLATFORM_DEFINITIONS)
|
|
$(KNOWN_STANDALONE_DEFINITIONS)
|
|
$(HELP_DEFINITIONS)
|
|
endef
|
|
|
|
PLTNAME = Unknown Platform
|
|
|
|
ifeq ($(PLATFORM),PM3RDV4)
|
|
MCU = AT91SAM7S512
|
|
PLATFORM_DEFS = -DWITH_SMARTCARD -DWITH_FLASH
|
|
PLTNAME = Proxmark3 rdv4
|
|
else ifeq ($(PLATFORM),PM3EVO)
|
|
MCU = AT91SAM7S512
|
|
PLTNAME = Proxmark3 EVO
|
|
else ifeq ($(PLATFORM),PM3EASY)
|
|
MCU = AT91SAM7S256
|
|
PLTNAME = Proxmark3 rdv3 Easy
|
|
else ifeq ($(PLATFORM),PM3RDV2)
|
|
MCU = AT91SAM7S512
|
|
PLTNAME = Proxmark3 rdv2
|
|
else ifeq ($(PLATFORM),PM3OLD256)
|
|
MCU = AT91SAM7S256
|
|
PLTNAME = Proxmark3 V1 with AT91SAM7S256
|
|
else ifeq ($(PLATFORM),PM3OLD512)
|
|
MCU = AT91SAM7S512
|
|
PLTNAME = Proxmark3 V1 with AT91SAM7S512
|
|
else
|
|
$(error Invalid or empty PLATFORM: $(PLATFORM). $(KNOWN_DEFINITIONS))
|
|
endif
|
|
|
|
# parsing additional PLATFORM_EXTRAS tokens
|
|
PLATFORM_EXTRAS_TMP:=$(PLATFORM_EXTRAS)
|
|
ifneq (,$(findstring BTADDON,$(PLATFORM_EXTRAS_TMP)))
|
|
PLATFORM_DEFS += -DWITH_FPC_USART_HOST
|
|
PLATFORM_EXTRAS_TMP := $(strip $(filter-out BTADDON,$(PLATFORM_EXTRAS_TMP)))
|
|
endif
|
|
ifneq (,$(findstring FPC_USART_DEV,$(PLATFORM_EXTRAS_TMP)))
|
|
PLATFORM_DEFS += -DWITH_FPC_USART_DEV
|
|
PLATFORM_EXTRAS_TMP := $(strip $(filter-out FPC_USART_DEV,$(PLATFORM_EXTRAS_TMP)))
|
|
endif
|
|
ifneq (,$(PLATFORM_EXTRAS_TMP))
|
|
$(error Unknown PLATFORM_EXTRAS token(s): $(PLATFORM_EXTRAS_TMP))
|
|
endif
|
|
|
|
# common LF support
|
|
PLATFORM_DEFS += \
|
|
-DWITH_LF \
|
|
-DWITH_HITAG
|
|
|
|
# common HF support
|
|
PLATFORM_DEFS += \
|
|
-DWITH_ISO15693 \
|
|
-DWITH_LEGICRF \
|
|
-DWITH_ISO14443b \
|
|
-DWITH_ISO14443a \
|
|
-DWITH_ICLASS \
|
|
-DWITH_FELICA \
|
|
-DWITH_NFCBARCODE \
|
|
-DWITH_HFSNIFF
|
|
|
|
|
|
# Standalone mode
|
|
ifneq ($(strip $(filter $(PLATFORM_DEFS),$(STANDALONE_REQ_DEFS))),$(strip $(STANDALONE_REQ_DEFS)))
|
|
$(error Chosen Standalone mode $(STANDALONE) requires $(strip $(STANDALONE_REQ_DEFS)), unsupported by $(PLTNAME))
|
|
endif
|
|
PLATFORM_DEFS+=$(STANDALONE_PLATFORM_DEFS)
|
|
|
|
$(info $(findstring WITH_STANDALONE_*,$(PLATFORM_DEFS)))
|
|
|
|
# Misc
|
|
#PLATFORM_DEFS += -DWITH_LCD
|
|
|
|
|
|
# Add flags dependencies :
|
|
|
|
# WITH_FPC_USART_* needs WITH_FPC_USART :
|
|
ifneq (,$(findstring WITH_FPC_USART_,$(PLATFORM_DEFS)))
|
|
PLATFORM_DEFS += -DWITH_FPC_USART
|
|
endif
|
|
|
|
PLATFORM_DEFS_INFO = $(strip $(filter-out STANDALONE%, $(subst -DWITH_,,$(PLATFORM_DEFS))))
|
|
PLATFORM_DEFS_INFO_STANDALONE = $(strip $(subst STANDALONE_,, $(filter STANDALONE%, $(subst -DWITH_,,$(PLATFORM_DEFS)))))
|
|
|
|
# Check that only one Standalone mode has been chosen
|
|
ifneq (,$(word 2, $(PLATFORM_DEFS_INFO_STANDALONE)))
|
|
$(error You must choose only one Standalone mode!: $(PLATFORM_DEFS_INFO_STANDALONE))
|
|
endif
|
|
|
|
PLATFORM_EXTRAS_INFO = $(PLATFORM_EXTRAS)
|
|
# info when no extra
|
|
ifeq (,$(PLATFORM_EXTRAS_INFO))
|
|
PLATFORM_EXTRAS_INFO = No extra selected
|
|
endif
|
|
|
|
# info when no standalone mode
|
|
ifeq (,$(PLATFORM_DEFS_INFO_STANDALONE))
|
|
PLATFORM_DEFS_INFO_STANDALONE = No standalone mode selected
|
|
endif
|
|
|
|
PLATFORM_CHANGED=false
|
|
ifneq ($(PLATFORM), $(CACHED_PLATFORM))
|
|
PLATFORM_CHANGED=true
|
|
else ifneq ($(PLATFORM_EXTRAS), $(CACHED_PLATFORM_EXTRAS))
|
|
PLATFORM_CHANGED=true
|
|
else ifneq ($(PLATFORM_DEFS), $(CACHED_PLATFORM_DEFS))
|
|
PLATFORM_CHANGED=true
|
|
endif
|
|
|
|
export PLATFORM
|
|
export PLATFORM_EXTRAS
|
|
export PLATFORM_EXTRAS_INFO
|
|
export PLTNAME
|
|
export MCU
|
|
export PLATFORM_DEFS
|
|
export PLATFORM_DEFS_INFO
|
|
export PLATFORM_DEFS_INFO_STANDALONE
|
|
export PLATFORM_CHANGED
|
|
|
|
$(info ===================================================================)
|
|
$(info Platform name: $(PLTNAME))
|
|
$(info PLATFORM: $(PLATFORM))
|
|
$(info Platform extras: $(PLATFORM_EXTRAS_INFO))
|
|
$(info Included options: $(PLATFORM_DEFS_INFO))
|
|
$(info Standalone mode: $(PLATFORM_DEFS_INFO_STANDALONE))
|
|
$(info ===================================================================)
|