瀏覽代碼

Rewrite Makefile so that it allows easier integration of native targets

Jens Steube 10 年之前
父節點
當前提交
9535457d6c
共有 15 個文件被更改,包括 237 次插入440 次删除
  1. 4 9
      docs/BUILD.md
  2. 5 0
      docs/changes.txt
  3. 3 3
      include/common.h
  4. 0 0
      obj/freebsd32/.lock
  5. 0 0
      obj/freebsd64/.lock
  6. 0 0
      obj/freebsdXOP/.lock
  7. 0 0
      obj/linux32/.lock
  8. 0 0
      obj/linux64/.lock
  9. 0 0
      obj/linuxXOP/.lock
  10. 0 0
      obj/osx64/.lock
  11. 0 0
      obj/win32/.lock
  12. 0 0
      obj/win64/.lock
  13. 0 0
      obj/winXOP/.lock
  14. 213 409
      src/Makefile
  15. 12 19
      src/hashcat-cli.c

+ 4 - 9
docs/BUILD.md

@@ -1,7 +1,7 @@
 ## Hashcat build documentation
 
 ### Revision:
-* 1.01
+* 1.02
 
 ### Authors:
 * Gabriele Gristina <<matrix@hashcat.net>>
@@ -26,16 +26,11 @@ $ sudo ./tools/deps.sh
 Run make depending on your os
 
 ```bash
-$ make [linux|osx|windows]
+$ make [linux|osx|windows|freebsd]
 ```
 
-Not specifying an argument will build for all OSes except FreeBSD.
+Not specifying an argument will cross-compile binaries for Linux, Windows and OSX.
 
-If you want FreeBSD binaries, you will need to run this on a native FreeBSD amd64 system
-```sh
-$ make freebsd
-```
-
-This has been tested on FreeBSD 10.2 and will produce **./hashcat-cli64.elf**. You will need **gmp** installed (/usr/ports/math/gmp).
+If you native FreeBSD binaries, you will need **gmp** installed (/usr/ports/math/gmp). This has been tested on FreeBSD 10.2. 
 
 Enjoy your fresh **Hashcat** binaries ;)

+ 5 - 0
docs/changes.txt

@@ -1,5 +1,10 @@
 * changes v2.00 -> v2.01:
 
+type.: Feature
+file.: Host
+desc.: Added native compilation support for FreeBSD
+PR...: 23, 25
+
 type.: Feature
 file.: Host
 desc.: Fixed a possible memory problem for hash type -m 11400 = SIP digest authentication (MD5)

+ 3 - 3
include/common.h

@@ -96,7 +96,7 @@ typedef unsigned (__stdcall *PTHREAD_START) (void *);
 #define ACMutexInit(Dmutex)                       Dmutex = CreateMutex (0, FALSE, 0)
 #endif
 
-#ifdef POSIX
+#if defined LINUX || defined OSX || defined FREEBSD
 #include <pthread.h>
 typedef pthread_t THREAD;
 typedef pthread_mutex_t MUTEX;
@@ -112,7 +112,7 @@ typedef pthread_mutex_t MUTEX;
 #define SetPriorityHigh()   { HANDLE hProc = GetCurrentProcess(); SetPriorityClass (hProc, HIGH_PRIORITY_CLASS);   }
 #endif
 
-#ifdef POSIX
+#if defined LINUX || defined OSX || defined FREEBSD
 #include <sys/resource.h>
 #define SetPriorityLow()    setpriority (PRIO_PROCESS, 0, 1)
 #define SetPriorityNormal() setpriority (PRIO_PROCESS, 0, 0)
@@ -123,7 +123,7 @@ typedef pthread_mutex_t MUTEX;
 #define hc_sleep(x) Sleep ((x) * 1000);
 #endif
 
-#ifdef POSIX
+#if defined LINUX || defined OSX || defined FREEBSD
 #define hc_sleep(x) sleep ((x));
 #endif
 

+ 0 - 0
obj/freebsd32/.lock


+ 0 - 0
obj/freebsd64/.lock


+ 0 - 0
obj/freebsdXOP/.lock


+ 0 - 0
obj/linux32/.lock


+ 0 - 0
obj/linux64/.lock


+ 0 - 0
obj/linuxXOP/.lock


+ 0 - 0
obj/osx64/.lock


+ 0 - 0
obj/win32/.lock


+ 0 - 0
obj/win64/.lock


+ 0 - 0
obj/winXOP/.lock


+ 213 - 409
src/Makefile

@@ -3,6 +3,8 @@
 ## License.....: MIT
 ##
 
+all: binaries
+
 ##
 ## Detect host OS
 ##
@@ -25,534 +27,336 @@ CFLAGS  := -W -Wall -pipe -I include/ -O2 -s -fomit-frame-pointer -funroll-loops
 #CFLAGS  := -W -Wall -pipe -I include/ -g
 LDFLAGS :=
 
-all: binaries
-
-clean:
-	rm -rf core out word hash release obj/* hashcat.pot hashcat-cli*
-
-binaries: linux windows osx 
-
-osx: osx64
-#linux: posix32 posix64 posixAVX posixAVX2 posixXOP
-#windows: windows32 windows64 windowsAVX windowsAVX2 windowsXOP
-linux: posix32 posix64 posixXOP
-windows: windows32 windows64 windowsXOP
-freebsd: freebsd64
-
-release:
-	rm -rf release
-	mkdir release
-	cp -a charsets docs rules tables salts examples hashcat-cli*.bin hashcat-cli*.exe hashcat-cli64.app release/
-	find release -type f -exec chmod 600 {} \;
-	find release -type d -exec chmod 700 {} \;
-	chmod 700 release/*.bin
-	chmod 700 release/*.app
-	unix2dos release/salts/*
-	unix2dos release/rules/*
-	unix2dos release/tables/*
-	unix2dos release/docs/*
-	unix2dos release/examples/*
-
 ##
 ## OSX64
 ##
 
-DIR_OSX64      = obj
+DIR_OSX64      = obj/osx64
 CC_OSX64       = i686-apple-darwin10-gcc
 LIBGMP_OSX64   = deps/gmp/osx64
-CFLAGS_OSX64   = $(CFLAGS) -I$(LIBGMP_OSX64)/include -D__HC_x86_64__ -DPOSIX -DOSX -m64 -msse2 -fnested-functions -arch x86_64 -mmacosx-version-min=10.5
+CFLAGS_OSX64   = $(CFLAGS) -I$(LIBGMP_OSX64)/include -D__HC_x86_64__ -DOSX -m64 -msse2 -fnested-functions -arch x86_64 -mmacosx-version-min=10.5
 LDFLAGS_OSX64  = $(LDFLAGS) -L$(LIBGMP_OSX64)/lib -lm -lpthread  -mmacosx-version-min=10.5 -lgmp
 
-osx64: hashcat-cli64.app
-
-rules-osx64: rules-debug64.app
-
-rules-debug64.app: $(DIR_OSX64)/rp.OSX.64.o src/rules-debug.c
-	$(CC_OSX64) $(filter-out -s,$(CFLAGS_OSX64)) $(DIR_OSX64)/*.OSX.64.o src/rules-debug.c -o rules-debug64.app $(LDFLAGS_OSX64)
-
-hashcat-osx64: hashcat-cli64.app
-
-hashcat-cli64.app: $(DIR_OSX64)/tsearch.OSX.64.o $(DIR_OSX64)/rp.OSX.64.o $(DIR_OSX64)/engine.OSX.64.o src/hashcat-cli.c
-	$(CC_OSX64) $(filter-out -s,$(CFLAGS_OSX64)) $(DIR_OSX64)/*.OSX.64.o src/hashcat-cli.c -o hashcat-cli64.app $(LDFLAGS_OSX64)
-
-engine-osx64: $(DIR_OSX64)/engine.OSX.64.o
+$(DIR_OSX64)/rules-debug64.app: $(DIR_OSX64)/rp.o src/rules-debug.c
+	$(CC_OSX64) $(filter-out -s,$(CFLAGS_OSX64)) $(DIR_OSX64)/*.o src/rules-debug.c -o $@ $(LDFLAGS_OSX64)
 
-$(DIR_OSX64)/engine.OSX.64.o: $(DIR_OSX64)/common.OSX.64.o src/engine.c
-	$(CC_OSX64) $(CFLAGS_OSX64) -c src/engine.c -o $(DIR_OSX64)/engine.OSX.64.o
+$(DIR_OSX64)/hashcat-cli64.app: $(DIR_OSX64)/tsearch.o $(DIR_OSX64)/rp.o $(DIR_OSX64)/engine.o src/hashcat-cli.c
+	$(CC_OSX64) $(filter-out -s,$(CFLAGS_OSX64)) $(DIR_OSX64)/*.o src/hashcat-cli.c -o $@ $(LDFLAGS_OSX64)
 
-rp-osx64: $(DIR_OSX64)/rp.OSX.64.o
+$(DIR_OSX64)/engine.o: $(DIR_OSX64)/common.o src/engine.c
+	$(CC_OSX64) $(CFLAGS_OSX64) -c src/engine.c -o $@
 
-$(DIR_OSX64)/rp.OSX.64.o: $(DIR_OSX64)/common.OSX.64.o src/rp.c
-	$(CC_OSX64) $(CFLAGS_OSX64) -c src/rp.c -o $(DIR_OSX64)/rp.OSX.64.o
+$(DIR_OSX64)/rp.o: $(DIR_OSX64)/common.o src/rp.c
+	$(CC_OSX64) $(CFLAGS_OSX64) -c src/rp.c -o $@
 
-tsearch-osx64: $(DIR_OSX64)/tsearch.OSX.64.o
+$(DIR_OSX64)/tsearch.o: $(DIR_OSX64)/common.o src/tsearch.c
+	$(CC_OSX64) $(CFLAGS_OSX64) -c src/tsearch.c -o $@
 
-$(DIR_OSX64)/tsearch.OSX.64.o: $(DIR_OSX64)/common.OSX.64.o src/tsearch.c
-	$(CC_OSX64) $(CFLAGS_OSX64) -c src/tsearch.c -o $(DIR_OSX64)/tsearch.OSX.64.o
-
-common-osx64: $(DIR_OSX64)/common.OSX.64.o
-
-$(DIR_OSX64)/common.OSX.64.o: src/common.c
-	$(CC_OSX64) $(CFLAGS_OSX64) -c src/common.c -o $(DIR_OSX64)/common.OSX.64.o
+$(DIR_OSX64)/common.o: src/common.c
+	$(CC_OSX64) $(CFLAGS_OSX64) -c src/common.c -o $@
 
 ##
-## FREEBSD
+## FREEBSD32
 ##
 
-DIR_FREEBSD64      = obj
-CC_FREEBSD64       = gcc
-CFLAGS_FREEBSD64   = $(CFLAGS) -I/usr/local/include -DFREEBSD -DPOSIX -m64 -msse2 
-LDFLAGS_FREEBSD64  = $(LDFLAGS) -L/usr/local/lib -lgmp -lm -lpthread -lc
-
-freebsd64: hashcat-cli64.elf 
-
-rules-freebsd64: rules-debug64.elf
-
-rules-debug64.elf: $(DIR_FREEBSD64)/rp.FREEBSD.64.o src/rules-debug.c
-	$(CC_FREEBSD64) $(filter-out -s,$(CFLAGS_FREEBSD64)) $(DIR_FREEBSD64)/*.FREEBSD.64.o src/rules-debug.c -o rules-debug64.elf $(LDFLAGS_FREEBSD64)
-
-hashcat-freebsd64: hashcat-cli64.elf
-
-hashcat-cli64.elf: $(DIR_FREEBSD64)/tsearch.FREEBSD.64.o $(DIR_FREEBSD64)/rp.FREEBSD.64.o $(DIR_FREEBSD64)/engine.FREEBSD.64.o src/hashcat-cli.c
-	$(CC_FREEBSD64) $(filter-out -s,$(CFLAGS_FREEBSD64)) $(DIR_FREEBSD64)/*.FREEBSD.64.o src/hashcat-cli.c -o hashcat-cli64.elf $(LDFLAGS_FREEBSD64)
+DIR_FREEBSD32      = obj/freebsd32
+CC_FREEBSD32       = gcc
+CFLAGS_FREEBSD32   = $(CFLAGS) -I/usr/local/include -DFREEBSD -m32 -msse2
+LDFLAGS_FREEBSD32  = $(LDFLAGS) -L/usr/local/lib -lgmp -lm -lpthread -lc
 
-engine-freebsd64: $(DIR_FREEBSD64)/engine.FREEBSD.64.o
+$(DIR_FREEBSD32)/rules-debug32.bin: $(DIR_FREEBSD32)/rp.o src/rules-debug.c
+	$(CC_FREEBSD32) $(CFLAGS_FREEBSD32) $(DIR_FREEBSD32)/*.o src/rules-debug.c -o $@ $(LDFLAGS_FREEBSD32)
 
-$(DIR_FREEBSD64)/engine.FREEBSD.64.o: $(DIR_FREEBSD64)/common.FREEBSD.64.o src/engine.c
-	$(CC_FREEBSD64) $(CFLAGS_FREEBSD64) -c src/engine.c -o $(DIR_FREEBSD64)/engine.FREEBSD.64.o
+$(DIR_FREEBSD32)/hashcat-cli32.bin: $(DIR_FREEBSD32)/tsearch.o $(DIR_FREEBSD32)/rp.o $(DIR_FREEBSD32)/engine.o src/hashcat-cli.c
+	$(CC_FREEBSD32) $(CFLAGS_FREEBSD32) $(DIR_FREEBSD32)/*.o src/hashcat-cli.c -o $@ $(LDFLAGS_FREEBSD32)
 
-rp-freebsd64: $(DIR_FREEBSD64)/rp.FREEBSD.64.o
+$(DIR_FREEBSD32)/engine.o: $(DIR_FREEBSD32)/common.o src/engine.c
+	$(CC_FREEBSD32) $(CFLAGS_FREEBSD32) -c src/engine.c -o $@
 
-$(DIR_FREEBSD64)/rp.FREEBSD.64.o: $(DIR_FREEBSD64)/common.FREEBSD.64.o src/rp.c
-	$(CC_FREEBSD64) $(CFLAGS_FREEBSD64) -c src/rp.c -o $(DIR_FREEBSD64)/rp.FREEBSD.64.o
+$(DIR_FREEBSD32)/rp.o: $(DIR_FREEBSD32)/common.o src/rp.c
+	$(CC_FREEBSD32) $(CFLAGS_FREEBSD32) -c src/rp.c -o $@
 
-tsearch-freebsd64: $(DIR_FREEBSD64)/tsearch.FREEBSD.64.o
-
-$(DIR_FREEBSD64)/tsearch.FREEBSD.64.o: $(DIR_FREEBSD64)/common.FREEBSD.64.o src/tsearch.c
-	$(CC_FREEBSD64) $(CFLAGS_FREEBSD64) -c src/tsearch.c -o $(DIR_FREEBSD64)/tsearch.FREEBSD.64.o
-
-common-freebsd64: $(DIR_FREEBSD64)/common.FREEBSD.64.o
-
-$(DIR_FREEBSD64)/common.FREEBSD.64.o: src/common.c
-	$(CC_FREEBSD64) $(CFLAGS_FREEBSD64) -c src/common.c -o $(DIR_FREEBSD64)/common.FREEBSD.64.o
+$(DIR_FREEBSD32)/tsearch.o: $(DIR_FREEBSD32)/common.o src/tsearch.c
+	$(CC_FREEBSD32) $(CFLAGS_FREEBSD32) -c src/tsearch.c -o $@
 
+$(DIR_FREEBSD32)/common.o: src/common.c
+	$(CC_FREEBSD32) $(CFLAGS_FREEBSD32) -c src/common.c -o $@
 
 ##
-## POSIX32
+## FREEBSD64
 ##
 
-DIR_POSIX32      = obj
-LIBGMP_POSIX32   = deps/gmp/linux32
-CC_POSIX32       = gcc
-CFLAGS_POSIX32   = $(CFLAGS) -I$(LIBGMP_POSIX32)/include -D__HC_x86_32__ -DPOSIX -m32 -msse2
-LDFLAGS_POSIX32  = $(LDFLAGS) -L$(LIBGMP_POSIX32)/lib -lm -lpthread -lgmp
-
-posix32: hashcat-cli32.bin
-
-rules-posix32: rules-debug32.bin
-
-rules-debug32.bin: $(DIR_POSIX32)/rp.LINUX.32.o src/rules-debug.c
-	$(CC_POSIX32) $(CFLAGS_POSIX32) $(DIR_POSIX32)/*.LINUX.32.o src/rules-debug.c -o rules-debug32.bin $(LDFLAGS_POSIX32)
-
-hashcat-posix32: hashcat-cli32.bin
-
-hashcat-cli32.bin: $(DIR_POSIX32)/tsearch.LINUX.32.o $(DIR_POSIX32)/rp.LINUX.32.o  $(DIR_POSIX32)/engine.LINUX.32.o src/hashcat-cli.c
-	$(CC_POSIX32) $(CFLAGS_POSIX32) $(DIR_POSIX32)/*.LINUX.32.o src/hashcat-cli.c -o hashcat-cli32.bin $(LDFLAGS_POSIX32)
-
-engine-posix32: $(DIR_POSIX32)/engine.LINUX.32.o
-
-$(DIR_POSIX32)/engine.LINUX.32.o: $(DIR_POSIX32)/common.LINUX.32.o src/engine.c
-	$(CC_POSIX32) $(CFLAGS_POSIX32) -c src/engine.c -o $(DIR_POSIX32)/engine.LINUX.32.o
+DIR_FREEBSD64      = obj/freebsd64
+CC_FREEBSD64       = gcc
+CFLAGS_FREEBSD64   = $(CFLAGS) -I/usr/local/include -DFREEBSD -m64 -msse2
+LDFLAGS_FREEBSD64  = $(LDFLAGS) -L/usr/local/lib -lgmp -lm -lpthread -lc
 
-rp-posix32: $(DIR_POSIX32)/rp.LINUX.32.o
+$(DIR_FREEBSD64)/rules-debug64.bin: $(DIR_FREEBSD64)/rp.o src/rules-debug.c
+	$(CC_FREEBSD64) $(CFLAGS_FREEBSD64) $(DIR_FREEBSD64)/*.o src/rules-debug.c -o $@ $(LDFLAGS_FREEBSD64)
 
-$(DIR_POSIX32)/rp.LINUX.32.o: $(DIR_POSIX32)/common.LINUX.32.o src/rp.c
-	$(CC_POSIX32) $(CFLAGS_POSIX32) -c src/rp.c -o $(DIR_POSIX32)/rp.LINUX.32.o
+$(DIR_FREEBSD64)/hashcat-cli64.bin: $(DIR_FREEBSD64)/tsearch.o $(DIR_FREEBSD64)/rp.o $(DIR_FREEBSD64)/engine.o src/hashcat-cli.c
+	$(CC_FREEBSD64) $(CFLAGS_FREEBSD64) $(DIR_FREEBSD64)/*.o src/hashcat-cli.c -o $@ $(LDFLAGS_FREEBSD64)
 
-tsearch-posix32: $(DIR_POSIX32)/tsearch.LINUX.32.o
+$(DIR_FREEBSD64)/engine.o: $(DIR_FREEBSD64)/common.o src/engine.c
+	$(CC_FREEBSD64) $(CFLAGS_FREEBSD64) -c src/engine.c -o $@
 
-$(DIR_POSIX32)/tsearch.LINUX.32.o: $(DIR_POSIX32)/common.LINUX.32.o src/tsearch.c
-	$(CC_POSIX32) $(CFLAGS_POSIX32) -c src/tsearch.c -o $(DIR_POSIX32)/tsearch.LINUX.32.o
+$(DIR_FREEBSD64)/rp.o: $(DIR_FREEBSD64)/common.o src/rp.c
+	$(CC_FREEBSD64) $(CFLAGS_FREEBSD64) -c src/rp.c -o $@
 
-common-posix32: $(DIR_POSIX32)/common.LINUX.32.o
+$(DIR_FREEBSD64)/tsearch.o: $(DIR_FREEBSD64)/common.o src/tsearch.c
+	$(CC_FREEBSD64) $(CFLAGS_FREEBSD64) -c src/tsearch.c -o $@
 
-$(DIR_POSIX32)/common.LINUX.32.o: src/common.c
-	$(CC_POSIX32) $(CFLAGS_POSIX32) -c src/common.c -o $(DIR_POSIX32)/common.LINUX.32.o
+$(DIR_FREEBSD64)/common.o: src/common.c
+	$(CC_FREEBSD64) $(CFLAGS_FREEBSD64) -c src/common.c -o $@
 
 ##
-## POSIX64
+## FREEBSDXOP
 ##
 
-DIR_POSIX64      = obj
-LIBGMP_POSIX64   = deps/gmp/linux64
-CC_POSIX64       = gcc
-CFLAGS_POSIX64   = $(CFLAGS) -I$(LIBGMP_POSIX64)/include -D__HC_x86_64__ -DPOSIX -m64 -msse2
-LDFLAGS_POSIX64  = $(LDFLAGS) -L$(LIBGMP_POSIX64)/lib -lm -lpthread -lgmp
-
-posix64: hashcat-cli64.bin
-
-rules-posix64: $(DIR_POSIX64)/rp.LINUX.64.o
-
-rules-debug64.bin: $(DIR_POSIX64)/rp.LINUX.64.o src/rules-debug.c
-	$(CC_POSIX64) $(CFLAGS_POSIX64) $(DIR_POSIX64)/*.LINUX.64.o src/rules-debug.c -o rules-debug64.bin $(LDFLAGS_POSIX64)
-
-hashcat-posix64: hashcat-cli64.bin
-
-hashcat-cli64.bin: $(DIR_POSIX64)/tsearch.LINUX.64.o $(DIR_POSIX64)/rp.LINUX.64.o $(DIR_POSIX64)/engine.LINUX.64.o src/hashcat-cli.c
-	$(CC_POSIX64) $(CFLAGS_POSIX64) $(DIR_POSIX64)/*.LINUX.64.o src/hashcat-cli.c -o hashcat-cli64.bin $(LDFLAGS_POSIX64)
-
-engine-posix64: $(DIR_POSIX64)/engine.LINUX.64.o
+DIR_FREEBSDXOP      = obj/freebsdXOP
+CC_FREEBSDXOP       = gcc
+CFLAGS_FREEBSDXOP   = $(CFLAGS) -I/usr/local/include -DFREEBSD -mxop
+LDFLAGS_FREEBSDXOP  = $(LDFLAGS) -L/usr/local/lib -lgmp -lm -lpthread -lc
 
-$(DIR_POSIX64)/engine.LINUX.64.o: $(DIR_POSIX64)/common.LINUX.64.o src/engine.c
-	$(CC_POSIX64) $(CFLAGS_POSIX64) -c src/engine.c -o $(DIR_POSIX64)/engine.LINUX.64.o
+$(DIR_FREEBSDXOP)/rules-debugXOP.bin: $(DIR_FREEBSDXOP)/rp.o src/rules-debug.c
+	$(CC_FREEBSDXOP) $(CFLAGS_FREEBSDXOP) $(DIR_FREEBSDXOP)/*.o src/rules-debug.c -o $@ $(LDFLAGS_FREEBSDXOP)
 
-rp-posix64: $(DIR_POSIX64)/rp.LINUX.64.o
+$(DIR_FREEBSDXOP)/hashcat-cliXOP.bin: $(DIR_FREEBSDXOP)/tsearch.o $(DIR_FREEBSDXOP)/rp.o $(DIR_FREEBSDXOP)/engine.o src/hashcat-cli.c
+	$(CC_FREEBSDXOP) $(CFLAGS_FREEBSDXOP) $(DIR_FREEBSDXOP)/*.o src/hashcat-cli.c -o $@ $(LDFLAGS_FREEBSDXOP)
 
-$(DIR_POSIX64)/rp.LINUX.64.o: $(DIR_POSIX64)/common.LINUX.64.o src/rp.c
-	$(CC_POSIX64) $(CFLAGS_POSIX64) -c src/rp.c -o $(DIR_POSIX64)/rp.LINUX.64.o
+$(DIR_FREEBSDXOP)/engine.o: $(DIR_FREEBSDXOP)/common.o src/engine.c
+	$(CC_FREEBSDXOP) $(CFLAGS_FREEBSDXOP) -c src/engine.c -o $@
 
-tsearch-posix64: $(DIR_POSIX64)/tsearch.LINUX.64.o
+$(DIR_FREEBSDXOP)/rp.o: $(DIR_FREEBSDXOP)/common.o src/rp.c
+	$(CC_FREEBSDXOP) $(CFLAGS_FREEBSDXOP) -c src/rp.c -o $@
 
-$(DIR_POSIX64)/tsearch.LINUX.64.o: $(DIR_POSIX64)/common.LINUX.64.o src/tsearch.c
-	$(CC_POSIX64) $(CFLAGS_POSIX64) -c src/tsearch.c -o $(DIR_POSIX64)/tsearch.LINUX.64.o
+$(DIR_FREEBSDXOP)/tsearch.o: $(DIR_FREEBSDXOP)/common.o src/tsearch.c
+	$(CC_FREEBSDXOP) $(CFLAGS_FREEBSDXOP) -c src/tsearch.c -o $@
 
-common-posix64: $(DIR_POSIX64)/common.LINUX.64.o
-
-$(DIR_POSIX64)/common.LINUX.64.o: src/common.c
-	$(CC_POSIX64) $(CFLAGS_POSIX64) -c src/common.c -o $(DIR_POSIX64)/common.LINUX.64.o
+$(DIR_FREEBSDXOP)/common.o: src/common.c
+	$(CC_FREEBSDXOP) $(CFLAGS_FREEBSDXOP) -c src/common.c -o $@
 
 ##
-## POSIXAVX
+## LINUX32
 ##
 
-DIR_POSIXAVX      = obj
-LIBGMP_POSIXAVX   = deps/gmp/linux64
-CC_POSIXAVX       = gcc
-CFLAGS_POSIXAVX   = $(CFLAGS) -I$(LIBGMP_POSIXAVX)/include -D__HC_AVX__ -DPOSIX -m64 -mavx
-LDFLAGS_POSIXAVX  = $(LDFLAGS) -L$(LIBGMP_POSIXAVX)/lib -lm -lpthread -lgmp
-
-posixAVX: hashcat-cliAVX.bin
-
-rules-posixAVX: rules-debugAVX.bin
-
-rules-debugAVX.bin: $(DIR_POSIXAVX)/rp.LINUX.AVX.o src/rules-debug.c
-	$(CC_POSIXAVX) $(CFLAGS_POSIXAVX) $(DIR_POSIXAVX)/*.LINUX.AVX.o src/rules-debug.c -o rules-debugAVX.bin $(LDFLAGS_POSIXAVX)
-
-hashcat-posixAVX: hashcat-cliAVX.bin
+DIR_LINUX32      = obj/linux32
+LIBGMP_LINUX32   = deps/gmp/linux32
+CC_LINUX32       = gcc
+CFLAGS_LINUX32   = $(CFLAGS) -I$(LIBGMP_LINUX32)/include -D__HC_x86_32__ -DLINUX -m32 -msse2
+LDFLAGS_LINUX32  = $(LDFLAGS) -L$(LIBGMP_LINUX32)/lib -lm -lpthread -lgmp
 
-hashcat-cliAVX.bin: $(DIR_POSIXAVX)/tsearch.LINUX.AVX.o $(DIR_POSIXAVX)/rp.LINUX.AVX.o $(DIR_POSIXAVX)/engine.LINUX.AVX.o src/hashcat-cli.c
-	$(CC_POSIXAVX) $(CFLAGS_POSIXAVX) $(DIR_POSIXAVX)/*.LINUX.AVX.o src/hashcat-cli.c -o hashcat-cliAVX.bin $(LDFLAGS_POSIXAVX)
+$(DIR_LINUX32)/rules-debug32.bin: $(DIR_LINUX32)/rp.o src/rules-debug.c
+	$(CC_LINUX32) $(CFLAGS_LINUX32) $(DIR_LINUX32)/*.o src/rules-debug.c -o $@ $(LDFLAGS_LINUX32)
 
-engine-posixAVX: $(DIR_POSIXAVX)/engine.LINUX.AVX.o
+$(DIR_LINUX32)/hashcat-cli32.bin: $(DIR_LINUX32)/tsearch.o $(DIR_LINUX32)/rp.o  $(DIR_LINUX32)/engine.o src/hashcat-cli.c
+	$(CC_LINUX32) $(CFLAGS_LINUX32) $(DIR_LINUX32)/*.o src/hashcat-cli.c -o $@ $(LDFLAGS_LINUX32)
 
-$(DIR_POSIXAVX)/engine.LINUX.AVX.o: $(DIR_POSIXAVX)/common.LINUX.AVX.o src/engine.c
-	$(CC_POSIXAVX) $(CFLAGS_POSIXAVX) -c src/engine.c -o $(DIR_POSIXAVX)/engine.LINUX.AVX.o
+$(DIR_LINUX32)/engine.o: $(DIR_LINUX32)/common.o src/engine.c
+	$(CC_LINUX32) $(CFLAGS_LINUX32) -c src/engine.c -o $@
 
-rp-posixAVX: $(DIR_POSIXAVX)/rp.LINUX.AVX.o
+$(DIR_LINUX32)/rp.o: $(DIR_LINUX32)/common.o src/rp.c
+	$(CC_LINUX32) $(CFLAGS_LINUX32) -c src/rp.c -o $@
 
-$(DIR_POSIXAVX)/rp.LINUX.AVX.o: $(DIR_POSIXAVX)/common.LINUX.AVX.o src/rp.c
-	$(CC_POSIXAVX) $(CFLAGS_POSIXAVX) -c src/rp.c -o $(DIR_POSIXAVX)/rp.LINUX.AVX.o
+$(DIR_LINUX32)/tsearch.o: $(DIR_LINUX32)/common.o src/tsearch.c
+	$(CC_LINUX32) $(CFLAGS_LINUX32) -c src/tsearch.c -o $@
 
-tsearch-posixAVX: $(DIR_POSIXAVX)/tsearch.LINUX.AVX.o
-
-$(DIR_POSIXAVX)/tsearch.LINUX.AVX.o: $(DIR_POSIXAVX)/common.LINUX.AVX.o src/tsearch.c
-	$(CC_POSIXAVX) $(CFLAGS_POSIXAVX) -c src/tsearch.c -o $(DIR_POSIXAVX)/tsearch.LINUX.AVX.o
-
-common-posixAVX: $(DIR_POSIXAVX)/common.LINUX.AVX.o
-
-$(DIR_POSIXAVX)/common.LINUX.AVX.o: src/common.c
-	$(CC_POSIXAVX) $(CFLAGS_POSIXAVX) -c src/common.c -o $(DIR_POSIXAVX)/common.LINUX.AVX.o
+$(DIR_LINUX32)/common.o: src/common.c
+	$(CC_LINUX32) $(CFLAGS_LINUX32) -c src/common.c -o $@
 
 ##
-## POSIXAVX2
+## LINUX64
 ##
 
-DIR_POSIXAVX2     = obj
-LIBGMP_POSIXAVX2  = deps/gmp/linux64
-CC_POSIXAVX2      = gcc
-CFLAGS_POSIXAVX2  = $(CFLAGS) -I$(LIBGMP_POSIXAVX2)/include -D__HC_AVX2__ -DPOSIX -m64 -mavx2
-LDFLAGS_POSIXAVX2 = $(LDFLAGS) -L$(LIBGMP_POSIXAVX2)/lib -lm -lpthread -lgmp
-
-posixAVX2: hashcat-cliAVX2.bin
+DIR_LINUX64      = obj/linux64
+LIBGMP_LINUX64   = deps/gmp/linux64
+CC_LINUX64       = gcc
+CFLAGS_LINUX64   = $(CFLAGS) -I$(LIBGMP_LINUX64)/include -D__HC_x86_64__ -DLINUX -m64 -msse2
+LDFLAGS_LINUX64  = $(LDFLAGS) -L$(LIBGMP_LINUX64)/lib -lm -lpthread -lgmp
 
-rules-posixAVX2: rules-debugAVX2.bin
+$(DIR_LINUX64)/rules-debug64.bin: $(DIR_LINUX64)/rp.o src/rules-debug.c
+	$(CC_LINUX64) $(CFLAGS_LINUX64) $(DIR_LINUX64)/*.o src/rules-debug.c -o $@ $(LDFLAGS_LINUX64)
 
-rules-debugAVX2.bin: $(DIR_POSIXAVX2)/rp.LINUX.AVX2.o src/rules-debug.c
-	$(CC_POSIXAVX2) $(CFLAGS_POSIXAVX2) $(DIR_POSIXAVX2)/*.LINUX.AVX2.o src/rules-debug.c -o rules-debugAVX2.bin $(LDFLAGS_POSIXAVX2)
+$(DIR_LINUX64)/hashcat-cli64.bin: $(DIR_LINUX64)/tsearch.o $(DIR_LINUX64)/rp.o $(DIR_LINUX64)/engine.o src/hashcat-cli.c
+	$(CC_LINUX64) $(CFLAGS_LINUX64) $(DIR_LINUX64)/*.o src/hashcat-cli.c -o $@ $(LDFLAGS_LINUX64)
 
-hashcat-posixAVX2: hashcat-cliAVX2.bin
+$(DIR_LINUX64)/engine.o: $(DIR_LINUX64)/common.o src/engine.c
+	$(CC_LINUX64) $(CFLAGS_LINUX64) -c src/engine.c -o $@
 
-hashcat-cliAVX2.bin: $(DIR_POSIXAVX2)/tsearch.LINUX.AVX2.o $(DIR_POSIXAVX2)/rp.LINUX.AVX2.o $(DIR_POSIXAVX2)/engine.LINUX.AVX2.o src/hashcat-cli.c
-	$(CC_POSIXAVX2) $(CFLAGS_POSIXAVX2) $(DIR_POSIXAVX2)/*.LINUX.AVX2.o src/hashcat-cli.c -o hashcat-cliAVX2.bin $(LDFLAGS_POSIXAVX2)
+$(DIR_LINUX64)/rp.o: $(DIR_LINUX64)/common.o src/rp.c
+	$(CC_LINUX64) $(CFLAGS_LINUX64) -c src/rp.c -o $@
 
-engine-posixAVX2: $(DIR_POSIXAVX2)/engine.LINUX.AVX2.o
+$(DIR_LINUX64)/tsearch.o: $(DIR_LINUX64)/common.o src/tsearch.c
+	$(CC_LINUX64) $(CFLAGS_LINUX64) -c src/tsearch.c -o $@
 
-$(DIR_POSIXAVX2)/engine.LINUX.AVX2.o: $(DIR_POSIXAVX2)/common.LINUX.AVX2.o src/engine.c
-	$(CC_POSIXAVX2) $(CFLAGS_POSIXAVX2) -c src/engine.c -o $(DIR_POSIXAVX2)/engine.LINUX.AVX2.o
-
-rp-posixAVX2: $(DIR_POSIXAVX2)/rp.LINUX.AVX2.o
-
-$(DIR_POSIXAVX2)/rp.LINUX.AVX2.o: $(DIR_POSIXAVX2)/common.LINUX.AVX2.o src/rp.c
-	$(CC_POSIXAVX2) $(CFLAGS_POSIXAVX2) -c src/rp.c -o $(DIR_POSIXAVX2)/rp.LINUX.AVX2.o
-
-tsearch-posixAVX2: $(DIR_POSIXAVX2)/tsearch.LINUX.AVX2.o
-
-$(DIR_POSIXAVX2)/tsearch.LINUX.AVX2.o: $(DIR_POSIXAVX2)/common.LINUX.AVX2.o src/tsearch.c
-	$(CC_POSIXAVX2) $(CFLAGS_POSIXAVX2) -c src/tsearch.c -o $(DIR_POSIXAVX2)/tsearch.LINUX.AVX2.o
-
-common-posixAVX2: $(DIR_POSIXAVX2)/common.LINUX.AVX2.o
-
-$(DIR_POSIXAVX2)/common.LINUX.AVX2.o: src/common.c
-	$(CC_POSIXAVX2) $(CFLAGS_POSIXAVX2) -c src/common.c -o $(DIR_POSIXAVX2)/common.LINUX.AVX2.o
+$(DIR_LINUX64)/common.o: src/common.c
+	$(CC_LINUX64) $(CFLAGS_LINUX64) -c src/common.c -o $@
 
 ##
-## POSIXXOP
+## LINUXXOP
 ##
 
-DIR_POSIXXOP      = obj
-LIBGMP_POSIXXOP   = deps/gmp/linux64
-CC_POSIXXOP       = gcc
-CFLAGS_POSIXXOP   = $(CFLAGS) -I$(LIBGMP_POSIXXOP)/include -D__HC_XOP__ -DPOSIX -m64 -mxop
-LDFLAGS_POSIXXOP  = $(LDFLAGS) -L$(LIBGMP_POSIXXOP)/lib -lm -lpthread -lgmp
-
-posixXOP: hashcat-cliXOP.bin
-
-rules-posixXOP: rules-debugXOP.bin
-
-rules-debugXOP.bin: $(DIR_POSIXXOP)/rp.LINUX.XOP.o src/rules-debug.c
-	$(CC_POSIXXOP) $(CFLAGS_POSIXXOP) $(DIR_POSIXXOP)/*.LINUX.XOP.o src/rules-debug.c -o rules-debugXOP.bin $(LDFLAGS_POSIXXOP)
+DIR_LINUXXOP      = obj/linuxXOP
+LIBGMP_LINUXXOP   = deps/gmp/linux64
+CC_LINUXXOP       = gcc
+CFLAGS_LINUXXOP   = $(CFLAGS) -I$(LIBGMP_LINUXXOP)/include -D__HC_XOP__ -DLINUX -m64 -mxop
+LDFLAGS_LINUXXOP  = $(LDFLAGS) -L$(LIBGMP_LINUXXOP)/lib -lm -lpthread -lgmp
 
-hashcat-posixXOP: hashcat-cliXOP.bin
+$(DIR_LINUXXOP)/rules-debugXOP.bin: $(DIR_LINUXXOP)/rp.o src/rules-debug.c
+	$(CC_LINUXXOP) $(CFLAGS_LINUXXOP) $(DIR_LINUXXOP)/*.o src/rules-debug.c -o $@ $(LDFLAGS_LINUXXOP)
 
-hashcat-cliXOP.bin: $(DIR_POSIXXOP)/tsearch.LINUX.XOP.o $(DIR_POSIXXOP)/rp.LINUX.XOP.o $(DIR_POSIXXOP)/engine.LINUX.XOP.o src/hashcat-cli.c
-	$(CC_POSIXXOP) $(CFLAGS_POSIXXOP) $(DIR_POSIXXOP)/*.LINUX.XOP.o src/hashcat-cli.c -o hashcat-cliXOP.bin $(LDFLAGS_POSIXXOP)
+$(DIR_LINUXXOP)/hashcat-cliXOP.bin: $(DIR_LINUXXOP)/tsearch.o $(DIR_LINUXXOP)/rp.o $(DIR_LINUXXOP)/engine.o src/hashcat-cli.c
+	$(CC_LINUXXOP) $(CFLAGS_LINUXXOP) $(DIR_LINUXXOP)/*.o src/hashcat-cli.c -o $@ $(LDFLAGS_LINUXXOP)
 
-engine-posixXOP: $(DIR_POSIXXOP)/engine.LINUX.XOP.o
+$(DIR_LINUXXOP)/engine.o: $(DIR_LINUXXOP)/common.o src/engine.c
+	$(CC_LINUXXOP) $(CFLAGS_LINUXXOP) -c src/engine.c -o $@
 
-$(DIR_POSIXXOP)/engine.LINUX.XOP.o: $(DIR_POSIXXOP)/common.LINUX.XOP.o src/engine.c
-	$(CC_POSIXXOP) $(CFLAGS_POSIXXOP) -c src/engine.c -o $(DIR_POSIXXOP)/engine.LINUX.XOP.o
+$(DIR_LINUXXOP)/rp.o: $(DIR_LINUXXOP)/common.o src/rp.c
+	$(CC_LINUXXOP) $(CFLAGS_LINUXXOP) -c src/rp.c -o $@
 
-rp-posixXOP: $(DIR_POSIXXOP)/rp.LINUX.XOP.o
+$(DIR_LINUXXOP)/tsearch.o: $(DIR_LINUXXOP)/common.o src/tsearch.c
+	$(CC_LINUXXOP) $(CFLAGS_LINUXXOP) -c src/tsearch.c -o $@
 
-$(DIR_POSIXXOP)/rp.LINUX.XOP.o: $(DIR_POSIXXOP)/common.LINUX.XOP.o src/rp.c
-	$(CC_POSIXXOP) $(CFLAGS_POSIXXOP) -c src/rp.c -o $(DIR_POSIXXOP)/rp.LINUX.XOP.o
-
-tsearch-posixXOP: $(DIR_POSIXXOP)/tsearch.LINUX.XOP.o
-
-$(DIR_POSIXXOP)/tsearch.LINUX.XOP.o: $(DIR_POSIXXOP)/common.LINUX.XOP.o src/tsearch.c
-	$(CC_POSIXXOP) $(CFLAGS_POSIXXOP) -c src/tsearch.c -o $(DIR_POSIXXOP)/tsearch.LINUX.XOP.o
-
-common-posixXOP: $(DIR_POSIXXOP)/common.LINUX.XOP.o
-
-$(DIR_POSIXXOP)/common.LINUX.XOP.o: src/common.c
-	$(CC_POSIXXOP) $(CFLAGS_POSIXXOP) -c src/common.c -o $(DIR_POSIXXOP)/common.LINUX.XOP.o
+$(DIR_LINUXXOP)/common.o: src/common.c
+	$(CC_LINUXXOP) $(CFLAGS_LINUXXOP) -c src/common.c -o $@
 
 ##
 ## WINDOWS32
 ##
 
-DIR_WINDOWS32     = obj
+DIR_WINDOWS32     = obj/win32
 LIBGMP_WINDOW32   = deps/gmp/win32
 CC_WINDOWS32      = i686-w64-mingw32-gcc
 CFLAGS_WINDOWS32  = $(CFLAGS) -I$(LIBGMP_WINDOW32)/include -D__HC_x86_32__ -DWINDOWS -m32 -msse2 -D__USE_MINGW_ANSI_STDIO=1 -mstackrealign
 LDFLAGS_WINDOWS32 = $(LDFLAGS) -L$(LIBGMP_WINDOW32)/lib -lm -lgmp
 
-windows32: hashcat-cli32.exe
-
-rules-windows32: rules-debug32.exe
-
-rules-debug32.exe: $(DIR_WINDOWS32)/rp.WIN.32.o src/rules-debug.c
-	$(CC_WINDOWS32) $(CFLAGS_WINDOWS32) $(DIR_WINDOWS32)/*.WIN.32.o src/rules-debug.c -o rules-debug32.exe $(LDFLAGS_WINDOWS32)
-
-hashcat-windows32: hashcat-cli32.exe
-
-hashcat-cli32.exe: $(DIR_WINDOWS32)/tsearch.WIN.32.o $(DIR_WINDOWS32)/rp.WIN.32.o $(DIR_WINDOWS32)/engine.WIN.32.o src/hashcat-cli.c
-	$(CC_WINDOWS32) $(CFLAGS_WINDOWS32) $(DIR_WINDOWS32)/*.WIN.32.o /usr/i686-w64-mingw32/lib/CRT_glob.o src/hashcat-cli.c -o hashcat-cli32.exe $(LDFLAGS_WINDOWS32)
-
-engine-windows32: $(DIR_WINDOWS32)/engine.WIN.32.o
+$(DIR_WINDOWS32)/rules-debug32.exe: $(DIR_WINDOWS32)/rp.o src/rules-debug.c
+	$(CC_WINDOWS32) $(CFLAGS_WINDOWS32) $(DIR_WINDOWS32)/*.o src/rules-debug.c -o $@ $(LDFLAGS_WINDOWS32)
 
-$(DIR_WINDOWS32)/engine.WIN.32.o: $(DIR_WINDOWS32)/common.WIN.32.o src/engine.c
-	$(CC_WINDOWS32) $(CFLAGS_WINDOWS32) -c src/engine.c -o $(DIR_WINDOWS32)/engine.WIN.32.o
+$(DIR_WINDOWS32)/hashcat-cli32.exe: $(DIR_WINDOWS32)/tsearch.o $(DIR_WINDOWS32)/rp.o $(DIR_WINDOWS32)/engine.o src/hashcat-cli.c
+	$(CC_WINDOWS32) $(CFLAGS_WINDOWS32) $(DIR_WINDOWS32)/*.o /usr/i686-w64-mingw32/lib/CRT_glob.o src/hashcat-cli.c -o $@ $(LDFLAGS_WINDOWS32)
 
-rp-windows32: $(DIR_WINDOWS32)/rp.WIN.32.o
+$(DIR_WINDOWS32)/engine.o: $(DIR_WINDOWS32)/common.o src/engine.c
+	$(CC_WINDOWS32) $(CFLAGS_WINDOWS32) -c src/engine.c -o $@
 
-$(DIR_WINDOWS32)/rp.WIN.32.o: $(DIR_WINDOWS32)/common.WIN.32.o src/rp.c
-	$(CC_WINDOWS32) $(CFLAGS_WINDOWS32) -c src/rp.c -o $(DIR_WINDOWS32)/rp.WIN.32.o
+$(DIR_WINDOWS32)/rp.o: $(DIR_WINDOWS32)/common.o src/rp.c
+	$(CC_WINDOWS32) $(CFLAGS_WINDOWS32) -c src/rp.c -o $@
 
-tsearch-windows32: $(DIR_WINDOWS32)/tsearch.WIN.32.o
+$(DIR_WINDOWS32)/tsearch.o: $(DIR_WINDOWS32)/common.o src/tsearch.c
+	$(CC_WINDOWS32) $(CFLAGS_WINDOWS32) -c src/tsearch.c -o $@
 
-$(DIR_WINDOWS32)/tsearch.WIN.32.o: $(DIR_WINDOWS32)/common.WIN.32.o src/tsearch.c
-	$(CC_WINDOWS32) $(CFLAGS_WINDOWS32) -c src/tsearch.c -o $(DIR_WINDOWS32)/tsearch.WIN.32.o
-
-common-windows32: $(DIR_WINDOWS32)/common.WIN.32.o
-
-$(DIR_WINDOWS32)/common.WIN.32.o: src/common.c
-	$(CC_WINDOWS32) $(CFLAGS_WINDOWS32) -c src/common.c -o $(DIR_WINDOWS32)/common.WIN.32.o
+$(DIR_WINDOWS32)/common.o: src/common.c
+	$(CC_WINDOWS32) $(CFLAGS_WINDOWS32) -c src/common.c -o $@
 
 ##
 ## WINDOWS64
 ##
 
-DIR_WINDOWS64     = obj
+DIR_WINDOWS64     = obj/win64
 LIBGMP_WINDOWS64  = deps/gmp/win64
 CC_WINDOWS64      = x86_64-w64-mingw32-gcc
 CFLAGS_WINDOWS64  = $(CFLAGS) -I$(LIBGMP_WINDOWS64)/include -D__HC_x86_64__ -DWINDOWS -m64 -msse2 -D__USE_MINGW_ANSI_STDIO=1 -mstackrealign
 LDFLAGS_WINDOWS64 = $(LDFLAGS) -L$(LIBGMP_WINDOWS64)/lib -lm -lgmp
 
-windows64: hashcat-cli64.exe
-
-rules-windows64: rules-debug64.exe
-
-rules-debug64.exe: $(DIR_WINDOWS64)/rp.WIN.64.o src/rules-debug.c
-	$(CC_WINDOWS64) $(CFLAGS_WINDOWS64) $(DIR_WINDOWS64)/*.WIN.64.o src/rules-debug.c -o rules-debug64.exe $(LDFLAGS_WINDOWS64)
-
-hashcat-windows64: hashcat-cli64.exe
-
-hashcat-cli64.exe: $(DIR_WINDOWS64)/tsearch.WIN.64.o $(DIR_WINDOWS64)/rp.WIN.64.o $(DIR_WINDOWS64)/engine.WIN.64.o src/hashcat-cli.c
-	$(CC_WINDOWS64) $(CFLAGS_WINDOWS64) $(DIR_WINDOWS64)/*.WIN.64.o /usr/x86_64-w64-mingw32/lib/CRT_glob.o src/hashcat-cli.c -o hashcat-cli64.exe $(LDFLAGS_WINDOWS64)
-
-engine-windows64: $(DIR_WINDOWS64)/engine.WIN.64.o
-
-$(DIR_WINDOWS64)/engine.WIN.64.o: $(DIR_WINDOWS64)/common.WIN.64.o src/engine.c
-	$(CC_WINDOWS64) $(CFLAGS_WINDOWS64) -c src/engine.c -o $(DIR_WINDOWS64)/engine.WIN.64.o
-
-rp-windows64: $(DIR_WINDOWS64)/rp.WIN.64.o
-
-$(DIR_WINDOWS64)/rp.WIN.64.o: $(DIR_WINDOWS64)/common.WIN.64.o src/rp.c
-	$(CC_WINDOWS64) $(CFLAGS_WINDOWS64) -c src/rp.c -o $(DIR_WINDOWS64)/rp.WIN.64.o
-
-tsearch-windows64: $(DIR_WINDOWS64)/tsearch.WIN.64.o
-
-$(DIR_WINDOWS64)/tsearch.WIN.64.o: $(DIR_WINDOWS64)/common.WIN.64.o src/tsearch.c
-	$(CC_WINDOWS64) $(CFLAGS_WINDOWS64) -c src/tsearch.c -o $(DIR_WINDOWS64)/tsearch.WIN.64.o
-
-common-windows64: $(DIR_WINDOWS64)/common.WIN.64.o
-
-$(DIR_WINDOWS64)/common.WIN.64.o: src/common.c
-	$(CC_WINDOWS64) $(CFLAGS_WINDOWS64) -c src/common.c -o $(DIR_WINDOWS64)/common.WIN.64.o
-
-##
-## WINDOWSAVX
-##
-
-DIR_WINDOWSAVX     = obj
-LIBGMP_WINDOWSAVX  = deps/gmp/win64
-CC_WINDOWSAVX      = x86_64-w64-mingw32-gcc
-CFLAGS_WINDOWSAVX  = $(CFLAGS) -I$(LIBGMP_WINDOWSAVX)/include -D__HC_AVX__ -DWINDOWS -m64 -mavx -D__USE_MINGW_ANSI_STDIO=1 -mstackrealign
-LDFLAGS_WINDOWSAVX = $(LDFLAGS) -L$(LIBGMP_WINDOWSAVX)/lib -lm -lgmp
-
-windowsAVX: hashcat-cliAVX.exe
-
-rules-windowsAVX: rules-debugAVX.exe
-
-rules-debugAVX.exe: $(DIR_WINDOWSAVX)/rp.WIN.AVX.o src/rules-debug.c
-	$(CC_WINDOWSAVX) $(CFLAGS_WINDOWSAVX) $(DIR_WINDOWSAVX)/*.WIN.AVX.o src/rules-debug.c -o rules-debugAVX.exe $(LDFLAGS_WINDOWSAVX)
-
-hashcat-windowsAVX: hashcat-cliAVX.exe
-
-hashcat-cliAVX.exe: $(DIR_WINDOWSAVX)/tsearch.WIN.AVX.o $(DIR_WINDOWSAVX)/rp.WIN.AVX.o $(DIR_WINDOWSAVX)/engine.WIN.AVX.o src/hashcat-cli.c
-	$(CC_WINDOWSAVX) $(CFLAGS_WINDOWSAVX) $(DIR_WINDOWSAVX)/*.WIN.AVX.o /usr/x86_64-w64-mingw32/lib/CRT_glob.o src/hashcat-cli.c -o hashcat-cliAVX.exe $(LDFLAGS_WINDOWSAVX)
-
-engine-windowsAVX: $(DIR_WINDOWSAVX)/engine.WIN.AVX.o
-
-$(DIR_WINDOWSAVX)/engine.WIN.AVX.o: $(DIR_WINDOWSAVX)/common.WIN.AVX.o src/engine.c
-	$(CC_WINDOWSAVX) $(CFLAGS_WINDOWSAVX) -c src/engine.c -o $(DIR_WINDOWSAVX)/engine.WIN.AVX.o
-
-rp-windowsAVX: $(DIR_WINDOWSAVX)/rp.WIN.AVX.o
-
-$(DIR_WINDOWSAVX)/rp.WIN.AVX.o: $(DIR_WINDOWSAVX)/common.WIN.AVX.o src/rp.c
-	$(CC_WINDOWSAVX) $(CFLAGS_WINDOWSAVX) -c src/rp.c -o $(DIR_WINDOWSAVX)/rp.WIN.AVX.o
+$(DIR_WINDOWS64)/rules-debug64.exe: $(DIR_WINDOWS64)/rp.o src/rules-debug.c
+	$(CC_WINDOWS64) $(CFLAGS_WINDOWS64) $(DIR_WINDOWS64)/*.o src/rules-debug.c -o $@ $(LDFLAGS_WINDOWS64)
 
-tsearch-windowsAVX: $(DIR_WINDOWSAVX)/tsearch.WIN.AVX.o
+$(DIR_WINDOWS64)/hashcat-cli64.exe: $(DIR_WINDOWS64)/tsearch.o $(DIR_WINDOWS64)/rp.o $(DIR_WINDOWS64)/engine.o src/hashcat-cli.c
+	$(CC_WINDOWS64) $(CFLAGS_WINDOWS64) $(DIR_WINDOWS64)/*.o /usr/x86_64-w64-mingw32/lib/CRT_glob.o src/hashcat-cli.c -o $@ $(LDFLAGS_WINDOWS64)
 
-$(DIR_WINDOWSAVX)/tsearch.WIN.AVX.o: $(DIR_WINDOWSAVX)/common.WIN.AVX.o src/tsearch.c
-	$(CC_WINDOWSAVX) $(CFLAGS_WINDOWSAVX) -c src/tsearch.c -o $(DIR_WINDOWSAVX)/tsearch.WIN.AVX.o
+$(DIR_WINDOWS64)/engine.o: $(DIR_WINDOWS64)/common.o src/engine.c
+	$(CC_WINDOWS64) $(CFLAGS_WINDOWS64) -c src/engine.c -o $@
 
-common-windowsAVX: $(DIR_WINDOWSAVX)/common.WIN.AVX.o
+$(DIR_WINDOWS64)/rp.o: $(DIR_WINDOWS64)/common.o src/rp.c
+	$(CC_WINDOWS64) $(CFLAGS_WINDOWS64) -c src/rp.c -o $@
 
-$(DIR_WINDOWSAVX)/common.WIN.AVX.o: src/common.c
-	$(CC_WINDOWSAVX) $(CFLAGS_WINDOWSAVX) -c src/common.c -o $(DIR_WINDOWSAVX)/common.WIN.AVX.o
+$(DIR_WINDOWS64)/tsearch.o: $(DIR_WINDOWS64)/common.o src/tsearch.c
+	$(CC_WINDOWS64) $(CFLAGS_WINDOWS64) -c src/tsearch.c -o $@
 
-##
-## WINDOWSAVX2
-##
-
-DIR_WINDOWSAVX2     = obj
-LIBGMP_WINDOWSAVX2  = deps/gmp/win64
-CC_WINDOWSAVX2      = x86_64-w64-mingw32-gcc
-CFLAGS_WINDOWSAVX2  = $(CFLAGS) -I$(LIBGMP_WINDOWSAVX2)/include -D__HC_AVX2__ -DWINDOWS -m64 -mavx2 -D__USE_MINGW_ANSI_STDIO=1 -mstackrealign
-LDFLAGS_WINDOWSAVX2 = $(LDFLAGS) -L$(LIBGMP_WINDOWSAVX2)/lib -lm -lgmp
-
-windowsAVX2: hashcat-cliAVX2.exe
-
-rules-windowsAVX2: rules-debugAVX2.exe
-
-rules-debugAVX2.exe: $(DIR_WINDOWSAVX2)/rp.WIN.AVX2.o src/rules-debug.c
-	$(CC_WINDOWSAVX2) $(CFLAGS_WINDOWSAVX2) $(DIR_WINDOWSAVX2)/*.WIN.AVX2.o src/rules-debug.c -o rules-debugAVX2.exe $(LDFLAGS_WINDOWSAVX2)
-
-hashcat-windowsAVX2: hashcat-cliAVX2.exe
-
-hashcat-cliAVX2.exe: $(DIR_WINDOWSAVX2)/tsearch.WIN.AVX2.o $(DIR_WINDOWSAVX2)/rp.WIN.AVX2.o $(DIR_WINDOWSAVX2)/engine.WIN.AVX2.o src/hashcat-cli.c
-	$(CC_WINDOWSAVX2) $(CFLAGS_WINDOWSAVX2) $(DIR_WINDOWSAVX2)/*.WIN.AVX2.o /usr/x86_64-w64-mingw32/lib/CRT_glob.o src/hashcat-cli.c -o hashcat-cliAVX2.exe $(LDFLAGS_WINDOWSAVX2)
-
-engine-windowsAVX2: $(DIR_WINDOWSAVX2)/engine.WIN.AVX2.o
-
-$(DIR_WINDOWSAVX2)/engine.WIN.AVX2.o: $(DIR_WINDOWSAVX2)/common.WIN.AVX2.o src/engine.c
-	$(CC_WINDOWSAVX2) $(CFLAGS_WINDOWSAVX2) -c src/engine.c -o $(DIR_WINDOWSAVX2)/engine.WIN.AVX2.o
-
-rp-windowsAVX2: $(DIR_WINDOWSAVX2)/rp.WIN.AVX2.o
-
-$(DIR_WINDOWSAVX2)/rp.WIN.AVX2.o: $(DIR_WINDOWSAVX2)/common.WIN.AVX2.o src/rp.c
-	$(CC_WINDOWSAVX2) $(CFLAGS_WINDOWSAVX2) -c src/rp.c -o $(DIR_WINDOWSAVX2)/rp.WIN.AVX2.o
-
-tsearch-windowsAVX2: $(DIR_WINDOWSAVX2)/tsearch.WIN.AVX2.o
-
-$(DIR_WINDOWSAVX2)/tsearch.WIN.AVX2.o: $(DIR_WINDOWSAVX2)/common.WIN.AVX2.o src/tsearch.c
-	$(CC_WINDOWSAVX2) $(CFLAGS_WINDOWSAVX2) -c src/tsearch.c -o $(DIR_WINDOWSAVX2)/tsearch.WIN.AVX2.o
-
-common-windowsAVX2: $(DIR_WINDOWSAVX2)/common.WIN.AVX2.o
-
-$(DIR_WINDOWSAVX2)/common.WIN.AVX2.o: src/common.c
-	$(CC_WINDOWSAVX2) $(CFLAGS_WINDOWSAVX2) -c src/common.c -o $(DIR_WINDOWSAVX2)/common.WIN.AVX2.o
+$(DIR_WINDOWS64)/common.o: src/common.c
+	$(CC_WINDOWS64) $(CFLAGS_WINDOWS64) -c src/common.c -o $@
 
 ##
 ## WINDOWSXOP
 ##
 
-DIR_WINDOWSXOP     = obj
+DIR_WINDOWSXOP     = obj/winXOP
 LIBGMP_WINDOWSXOP  = deps/gmp/win64
 CC_WINDOWSXOP      = x86_64-w64-mingw32-gcc
 CFLAGS_WINDOWSXOP  = $(CFLAGS) -I$(LIBGMP_WINDOWSXOP)/include -D__HC_XOP__ -DWINDOWS -m64 -mxop -D__USE_MINGW_ANSI_STDIO=1 -mstackrealign
 LDFLAGS_WINDOWSXOP = $(LDFLAGS) -L$(LIBGMP_WINDOWSXOP)/lib -lm -lgmp
 
-windowsXOP: hashcat-cliXOP.exe
-
-rules-windowsXOP: rules-debugXOP.exe
-
-rules-debugXOP.exe: $(DIR_WINDOWSXOP)/rp.WIN.XOP.o src/rules-debug.c
-	$(CC_WINDOWSXOP) $(CFLAGS_WINDOWSXOP) $(DIR_WINDOWSXOP)/*.WIN.XOP.o src/rules-debug.c -o rules-debugXOP.exe $(LDFLAGS_WINDOWSXOP)
+$(DIR_WINDOWSXOP)/rules-debugXOP.exe: $(DIR_WINDOWSXOP)/rp.o src/rules-debug.c
+	$(CC_WINDOWSXOP) $(CFLAGS_WINDOWSXOP) $(DIR_WINDOWSXOP)/*.o src/rules-debug.c -o $@ $(LDFLAGS_WINDOWSXOP)
 
-hashcat-windowsXOP: hashcat-cliXOP.exe
+$(DIR_WINDOWSXOP)/hashcat-cliXOP.exe: $(DIR_WINDOWSXOP)/tsearch.o $(DIR_WINDOWSXOP)/rp.o $(DIR_WINDOWSXOP)/engine.o src/hashcat-cli.c
+	$(CC_WINDOWSXOP) $(CFLAGS_WINDOWSXOP) $(DIR_WINDOWSXOP)/*.o /usr/x86_64-w64-mingw32/lib/CRT_glob.o src/hashcat-cli.c -o $@ $(LDFLAGS_WINDOWSXOP)
 
-hashcat-cliXOP.exe: $(DIR_WINDOWSXOP)/tsearch.WIN.XOP.o $(DIR_WINDOWSXOP)/rp.WIN.XOP.o $(DIR_WINDOWSXOP)/engine.WIN.XOP.o src/hashcat-cli.c
-	$(CC_WINDOWSXOP) $(CFLAGS_WINDOWSXOP) $(DIR_WINDOWSXOP)/*.WIN.XOP.o /usr/x86_64-w64-mingw32/lib/CRT_glob.o src/hashcat-cli.c -o hashcat-cliXOP.exe $(LDFLAGS_WINDOWSXOP)
+$(DIR_WINDOWSXOP)/engine.o: $(DIR_WINDOWSXOP)/common.o src/engine.c
+	$(CC_WINDOWSXOP) $(CFLAGS_WINDOWSXOP) -c src/engine.c -o $@
 
-engine-windowsXOP: $(DIR_WINDOWSXOP)/engine.WIN.XOP.o
+$(DIR_WINDOWSXOP)/rp.o: $(DIR_WINDOWSXOP)/common.o src/rp.c
+	$(CC_WINDOWSXOP) $(CFLAGS_WINDOWSXOP) -c src/rp.c -o $@
 
-$(DIR_WINDOWSXOP)/engine.WIN.XOP.o: $(DIR_WINDOWSXOP)/common.WIN.XOP.o src/engine.c
-	$(CC_WINDOWSXOP) $(CFLAGS_WINDOWSXOP) -c src/engine.c -o $(DIR_WINDOWSXOP)/engine.WIN.XOP.o
+$(DIR_WINDOWSXOP)/tsearch.o: $(DIR_WINDOWSXOP)/common.o src/tsearch.c
+	$(CC_WINDOWSXOP) $(CFLAGS_WINDOWSXOP) -c src/tsearch.c -o $@
 
-rp-windowsXOP: $(DIR_WINDOWSXOP)/rp.WIN.XOP.o
+$(DIR_WINDOWSXOP)/common.o: src/common.c
+	$(CC_WINDOWSXOP) $(CFLAGS_WINDOWSXOP) -c src/common.c -o $@
 
-$(DIR_WINDOWSXOP)/rp.WIN.XOP.o: $(DIR_WINDOWSXOP)/common.WIN.XOP.o src/rp.c
-	$(CC_WINDOWSXOP) $(CFLAGS_WINDOWSXOP) -c src/rp.c -o $(DIR_WINDOWSXOP)/rp.WIN.XOP.o
-
-tsearch-windowsXOP: $(DIR_WINDOWSXOP)/tsearch.WIN.XOP.o
+##
+## User 
+##
 
-$(DIR_WINDOWSXOP)/tsearch.WIN.XOP.o: $(DIR_WINDOWSXOP)/common.WIN.XOP.o src/tsearch.c
-	$(CC_WINDOWSXOP) $(CFLAGS_WINDOWSXOP) -c src/tsearch.c -o $(DIR_WINDOWSXOP)/tsearch.WIN.XOP.o
+clean:
+	rm -f $(DIR_OSX64)/*
+	rm -f $(DIR_FREEBSD32)/*
+	rm -f $(DIR_FREEBSD64)/*
+	rm -f $(DIR_FREEBSDXOP)/*
+	rm -f $(DIR_LINUX32)/*
+	rm -f $(DIR_LINUX64)/*
+	rm -f $(DIR_LINUXXOP)/*
+	rm -f $(DIR_WINDOWS32)/*
+	rm -f $(DIR_WINDOWS64)/*
+	rm -f $(DIR_WINDOWSXOP)/*
+	rm -f core out word hash hashcat.pot
+	rm -rf release
 
-common-windowsXOP: $(DIR_WINDOWSXOP)/common.WIN.XOP.o
+binaries: linux windows osx
 
-$(DIR_WINDOWSXOP)/common.WIN.XOP.o: src/common.c
-	$(CC_WINDOWSXOP) $(CFLAGS_WINDOWSXOP) -c src/common.c -o $(DIR_WINDOWSXOP)/common.WIN.XOP.o
+osx: osx64
+linux: linux32 linux64 linuxXOP
+windows: windows32 windows64 windowsXOP
+freebsd: freebsd32 freebsd64 freebsdXOP
+
+osx64:      $(DIR_OSX64)/hashcat-cli64.app
+freebsd32:  $(DIR_FREEBSD32)/hashcat-cli32.bin
+freebsd64:  $(DIR_FREEBSD64)/hashcat-cli64.bin
+freebsdXOP: $(DIR_FREEBSDXOP)/hashcat-cliXOP.bin
+linux32:    $(DIR_LINUX32)/hashcat-cli32.bin
+linux64:    $(DIR_LINUX64)/hashcat-cli64.bin
+linuxXOP:   $(DIR_LINUXXOP)/hashcat-cliXOP.bin
+windows32:  $(DIR_WINDOWS32)/hashcat-cli32.exe
+windows64:  $(DIR_WINDOWS64)/hashcat-cli64.exe
+windowsXOP: $(DIR_WINDOWSXOP)/hashcat-cliXOP.exe
+
+release: binaries
+	rm -rf release
+	mkdir release
+	cp -a $(DIR_OSX64)/hashcat-cli64.app       release/
+	cp -a $(DIR_LINUX32)/hashcat-cli32.bin     release/
+	cp -a $(DIR_LINUX64)/hashcat-cli64.bin     release/
+	cp -a $(DIR_LINUXXOP)/hashcat-cliXOP.bin   release/
+	cp -a $(DIR_WINDOWS32)/hashcat-cli32.exe   release/
+	cp -a $(DIR_WINDOWS64)/hashcat-cli64.exe   release/
+	cp -a $(DIR_WINDOWSXOP)/hashcat-cliXOP.exe release/
+	cp -a charsets docs rules tables salts examples release/
+	find release -type f -exec chmod 600 {} \;
+	find release -type d -exec chmod 700 {} \;
+	chmod 700 release/*.bin
+	chmod 700 release/*.app
+	unix2dos release/salts/*
+	unix2dos release/rules/*
+	unix2dos release/tables/*
+	unix2dos release/docs/*
+	unix2dos release/examples/*

+ 12 - 19
src/hashcat-cli.c

@@ -22,17 +22,13 @@
 #include "engine.h"
 
 // for interactive status prompt
-#ifdef POSIX
-#if defined(OSX) || defined(FREEBSD)
-
+#if defined OSX || defined FREEBSD
 #include <termios.h>
 #include <sys/ioctl.h>
+#endif
 
-#else
-
+#if defined LINUX
 #include <termio.h>
-
-#endif
 #endif
 
 #define USAGE_VIEW      0
@@ -1081,7 +1077,7 @@ void wait_finish ()
   }
 #endif
 
-#ifdef POSIX
+#if defined LINUX || defined OSX || defined FREEBSD
   pthread_join (thr_keypress, NULL);
 
   if (thr_removehash)
@@ -1325,7 +1321,7 @@ void status_display_automat ()
   fputc ('\n', out);
   #endif
 
-  #ifdef POSIX
+  #if defined LINUX || defined OSX || defined FREEBSD
   fputc ('\n', out);
   #endif
 
@@ -2840,8 +2836,7 @@ void save_hash ()
   unlink (old_input_file);
 }
 
-#ifdef POSIX
-#if defined(OSX) || defined(FREEBSD)
+#if defined OSX  || defined FREEBSD
 
 static struct termios savemodes;
 static int havemodes = 0;
@@ -2889,9 +2884,9 @@ int tty_fix ()
 
   return ioctl (fileno (stdin), TIOCSETAW, &savemodes);
 }
+#endif
 
-#else
-
+#if defined LINUX
 static struct termio savemodes;
 static int havemodes = 0;
 
@@ -2938,8 +2933,6 @@ int tty_fix ()
 
   return ioctl (fileno (stdin), TCSETAW, &savemodes);
 }
-
-#endif
 #endif
 
 #ifdef WINDOWS
@@ -3684,7 +3677,6 @@ int fgetl (FILE *fp, char *line_buf)
 
 int get_cpu_model (char **name)
 {
-  #ifdef POSIX
   #ifdef OSX
 
   size_t buflen = BUFSIZ;
@@ -3700,7 +3692,9 @@ int get_cpu_model (char **name)
 
   return 0;
 
-  #else
+  #endif
+
+  #if defined LINUX || defined FREEBSD
 
   FILE *fp = fopen ("/proc/cpuinfo", "rb");
 
@@ -3754,7 +3748,6 @@ int get_cpu_model (char **name)
 
   fclose (fp);
 
-  #endif
   #endif
 
   #ifdef WINDOWS
@@ -15979,7 +15972,7 @@ int main (int argc, char *argv[])
 
           if ((fp = fopen (engine_parameter->file_words, "rb")) != NULL)
           {
-            #ifdef POSIX
+            #if defined LINUX || defined OSX || defined FREEBSD
             struct stat file;
 
             stat (engine_parameter->file_words, &file);