From 72d0b272c27c7cb25f4fb0610ea678972ab11c76 Mon Sep 17 00:00:00 2001 From: jsteube Date: Tue, 29 Nov 2016 13:46:59 +0100 Subject: [PATCH] Update win_file_globbing.mk to not check 32 bit folder in 64 bit compilation --- src/win_file_globbing.mk | 46 +++++++++++++++++++++++++++++++++------- 1 file changed, 38 insertions(+), 8 deletions(-) diff --git a/src/win_file_globbing.mk b/src/win_file_globbing.mk index b584e9904..b74d5f873 100644 --- a/src/win_file_globbing.mk +++ b/src/win_file_globbing.mk @@ -10,11 +10,17 @@ MG := $(MAKECMDGOALS) CRT_GLOB_FILE_NAME ?= CRT_glob.o + # we can skip the CRT_glob.o check/search if we do not build windows binaries -IS_WIN_BUILD := $(filter binaries,$(MG))$(filter win32,$(MG))$(filter win64,$(MG))$(filter hashcat32.exe,$(MG))$(filter hashcat64.exe,$(MG)) +IS_WIN_BUILD32 := $(filter binaries,$(MG))$(filter win32,$(MG))$(filter hashcat32.exe,$(MG)) +IS_WIN_BUILD64 := $(filter binaries,$(MG))$(filter win64,$(MG))$(filter hashcat64.exe,$(MG)) -ifneq (,$(IS_WIN_BUILD)) +## +## win32 +## + +ifneq (,$(IS_WIN_BUILD32)) ifeq ($(UNAME),CYGWIN) $(error Cross-compiling on $(UNAME) is not supported, please use the native target) @@ -27,19 +33,13 @@ endif # entering this code path means: we need to check for CRT_glob.o since we try to build binaries for windows operating systems CRT_GLOB_LIB_PATH_32 ?= /usr/i686-w64-mingw32/lib/ -CRT_GLOB_LIB_PATH_64 ?= /usr/x86_64-w64-mingw32/lib/ CRT_GLOB_LIB_SYSROOT_32 := $(shell $(CC_WIN_32) --verbose 2>&1 | $(EGREP) -m 1 -o '(with-sysroot="[^"]"|with-sysroot=[^ ]*)' | $(SED) 's/^with-sysroot="\?\([^"]*\)"\?$$/\1/') -CRT_GLOB_LIB_SYSROOT_64 := $(shell $(CC_WIN_64) --verbose 2>&1 | $(EGREP) -m 1 -o '(with-sysroot="[^"]"|with-sysroot=[^ ]*)' | $(SED) 's/^with-sysroot="\?\([^"]*\)"\?$$/\1/') ifneq (,$(CRT_GLOB_LIB_SYSROOT_32)) CRT_GLOB_LIB_PATH_32 := $(CRT_GLOB_LIB_SYSROOT_32) endif -ifneq (,$(CRT_GLOB_LIB_SYSROOT_64)) -CRT_GLOB_LIB_PATH_64 := $(CRT_GLOB_LIB_SYSROOT_64) -endif - CRT_GLOB_32 := $(shell $(FIND) "$(CRT_GLOB_LIB_PATH_32)" -name $(CRT_GLOB_FILE_NAME) -print -quit) ifeq (,$(CRT_GLOB_32)) @@ -53,6 +53,32 @@ endef $(warning $(WARNING_MESSAGE)) endif +endif + +## +## win64 +## + +ifneq (,$(IS_WIN_BUILD64)) + +ifeq ($(UNAME),CYGWIN) +$(error Cross-compiling on $(UNAME) is not supported, please use the native target) +endif + +ifeq ($(UNAME),MSYS2) +$(error Cross-compiling on $(UNAME) is not supported, please use the native target) +endif + +# entering this code path means: we need to check for CRT_glob.o since we try to build binaries for windows operating systems + +CRT_GLOB_LIB_PATH_64 ?= /usr/x86_64-w64-mingw32/lib/ + +CRT_GLOB_LIB_SYSROOT_64 := $(shell $(CC_WIN_64) --verbose 2>&1 | $(EGREP) -m 1 -o '(with-sysroot="[^"]"|with-sysroot=[^ ]*)' | $(SED) 's/^with-sysroot="\?\([^"]*\)"\?$$/\1/') + +ifneq (,$(CRT_GLOB_LIB_SYSROOT_64)) +CRT_GLOB_LIB_PATH_64 := $(CRT_GLOB_LIB_SYSROOT_64) +endif + CRT_GLOB_64 := $(shell $(FIND) "$(CRT_GLOB_LIB_PATH_64)" -name $(CRT_GLOB_FILE_NAME) -print -quit) ifeq (,$(CRT_GLOB_64)) @@ -68,6 +94,10 @@ endif endif +## +## win native +## + IS_WIN_BUILD_NATIVE := $(filter CYGWIN,$(UNAME))$(filter MSYS2,$(UNAME)) ifneq (,$(IS_WIN_BUILD_NATIVE))