1# Copyright (C) 2001-2019 Artifex Software, Inc. 2# All Rights Reserved. 3# 4# This software is provided AS-IS with no warranty, either express or 5# implied. 6# 7# This software is distributed under license and may not be copied, 8# modified or distributed except as expressly authorized under the terms 9# of the license contained in the file LICENSE in this distribution. 10# 11# Refer to licensing information at http://www.artifex.com or contact 12# Artifex Software, Inc., 1305 Grant Avenue - Suite 200, Novato, 13# CA 94945, U.S.A., +1(415)492-9861, for further information. 14# 15# makefile for zlib library code. 16# Users of this makefile must define the following: 17# GSSRCDIR - the GS library source directory 18# ZSRCDIR - the source directory 19# ZGENDIR - the generated intermediate file directory 20# ZOBJDIR - the object directory 21# SHARE_ZLIB - 0 to compile zlib, 1 to share 22# ZLIB_NAME - if SHARE_ZLIB=1, the name of the shared library 23# ZAUXDIR - the directory for auxiliary objects 24 25# This partial makefile compiles the zlib library for use in Ghostscript. 26# You can get the source code for this library from: 27# http://www.gzip.org/zlib/ 28# http://www.libpng.org/pub/png/src/ 29# zlib-#.#.#.tar.gz or zlib###.zip 30# Please see Ghostscript's `Make.htm' file for instructions about how to 31# unpack these archives. 32# 33# When each version of Ghostscript is released, we copy the associated 34# version of the zlib library to 35# ftp://ftp.cs.wisc.edu/ghost/3rdparty/ 36# for more convenient access. 37# 38# This makefile is known to work with zlib source version 1.2.1. 39# It will only work with earlier versions (1.1.4) when SHARE_ZLIB=1. 40# Note that there are obscure bugs in zlib versions before 1.1.3 that 41# may cause the FlateDecode filter to produce an occasional ioerror 42# and there is a serious security problem with 1.1.3: we strongly 43# recommend using version 1.1.4 or later. 44 45ZSRC=$(ZSRCDIR)$(D) 46ZGEN=$(ZGENDIR)$(D) 47ZOBJ=$(ZOBJDIR)$(D) 48ZAUX=$(ZAUXDIR)$(D) 49ZO_=$(O_)$(ZOBJ) 50ZAO_=$(O_)$(ZAUX) 51 52# We need D_, _D_, and _D because the OpenVMS compiler uses different 53# syntax from other compilers. 54# ZI_ and ZF_ are defined in gs.mak. 55ZCCFLAGS=$(ZLIB_CFLAGS) $(I_)$(ZI_)$(_I) $(ZF_) $(D_)verbose$(_D_)-1$(_D) 56ZCC=$(CC_) $(ZCCFLAGS) 57ZCCAUXFLAGS=$(ZLIB_CFLAGS) $(I_)$(ZI_)$(_I) $(ZF_) $(D_)verbose$(_D_)-1$(_D) 58ZCCAUX=$(CCAUX_) $(ZCCAUXFLAGS) 59 60# Define the name of this makefile. 61ZLIB_MAK=$(GLSRC)zlib.mak $(TOP_MAKEFILES) 62 63z.clean : z.config-clean z.clean-not-config-clean 64 65### WRONG. MUST DELETE OBJ AND GEN FILES SELECTIVELY. 66z.clean-not-config-clean : 67 $(RM_) $(ZOBJ)*.$(OBJ) 68 69z.config-clean : 70 $(RMN_) $(ZGEN)zlib*.dev $(ZGEN)crc32*.dev 71 72ZDEP=$(AK) $(ZLIB_MAK) $(MAKEDIRS) 73 74# Code common to compression and decompression. 75 76zlibc_=$(ZOBJ)zutil.$(OBJ) 77$(ZGEN)zlibc.dev : $(ZLIB_MAK) $(ECHOGS_XE) $(zlibc_) 78 $(SETMOD) $(ZGEN)zlibc $(zlibc_) 79 80$(ZOBJ)zutil.$(OBJ) : $(ZSRC)zutil.c $(ZDEP) 81 $(ZCC) $(ZO_)zutil.$(OBJ) $(C_) $(ZSRC)zutil.c 82 83# Encoding (compression) code. 84 85$(ZGEN)zlibe.dev : $(ZLIB_MAK) $(ZGEN)zlibe_$(SHARE_ZLIB).dev \ 86 $(MAKEDIRS) 87 $(CP_) $(ZGEN)zlibe_$(SHARE_ZLIB).dev $(ZGEN)zlibe.dev 88 89$(ZGEN)zlibe_1.dev : $(ZLIB_MAK) $(ZLIB_MAK) $(ECHOGS_XE) \ 90 $(MAKEDIRS) 91 $(SETMOD) $(ZGEN)zlibe_1 -lib $(ZLIB_NAME) 92 93zlibe_=$(ZOBJ)adler32.$(OBJ) $(ZOBJ)deflate.$(OBJ) \ 94 $(ZOBJ)compress.$(OBJ) $(ZOBJ)trees.$(OBJ) $(ZOBJ)crc32.$(OBJ) 95$(ZGEN)zlibe_0.dev : $(ZLIB_MAK) $(ECHOGS_XE) $(ZGEN)zlibc.dev $(zlibe_) \ 96 $(MAKEDIRS) 97 $(SETMOD) $(ZGEN)zlibe_0 $(zlibe_) 98 $(ADDMOD) $(ZGEN)zlibe_0 -include $(ZGEN)zlibc.dev 99 100$(ZOBJ)adler32.$(OBJ) : $(ZSRC)adler32.c $(ZDEP) 101 $(ZCC) $(ZO_)adler32.$(OBJ) $(C_) $(ZSRC)adler32.c 102 103$(ZOBJ)deflate.$(OBJ) : $(ZSRC)deflate.c $(ZDEP) 104 $(ZCC) $(ZO_)deflate.$(OBJ) $(C_) $(ZSRC)deflate.c 105 106# new file in zlib 1.2.x 107$(ZOBJ)compress.$(OBJ) : $(ZSRC)compress.c $(ZDEP) 108 $(ZCC) $(ZO_)compress.$(OBJ) $(C_) $(ZSRC)compress.c 109 110$(ZOBJ)trees.$(OBJ) : $(ZSRC)trees.c $(ZDEP) 111 $(ZCC) $(ZO_)trees.$(OBJ) $(C_) $(ZSRC)trees.c 112 113# The zlib filters per se don't need crc32, but libpng versions starting 114# with 0.90 do. 115 116$(ZGEN)crc32.dev : $(ZLIB_MAK) $(ZGEN)crc32_$(SHARE_ZLIB).dev \ 117 $(MAKEDIRS) 118 $(CP_) $(ZGEN)crc32_$(SHARE_ZLIB).dev $(ZGEN)crc32.dev 119 120$(ZGEN)crc32_1.dev : $(ZLIB_MAK) $(ZLIB_MAK) $(ECHOGS_XE) \ 121 $(MAKEDIRS) 122 $(SETMOD) $(ZGEN)crc32_1 -lib $(ZLIB_NAME) 123 124$(ZGEN)crc32_0.dev : $(ZLIB_MAK) $(ECHOGS_XE) $(ZOBJ)crc32.$(OBJ) \ 125 $(MAKEDIRS) 126 $(SETMOD) $(ZGEN)crc32_0 $(ZOBJ)crc32.$(OBJ) 127 128# We have to compile crc32 without warnings, because it defines 32-bit 129# constants that produces gcc warnings with -Wtraditional. 130$(ZOBJ)crc32.$(OBJ) : $(ZSRC)crc32.c $(ZDEP) 131 $(CC_NO_WARN) $(ZCCFLAGS) $(ZO_)crc32.$(OBJ) $(C_) $(ZSRC)crc32.c 132 133# Decoding (decompression) code. 134 135$(ZGEN)zlibd.dev : $(ZLIB_MAK) $(ZGEN)zlibd_$(SHARE_ZLIB).dev $(MAKEDIRS) 136 $(CP_) $(ZGEN)zlibd_$(SHARE_ZLIB).dev $(ZGEN)zlibd.dev 137 138$(ZGEN)zlibd_1.dev : $(ZLIB_MAK) $(ZLIB_MAK) $(ECHOGS_XE) \ 139 $(MAKEDIRS) 140 $(SETMOD) $(ZGEN)zlibd_1 -lib $(ZLIB_NAME) 141 142# zlibd[12]_ list the decompression source files for zlib 1.4.x 143zlibd1_=$(ZOBJ)infblock.$(OBJ) $(ZOBJ)infcodes.$(OBJ) $(ZOBJ)inffast.$(OBJ) 144zlibd2_=$(ZOBJ)inflate.$(OBJ) $(ZOBJ)inftrees.$(OBJ) $(ZOBJ)infutil.$(OBJ) $(ZOBJ)crc32.$(OBJ) 145 146# shorter list of files for zlib 1.2.x 147zlibd_=$(ZOBJ)inffast.$(OBJ) $(ZOBJ)inflate.$(OBJ) $(ZOBJ)inftrees.$(OBJ) $(ZOBJ)uncompr.$(OBJ) 148 149 150$(ZGEN)zlibd_0.dev : $(ZLIB_MAK) $(ECHOGS_XE) $(ZGEN)zlibc.dev $(zlibd_) $(MAKEDIRS) 151 $(SETMOD) $(ZGEN)zlibd_0 $(zlibd_) 152 $(ADDMOD) $(ZGEN)zlibd_0 -include $(ZGEN)zlibc.dev 153 154$(ZOBJ)infblock.$(OBJ) : $(ZSRC)infblock.c $(ZDEP) 155 $(ZCC) $(ZO_)infblock.$(OBJ) $(C_) $(ZSRC)infblock.c 156 157$(ZOBJ)infcodes.$(OBJ) : $(ZSRC)infcodes.c $(ZDEP) 158 $(ZCC) $(ZO_)infcodes.$(OBJ) $(C_) $(ZSRC)infcodes.c 159 160$(ZOBJ)inffast.$(OBJ) : $(ZSRC)inffast.c $(ZDEP) 161 $(ZCC) $(ZO_)inffast.$(OBJ) $(C_) $(ZSRC)inffast.c 162 163$(ZOBJ)inflate.$(OBJ) : $(ZSRC)inflate.c $(ZDEP) 164 $(ZCC) $(ZO_)inflate.$(OBJ) $(C_) $(ZSRC)inflate.c 165 166$(ZOBJ)inftrees.$(OBJ) : $(ZSRC)inftrees.c $(ZDEP) 167 $(ZCC) $(ZO_)inftrees.$(OBJ) $(C_) $(ZSRC)inftrees.c 168 169$(ZOBJ)infutil.$(OBJ) : $(ZSRC)infutil.c $(ZDEP) 170 $(ZCC) $(ZO_)infutil.$(OBJ) $(C_) $(ZSRC)infutil.c 171 172# new file in zlib 1.2.x 173$(ZOBJ)uncompr.$(OBJ) : $(ZSRC)uncompr.c $(ZDEP) 174 $(ZCC) $(ZO_)uncompr.$(OBJ) $(C_) $(ZSRC)uncompr.c 175 176# Auxiliary objects 177 178$(ZAUX)adler32.$(OBJ) : $(ZSRC)adler32.c $(ZDEP) 179 $(ZCCAUX) $(ZAO_)adler32.$(OBJ) $(C_) $(ZSRC)adler32.c 180 181$(ZAUX)deflate.$(OBJ) : $(ZSRC)deflate.c $(ZDEP) 182 $(ZCCAUX) $(ZAO_)deflate.$(OBJ) $(C_) $(ZSRC)deflate.c 183 184# new file in zlib 1.2.x 185$(ZAUX)compress.$(OBJ) : $(ZSRC)compress.c $(ZDEP) 186 $(ZCCAUX) $(ZAO_)compress.$(OBJ) $(C_) $(ZSRC)compress.c 187 188$(ZAUX)trees.$(OBJ) : $(ZSRC)trees.c $(ZDEP) 189 $(ZCCAUX) $(ZAO_)trees.$(OBJ) $(C_) $(ZSRC)trees.c 190 191$(ZAUX)zutil.$(OBJ) : $(ZSRC)zutil.c $(ZDEP) 192 $(ZCCAUX) $(ZAO_)zutil.$(OBJ) $(C_) $(ZSRC)zutil.c 193 194# We have to compile crc32 without warnings, because it defines 32-bit 195# constants that produces gcc warnings with -Wtraditional. 196$(ZAUX)crc32.$(OBJ) : $(ZSRC)crc32.c $(ZDEP) 197 $(CCAUX_NO_WARN) $(ZCCAUXFLAGS) $(ZAO_)crc32.$(OBJ) $(C_) $(ZSRC)crc32.c 198