From cd3fae958dbf28b79ce190f5759c8e5ce3e46006 Mon Sep 17 00:00:00 2001 From: Jens Steube Date: Mon, 28 Nov 2016 15:20:10 +0100 Subject: [PATCH] Add Makefile code to find CRT_glob.o using the native target when compiling on Cygwin or Msys2 host --- src/Makefile | 8 ++++++++ src/win_file_globbing.mk | 34 +++++++++++++++++++++++++++++----- 2 files changed, 37 insertions(+), 5 deletions(-) diff --git a/src/Makefile b/src/Makefile index 95bd13e58..308ad4114 100644 --- a/src/Makefile +++ b/src/Makefile @@ -258,6 +258,14 @@ OBJS_ALL := affinity autotune benchmark bitmap bitops combinator NATIVE_OBJS := $(foreach OBJ,$(OBJS_ALL),obj/$(OBJ).NATIVE.o) NATIVE_SHARED_OBJS := $(foreach OBJ,$(OBJS_ALL),obj/$(OBJ).NATIVE.SHARED.o) +ifeq ($(UNAME),CYGWIN) +NATIVE_OBJS += $(CRT_GLOB) +endif # CYGWIN + +ifeq ($(UNAME),MSYS2) +NATIVE_OBJS += $(CRT_GLOB) +endif # MSYS2 + LINUX_32_OBJS := $(foreach OBJ,$(OBJS_ALL),obj/$(OBJ).LINUX.32.o) LINUX_64_OBJS := $(foreach OBJ,$(OBJS_ALL),obj/$(OBJ).LINUX.64.o) diff --git a/src/win_file_globbing.mk b/src/win_file_globbing.mk index cd6cb97f7..b584e9904 100644 --- a/src/win_file_globbing.mk +++ b/src/win_file_globbing.mk @@ -16,15 +16,18 @@ IS_WIN_BUILD := $(filter binaries,$(MG))$(filter win32,$(MG))$(filter win6 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 +ifeq ($(UNAME),CYGWIN) +$(error Cross-compiling on $(UNAME) is not supported, please use the native target) +endif ifeq ($(UNAME),MSYS2) -CRT_GLOB_LIB_PATH_32 ?= /mingw32/i686-w64-mingw32/lib/ -CRT_GLOB_LIB_PATH_64 ?= /mingw64/x86_64-w64-mingw32/lib/ -else +$(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_32 ?= /usr/i686-w64-mingw32/lib/ CRT_GLOB_LIB_PATH_64 ?= /usr/x86_64-w64-mingw32/lib/ -endif 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/') @@ -64,3 +67,24 @@ $(warning $(WARNING_MESSAGE)) endif endif + +IS_WIN_BUILD_NATIVE := $(filter CYGWIN,$(UNAME))$(filter MSYS2,$(UNAME)) + +ifneq (,$(IS_WIN_BUILD_NATIVE)) + +# 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 := $(shell $(FIND) / -name $(CRT_GLOB_FILE_NAME) -print -quit) + +ifeq (,$(CRT_GLOB)) +define WARNING_MESSAGE= + + +! The MinGW CRT GLOB library 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