+ifneq (,$(findstring MINGW,$(platform)))
+ PCSC_INCLUDES :=
+ PCSC_LIBS = -lwinscard
+else
+ ifeq ($(platform),Darwin)
+ PCSC_INCLUDES =
+ PCSC_LIBS = -framework PCSC
+ else
+ PCSC_INCLUDES := $(shell pkg-config --cflags libpcsclite)
+ PCSC_LIBS := $(shell pkg-config --libs libpcsclite)
+ endif
+endif
+
+LUAPLATFORM = generic
+ifneq (,$(findstring MINGW,$(platform)))
+ LUAPLATFORM = mingw
+else
+ ifeq ($(platform),Darwin)
+ LUAPLATFORM = macosx
+ OBJCSRCS = util_darwin.m
+ LDFLAGS += -framework Foundation -framework AppKit
+ else
+ LUALIB += -ldl
+ LDLIBS += -ltermcap -lncurses
+ LUAPLATFORM = linux
+ endif
+endif
+
+ifneq (,$(findstring WITH_GUI,$(APP_CFLAGS)))
+ # Check for correctly configured Qt5
+ QTINCLUDES = $(shell pkg-config --cflags Qt5Core Qt5Widgets 2>/dev/null)
+ QTLDLIBS = $(shell pkg-config --libs Qt5Core Qt5Widgets 2>/dev/null)
+ MOC = $(shell pkg-config --variable=host_bins Qt5Core)/moc
+ UIC = $(shell pkg-config --variable=host_bins Qt5Core)/uic
+ ifeq ($(QTINCLUDES), )
+ # if Qt5 not found check for correctly configured Qt4
+ QTINCLUDES = $(shell pkg-config --cflags QtCore QtGui 2>/dev/null)
+ QTLDLIBS = $(shell pkg-config --libs QtCore QtGui 2>/dev/null)
+ MOC = $(shell pkg-config --variable=moc_location QtCore)
+ UIC = $(shell pkg-config --variable=uic_location QtCore)
+ else
+ CXXFLAGS += -std=c++11 -fPIC
+ endif
+ ifeq ($(QTINCLUDES), )
+ # if both pkg-config commands failed, search in common places
+ ifneq ($(QTDIR), )
+ QTINCLUDES = -I$(QTDIR)/include -I$(QTDIR)/include/QtCore -I$(QTDIR)/include/QtGui
+ QTLDLIBS = -L$(QTDIR)/lib -lQtCore4 -lQtGui4
+ ifneq ($(wildcard $(QTDIR)/include/QtWidgets),)
+ QTINCLUDES += -I$(QTDIR)/include/QtWidgets
+ QTLDLIBS = -L$(QTDIR)/lib -lQt5Widgets -lQt5Gui -lQt5Core
+ CXXFLAGS += -std=c++11 -fPIC
+ endif
+ MOC = $(QTDIR)/bin/moc
+ UIC = $(QTDIR)/bin/uic
+ endif
+ endif
+endif
+
+
+ifneq ($(QTLDLIBS), )
+ QTGUIOBJS = $(OBJDIR)/proxgui.o $(OBJDIR)/proxguiqt.o $(OBJDIR)/proxguiqt.moc.o
+ CFLAGS += -DHAVE_GUI
+else
+ QTGUIOBJS = $(OBJDIR)/guidummy.o
+endif
+
+# Flags to generate temporary dependency files
+DEPFLAGS = -MT $@ -MMD -MP -MF $(OBJDIR)/$*.Td
+# make temporary to final dependeny files after successful compilation
+POSTCOMPILE = $(MV) -f $(OBJDIR)/$*.Td $(OBJDIR)/$*.d
+
+
+CORESRCS = uart_posix.c \
+ uart_win32.c \
+ util.c \
+ util_posix.c \
+ ui.c \
+ comms.c
+
+CMDSRCS = $(SRC_SMARTCARD) \
+ crapto1/crapto1.c\
+ crapto1/crypto1.c\
+ crypto/libpcrypto.c\
+ crypto/asn1utils.c\
+ crypto/asn1dump.c\
+ cliparser/argtable3.c\
+ cliparser/cliparser.c\
+ fido/additional_ca.c \
+ fido/cose.c \
+ fido/cbortools.c \
+ fido/fidocore.c \
+ mfkey.c \
+ loclass/cipher.c \
+ loclass/cipherutils.c \
+ loclass/ikeys.c \
+ loclass/elite_crack.c\
+ loclass/fileutils.c\
+ whereami.c\
+ mifarehost.c\
+ mifare4.c\
+ parity.c\
+ crc.c \
+ crc16.c \
+ crc64.c \
+ iso14443crc.c \
+ iso15693tools.c \
+ graph.c \
+ cmddata.c \
+ lfdemod.c \
+ emv/crypto_polarssl.c\
+ emv/crypto.c\
+ emv/emv_pk.c\
+ emv/emv_pki.c\
+ emv/emv_pki_priv.c\
+ emv/test/cryptotest.c\
+ emv/apduinfo.c\
+ emv/dump.c\
+ emv/tlv.c\
+ emv/emv_tags.c\
+ emv/dol.c\
+ emv/emvjson.c\
+ emv/emvcore.c\
+ emv/test/crypto_test.c\
+ emv/test/sda_test.c\
+ emv/test/dda_test.c\
+ emv/test/cda_test.c\
+ emv/cmdemv.c\
+ emv/emv_roca.c \
+ cmdhf.c \
+ cmdhflist.c \
+ cmdhf14a.c \
+ cmdhf14b.c \
+ cmdhf15.c \
+ cmdhfepa.c \
+ cmdhflegic.c \
+ cmdhficlass.c \
+ cmdhfmf.c \
+ cmdhfmfp.c \
+ cmdhfmfu.c \
+ cmdhfmfhard.c \
+ hardnested/hardnested_bruteforce.c \
+ cmdhftopaz.c \
+ cmdhffido.c \
+ cmdhw.c \
+ cmdlf.c \
+ cmdlfawid.c \
+ cmdlfcotag.c\
+ cmdlfem4x.c \
+ cmdlffdx.c \
+ cmdlfgproxii.c \
+ hidcardformatutils.c\
+ hidcardformats.c\
+ cmdlfhid.c \
+ cmdlfhitag.c \
+ cmdlfio.c \
+ cmdlfindala.c \
+ cmdlfjablotron.c \
+ cmdlfnexwatch.c \
+ cmdlfnoralsy.c \
+ cmdlfparadox.c \
+ cmdlfpcf7931.c \
+ cmdlfpresco.c \
+ cmdlfpyramid.c \
+ cmdlfsecurakey.c \
+ cmdlft55xx.c \
+ cmdlfti.c \
+ cmdlfviking.c\
+ cmdlfvisa2000.c\
+ cmdlfpac.c\
+ cmdparser.c \
+ cmdmain.c \
+ scripting.c\
+ cmdscript.c\
+ pm3_binlib.c\
+ pm3_bitlib.c\
+ protocols.c
+
+cpu_arch = $(shell uname -m)
+ifneq ($(findstring 86, $(cpu_arch)), )
+ MULTIARCHSRCS = hardnested/hardnested_bf_core.c hardnested/hardnested_bitarray_core.c
+endif
+ifneq ($(findstring amd64, $(cpu_arch)), )
+ MULTIARCHSRCS = hardnested/hardnested_bf_core.c hardnested/hardnested_bitarray_core.c
+endif
+ifeq ($(MULTIARCHSRCS), )
+ CMDSRCS += hardnested/hardnested_bf_core.c hardnested/hardnested_bitarray_core.c
+endif