From ab1005ab1aec436c4b1019ac9e83474fed114c29 Mon Sep 17 00:00:00 2001 From: philsmd Date: Thu, 18 Aug 2016 15:16:10 +0200 Subject: [PATCH 1/2] fixes #425: flexible way of searching for CRT_glob.o on linux and cygwin --- src/Makefile | 10 +++++-- src/win_file_globbing.mk | 62 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 69 insertions(+), 3 deletions(-) create mode 100644 src/win_file_globbing.mk diff --git a/src/Makefile b/src/Makefile index 4e4da2d88..620c22f78 100644 --- a/src/Makefile +++ b/src/Makefile @@ -177,9 +177,13 @@ endif LINUX_32_OBJS := obj/ext_OpenCL.LINUX.32.o obj/shared.LINUX.32.o obj/rp_kernel_on_cpu.LINUX.32.o obj/ext_ADL.LINUX.32.o obj/ext_nvml.LINUX.32.o obj/ext_nvapi.LINUX.32.o obj/ext_xnvctrl.LINUX.32.o LINUX_64_OBJS := obj/ext_OpenCL.LINUX.64.o obj/shared.LINUX.64.o obj/rp_kernel_on_cpu.LINUX.64.o obj/ext_ADL.LINUX.64.o obj/ext_nvml.LINUX.64.o obj/ext_nvapi.LINUX.64.o obj/ext_xnvctrl.LINUX.64.o -## may need to adjust according to your mingw distribution -CRT_GLOB_32 := /usr/i686-w64-mingw32/lib/CRT_glob.o -CRT_GLOB_64 := /usr/x86_64-w64-mingw32/lib/CRT_glob.o +# Windows CRT file globbing: + +CRT_GLOB_32 := +CRT_GLOB_64 := +CRT_GLOB_INCLUDE_FOLDER := $(dir $(lastword $(MAKEFILE_LIST))) + +include $(CRT_GLOB_INCLUDE_FOLDER)win_file_globbing.mk WIN_32_OBJS := obj/ext_OpenCL.WIN.32.o obj/shared.WIN.32.o obj/rp_kernel_on_cpu.WIN.32.o obj/ext_ADL.WIN.32.o obj/ext_nvml.WIN.32.o obj/ext_nvapi.WIN.32.o obj/ext_xnvctrl.WIN.32.o $(CRT_GLOB_32) WIN_64_OBJS := obj/ext_OpenCL.WIN.64.o obj/shared.WIN.64.o obj/rp_kernel_on_cpu.WIN.64.o obj/ext_ADL.WIN.64.o obj/ext_nvml.WIN.64.o obj/ext_nvapi.WIN.64.o obj/ext_xnvctrl.WIN.64.o $(CRT_GLOB_64) diff --git a/src/win_file_globbing.mk b/src/win_file_globbing.mk new file mode 100644 index 000000000..c6d770585 --- /dev/null +++ b/src/win_file_globbing.mk @@ -0,0 +1,62 @@ +## +## Authors.....: Jens Steube +## +## License.....: MIT +## + +# MinGW's CRT GLOB (for windows builds only) + +EGREP := egrep +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)) + +ifneq (,$(IS_WIN_BUILD)) + +# 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)) +define WARNING_MESSAGE= + + +! The MinGW CRT GLOB library for 32-bit compilation was not found on your system. Please make sure that $(CRT_GLOB_FILE_NAME) exists +! ATTENTION: File globbing will be disabled + +endef +$(warning $(WARNING_MESSAGE)) +endif + +CRT_GLOB_64 := $(shell $(FIND) "$(CRT_GLOB_LIB_PATH_64)" -name $(CRT_GLOB_FILE_NAME) -print -quit) + +ifeq (,$(CRT_GLOB_64)) +define WARNING_MESSAGE= + + +! The MinGW CRT GLOB library for 64-bit compilation was not found on your system. Please make sure that $(CRT_GLOB_FILE_NAME) exists +! ATTENTION: File globbing will be disabled + +endef +$(warning $(WARNING_MESSAGE)) +endif + +endif From 04baf0ee54b9a4617ad091363e1247bd82f4e902 Mon Sep 17 00:00:00 2001 From: philsmd Date: Thu, 18 Aug 2016 15:48:44 +0200 Subject: [PATCH 2/2] added additional forward slash between folder and file (to make sure) --- src/Makefile | 2 +- src/win_file_globbing.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Makefile b/src/Makefile index 620c22f78..afc13285b 100644 --- a/src/Makefile +++ b/src/Makefile @@ -183,7 +183,7 @@ CRT_GLOB_32 := CRT_GLOB_64 := CRT_GLOB_INCLUDE_FOLDER := $(dir $(lastword $(MAKEFILE_LIST))) -include $(CRT_GLOB_INCLUDE_FOLDER)win_file_globbing.mk +include $(CRT_GLOB_INCLUDE_FOLDER)/win_file_globbing.mk WIN_32_OBJS := obj/ext_OpenCL.WIN.32.o obj/shared.WIN.32.o obj/rp_kernel_on_cpu.WIN.32.o obj/ext_ADL.WIN.32.o obj/ext_nvml.WIN.32.o obj/ext_nvapi.WIN.32.o obj/ext_xnvctrl.WIN.32.o $(CRT_GLOB_32) WIN_64_OBJS := obj/ext_OpenCL.WIN.64.o obj/shared.WIN.64.o obj/rp_kernel_on_cpu.WIN.64.o obj/ext_ADL.WIN.64.o obj/ext_nvml.WIN.64.o obj/ext_nvapi.WIN.64.o obj/ext_xnvctrl.WIN.64.o $(CRT_GLOB_64) diff --git a/src/win_file_globbing.mk b/src/win_file_globbing.mk index c6d770585..38a24bbe4 100644 --- a/src/win_file_globbing.mk +++ b/src/win_file_globbing.mk @@ -1,5 +1,5 @@ ## -## Authors.....: Jens Steube +## Authors.....: Philipp Schmidt ## ## License.....: MIT ##