[gzip] Improve building with external zlib (#49673).

Building FreeType with external zlib 1.2.8 makes msvc 14 stop with
the following error.

  ftgzip.c
  zlib-1.2.8\zlib.h(86): error C2061:
                         syntax error: identifier 'z_const'
  zlib-1.2.8\zlib.h(94): error C2054:
                         expected '(' to follow 'z_const'
  zlib-1.2.8\zlib.h(94): error C2085:
                         'msg': not in formal parameter list
  ...
  zlib-1.2.8\zlib.h(877): fatal error C1003:
                          error count exceeds 100; stopping compilation

The error happens because FreeType keeps an own copy of zlib-1.1.4
under `src/gzip'.  When building `src/gzip/ftgzip.c' with
FT_CONFIG_OPTION_SYSTEM_ZLIB defined, it uses

  #include <zlib.h>

which correctly finds an external `zlib.h', but `zlib.h' itself has
a line

  #include "zconf.h"

which makes Visual Studio 2015 find `src/gzip/zconf.h' while
compiling the files in `src/gzip'.

* src/gzip/zconf.h: Rename to...
* src/gzip/ftzconf.h: ... this.
* src/gzip/zlib.h, src/gzip/rules.mk (GZIP_DRV_SRCS): Updated.
This commit is contained in:
Werner Lemberg 2016-12-01 11:36:37 +01:00
parent 255828c891
commit 602be7c810
5 changed files with 56 additions and 8 deletions

View File

@ -1,3 +1,39 @@
2016-12-01 Werner Lemberg <wl@gnu.org>
[gzip] Improve building with external zlib (#49673).
Building FreeType with external zlib 1.2.8 makes msvc 14 stop with
the following error.
ftgzip.c
zlib-1.2.8\zlib.h(86): error C2061:
syntax error: identifier 'z_const'
zlib-1.2.8\zlib.h(94): error C2054:
expected '(' to follow 'z_const'
zlib-1.2.8\zlib.h(94): error C2085:
'msg': not in formal parameter list
...
zlib-1.2.8\zlib.h(877): fatal error C1003:
error count exceeds 100; stopping compilation
The error happens because FreeType keeps an own copy of zlib-1.1.4
under `src/gzip'. When building `src/gzip/ftgzip.c' with
FT_CONFIG_OPTION_SYSTEM_ZLIB defined, it uses
#include <zlib.h>
which correctly finds an external `zlib.h', but `zlib.h' itself has
a line
#include "zconf.h"
which makes Visual Studio 2015 find `src/gzip/zconf.h' while
compiling the files in `src/gzip'.
* src/gzip/zconf.h: Rename to...
* src/gzip/ftzconf.h: ... this.
* src/gzip/zlib.h, src/gzip/rules.mk (GZIP_DRV_SRCS): Updated.
2016-12-01 Oleksandr Chekhovskyi <oleksandr.chekhovskyi@gmail.com>
[autofit] Fix Emscripten crash (patch #9180).

View File

@ -51,17 +51,29 @@
#else /* !FT_CONFIG_OPTION_SYSTEM_ZLIB */
/* In this case, we include our own modified sources of the ZLib */
/* within the "ftgzip" component. The modifications were necessary */
/* to #include all files without conflicts, as well as preventing */
/* the definition of "extern" functions that may cause linking */
/* conflicts when a program is linked with both FreeType and the */
/* original ZLib. */
/* In this case, we include our own modified sources of the ZLib */
/* within the `gzip' component. The modifications were necessary */
/* to #include all files without conflicts, as well as preventing */
/* the definition of `extern' functions that may cause linking */
/* conflicts when a program is linked with both FreeType and the */
/* original ZLib. */
#ifndef USE_ZLIB_ZCALLOC
#define MY_ZCALLOC /* prevent all zcalloc() & zfree() in zutil.c */
#endif
/* Note that our `zlib.h' includes `ftzconf.h' instead of `zconf.h'; */
/* the main reason is that even a global `zlib.h' includes `zconf.h' */
/* with */
/* */
/* #include "zconf.h" */
/* */
/* instead of the expected */
/* */
/* #include <zconf.h> */
/* */
/* so that configuration with `FT_CONFIG_OPTION_SYSTEM_ZLIB' might */
/* include the wrong `zconf.h' file, leading to errors. */
#include "zlib.h"
#undef SLOW

View File

@ -40,6 +40,7 @@ endif
# unconditionally.
#
GZIP_DRV_SRCS := $(GZIP_DIR)/adler32.c \
$(GZIP_DIR)/ftzconf.h \
$(GZIP_DIR)/infblock.c \
$(GZIP_DIR)/infblock.h \
$(GZIP_DIR)/infcodes.c \
@ -50,7 +51,6 @@ GZIP_DRV_SRCS := $(GZIP_DIR)/adler32.c \
$(GZIP_DIR)/inftrees.h \
$(GZIP_DIR)/infutil.c \
$(GZIP_DIR)/infutil.h \
$(GZIP_DIR)/zconf.h \
$(GZIP_DIR)/zlib.h \
$(GZIP_DIR)/zutil.c \
$(GZIP_DIR)/zutil.h

View File

@ -31,7 +31,7 @@
#ifndef _ZLIB_H
#define _ZLIB_H
#include "zconf.h"
#include "ftzconf.h"
#ifdef __cplusplus
extern "C" {