Browse Source

Rewrite Makefile so that it allows easier integration of native targets

Jens Steube 10 years ago
parent
commit
9535457d6c
15 changed files with 237 additions and 440 deletions
  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
 ## Hashcat build documentation
 
 
 ### Revision:
 ### Revision:
-* 1.01
+* 1.02
 
 
 ### Authors:
 ### Authors:
 * Gabriele Gristina <<matrix@hashcat.net>>
 * Gabriele Gristina <<matrix@hashcat.net>>
@@ -26,16 +26,11 @@ $ sudo ./tools/deps.sh
 Run make depending on your os
 Run make depending on your os
 
 
 ```bash
 ```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 ;)
 Enjoy your fresh **Hashcat** binaries ;)

+ 5 - 0
docs/changes.txt

@@ -1,5 +1,10 @@
 * changes v2.00 -> v2.01:
 * changes v2.00 -> v2.01:
 
 
+type.: Feature
+file.: Host
+desc.: Added native compilation support for FreeBSD
+PR...: 23, 25
+
 type.: Feature
 type.: Feature
 file.: Host
 file.: Host
 desc.: Fixed a possible memory problem for hash type -m 11400 = SIP digest authentication (MD5)
 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)
 #define ACMutexInit(Dmutex)                       Dmutex = CreateMutex (0, FALSE, 0)
 #endif
 #endif
 
 
-#ifdef POSIX
+#if defined LINUX || defined OSX || defined FREEBSD
 #include <pthread.h>
 #include <pthread.h>
 typedef pthread_t THREAD;
 typedef pthread_t THREAD;
 typedef pthread_mutex_t MUTEX;
 typedef pthread_mutex_t MUTEX;
@@ -112,7 +112,7 @@ typedef pthread_mutex_t MUTEX;
 #define SetPriorityHigh()   { HANDLE hProc = GetCurrentProcess(); SetPriorityClass (hProc, HIGH_PRIORITY_CLASS);   }
 #define SetPriorityHigh()   { HANDLE hProc = GetCurrentProcess(); SetPriorityClass (hProc, HIGH_PRIORITY_CLASS);   }
 #endif
 #endif
 
 
-#ifdef POSIX
+#if defined LINUX || defined OSX || defined FREEBSD
 #include <sys/resource.h>
 #include <sys/resource.h>
 #define SetPriorityLow()    setpriority (PRIO_PROCESS, 0, 1)
 #define SetPriorityLow()    setpriority (PRIO_PROCESS, 0, 1)
 #define SetPriorityNormal() setpriority (PRIO_PROCESS, 0, 0)
 #define SetPriorityNormal() setpriority (PRIO_PROCESS, 0, 0)
@@ -123,7 +123,7 @@ typedef pthread_mutex_t MUTEX;
 #define hc_sleep(x) Sleep ((x) * 1000);
 #define hc_sleep(x) Sleep ((x) * 1000);
 #endif
 #endif
 
 
-#ifdef POSIX
+#if defined LINUX || defined OSX || defined FREEBSD
 #define hc_sleep(x) sleep ((x));
 #define hc_sleep(x) sleep ((x));
 #endif
 #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
 ## License.....: MIT
 ##
 ##
 
 
+all: binaries
+
 ##
 ##
 ## Detect host OS
 ## 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
 #CFLAGS  := -W -Wall -pipe -I include/ -g
 LDFLAGS :=
 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
 ## OSX64
 ##
 ##
 
 
-DIR_OSX64      = obj
+DIR_OSX64      = obj/osx64
 CC_OSX64       = i686-apple-darwin10-gcc
 CC_OSX64       = i686-apple-darwin10-gcc
 LIBGMP_OSX64   = deps/gmp/osx64
 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
 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
 ## WINDOWS32
 ##
 ##
 
 
-DIR_WINDOWS32     = obj
+DIR_WINDOWS32     = obj/win32
 LIBGMP_WINDOW32   = deps/gmp/win32
 LIBGMP_WINDOW32   = deps/gmp/win32
 CC_WINDOWS32      = i686-w64-mingw32-gcc
 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
 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
 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
 ## WINDOWS64
 ##
 ##
 
 
-DIR_WINDOWS64     = obj
+DIR_WINDOWS64     = obj/win64
 LIBGMP_WINDOWS64  = deps/gmp/win64
 LIBGMP_WINDOWS64  = deps/gmp/win64
 CC_WINDOWS64      = x86_64-w64-mingw32-gcc
 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
 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
 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
 ## WINDOWSXOP
 ##
 ##
 
 
-DIR_WINDOWSXOP     = obj
+DIR_WINDOWSXOP     = obj/winXOP
 LIBGMP_WINDOWSXOP  = deps/gmp/win64
 LIBGMP_WINDOWSXOP  = deps/gmp/win64
 CC_WINDOWSXOP      = x86_64-w64-mingw32-gcc
 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
 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
 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"
 #include "engine.h"
 
 
 // for interactive status prompt
 // for interactive status prompt
-#ifdef POSIX
-#if defined(OSX) || defined(FREEBSD)
-
+#if defined OSX || defined FREEBSD
 #include <termios.h>
 #include <termios.h>
 #include <sys/ioctl.h>
 #include <sys/ioctl.h>
+#endif
 
 
-#else
-
+#if defined LINUX
 #include <termio.h>
 #include <termio.h>
-
-#endif
 #endif
 #endif
 
 
 #define USAGE_VIEW      0
 #define USAGE_VIEW      0
@@ -1081,7 +1077,7 @@ void wait_finish ()
   }
   }
 #endif
 #endif
 
 
-#ifdef POSIX
+#if defined LINUX || defined OSX || defined FREEBSD
   pthread_join (thr_keypress, NULL);
   pthread_join (thr_keypress, NULL);
 
 
   if (thr_removehash)
   if (thr_removehash)
@@ -1325,7 +1321,7 @@ void status_display_automat ()
   fputc ('\n', out);
   fputc ('\n', out);
   #endif
   #endif
 
 
-  #ifdef POSIX
+  #if defined LINUX || defined OSX || defined FREEBSD
   fputc ('\n', out);
   fputc ('\n', out);
   #endif
   #endif
 
 
@@ -2840,8 +2836,7 @@ void save_hash ()
   unlink (old_input_file);
   unlink (old_input_file);
 }
 }
 
 
-#ifdef POSIX
-#if defined(OSX) || defined(FREEBSD)
+#if defined OSX  || defined FREEBSD
 
 
 static struct termios savemodes;
 static struct termios savemodes;
 static int havemodes = 0;
 static int havemodes = 0;
@@ -2889,9 +2884,9 @@ int tty_fix ()
 
 
   return ioctl (fileno (stdin), TIOCSETAW, &savemodes);
   return ioctl (fileno (stdin), TIOCSETAW, &savemodes);
 }
 }
+#endif
 
 
-#else
-
+#if defined LINUX
 static struct termio savemodes;
 static struct termio savemodes;
 static int havemodes = 0;
 static int havemodes = 0;
 
 
@@ -2938,8 +2933,6 @@ int tty_fix ()
 
 
   return ioctl (fileno (stdin), TCSETAW, &savemodes);
   return ioctl (fileno (stdin), TCSETAW, &savemodes);
 }
 }
-
-#endif
 #endif
 #endif
 
 
 #ifdef WINDOWS
 #ifdef WINDOWS
@@ -3684,7 +3677,6 @@ int fgetl (FILE *fp, char *line_buf)
 
 
 int get_cpu_model (char **name)
 int get_cpu_model (char **name)
 {
 {
-  #ifdef POSIX
   #ifdef OSX
   #ifdef OSX
 
 
   size_t buflen = BUFSIZ;
   size_t buflen = BUFSIZ;
@@ -3700,7 +3692,9 @@ int get_cpu_model (char **name)
 
 
   return 0;
   return 0;
 
 
-  #else
+  #endif
+
+  #if defined LINUX || defined FREEBSD
 
 
   FILE *fp = fopen ("/proc/cpuinfo", "rb");
   FILE *fp = fopen ("/proc/cpuinfo", "rb");
 
 
@@ -3754,7 +3748,6 @@ int get_cpu_model (char **name)
 
 
   fclose (fp);
   fclose (fp);
 
 
-  #endif
   #endif
   #endif
 
 
   #ifdef WINDOWS
   #ifdef WINDOWS
@@ -15979,7 +15972,7 @@ int main (int argc, char *argv[])
 
 
           if ((fp = fopen (engine_parameter->file_words, "rb")) != NULL)
           if ((fp = fopen (engine_parameter->file_words, "rb")) != NULL)
           {
           {
-            #ifdef POSIX
+            #if defined LINUX || defined OSX || defined FREEBSD
             struct stat file;
             struct stat file;
 
 
             stat (engine_parameter->file_words, &file);
             stat (engine_parameter->file_words, &file);