# Default platform if no platform specified PLATFORM?=PM3RDV4 # Default standalone if no standalone specified # (you can set explicitly STANDALONE= to disable standalone modes) STANDALONE?=LF_SAMYRUN define KNOWN_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 | +----------------------------------------------------------+ +==========================================================+ | STANDALONE | DESCRIPTION | +==========================================================+ | | No standalone mode | +----------------------------------------------------------+ | LF_SAMYRUN (def)| HID26 read/clone/sim | | | - Samy Kamkar | +----------------------------------------------------------+ | LF_ICERUN | standalone mode skeleton | | | - iceman | +----------------------------------------------------------+ | LF_PROXBRUTE | HID ProxII bruteforce | | | - Brad Antoniewicz | +----------------------------------------------------------+ | LF_HIDBRUTE | HID corporate 1000 bruteforce | | | - Federico dotta & Maurizio Agazzini | +----------------------------------------------------------+ | HF_YOUNG | Mifare sniff/simulation | | | - Craig Young | +----------------------------------------------------------+ | HF_MATTYRUN | Mifare sniff/clone | | | - Matías A. Ré Medina | +----------------------------------------------------------+ | HF_COLIN | Mifare ultra fast sniff/sim/clone | | | - Colin Brigato | +----------------------------------------------------------+ | HF_BOG | 14a sniff with ULC/ULEV1/NTAG auth | | | storing in flashmem - Bogito | +----------------------------------------------------------+ 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=HF_COLIN (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 LF_SAMYRUN. To disable standalone modes, set explicitly an empty STANDALONE: STANDALONE= 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_HFSNIFF # Standalone mode STANDALONE_MODES := LF_SAMYRUN LF_ICERUN LF_PROXBRUTE LF_HIDBRUTE STANDALONE_MODES += HF_YOUNG HF_MATTYRUN HF_COLIN HF_BOG ifneq ($(filter $(STANDALONE),$(STANDALONE_MODES)),) PLATFORM_DEFS += -DWITH_STANDALONE_$(STANDALONE) else ifneq ($(STANDALONE),) $(error Invalid STANDALONE: $(STANDALONE). $(KNOWN_DEFINITIONS)) endif $(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 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 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 $(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 ===================================================================)