1 #-----------------------------------------------------------------------------
2 # This code is licensed to you under the terms of the GNU GPL, version 2 or,
3 # at your option, any later version. See the LICENSE.txt file for the text of
5 #-----------------------------------------------------------------------------
11 TARFLAGS
= -C ..
--ignore-failed-read
-rvf
16 VPATH
= ..
/common ..
/zlib ..
/uart
19 LDLIBS
= -L
/opt
/local
/lib
-L
/usr
/local
/lib
-lreadline
-lpthread
-lm
20 LUALIB
= ..
/liblua
/liblua.a
21 LDFLAGS
= $(COMMON_FLAGS
)
22 CFLAGS
= -std
=c99
-D_ISOC99_SOURCE
-I.
-I..
/include -I..
/common
-I..
/zlib
-I..
/uart
-I
/opt
/local
/include -I..
/liblua
-Wall
$(COMMON_FLAGS
) -g
-O3
23 CXXFLAGS
= -I..
/include -Wall
-O3
26 platform
= $(shell uname
)
27 ifneq (,$(findstring MINGW
,$(platform
)))
30 ifeq ($(platform
),Darwin
)
34 LDLIBS
+= -ltermcap
-lncurses
39 # Check for correctly configured Qt5
40 QTINCLUDES
= $(shell pkg-config
--cflags Qt5Core Qt5Widgets
2>/dev
/null
)
41 QTLDLIBS
= $(shell pkg-config
--libs Qt5Core Qt5Widgets
2>/dev
/null
)
42 MOC
= $(shell pkg-config
--variable
=host_bins Qt5Core
)/moc
43 UIC
= $(shell pkg-config
--variable
=host_bins Qt5Core
)/uic
44 ifeq ($(QTINCLUDES
), )
45 # if Qt5 not found check for correctly configured Qt4
46 QTINCLUDES
= $(shell pkg-config
--cflags QtCore QtGui
2>/dev
/null
)
47 QTLDLIBS
= $(shell pkg-config
--libs QtCore QtGui
2>/dev
/null
)
48 MOC
= $(shell pkg-config
--variable
=moc_location QtCore
)
49 UIC
= $(shell pkg-config
--variable
=uic_location QtCore
)
51 CXXFLAGS
+= -std
=c
++11 -fPIC
53 ifeq ($(QTINCLUDES
), )
54 # if both pkg-config commands failed, search in common places
56 QTINCLUDES
= -I
$(QTDIR
)/include -I
$(QTDIR
)/include/QtCore
-I
$(QTDIR
)/include/QtGui
57 QTLDLIBS
= -L
$(QTDIR
)/lib
-lQtCore4
-lQtGui4
58 ifneq ($(wildcard $(QTDIR
)/include/QtWidgets
),)
59 QTINCLUDES
+= -I
$(QTDIR
)/include/QtWidgets
60 QTLDLIBS
= -L
$(QTDIR
)/lib
-lQt5Widgets
-lQt5Gui
-lQt5Core
61 CXXFLAGS
+= -std
=c
++11 -fPIC
63 MOC
= $(QTDIR
)/bin
/moc
64 UIC
= $(QTDIR
)/bin
/uic
70 QTGUIOBJS
= $(OBJDIR
)/proxgui.o
$(OBJDIR
)/proxguiqt.o
$(OBJDIR
)/proxguiqt.moc.o
73 QTGUIOBJS
= $(OBJDIR
)/guidummy.o
76 # Flags to generate temporary dependency files
77 DEPFLAGS
= -MT
$@
-MMD
-MP
-MF
$(OBJDIR
)/$*.Td
78 # make temporary to final dependeny files after successful compilation
79 POSTCOMPILE
= $(MV
) -f
$(OBJDIR
)/$*.Td
$(OBJDIR
)/$*.d
81 CORESRCS
= uart_posix.c \
86 CMDSRCS
= crapto1
/crapto1.c\
92 loclass
/cipherutils.c \
94 loclass
/elite_crack.c\
119 hardnested
/hardnested_bruteforce.c \
161 cpu_arch
= $(shell uname
-m
)
162 ifneq ($(findstring 86, $(cpu_arch
)), )
163 MULTIARCHSRCS
= hardnested
/hardnested_bf_core.c hardnested
/hardnested_bitarray_core.c
165 ifneq ($(findstring amd64
, $(cpu_arch
)), )
166 MULTIARCHSRCS
= hardnested
/hardnested_bf_core.c hardnested
/hardnested_bitarray_core.c
168 ifeq ($(MULTIARCHSRCS
), )
169 CMDSRCS
+= hardnested
/hardnested_bf_core.c hardnested
/hardnested_bitarray_core.c
172 ZLIBSRCS
= deflate.c adler32.c trees.c zutil.c inflate.c inffast.c inftrees.c
173 ZLIBFLAGS
= -DZ_SOLO
-DZ_PREFIX
-DNO_GZIP
-DZLIB_PM3_TUNED
176 QTGUISRCS
= proxgui.
cpp proxguiqt.
cpp proxguiqt.moc.
cpp guidummy.
cpp
178 COREOBJS
= $(CORESRCS
:%.c
=$(OBJDIR
)/%.o
)
179 CMDOBJS
= $(CMDSRCS
:%.c
=$(OBJDIR
)/%.o
)
180 ZLIBOBJS
= $(ZLIBSRCS
:%.c
=$(OBJDIR
)/%.o
)
181 MULTIARCHOBJS
= $(MULTIARCHSRCS
:%.c
=$(OBJDIR
)/%_NOSIMD.o
) \
182 $(MULTIARCHSRCS
:%.c
=$(OBJDIR
)/%_MMX.o
) \
183 $(MULTIARCHSRCS
:%.c
=$(OBJDIR
)/%_SSE2.o
) \
184 $(MULTIARCHSRCS
:%.c
=$(OBJDIR
)/%_AVX.o
) \
185 $(MULTIARCHSRCS
:%.c
=$(OBJDIR
)/%_AVX2.o
)
187 GCC_VERSION
:= $(shell gcc
--version | awk
'/gcc/{print $$NF;}' | sed
-e
's/\.\([0-9][0-9]\)/\1/g' -e
's/\.\([0-9]\)/0\1/g' -e
's/^[0-9]\{3,4\}$$/&00/')
188 CLANG_VERSION
:= $(shell gcc
--version | awk
'/Apple LLVM version/{print $$4;}' | sed
-e
's/\.\([0-9][0-9]\)/\1/g' -e
's/\.\([0-9]\)/0\1/g' -e
's/^[0-9]\{3,4\}$$/&00/')
189 ifneq ($(CLANG_VERSION
), )
190 SUPPORTS_AVX512
:= $(shell [ $(CLANG_VERSION
) -ge
80000 ] && echo
"True" )
192 ifneq ($(GCC_VERSION
), )
193 SUPPORTS_AVX512
:= $(shell [ $(GCC_VERSION
) -ge
40900 ] && echo
"True" )
195 HARD_SWITCH_NOSIMD
= -mno-mmx
-mno-sse2
-mno-avx
-mno-avx2
196 HARD_SWITCH_MMX
= -mmmx
-mno-sse2
-mno-avx
-mno-avx2
197 HARD_SWITCH_SSE2
= -mmmx
-msse2
-mno-avx
-mno-avx2
198 HARD_SWITCH_AVX
= -mmmx
-msse2
-mavx
-mno-avx2
199 HARD_SWITCH_AVX2
= -mmmx
-msse2
-mavx
-mavx2
200 HARD_SWITCH_AVX512
= -mmmx
-msse2
-mavx
-mavx2
-mavx512f
201 ifeq "$(SUPPORTS_AVX512)" "True"
202 HARD_SWITCH_NOSIMD
+= -mno-avx512f
203 HARD_SWITCH_MMX
+= -mno-avx512f
204 HARD_SWITCH_SSE2
+= -mno-avx512f
205 HARD_SWITCH_AVX
+= -mno-avx512f
206 HARD_SWITCH_AVX2
+= -mno-avx512f
207 MULTIARCHOBJS
+= $(MULTIARCHSRCS
:%.c
=$(OBJDIR
)/%_AVX512.o
)
210 BINS
= proxmark3 flasher fpga_compress
211 WINBINS
= $(patsubst %, %.exe
, $(BINS
))
212 CLEAN
= $(BINS
) $(WINBINS
) $(COREOBJS
) $(CMDOBJS
) $(ZLIBOBJS
) $(QTGUIOBJS
) $(MULTIARCHOBJS
) $(OBJDIR
)/*.o
*.moc.
cpp ui
/ui_overlays.h
214 # need to assign dependancies to build these first...
215 all: lua_build
$(BINS
)
217 all-static
: LDLIBS
:=-static
$(LDLIBS
)
218 all-static
: proxmark3 flasher fpga_compress
220 proxmark3
: LDLIBS
+=$(LUALIB
) $(QTLDLIBS
)
221 proxmark3
: $(OBJDIR
)/proxmark3.o
$(COREOBJS
) $(CMDOBJS
) $(QTGUIOBJS
) $(MULTIARCHOBJS
) $(ZLIBOBJS
) lualibs
/usb_cmd.lua
222 $(LD
) $(LDFLAGS
) $(OBJDIR
)/proxmark3.o
$(COREOBJS
) $(CMDOBJS
) $(QTGUIOBJS
) $(MULTIARCHOBJS
) $(ZLIBOBJS
) $(LDLIBS
) -o
$@
224 flasher
: $(OBJDIR
)/flash.o
$(OBJDIR
)/flasher.o
$(COREOBJS
)
225 $(LD
) $(LDFLAGS
) $^
$(LDLIBS
) -o
$@
227 fpga_compress
: $(OBJDIR
)/fpga_compress.o
$(ZLIBOBJS
)
228 $(LD
) $(LDFLAGS
) $(ZLIBFLAGS
) $^
$(LDLIBS
) -o
$@
230 proxgui.
cpp: ui
/ui_overlays.h
232 proxguiqt.moc.
cpp: proxguiqt.h
235 ui
/ui_overlays.h
: ui
/overlays.ui
238 lualibs
/usb_cmd.lua
: ..
/include/usb_cmd.h
239 awk
-f usb_cmd_h2lua.awk
$^
> $@
243 cd ..
/liblua
&& make
clean
246 $(TAR
) $(TARFLAGS
) ..
/proxmark3-
$(platform
)-bin.
tar $(BINS
:%=client
/%) $(WINBINS
:%=client
/%)
249 @echo Compiling liblua
, using platform
$(LUAPLATFORM
)
250 cd ..
/liblua
&& make
$(LUAPLATFORM
)
254 $(OBJDIR
)/%_NOSIMD.o
: %.c
$(OBJDIR
)/%.d
255 $(CC
) $(DEPFLAGS
) $(CFLAGS
) $(HARD_SWITCH_NOSIMD
) -c
-o
$@
$<
257 $(OBJDIR
)/%_MMX.o
: %.c
$(OBJDIR
)/%.d
258 $(CC
) $(DEPFLAGS
) $(CFLAGS
) $(HARD_SWITCH_MMX
) -c
-o
$@
$<
260 $(OBJDIR
)/%_SSE2.o
: %.c
$(OBJDIR
)/%.d
261 $(CC
) $(DEPFLAGS
) $(CFLAGS
) $(HARD_SWITCH_SSE2
) -c
-o
$@
$<
263 $(OBJDIR
)/%_AVX.o
: %.c
$(OBJDIR
)/%.d
264 $(CC
) $(DEPFLAGS
) $(CFLAGS
) $(HARD_SWITCH_AVX
) -c
-o
$@
$<
266 $(OBJDIR
)/%_AVX2.o
: %.c
$(OBJDIR
)/%.d
267 $(CC
) $(DEPFLAGS
) $(CFLAGS
) $(HARD_SWITCH_AVX2
) -c
-o
$@
$<
269 $(OBJDIR
)/%_AVX512.o
: %.c
$(OBJDIR
)/%.d
270 $(CC
) $(DEPFLAGS
) $(CFLAGS
) $(HARD_SWITCH_AVX512
) -c
-o
$@
$<
273 $(OBJDIR
)/%.o
: %.c
$(OBJDIR
)/%.d
274 $(CC
) $(DEPFLAGS
) $(CFLAGS
) $(ZLIBFLAGS
) -c
-o
$@
$<
278 $(OBJDIR
)/%.o
: %.
cpp $(OBJDIR
)/%.d
279 $(CXX
) $(DEPFLAGS
) $(CXXFLAGS
) $(QTINCLUDES
) -c
-o
$@
$<
283 #$(CMDOBJS) $(COREOBJS): $(notdir $(%.c)) %.d
284 # $(CC) $(DEPFLAGS) $(CFLAGS) -c -o $@ $<
287 #$(ZLIBOBJS): $(notdir $(%.c)) %.d
288 # $(CC) $(DEPFLAGS) $(CFLAGS) $(ZLIBFLAGS) -c -o $@ $<
291 #$(QTGUIOBJS): $(notdir $(%.cpp)) %.d
292 # $(CXX) $(DEPFLAGS) $(CXXFLAGS) -c -o $@ $<
295 DEPENDENCY_FILES
= $(patsubst %.c
, $(OBJDIR
)/%.d
, $(CORESRCS
) $(CMDSRCS
) $(ZLIBSRCS
) $(MULTIARCHSRCS
)) \
296 $(patsubst %.
cpp, $(OBJDIR
)/%.d
, $(QTGUISRCS
)) \
297 $(OBJDIR
)/proxmark3.d
$(OBJDIR
)/flash.d
$(OBJDIR
)/flasher.d
$(OBJDIR
)/fpga_compress.d
299 $(DEPENDENCY_FILES
): ;
300 .PRECIOUS
: $(DEPENDENCY_FILES
)
302 -include $(DEPENDENCY_FILES
)