Handle ming32 as a host

zlib refuses to run configure with mingw32 host and insists that
win32/Makefile.gcc is used instead.

This requires a change in this Makefile to support static-only builds.

Fixes #694.

Signed-off-by: Alexey Neyman <stilor@att.net>
This commit is contained in:
Alexey Neyman 2017-05-23 19:23:28 -07:00
parent f975aea2f8
commit 753236ea22
2 changed files with 59 additions and 13 deletions

View File

@ -0,0 +1,25 @@
diff -urpN zlib-1.2.11.orig/win32/Makefile.gcc zlib-1.2.11/win32/Makefile.gcc
--- zlib-1.2.11.orig/win32/Makefile.gcc 2017-05-23 18:52:07.937730080 -0700
+++ zlib-1.2.11/win32/Makefile.gcc 2017-05-23 19:02:24.068666463 -0700
@@ -71,7 +71,11 @@ OBJS = adler32.o compress.o crc32.o defl
gzwrite.o infback.o inffast.o inflate.o inftrees.o trees.o uncompr.o zutil.o
OBJA =
-all: $(STATICLIB) $(SHAREDLIB) $(IMPLIB) example.exe minigzip.exe example_d.exe minigzip_d.exe
+all: $(STATICLIB) example.exe minigzip.exe
+
+ifeq ($(SHARED_MODE),1)
+all: $(SHAREDLIB) $(IMPLIB) example_d.exe minigzip_d.exe
+endif
test: example.exe minigzip.exe
./example
@@ -125,7 +129,7 @@ zlibrc.o: win32/zlib1.rc
.PHONY: install uninstall clean
install: zlib.h zconf.h $(STATICLIB) $(IMPLIB)
- @if test -z "$(DESTDIR)$(INCLUDE_PATH)" -o -z "$(DESTDIR)$(LIBRARY_PATH)" -o -z "$(DESTDIR)$(BINARY_PATH)"; then \
+ @if test -z "$(INCLUDE_PATH)" -o -z "$(LIBRARY_PATH)" -o -z "$(BINARY_PATH)"; then \
echo INCLUDE_PATH, LIBRARY_PATH, and BINARY_PATH must be specified; \
exit 1; \
fi

View File

@ -76,30 +76,51 @@ do_zlib_backend() {
local ldflags
local arg
local -a extra_config
local -a extra_make
for arg in "$@"; do
eval "${arg// /\\ }"
done
CT_DoLog EXTRA "Configuring zlib"
case "${host}" in
*-mingw32)
# zlib treats mingw host differently and requires using a different
# makefile rather than configure+make. It also does not support
# out-of-tree building.
cp -av "${CT_SRC_DIR}/zlib-${CT_ZLIB_VERSION}/." .
extra_make=( -f win32/Makefile.gcc \
PREFIX="${host}-" \
SHAREDLIB= \
IMPLIB= \
LIBRARY_PATH="${prefix}/lib" \
INCLUDE_PATH="${prefix}/include" \
BINARY_PATH="${prefix}/bin" \
prefix="${prefix}" \
)
;;
CT_DoExecLog CFG \
CFLAGS="${cflags}" \
LDFLAGS="${ldflags}" \
CHOST="${host}" \
${CONFIG_SHELL} \
"${CT_SRC_DIR}/zlib-${CT_ZLIB_VERSION}/configure" \
--prefix="${prefix}" \
--static \
"${extra_config[@]}"
*)
CT_DoLog EXTRA "Configuring zlib"
CT_DoExecLog CFG \
CFLAGS="${cflags}" \
LDFLAGS="${ldflags}" \
CHOST="${host}" \
${CONFIG_SHELL} \
"${CT_SRC_DIR}/zlib-${CT_ZLIB_VERSION}/configure" \
--prefix="${prefix}" \
--static \
"${extra_config[@]}"
;;
esac
CT_DoLog EXTRA "Building zlib"
CT_DoExecLog ALL make ${JOBSFLAGS}
CT_DoExecLog ALL make "${extra_make[@]}" ${JOBSFLAGS}
if [ "${CT_COMPLIBS_CHECK}" = "y" ]; then
if [ "${host}" = "${CT_BUILD}" ]; then
CT_DoLog EXTRA "Checking zlib"
CT_DoExecLog ALL make ${JOBSFLAGS} -s check
CT_DoExecLog ALL make "${extra_make[@]}" -s test
else
# Cannot run host binaries on build in a canadian cross
CT_DoLog EXTRA "Skipping check for zlib on the host"
@ -107,7 +128,7 @@ do_zlib_backend() {
fi
CT_DoLog EXTRA "Installing zlib"
CT_DoExecLog ALL make install
CT_DoExecLog ALL make "${extra_make[@]}" install
}
fi # CT_ZLIB