+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 \
+                       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\
+                       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
+
+ZLIBSRCS = deflate.c adler32.c trees.c zutil.c inflate.c inffast.c inftrees.c
+ZLIBFLAGS = -DZ_SOLO -DZ_PREFIX -DNO_GZIP -DZLIB_PM3_TUNED 
+#-DDEBUG -Dverbose=1
+
+QTGUISRCS = proxgui.cpp proxguiqt.cpp proxguiqt.moc.cpp guidummy.cpp
+
+COREOBJS = $(CORESRCS:%.c=$(OBJDIR)/%.o)
+CMDOBJS = $(CMDSRCS:%.c=$(OBJDIR)/%.o)
+OBJCOBJS = $(OBJCSRCS:%.m=$(OBJDIR)/%.o)
+ZLIBOBJS = $(ZLIBSRCS:%.c=$(OBJDIR)/%.o)
+MULTIARCHOBJS = $(MULTIARCHSRCS:%.c=$(OBJDIR)/%_NOSIMD.o) \
+                       $(MULTIARCHSRCS:%.c=$(OBJDIR)/%_MMX.o) \
+                       $(MULTIARCHSRCS:%.c=$(OBJDIR)/%_SSE2.o) \
+                       $(MULTIARCHSRCS:%.c=$(OBJDIR)/%_AVX.o) \
+                       $(MULTIARCHSRCS:%.c=$(OBJDIR)/%_AVX2.o)
+
+SUPPORTS_AVX512 :=  $(shell echo | gcc -E -mavx512f - > /dev/null 2>&1 && echo "True" )
+HARD_SWITCH_NOSIMD = -mno-mmx -mno-sse2 -mno-avx -mno-avx2
+HARD_SWITCH_MMX = -mmmx -mno-sse2 -mno-avx -mno-avx2
+HARD_SWITCH_SSE2 = -mmmx -msse2 -mno-avx -mno-avx2
+HARD_SWITCH_AVX = -mmmx -msse2 -mavx -mno-avx2
+HARD_SWITCH_AVX2 = -mmmx -msse2 -mavx -mavx2
+HARD_SWITCH_AVX512 = -mmmx -msse2 -mavx -mavx2 -mavx512f
+ifeq "$(SUPPORTS_AVX512)" "True"
+       HARD_SWITCH_NOSIMD += -mno-avx512f
+       HARD_SWITCH_MMX += -mno-avx512f
+       HARD_SWITCH_SSE2 += -mno-avx512f
+       HARD_SWITCH_AVX += -mno-avx512f
+       HARD_SWITCH_AVX2 += -mno-avx512f
+       MULTIARCHOBJS +=  $(MULTIARCHSRCS:%.c=$(OBJDIR)/%_AVX512.o)
+endif
+                       
+BINS = proxmark3 flasher fpga_compress
+WINBINS = $(patsubst %, %.exe, $(BINS))
+CLEAN = $(BINS) $(WINBINS) $(COREOBJS) $(CMDOBJS) $(OBJCOBJS) $(ZLIBOBJS) $(QTGUIOBJS) $(MULTIARCHOBJS) $(OBJDIR)/*.o *.moc.cpp ui/ui_overlays.h