Removed unnecessary files from zlib contribution
parent
a824b79508
commit
e7c112916b
|
@ -1,26 +0,0 @@
|
||||||
*.diff
|
|
||||||
*.patch
|
|
||||||
*.orig
|
|
||||||
*.rej
|
|
||||||
|
|
||||||
*~
|
|
||||||
*.a
|
|
||||||
*.lo
|
|
||||||
*.o
|
|
||||||
*.dylib
|
|
||||||
|
|
||||||
*.gcda
|
|
||||||
*.gcno
|
|
||||||
*.gcov
|
|
||||||
|
|
||||||
/example
|
|
||||||
/example64
|
|
||||||
/examplesh
|
|
||||||
/libz.so*
|
|
||||||
/minigzip
|
|
||||||
/minigzip64
|
|
||||||
/minigzipsh
|
|
||||||
/zlib.pc
|
|
||||||
/configure.log
|
|
||||||
|
|
||||||
.DS_Store
|
|
File diff suppressed because it is too large
Load Diff
368
contrib/zlib/FAQ
368
contrib/zlib/FAQ
|
@ -1,368 +0,0 @@
|
||||||
|
|
||||||
Frequently Asked Questions about zlib
|
|
||||||
|
|
||||||
|
|
||||||
If your question is not there, please check the zlib home page
|
|
||||||
http://zlib.net/ which may have more recent information.
|
|
||||||
The lastest zlib FAQ is at http://zlib.net/zlib_faq.html
|
|
||||||
|
|
||||||
|
|
||||||
1. Is zlib Y2K-compliant?
|
|
||||||
|
|
||||||
Yes. zlib doesn't handle dates.
|
|
||||||
|
|
||||||
2. Where can I get a Windows DLL version?
|
|
||||||
|
|
||||||
The zlib sources can be compiled without change to produce a DLL. See the
|
|
||||||
file win32/DLL_FAQ.txt in the zlib distribution. Pointers to the
|
|
||||||
precompiled DLL are found in the zlib web site at http://zlib.net/ .
|
|
||||||
|
|
||||||
3. Where can I get a Visual Basic interface to zlib?
|
|
||||||
|
|
||||||
See
|
|
||||||
* http://marknelson.us/1997/01/01/zlib-engine/
|
|
||||||
* win32/DLL_FAQ.txt in the zlib distribution
|
|
||||||
|
|
||||||
4. compress() returns Z_BUF_ERROR.
|
|
||||||
|
|
||||||
Make sure that before the call of compress(), the length of the compressed
|
|
||||||
buffer is equal to the available size of the compressed buffer and not
|
|
||||||
zero. For Visual Basic, check that this parameter is passed by reference
|
|
||||||
("as any"), not by value ("as long").
|
|
||||||
|
|
||||||
5. deflate() or inflate() returns Z_BUF_ERROR.
|
|
||||||
|
|
||||||
Before making the call, make sure that avail_in and avail_out are not zero.
|
|
||||||
When setting the parameter flush equal to Z_FINISH, also make sure that
|
|
||||||
avail_out is big enough to allow processing all pending input. Note that a
|
|
||||||
Z_BUF_ERROR is not fatal--another call to deflate() or inflate() can be
|
|
||||||
made with more input or output space. A Z_BUF_ERROR may in fact be
|
|
||||||
unavoidable depending on how the functions are used, since it is not
|
|
||||||
possible to tell whether or not there is more output pending when
|
|
||||||
strm.avail_out returns with zero. See http://zlib.net/zlib_how.html for a
|
|
||||||
heavily annotated example.
|
|
||||||
|
|
||||||
6. Where's the zlib documentation (man pages, etc.)?
|
|
||||||
|
|
||||||
It's in zlib.h . Examples of zlib usage are in the files test/example.c
|
|
||||||
and test/minigzip.c, with more in examples/ .
|
|
||||||
|
|
||||||
7. Why don't you use GNU autoconf or libtool or ...?
|
|
||||||
|
|
||||||
Because we would like to keep zlib as a very small and simple package.
|
|
||||||
zlib is rather portable and doesn't need much configuration.
|
|
||||||
|
|
||||||
8. I found a bug in zlib.
|
|
||||||
|
|
||||||
Most of the time, such problems are due to an incorrect usage of zlib.
|
|
||||||
Please try to reproduce the problem with a small program and send the
|
|
||||||
corresponding source to us at zlib@gzip.org . Do not send multi-megabyte
|
|
||||||
data files without prior agreement.
|
|
||||||
|
|
||||||
9. Why do I get "undefined reference to gzputc"?
|
|
||||||
|
|
||||||
If "make test" produces something like
|
|
||||||
|
|
||||||
example.o(.text+0x154): undefined reference to `gzputc'
|
|
||||||
|
|
||||||
check that you don't have old files libz.* in /usr/lib, /usr/local/lib or
|
|
||||||
/usr/X11R6/lib. Remove any old versions, then do "make install".
|
|
||||||
|
|
||||||
10. I need a Delphi interface to zlib.
|
|
||||||
|
|
||||||
See the contrib/delphi directory in the zlib distribution.
|
|
||||||
|
|
||||||
11. Can zlib handle .zip archives?
|
|
||||||
|
|
||||||
Not by itself, no. See the directory contrib/minizip in the zlib
|
|
||||||
distribution.
|
|
||||||
|
|
||||||
12. Can zlib handle .Z files?
|
|
||||||
|
|
||||||
No, sorry. You have to spawn an uncompress or gunzip subprocess, or adapt
|
|
||||||
the code of uncompress on your own.
|
|
||||||
|
|
||||||
13. How can I make a Unix shared library?
|
|
||||||
|
|
||||||
By default a shared (and a static) library is built for Unix. So:
|
|
||||||
|
|
||||||
make distclean
|
|
||||||
./configure
|
|
||||||
make
|
|
||||||
|
|
||||||
14. How do I install a shared zlib library on Unix?
|
|
||||||
|
|
||||||
After the above, then:
|
|
||||||
|
|
||||||
make install
|
|
||||||
|
|
||||||
However, many flavors of Unix come with a shared zlib already installed.
|
|
||||||
Before going to the trouble of compiling a shared version of zlib and
|
|
||||||
trying to install it, you may want to check if it's already there! If you
|
|
||||||
can #include <zlib.h>, it's there. The -lz option will probably link to
|
|
||||||
it. You can check the version at the top of zlib.h or with the
|
|
||||||
ZLIB_VERSION symbol defined in zlib.h .
|
|
||||||
|
|
||||||
15. I have a question about OttoPDF.
|
|
||||||
|
|
||||||
We are not the authors of OttoPDF. The real author is on the OttoPDF web
|
|
||||||
site: Joel Hainley, jhainley@myndkryme.com.
|
|
||||||
|
|
||||||
16. Can zlib decode Flate data in an Adobe PDF file?
|
|
||||||
|
|
||||||
Yes. See http://www.pdflib.com/ . To modify PDF forms, see
|
|
||||||
http://sourceforge.net/projects/acroformtool/ .
|
|
||||||
|
|
||||||
17. Why am I getting this "register_frame_info not found" error on Solaris?
|
|
||||||
|
|
||||||
After installing zlib 1.1.4 on Solaris 2.6, running applications using zlib
|
|
||||||
generates an error such as:
|
|
||||||
|
|
||||||
ld.so.1: rpm: fatal: relocation error: file /usr/local/lib/libz.so:
|
|
||||||
symbol __register_frame_info: referenced symbol not found
|
|
||||||
|
|
||||||
The symbol __register_frame_info is not part of zlib, it is generated by
|
|
||||||
the C compiler (cc or gcc). You must recompile applications using zlib
|
|
||||||
which have this problem. This problem is specific to Solaris. See
|
|
||||||
http://www.sunfreeware.com for Solaris versions of zlib and applications
|
|
||||||
using zlib.
|
|
||||||
|
|
||||||
18. Why does gzip give an error on a file I make with compress/deflate?
|
|
||||||
|
|
||||||
The compress and deflate functions produce data in the zlib format, which
|
|
||||||
is different and incompatible with the gzip format. The gz* functions in
|
|
||||||
zlib on the other hand use the gzip format. Both the zlib and gzip formats
|
|
||||||
use the same compressed data format internally, but have different headers
|
|
||||||
and trailers around the compressed data.
|
|
||||||
|
|
||||||
19. Ok, so why are there two different formats?
|
|
||||||
|
|
||||||
The gzip format was designed to retain the directory information about a
|
|
||||||
single file, such as the name and last modification date. The zlib format
|
|
||||||
on the other hand was designed for in-memory and communication channel
|
|
||||||
applications, and has a much more compact header and trailer and uses a
|
|
||||||
faster integrity check than gzip.
|
|
||||||
|
|
||||||
20. Well that's nice, but how do I make a gzip file in memory?
|
|
||||||
|
|
||||||
You can request that deflate write the gzip format instead of the zlib
|
|
||||||
format using deflateInit2(). You can also request that inflate decode the
|
|
||||||
gzip format using inflateInit2(). Read zlib.h for more details.
|
|
||||||
|
|
||||||
21. Is zlib thread-safe?
|
|
||||||
|
|
||||||
Yes. However any library routines that zlib uses and any application-
|
|
||||||
provided memory allocation routines must also be thread-safe. zlib's gz*
|
|
||||||
functions use stdio library routines, and most of zlib's functions use the
|
|
||||||
library memory allocation routines by default. zlib's *Init* functions
|
|
||||||
allow for the application to provide custom memory allocation routines.
|
|
||||||
|
|
||||||
Of course, you should only operate on any given zlib or gzip stream from a
|
|
||||||
single thread at a time.
|
|
||||||
|
|
||||||
22. Can I use zlib in my commercial application?
|
|
||||||
|
|
||||||
Yes. Please read the license in zlib.h.
|
|
||||||
|
|
||||||
23. Is zlib under the GNU license?
|
|
||||||
|
|
||||||
No. Please read the license in zlib.h.
|
|
||||||
|
|
||||||
24. The license says that altered source versions must be "plainly marked". So
|
|
||||||
what exactly do I need to do to meet that requirement?
|
|
||||||
|
|
||||||
You need to change the ZLIB_VERSION and ZLIB_VERNUM #defines in zlib.h. In
|
|
||||||
particular, the final version number needs to be changed to "f", and an
|
|
||||||
identification string should be appended to ZLIB_VERSION. Version numbers
|
|
||||||
x.x.x.f are reserved for modifications to zlib by others than the zlib
|
|
||||||
maintainers. For example, if the version of the base zlib you are altering
|
|
||||||
is "1.2.3.4", then in zlib.h you should change ZLIB_VERNUM to 0x123f, and
|
|
||||||
ZLIB_VERSION to something like "1.2.3.f-zachary-mods-v3". You can also
|
|
||||||
update the version strings in deflate.c and inftrees.c.
|
|
||||||
|
|
||||||
For altered source distributions, you should also note the origin and
|
|
||||||
nature of the changes in zlib.h, as well as in ChangeLog and README, along
|
|
||||||
with the dates of the alterations. The origin should include at least your
|
|
||||||
name (or your company's name), and an email address to contact for help or
|
|
||||||
issues with the library.
|
|
||||||
|
|
||||||
Note that distributing a compiled zlib library along with zlib.h and
|
|
||||||
zconf.h is also a source distribution, and so you should change
|
|
||||||
ZLIB_VERSION and ZLIB_VERNUM and note the origin and nature of the changes
|
|
||||||
in zlib.h as you would for a full source distribution.
|
|
||||||
|
|
||||||
25. Will zlib work on a big-endian or little-endian architecture, and can I
|
|
||||||
exchange compressed data between them?
|
|
||||||
|
|
||||||
Yes and yes.
|
|
||||||
|
|
||||||
26. Will zlib work on a 64-bit machine?
|
|
||||||
|
|
||||||
Yes. It has been tested on 64-bit machines, and has no dependence on any
|
|
||||||
data types being limited to 32-bits in length. If you have any
|
|
||||||
difficulties, please provide a complete problem report to zlib@gzip.org
|
|
||||||
|
|
||||||
27. Will zlib decompress data from the PKWare Data Compression Library?
|
|
||||||
|
|
||||||
No. The PKWare DCL uses a completely different compressed data format than
|
|
||||||
does PKZIP and zlib. However, you can look in zlib's contrib/blast
|
|
||||||
directory for a possible solution to your problem.
|
|
||||||
|
|
||||||
28. Can I access data randomly in a compressed stream?
|
|
||||||
|
|
||||||
No, not without some preparation. If when compressing you periodically use
|
|
||||||
Z_FULL_FLUSH, carefully write all the pending data at those points, and
|
|
||||||
keep an index of those locations, then you can start decompression at those
|
|
||||||
points. You have to be careful to not use Z_FULL_FLUSH too often, since it
|
|
||||||
can significantly degrade compression. Alternatively, you can scan a
|
|
||||||
deflate stream once to generate an index, and then use that index for
|
|
||||||
random access. See examples/zran.c .
|
|
||||||
|
|
||||||
29. Does zlib work on MVS, OS/390, CICS, etc.?
|
|
||||||
|
|
||||||
It has in the past, but we have not heard of any recent evidence. There
|
|
||||||
were working ports of zlib 1.1.4 to MVS, but those links no longer work.
|
|
||||||
If you know of recent, successful applications of zlib on these operating
|
|
||||||
systems, please let us know. Thanks.
|
|
||||||
|
|
||||||
30. Is there some simpler, easier to read version of inflate I can look at to
|
|
||||||
understand the deflate format?
|
|
||||||
|
|
||||||
First off, you should read RFC 1951. Second, yes. Look in zlib's
|
|
||||||
contrib/puff directory.
|
|
||||||
|
|
||||||
31. Does zlib infringe on any patents?
|
|
||||||
|
|
||||||
As far as we know, no. In fact, that was originally the whole point behind
|
|
||||||
zlib. Look here for some more information:
|
|
||||||
|
|
||||||
http://www.gzip.org/#faq11
|
|
||||||
|
|
||||||
32. Can zlib work with greater than 4 GB of data?
|
|
||||||
|
|
||||||
Yes. inflate() and deflate() will process any amount of data correctly.
|
|
||||||
Each call of inflate() or deflate() is limited to input and output chunks
|
|
||||||
of the maximum value that can be stored in the compiler's "unsigned int"
|
|
||||||
type, but there is no limit to the number of chunks. Note however that the
|
|
||||||
strm.total_in and strm_total_out counters may be limited to 4 GB. These
|
|
||||||
counters are provided as a convenience and are not used internally by
|
|
||||||
inflate() or deflate(). The application can easily set up its own counters
|
|
||||||
updated after each call of inflate() or deflate() to count beyond 4 GB.
|
|
||||||
compress() and uncompress() may be limited to 4 GB, since they operate in a
|
|
||||||
single call. gzseek() and gztell() may be limited to 4 GB depending on how
|
|
||||||
zlib is compiled. See the zlibCompileFlags() function in zlib.h.
|
|
||||||
|
|
||||||
The word "may" appears several times above since there is a 4 GB limit only
|
|
||||||
if the compiler's "long" type is 32 bits. If the compiler's "long" type is
|
|
||||||
64 bits, then the limit is 16 exabytes.
|
|
||||||
|
|
||||||
33. Does zlib have any security vulnerabilities?
|
|
||||||
|
|
||||||
The only one that we are aware of is potentially in gzprintf(). If zlib is
|
|
||||||
compiled to use sprintf() or vsprintf(), then there is no protection
|
|
||||||
against a buffer overflow of an 8K string space (or other value as set by
|
|
||||||
gzbuffer()), other than the caller of gzprintf() assuring that the output
|
|
||||||
will not exceed 8K. On the other hand, if zlib is compiled to use
|
|
||||||
snprintf() or vsnprintf(), which should normally be the case, then there is
|
|
||||||
no vulnerability. The ./configure script will display warnings if an
|
|
||||||
insecure variation of sprintf() will be used by gzprintf(). Also the
|
|
||||||
zlibCompileFlags() function will return information on what variant of
|
|
||||||
sprintf() is used by gzprintf().
|
|
||||||
|
|
||||||
If you don't have snprintf() or vsnprintf() and would like one, you can
|
|
||||||
find a portable implementation here:
|
|
||||||
|
|
||||||
http://www.ijs.si/software/snprintf/
|
|
||||||
|
|
||||||
Note that you should be using the most recent version of zlib. Versions
|
|
||||||
1.1.3 and before were subject to a double-free vulnerability, and versions
|
|
||||||
1.2.1 and 1.2.2 were subject to an access exception when decompressing
|
|
||||||
invalid compressed data.
|
|
||||||
|
|
||||||
34. Is there a Java version of zlib?
|
|
||||||
|
|
||||||
Probably what you want is to use zlib in Java. zlib is already included
|
|
||||||
as part of the Java SDK in the java.util.zip package. If you really want
|
|
||||||
a version of zlib written in the Java language, look on the zlib home
|
|
||||||
page for links: http://zlib.net/ .
|
|
||||||
|
|
||||||
35. I get this or that compiler or source-code scanner warning when I crank it
|
|
||||||
up to maximally-pedantic. Can't you guys write proper code?
|
|
||||||
|
|
||||||
Many years ago, we gave up attempting to avoid warnings on every compiler
|
|
||||||
in the universe. It just got to be a waste of time, and some compilers
|
|
||||||
were downright silly as well as contradicted each other. So now, we simply
|
|
||||||
make sure that the code always works.
|
|
||||||
|
|
||||||
36. Valgrind (or some similar memory access checker) says that deflate is
|
|
||||||
performing a conditional jump that depends on an uninitialized value.
|
|
||||||
Isn't that a bug?
|
|
||||||
|
|
||||||
No. That is intentional for performance reasons, and the output of deflate
|
|
||||||
is not affected. This only started showing up recently since zlib 1.2.x
|
|
||||||
uses malloc() by default for allocations, whereas earlier versions used
|
|
||||||
calloc(), which zeros out the allocated memory. Even though the code was
|
|
||||||
correct, versions 1.2.4 and later was changed to not stimulate these
|
|
||||||
checkers.
|
|
||||||
|
|
||||||
37. Will zlib read the (insert any ancient or arcane format here) compressed
|
|
||||||
data format?
|
|
||||||
|
|
||||||
Probably not. Look in the comp.compression FAQ for pointers to various
|
|
||||||
formats and associated software.
|
|
||||||
|
|
||||||
38. How can I encrypt/decrypt zip files with zlib?
|
|
||||||
|
|
||||||
zlib doesn't support encryption. The original PKZIP encryption is very
|
|
||||||
weak and can be broken with freely available programs. To get strong
|
|
||||||
encryption, use GnuPG, http://www.gnupg.org/ , which already includes zlib
|
|
||||||
compression. For PKZIP compatible "encryption", look at
|
|
||||||
http://www.info-zip.org/
|
|
||||||
|
|
||||||
39. What's the difference between the "gzip" and "deflate" HTTP 1.1 encodings?
|
|
||||||
|
|
||||||
"gzip" is the gzip format, and "deflate" is the zlib format. They should
|
|
||||||
probably have called the second one "zlib" instead to avoid confusion with
|
|
||||||
the raw deflate compressed data format. While the HTTP 1.1 RFC 2616
|
|
||||||
correctly points to the zlib specification in RFC 1950 for the "deflate"
|
|
||||||
transfer encoding, there have been reports of servers and browsers that
|
|
||||||
incorrectly produce or expect raw deflate data per the deflate
|
|
||||||
specification in RFC 1951, most notably Microsoft. So even though the
|
|
||||||
"deflate" transfer encoding using the zlib format would be the more
|
|
||||||
efficient approach (and in fact exactly what the zlib format was designed
|
|
||||||
for), using the "gzip" transfer encoding is probably more reliable due to
|
|
||||||
an unfortunate choice of name on the part of the HTTP 1.1 authors.
|
|
||||||
|
|
||||||
Bottom line: use the gzip format for HTTP 1.1 encoding.
|
|
||||||
|
|
||||||
40. Does zlib support the new "Deflate64" format introduced by PKWare?
|
|
||||||
|
|
||||||
No. PKWare has apparently decided to keep that format proprietary, since
|
|
||||||
they have not documented it as they have previous compression formats. In
|
|
||||||
any case, the compression improvements are so modest compared to other more
|
|
||||||
modern approaches, that it's not worth the effort to implement.
|
|
||||||
|
|
||||||
41. I'm having a problem with the zip functions in zlib, can you help?
|
|
||||||
|
|
||||||
There are no zip functions in zlib. You are probably using minizip by
|
|
||||||
Giles Vollant, which is found in the contrib directory of zlib. It is not
|
|
||||||
part of zlib. In fact none of the stuff in contrib is part of zlib. The
|
|
||||||
files in there are not supported by the zlib authors. You need to contact
|
|
||||||
the authors of the respective contribution for help.
|
|
||||||
|
|
||||||
42. The match.asm code in contrib is under the GNU General Public License.
|
|
||||||
Since it's part of zlib, doesn't that mean that all of zlib falls under the
|
|
||||||
GNU GPL?
|
|
||||||
|
|
||||||
No. The files in contrib are not part of zlib. They were contributed by
|
|
||||||
other authors and are provided as a convenience to the user within the zlib
|
|
||||||
distribution. Each item in contrib has its own license.
|
|
||||||
|
|
||||||
43. Is zlib subject to export controls? What is its ECCN?
|
|
||||||
|
|
||||||
zlib is not subject to export controls, and so is classified as EAR99.
|
|
||||||
|
|
||||||
44. Can you please sign these lengthy legal documents and fax them back to us
|
|
||||||
so that we can use your software in our product?
|
|
||||||
|
|
||||||
No. Go away. Shoo.
|
|
|
@ -1,68 +0,0 @@
|
||||||
CMakeLists.txt cmake build file
|
|
||||||
ChangeLog history of changes
|
|
||||||
FAQ Frequently Asked Questions about zlib
|
|
||||||
INDEX this file
|
|
||||||
Makefile dummy Makefile that tells you to ./configure
|
|
||||||
Makefile.in template for Unix Makefile
|
|
||||||
README guess what
|
|
||||||
configure configure script for Unix
|
|
||||||
make_vms.com makefile for VMS
|
|
||||||
test/example.c zlib usages examples for build testing
|
|
||||||
test/minigzip.c minimal gzip-like functionality for build testing
|
|
||||||
test/infcover.c inf*.c code coverage for build coverage testing
|
|
||||||
treebuild.xml XML description of source file dependencies
|
|
||||||
zconf.h.cmakein zconf.h template for cmake
|
|
||||||
zconf.h.in zconf.h template for configure
|
|
||||||
zlib.3 Man page for zlib
|
|
||||||
zlib.3.pdf Man page in PDF format
|
|
||||||
zlib.map Linux symbol information
|
|
||||||
zlib.pc.in Template for pkg-config descriptor
|
|
||||||
zlib.pc.cmakein zlib.pc template for cmake
|
|
||||||
zlib2ansi perl script to convert source files for C++ compilation
|
|
||||||
|
|
||||||
amiga/ makefiles for Amiga SAS C
|
|
||||||
as400/ makefiles for AS/400
|
|
||||||
doc/ documentation for formats and algorithms
|
|
||||||
msdos/ makefiles for MSDOS
|
|
||||||
nintendods/ makefile for Nintendo DS
|
|
||||||
old/ makefiles for various architectures and zlib documentation
|
|
||||||
files that have not yet been updated for zlib 1.2.x
|
|
||||||
qnx/ makefiles for QNX
|
|
||||||
watcom/ makefiles for OpenWatcom
|
|
||||||
win32/ makefiles for Windows
|
|
||||||
|
|
||||||
zlib public header files (required for library use):
|
|
||||||
zconf.h
|
|
||||||
zlib.h
|
|
||||||
|
|
||||||
private source files used to build the zlib library:
|
|
||||||
adler32.c
|
|
||||||
compress.c
|
|
||||||
crc32.c
|
|
||||||
crc32.h
|
|
||||||
deflate.c
|
|
||||||
deflate.h
|
|
||||||
gzclose.c
|
|
||||||
gzguts.h
|
|
||||||
gzlib.c
|
|
||||||
gzread.c
|
|
||||||
gzwrite.c
|
|
||||||
infback.c
|
|
||||||
inffast.c
|
|
||||||
inffast.h
|
|
||||||
inffixed.h
|
|
||||||
inflate.c
|
|
||||||
inflate.h
|
|
||||||
inftrees.c
|
|
||||||
inftrees.h
|
|
||||||
trees.c
|
|
||||||
trees.h
|
|
||||||
uncompr.c
|
|
||||||
zutil.c
|
|
||||||
zutil.h
|
|
||||||
|
|
||||||
source files for sample programs
|
|
||||||
See examples/README.examples
|
|
||||||
|
|
||||||
unsupported contributions by third parties
|
|
||||||
See contrib/README.contrib
|
|
|
@ -1,410 +0,0 @@
|
||||||
# Makefile for zlib
|
|
||||||
# Copyright (C) 1995-2017 Jean-loup Gailly, Mark Adler
|
|
||||||
# For conditions of distribution and use, see copyright notice in zlib.h
|
|
||||||
|
|
||||||
# To compile and test, type:
|
|
||||||
# ./configure; make test
|
|
||||||
# Normally configure builds both a static and a shared library.
|
|
||||||
# If you want to build just a static library, use: ./configure --static
|
|
||||||
|
|
||||||
# To use the asm code, type:
|
|
||||||
# cp contrib/asm?86/match.S ./match.S
|
|
||||||
# make LOC=-DASMV OBJA=match.o
|
|
||||||
|
|
||||||
# To install /usr/local/lib/libz.* and /usr/local/include/zlib.h, type:
|
|
||||||
# make install
|
|
||||||
# To install in $HOME instead of /usr/local, use:
|
|
||||||
# make install prefix=$HOME
|
|
||||||
|
|
||||||
CC=cc
|
|
||||||
|
|
||||||
CFLAGS=-O
|
|
||||||
#CFLAGS=-O -DMAX_WBITS=14 -DMAX_MEM_LEVEL=7
|
|
||||||
#CFLAGS=-g -DZLIB_DEBUG
|
|
||||||
#CFLAGS=-O3 -Wall -Wwrite-strings -Wpointer-arith -Wconversion \
|
|
||||||
# -Wstrict-prototypes -Wmissing-prototypes
|
|
||||||
|
|
||||||
SFLAGS=-O
|
|
||||||
LDFLAGS=
|
|
||||||
TEST_LDFLAGS=-L. libz.a
|
|
||||||
LDSHARED=$(CC)
|
|
||||||
CPP=$(CC) -E
|
|
||||||
|
|
||||||
STATICLIB=libz.a
|
|
||||||
SHAREDLIB=libz.so
|
|
||||||
SHAREDLIBV=libz.so.1.2.11.1
|
|
||||||
SHAREDLIBM=libz.so.1
|
|
||||||
LIBS=$(STATICLIB) $(SHAREDLIBV)
|
|
||||||
|
|
||||||
AR=ar
|
|
||||||
ARFLAGS=rc
|
|
||||||
RANLIB=ranlib
|
|
||||||
LDCONFIG=ldconfig
|
|
||||||
LDSHAREDLIBC=-lc
|
|
||||||
TAR=tar
|
|
||||||
SHELL=/bin/sh
|
|
||||||
EXE=
|
|
||||||
|
|
||||||
prefix = /usr/local
|
|
||||||
exec_prefix = ${prefix}
|
|
||||||
libdir = ${exec_prefix}/lib
|
|
||||||
sharedlibdir = ${libdir}
|
|
||||||
includedir = ${prefix}/include
|
|
||||||
mandir = ${prefix}/share/man
|
|
||||||
man3dir = ${mandir}/man3
|
|
||||||
pkgconfigdir = ${libdir}/pkgconfig
|
|
||||||
SRCDIR=
|
|
||||||
ZINC=
|
|
||||||
ZINCOUT=-I.
|
|
||||||
|
|
||||||
OBJZ = adler32.o crc32.o deflate.o infback.o inffast.o inflate.o inftrees.o trees.o zutil.o
|
|
||||||
OBJG = compress.o uncompr.o gzclose.o gzlib.o gzread.o gzwrite.o
|
|
||||||
OBJC = $(OBJZ) $(OBJG)
|
|
||||||
|
|
||||||
PIC_OBJZ = adler32.lo crc32.lo deflate.lo infback.lo inffast.lo inflate.lo inftrees.lo trees.lo zutil.lo
|
|
||||||
PIC_OBJG = compress.lo uncompr.lo gzclose.lo gzlib.lo gzread.lo gzwrite.lo
|
|
||||||
PIC_OBJC = $(PIC_OBJZ) $(PIC_OBJG)
|
|
||||||
|
|
||||||
# to use the asm code: make OBJA=match.o, PIC_OBJA=match.lo
|
|
||||||
OBJA =
|
|
||||||
PIC_OBJA =
|
|
||||||
|
|
||||||
OBJS = $(OBJC) $(OBJA)
|
|
||||||
|
|
||||||
PIC_OBJS = $(PIC_OBJC) $(PIC_OBJA)
|
|
||||||
|
|
||||||
all: static shared
|
|
||||||
|
|
||||||
static: example$(EXE) minigzip$(EXE)
|
|
||||||
|
|
||||||
shared: examplesh$(EXE) minigzipsh$(EXE)
|
|
||||||
|
|
||||||
all64: example64$(EXE) minigzip64$(EXE)
|
|
||||||
|
|
||||||
check: test
|
|
||||||
|
|
||||||
test: all teststatic testshared
|
|
||||||
|
|
||||||
teststatic: static
|
|
||||||
@TMPST=tmpst_$$; \
|
|
||||||
if echo hello world | ./minigzip | ./minigzip -d && ./example $$TMPST ; then \
|
|
||||||
echo ' *** zlib test OK ***'; \
|
|
||||||
else \
|
|
||||||
echo ' *** zlib test FAILED ***'; false; \
|
|
||||||
fi
|
|
||||||
@rm -f tmpst_$$
|
|
||||||
|
|
||||||
testshared: shared
|
|
||||||
@LD_LIBRARY_PATH=`pwd`:$(LD_LIBRARY_PATH) ; export LD_LIBRARY_PATH; \
|
|
||||||
LD_LIBRARYN32_PATH=`pwd`:$(LD_LIBRARYN32_PATH) ; export LD_LIBRARYN32_PATH; \
|
|
||||||
DYLD_LIBRARY_PATH=`pwd`:$(DYLD_LIBRARY_PATH) ; export DYLD_LIBRARY_PATH; \
|
|
||||||
SHLIB_PATH=`pwd`:$(SHLIB_PATH) ; export SHLIB_PATH; \
|
|
||||||
TMPSH=tmpsh_$$; \
|
|
||||||
if echo hello world | ./minigzipsh | ./minigzipsh -d && ./examplesh $$TMPSH; then \
|
|
||||||
echo ' *** zlib shared test OK ***'; \
|
|
||||||
else \
|
|
||||||
echo ' *** zlib shared test FAILED ***'; false; \
|
|
||||||
fi
|
|
||||||
@rm -f tmpsh_$$
|
|
||||||
|
|
||||||
test64: all64
|
|
||||||
@TMP64=tmp64_$$; \
|
|
||||||
if echo hello world | ./minigzip64 | ./minigzip64 -d && ./example64 $$TMP64; then \
|
|
||||||
echo ' *** zlib 64-bit test OK ***'; \
|
|
||||||
else \
|
|
||||||
echo ' *** zlib 64-bit test FAILED ***'; false; \
|
|
||||||
fi
|
|
||||||
@rm -f tmp64_$$
|
|
||||||
|
|
||||||
infcover.o: $(SRCDIR)test/infcover.c $(SRCDIR)zlib.h zconf.h
|
|
||||||
$(CC) $(CFLAGS) $(ZINCOUT) -c -o $@ $(SRCDIR)test/infcover.c
|
|
||||||
|
|
||||||
infcover: infcover.o libz.a
|
|
||||||
$(CC) $(CFLAGS) -o $@ infcover.o libz.a
|
|
||||||
|
|
||||||
cover: infcover
|
|
||||||
rm -f *.gcda
|
|
||||||
./infcover
|
|
||||||
gcov inf*.c
|
|
||||||
|
|
||||||
libz.a: $(OBJS)
|
|
||||||
$(AR) $(ARFLAGS) $@ $(OBJS)
|
|
||||||
-@ ($(RANLIB) $@ || true) >/dev/null 2>&1
|
|
||||||
|
|
||||||
match.o: match.S
|
|
||||||
$(CPP) match.S > _match.s
|
|
||||||
$(CC) -c _match.s
|
|
||||||
mv _match.o match.o
|
|
||||||
rm -f _match.s
|
|
||||||
|
|
||||||
match.lo: match.S
|
|
||||||
$(CPP) match.S > _match.s
|
|
||||||
$(CC) -c -fPIC _match.s
|
|
||||||
mv _match.o match.lo
|
|
||||||
rm -f _match.s
|
|
||||||
|
|
||||||
example.o: $(SRCDIR)test/example.c $(SRCDIR)zlib.h zconf.h
|
|
||||||
$(CC) $(CFLAGS) $(ZINCOUT) -c -o $@ $(SRCDIR)test/example.c
|
|
||||||
|
|
||||||
minigzip.o: $(SRCDIR)test/minigzip.c $(SRCDIR)zlib.h zconf.h
|
|
||||||
$(CC) $(CFLAGS) $(ZINCOUT) -c -o $@ $(SRCDIR)test/minigzip.c
|
|
||||||
|
|
||||||
example64.o: $(SRCDIR)test/example.c $(SRCDIR)zlib.h zconf.h
|
|
||||||
$(CC) $(CFLAGS) $(ZINCOUT) -D_FILE_OFFSET_BITS=64 -c -o $@ $(SRCDIR)test/example.c
|
|
||||||
|
|
||||||
minigzip64.o: $(SRCDIR)test/minigzip.c $(SRCDIR)zlib.h zconf.h
|
|
||||||
$(CC) $(CFLAGS) $(ZINCOUT) -D_FILE_OFFSET_BITS=64 -c -o $@ $(SRCDIR)test/minigzip.c
|
|
||||||
|
|
||||||
|
|
||||||
adler32.o: $(SRCDIR)adler32.c
|
|
||||||
$(CC) $(CFLAGS) $(ZINC) -c -o $@ $(SRCDIR)adler32.c
|
|
||||||
|
|
||||||
crc32.o: $(SRCDIR)crc32.c
|
|
||||||
$(CC) $(CFLAGS) $(ZINC) -c -o $@ $(SRCDIR)crc32.c
|
|
||||||
|
|
||||||
deflate.o: $(SRCDIR)deflate.c
|
|
||||||
$(CC) $(CFLAGS) $(ZINC) -c -o $@ $(SRCDIR)deflate.c
|
|
||||||
|
|
||||||
infback.o: $(SRCDIR)infback.c
|
|
||||||
$(CC) $(CFLAGS) $(ZINC) -c -o $@ $(SRCDIR)infback.c
|
|
||||||
|
|
||||||
inffast.o: $(SRCDIR)inffast.c
|
|
||||||
$(CC) $(CFLAGS) $(ZINC) -c -o $@ $(SRCDIR)inffast.c
|
|
||||||
|
|
||||||
inflate.o: $(SRCDIR)inflate.c
|
|
||||||
$(CC) $(CFLAGS) $(ZINC) -c -o $@ $(SRCDIR)inflate.c
|
|
||||||
|
|
||||||
inftrees.o: $(SRCDIR)inftrees.c
|
|
||||||
$(CC) $(CFLAGS) $(ZINC) -c -o $@ $(SRCDIR)inftrees.c
|
|
||||||
|
|
||||||
trees.o: $(SRCDIR)trees.c
|
|
||||||
$(CC) $(CFLAGS) $(ZINC) -c -o $@ $(SRCDIR)trees.c
|
|
||||||
|
|
||||||
zutil.o: $(SRCDIR)zutil.c
|
|
||||||
$(CC) $(CFLAGS) $(ZINC) -c -o $@ $(SRCDIR)zutil.c
|
|
||||||
|
|
||||||
compress.o: $(SRCDIR)compress.c
|
|
||||||
$(CC) $(CFLAGS) $(ZINC) -c -o $@ $(SRCDIR)compress.c
|
|
||||||
|
|
||||||
uncompr.o: $(SRCDIR)uncompr.c
|
|
||||||
$(CC) $(CFLAGS) $(ZINC) -c -o $@ $(SRCDIR)uncompr.c
|
|
||||||
|
|
||||||
gzclose.o: $(SRCDIR)gzclose.c
|
|
||||||
$(CC) $(CFLAGS) $(ZINC) -c -o $@ $(SRCDIR)gzclose.c
|
|
||||||
|
|
||||||
gzlib.o: $(SRCDIR)gzlib.c
|
|
||||||
$(CC) $(CFLAGS) $(ZINC) -c -o $@ $(SRCDIR)gzlib.c
|
|
||||||
|
|
||||||
gzread.o: $(SRCDIR)gzread.c
|
|
||||||
$(CC) $(CFLAGS) $(ZINC) -c -o $@ $(SRCDIR)gzread.c
|
|
||||||
|
|
||||||
gzwrite.o: $(SRCDIR)gzwrite.c
|
|
||||||
$(CC) $(CFLAGS) $(ZINC) -c -o $@ $(SRCDIR)gzwrite.c
|
|
||||||
|
|
||||||
|
|
||||||
adler32.lo: $(SRCDIR)adler32.c
|
|
||||||
-@mkdir objs 2>/dev/null || test -d objs
|
|
||||||
$(CC) $(SFLAGS) $(ZINC) -DPIC -c -o objs/adler32.o $(SRCDIR)adler32.c
|
|
||||||
-@mv objs/adler32.o $@
|
|
||||||
|
|
||||||
crc32.lo: $(SRCDIR)crc32.c
|
|
||||||
-@mkdir objs 2>/dev/null || test -d objs
|
|
||||||
$(CC) $(SFLAGS) $(ZINC) -DPIC -c -o objs/crc32.o $(SRCDIR)crc32.c
|
|
||||||
-@mv objs/crc32.o $@
|
|
||||||
|
|
||||||
deflate.lo: $(SRCDIR)deflate.c
|
|
||||||
-@mkdir objs 2>/dev/null || test -d objs
|
|
||||||
$(CC) $(SFLAGS) $(ZINC) -DPIC -c -o objs/deflate.o $(SRCDIR)deflate.c
|
|
||||||
-@mv objs/deflate.o $@
|
|
||||||
|
|
||||||
infback.lo: $(SRCDIR)infback.c
|
|
||||||
-@mkdir objs 2>/dev/null || test -d objs
|
|
||||||
$(CC) $(SFLAGS) $(ZINC) -DPIC -c -o objs/infback.o $(SRCDIR)infback.c
|
|
||||||
-@mv objs/infback.o $@
|
|
||||||
|
|
||||||
inffast.lo: $(SRCDIR)inffast.c
|
|
||||||
-@mkdir objs 2>/dev/null || test -d objs
|
|
||||||
$(CC) $(SFLAGS) $(ZINC) -DPIC -c -o objs/inffast.o $(SRCDIR)inffast.c
|
|
||||||
-@mv objs/inffast.o $@
|
|
||||||
|
|
||||||
inflate.lo: $(SRCDIR)inflate.c
|
|
||||||
-@mkdir objs 2>/dev/null || test -d objs
|
|
||||||
$(CC) $(SFLAGS) $(ZINC) -DPIC -c -o objs/inflate.o $(SRCDIR)inflate.c
|
|
||||||
-@mv objs/inflate.o $@
|
|
||||||
|
|
||||||
inftrees.lo: $(SRCDIR)inftrees.c
|
|
||||||
-@mkdir objs 2>/dev/null || test -d objs
|
|
||||||
$(CC) $(SFLAGS) $(ZINC) -DPIC -c -o objs/inftrees.o $(SRCDIR)inftrees.c
|
|
||||||
-@mv objs/inftrees.o $@
|
|
||||||
|
|
||||||
trees.lo: $(SRCDIR)trees.c
|
|
||||||
-@mkdir objs 2>/dev/null || test -d objs
|
|
||||||
$(CC) $(SFLAGS) $(ZINC) -DPIC -c -o objs/trees.o $(SRCDIR)trees.c
|
|
||||||
-@mv objs/trees.o $@
|
|
||||||
|
|
||||||
zutil.lo: $(SRCDIR)zutil.c
|
|
||||||
-@mkdir objs 2>/dev/null || test -d objs
|
|
||||||
$(CC) $(SFLAGS) $(ZINC) -DPIC -c -o objs/zutil.o $(SRCDIR)zutil.c
|
|
||||||
-@mv objs/zutil.o $@
|
|
||||||
|
|
||||||
compress.lo: $(SRCDIR)compress.c
|
|
||||||
-@mkdir objs 2>/dev/null || test -d objs
|
|
||||||
$(CC) $(SFLAGS) $(ZINC) -DPIC -c -o objs/compress.o $(SRCDIR)compress.c
|
|
||||||
-@mv objs/compress.o $@
|
|
||||||
|
|
||||||
uncompr.lo: $(SRCDIR)uncompr.c
|
|
||||||
-@mkdir objs 2>/dev/null || test -d objs
|
|
||||||
$(CC) $(SFLAGS) $(ZINC) -DPIC -c -o objs/uncompr.o $(SRCDIR)uncompr.c
|
|
||||||
-@mv objs/uncompr.o $@
|
|
||||||
|
|
||||||
gzclose.lo: $(SRCDIR)gzclose.c
|
|
||||||
-@mkdir objs 2>/dev/null || test -d objs
|
|
||||||
$(CC) $(SFLAGS) $(ZINC) -DPIC -c -o objs/gzclose.o $(SRCDIR)gzclose.c
|
|
||||||
-@mv objs/gzclose.o $@
|
|
||||||
|
|
||||||
gzlib.lo: $(SRCDIR)gzlib.c
|
|
||||||
-@mkdir objs 2>/dev/null || test -d objs
|
|
||||||
$(CC) $(SFLAGS) $(ZINC) -DPIC -c -o objs/gzlib.o $(SRCDIR)gzlib.c
|
|
||||||
-@mv objs/gzlib.o $@
|
|
||||||
|
|
||||||
gzread.lo: $(SRCDIR)gzread.c
|
|
||||||
-@mkdir objs 2>/dev/null || test -d objs
|
|
||||||
$(CC) $(SFLAGS) $(ZINC) -DPIC -c -o objs/gzread.o $(SRCDIR)gzread.c
|
|
||||||
-@mv objs/gzread.o $@
|
|
||||||
|
|
||||||
gzwrite.lo: $(SRCDIR)gzwrite.c
|
|
||||||
-@mkdir objs 2>/dev/null || test -d objs
|
|
||||||
$(CC) $(SFLAGS) $(ZINC) -DPIC -c -o objs/gzwrite.o $(SRCDIR)gzwrite.c
|
|
||||||
-@mv objs/gzwrite.o $@
|
|
||||||
|
|
||||||
|
|
||||||
placebo $(SHAREDLIBV): $(PIC_OBJS) libz.a
|
|
||||||
$(LDSHARED) $(SFLAGS) -o $@ $(PIC_OBJS) $(LDSHAREDLIBC) $(LDFLAGS)
|
|
||||||
rm -f $(SHAREDLIB) $(SHAREDLIBM)
|
|
||||||
ln -s $@ $(SHAREDLIB)
|
|
||||||
ln -s $@ $(SHAREDLIBM)
|
|
||||||
-@rmdir objs
|
|
||||||
|
|
||||||
example$(EXE): example.o $(STATICLIB)
|
|
||||||
$(CC) $(CFLAGS) -o $@ example.o $(TEST_LDFLAGS)
|
|
||||||
|
|
||||||
minigzip$(EXE): minigzip.o $(STATICLIB)
|
|
||||||
$(CC) $(CFLAGS) -o $@ minigzip.o $(TEST_LDFLAGS)
|
|
||||||
|
|
||||||
examplesh$(EXE): example.o $(SHAREDLIBV)
|
|
||||||
$(CC) $(CFLAGS) -o $@ example.o -L. $(SHAREDLIBV)
|
|
||||||
|
|
||||||
minigzipsh$(EXE): minigzip.o $(SHAREDLIBV)
|
|
||||||
$(CC) $(CFLAGS) -o $@ minigzip.o -L. $(SHAREDLIBV)
|
|
||||||
|
|
||||||
example64$(EXE): example64.o $(STATICLIB)
|
|
||||||
$(CC) $(CFLAGS) -o $@ example64.o $(TEST_LDFLAGS)
|
|
||||||
|
|
||||||
minigzip64$(EXE): minigzip64.o $(STATICLIB)
|
|
||||||
$(CC) $(CFLAGS) -o $@ minigzip64.o $(TEST_LDFLAGS)
|
|
||||||
|
|
||||||
install-libs: $(LIBS)
|
|
||||||
-@if [ ! -d $(DESTDIR)$(exec_prefix) ]; then mkdir -p $(DESTDIR)$(exec_prefix); fi
|
|
||||||
-@if [ ! -d $(DESTDIR)$(libdir) ]; then mkdir -p $(DESTDIR)$(libdir); fi
|
|
||||||
-@if [ ! -d $(DESTDIR)$(sharedlibdir) ]; then mkdir -p $(DESTDIR)$(sharedlibdir); fi
|
|
||||||
-@if [ ! -d $(DESTDIR)$(man3dir) ]; then mkdir -p $(DESTDIR)$(man3dir); fi
|
|
||||||
-@if [ ! -d $(DESTDIR)$(pkgconfigdir) ]; then mkdir -p $(DESTDIR)$(pkgconfigdir); fi
|
|
||||||
rm -f $(DESTDIR)$(libdir)/$(STATICLIB)
|
|
||||||
cp $(STATICLIB) $(DESTDIR)$(libdir)
|
|
||||||
chmod 644 $(DESTDIR)$(libdir)/$(STATICLIB)
|
|
||||||
-@($(RANLIB) $(DESTDIR)$(libdir)/libz.a || true) >/dev/null 2>&1
|
|
||||||
-@if test -n "$(SHAREDLIBV)"; then \
|
|
||||||
rm -f $(DESTDIR)$(sharedlibdir)/$(SHAREDLIBV); \
|
|
||||||
cp $(SHAREDLIBV) $(DESTDIR)$(sharedlibdir); \
|
|
||||||
echo "cp $(SHAREDLIBV) $(DESTDIR)$(sharedlibdir)"; \
|
|
||||||
chmod 755 $(DESTDIR)$(sharedlibdir)/$(SHAREDLIBV); \
|
|
||||||
echo "chmod 755 $(DESTDIR)$(sharedlibdir)/$(SHAREDLIBV)"; \
|
|
||||||
rm -f $(DESTDIR)$(sharedlibdir)/$(SHAREDLIB) $(DESTDIR)$(sharedlibdir)/$(SHAREDLIBM); \
|
|
||||||
ln -s $(SHAREDLIBV) $(DESTDIR)$(sharedlibdir)/$(SHAREDLIB); \
|
|
||||||
ln -s $(SHAREDLIBV) $(DESTDIR)$(sharedlibdir)/$(SHAREDLIBM); \
|
|
||||||
($(LDCONFIG) || true) >/dev/null 2>&1; \
|
|
||||||
fi
|
|
||||||
rm -f $(DESTDIR)$(man3dir)/zlib.3
|
|
||||||
cp $(SRCDIR)zlib.3 $(DESTDIR)$(man3dir)
|
|
||||||
chmod 644 $(DESTDIR)$(man3dir)/zlib.3
|
|
||||||
rm -f $(DESTDIR)$(pkgconfigdir)/zlib.pc
|
|
||||||
cp zlib.pc $(DESTDIR)$(pkgconfigdir)
|
|
||||||
chmod 644 $(DESTDIR)$(pkgconfigdir)/zlib.pc
|
|
||||||
# The ranlib in install is needed on NeXTSTEP which checks file times
|
|
||||||
# ldconfig is for Linux
|
|
||||||
|
|
||||||
install: install-libs
|
|
||||||
-@if [ ! -d $(DESTDIR)$(includedir) ]; then mkdir -p $(DESTDIR)$(includedir); fi
|
|
||||||
rm -f $(DESTDIR)$(includedir)/zlib.h $(DESTDIR)$(includedir)/zconf.h
|
|
||||||
cp $(SRCDIR)zlib.h zconf.h $(DESTDIR)$(includedir)
|
|
||||||
chmod 644 $(DESTDIR)$(includedir)/zlib.h $(DESTDIR)$(includedir)/zconf.h
|
|
||||||
|
|
||||||
uninstall:
|
|
||||||
cd $(DESTDIR)$(includedir) && rm -f zlib.h zconf.h
|
|
||||||
cd $(DESTDIR)$(libdir) && rm -f libz.a; \
|
|
||||||
if test -n "$(SHAREDLIBV)" -a -f $(SHAREDLIBV); then \
|
|
||||||
rm -f $(SHAREDLIBV) $(SHAREDLIB) $(SHAREDLIBM); \
|
|
||||||
fi
|
|
||||||
cd $(DESTDIR)$(man3dir) && rm -f zlib.3
|
|
||||||
cd $(DESTDIR)$(pkgconfigdir) && rm -f zlib.pc
|
|
||||||
|
|
||||||
docs: zlib.3.pdf
|
|
||||||
|
|
||||||
zlib.3.pdf: $(SRCDIR)zlib.3
|
|
||||||
groff -mandoc -f H -T ps $(SRCDIR)zlib.3 | ps2pdf - $@
|
|
||||||
|
|
||||||
zconf.h.cmakein: $(SRCDIR)zconf.h.in
|
|
||||||
-@ TEMPFILE=zconfh_$$; \
|
|
||||||
echo "/#define ZCONF_H/ a\\\\\n#cmakedefine Z_PREFIX\\\\\n#cmakedefine Z_HAVE_UNISTD_H\n" >> $$TEMPFILE &&\
|
|
||||||
sed -f $$TEMPFILE $(SRCDIR)zconf.h.in > $@ &&\
|
|
||||||
touch -r $(SRCDIR)zconf.h.in $@ &&\
|
|
||||||
rm $$TEMPFILE
|
|
||||||
|
|
||||||
zconf: $(SRCDIR)zconf.h.in
|
|
||||||
cp -p $(SRCDIR)zconf.h.in zconf.h
|
|
||||||
|
|
||||||
mostlyclean: clean
|
|
||||||
clean:
|
|
||||||
rm -f *.o *.lo *~ \
|
|
||||||
example$(EXE) minigzip$(EXE) examplesh$(EXE) minigzipsh$(EXE) \
|
|
||||||
example64$(EXE) minigzip64$(EXE) \
|
|
||||||
infcover \
|
|
||||||
libz.* foo.gz so_locations \
|
|
||||||
_match.s maketree contrib/infback9/*.o
|
|
||||||
rm -rf objs
|
|
||||||
rm -f *.gcda *.gcno *.gcov
|
|
||||||
rm -f contrib/infback9/*.gcda contrib/infback9/*.gcno contrib/infback9/*.gcov
|
|
||||||
|
|
||||||
maintainer-clean: distclean
|
|
||||||
distclean: clean zconf zconf.h.cmakein docs
|
|
||||||
rm -f Makefile zlib.pc configure.log
|
|
||||||
-@rm -f .DS_Store
|
|
||||||
@if [ -f Makefile.in ]; then \
|
|
||||||
printf 'all:\n\t-@echo "Please use ./configure first. Thank you."\n' > Makefile ; \
|
|
||||||
printf '\ndistclean:\n\tmake -f Makefile.in distclean\n' >> Makefile ; \
|
|
||||||
touch -r $(SRCDIR)Makefile.in Makefile ; fi
|
|
||||||
@if [ ! -f zconf.h.in ]; then rm -f zconf.h zconf.h.cmakein ; fi
|
|
||||||
@if [ ! -f zlib.3 ]; then rm -f zlib.3.pdf ; fi
|
|
||||||
|
|
||||||
tags:
|
|
||||||
etags $(SRCDIR)*.[ch]
|
|
||||||
|
|
||||||
adler32.o zutil.o: $(SRCDIR)zutil.h $(SRCDIR)zlib.h zconf.h
|
|
||||||
gzclose.o gzlib.o gzread.o gzwrite.o: $(SRCDIR)zlib.h zconf.h $(SRCDIR)gzguts.h
|
|
||||||
compress.o example.o minigzip.o uncompr.o: $(SRCDIR)zlib.h zconf.h
|
|
||||||
crc32.o: $(SRCDIR)zutil.h $(SRCDIR)zlib.h zconf.h $(SRCDIR)crc32.h
|
|
||||||
deflate.o: $(SRCDIR)deflate.h $(SRCDIR)zutil.h $(SRCDIR)zlib.h zconf.h
|
|
||||||
infback.o inflate.o: $(SRCDIR)zutil.h $(SRCDIR)zlib.h zconf.h $(SRCDIR)inftrees.h $(SRCDIR)inflate.h $(SRCDIR)inffast.h $(SRCDIR)inffixed.h
|
|
||||||
inffast.o: $(SRCDIR)zutil.h $(SRCDIR)zlib.h zconf.h $(SRCDIR)inftrees.h $(SRCDIR)inflate.h $(SRCDIR)inffast.h
|
|
||||||
inftrees.o: $(SRCDIR)zutil.h $(SRCDIR)zlib.h zconf.h $(SRCDIR)inftrees.h
|
|
||||||
trees.o: $(SRCDIR)deflate.h $(SRCDIR)zutil.h $(SRCDIR)zlib.h zconf.h $(SRCDIR)trees.h
|
|
||||||
|
|
||||||
adler32.lo zutil.lo: $(SRCDIR)zutil.h $(SRCDIR)zlib.h zconf.h
|
|
||||||
gzclose.lo gzlib.lo gzread.lo gzwrite.lo: $(SRCDIR)zlib.h zconf.h $(SRCDIR)gzguts.h
|
|
||||||
compress.lo example.lo minigzip.lo uncompr.lo: $(SRCDIR)zlib.h zconf.h
|
|
||||||
crc32.lo: $(SRCDIR)zutil.h $(SRCDIR)zlib.h zconf.h $(SRCDIR)crc32.h
|
|
||||||
deflate.lo: $(SRCDIR)deflate.h $(SRCDIR)zutil.h $(SRCDIR)zlib.h zconf.h
|
|
||||||
infback.lo inflate.lo: $(SRCDIR)zutil.h $(SRCDIR)zlib.h zconf.h $(SRCDIR)inftrees.h $(SRCDIR)inflate.h $(SRCDIR)inffast.h $(SRCDIR)inffixed.h
|
|
||||||
inffast.lo: $(SRCDIR)zutil.h $(SRCDIR)zlib.h zconf.h $(SRCDIR)inftrees.h $(SRCDIR)inflate.h $(SRCDIR)inffast.h
|
|
||||||
inftrees.lo: $(SRCDIR)zutil.h $(SRCDIR)zlib.h zconf.h $(SRCDIR)inftrees.h
|
|
||||||
trees.lo: $(SRCDIR)deflate.h $(SRCDIR)zutil.h $(SRCDIR)zlib.h zconf.h $(SRCDIR)trees.h
|
|
|
@ -1,921 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
# configure script for zlib.
|
|
||||||
#
|
|
||||||
# Normally configure builds both a static and a shared library.
|
|
||||||
# If you want to build just a static library, use: ./configure --static
|
|
||||||
#
|
|
||||||
# To impose specific compiler or flags or install directory, use for example:
|
|
||||||
# prefix=$HOME CC=cc CFLAGS="-O4" ./configure
|
|
||||||
# or for csh/tcsh users:
|
|
||||||
# (setenv prefix $HOME; setenv CC cc; setenv CFLAGS "-O4"; ./configure)
|
|
||||||
|
|
||||||
# Incorrect settings of CC or CFLAGS may prevent creating a shared library.
|
|
||||||
# If you have problems, try without defining CC and CFLAGS before reporting
|
|
||||||
# an error.
|
|
||||||
|
|
||||||
# start off configure.log
|
|
||||||
echo -------------------- >> configure.log
|
|
||||||
echo $0 $* >> configure.log
|
|
||||||
date >> configure.log
|
|
||||||
|
|
||||||
# get source directory
|
|
||||||
SRCDIR=`dirname $0`
|
|
||||||
if test $SRCDIR = "."; then
|
|
||||||
ZINC=""
|
|
||||||
ZINCOUT="-I."
|
|
||||||
SRCDIR=""
|
|
||||||
else
|
|
||||||
ZINC='-include zconf.h'
|
|
||||||
ZINCOUT='-I. -I$(SRCDIR)'
|
|
||||||
SRCDIR="$SRCDIR/"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# set command prefix for cross-compilation
|
|
||||||
if [ -n "${CHOST}" ]; then
|
|
||||||
uname="`echo "${CHOST}" | sed -e 's/^[^-]*-\([^-]*\)$/\1/' -e 's/^[^-]*-[^-]*-\([^-]*\)$/\1/' -e 's/^[^-]*-[^-]*-\([^-]*\)-.*$/\1/'`"
|
|
||||||
CROSS_PREFIX="${CHOST}-"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# destination name for static library
|
|
||||||
STATICLIB=libz.a
|
|
||||||
|
|
||||||
# extract zlib version numbers from zlib.h
|
|
||||||
VER=`sed -n -e '/VERSION "/s/.*"\(.*\)".*/\1/p' < ${SRCDIR}zlib.h`
|
|
||||||
VER3=`sed -n -e '/VERSION "/s/.*"\([0-9]*\\.[0-9]*\\.[0-9]*\).*/\1/p' < ${SRCDIR}zlib.h`
|
|
||||||
VER2=`sed -n -e '/VERSION "/s/.*"\([0-9]*\\.[0-9]*\)\\..*/\1/p' < ${SRCDIR}zlib.h`
|
|
||||||
VER1=`sed -n -e '/VERSION "/s/.*"\([0-9]*\)\\..*/\1/p' < ${SRCDIR}zlib.h`
|
|
||||||
|
|
||||||
# establish commands for library building
|
|
||||||
if "${CROSS_PREFIX}ar" --version >/dev/null 2>/dev/null || test $? -lt 126; then
|
|
||||||
AR=${AR-"${CROSS_PREFIX}ar"}
|
|
||||||
test -n "${CROSS_PREFIX}" && echo Using ${AR} | tee -a configure.log
|
|
||||||
else
|
|
||||||
AR=${AR-"ar"}
|
|
||||||
test -n "${CROSS_PREFIX}" && echo Using ${AR} | tee -a configure.log
|
|
||||||
fi
|
|
||||||
ARFLAGS=${ARFLAGS-"rc"}
|
|
||||||
if "${CROSS_PREFIX}ranlib" --version >/dev/null 2>/dev/null || test $? -lt 126; then
|
|
||||||
RANLIB=${RANLIB-"${CROSS_PREFIX}ranlib"}
|
|
||||||
test -n "${CROSS_PREFIX}" && echo Using ${RANLIB} | tee -a configure.log
|
|
||||||
else
|
|
||||||
RANLIB=${RANLIB-"ranlib"}
|
|
||||||
fi
|
|
||||||
if "${CROSS_PREFIX}nm" --version >/dev/null 2>/dev/null || test $? -lt 126; then
|
|
||||||
NM=${NM-"${CROSS_PREFIX}nm"}
|
|
||||||
test -n "${CROSS_PREFIX}" && echo Using ${NM} | tee -a configure.log
|
|
||||||
else
|
|
||||||
NM=${NM-"nm"}
|
|
||||||
fi
|
|
||||||
|
|
||||||
# set defaults before processing command line options
|
|
||||||
LDCONFIG=${LDCONFIG-"ldconfig"}
|
|
||||||
LDSHAREDLIBC="${LDSHAREDLIBC--lc}"
|
|
||||||
ARCHS=
|
|
||||||
prefix=${prefix-/usr/local}
|
|
||||||
exec_prefix=${exec_prefix-'${prefix}'}
|
|
||||||
libdir=${libdir-'${exec_prefix}/lib'}
|
|
||||||
sharedlibdir=${sharedlibdir-'${libdir}'}
|
|
||||||
includedir=${includedir-'${prefix}/include'}
|
|
||||||
mandir=${mandir-'${prefix}/share/man'}
|
|
||||||
shared_ext='.so'
|
|
||||||
shared=1
|
|
||||||
solo=0
|
|
||||||
cover=0
|
|
||||||
zprefix=0
|
|
||||||
zconst=0
|
|
||||||
build64=0
|
|
||||||
gcc=0
|
|
||||||
warn=0
|
|
||||||
debug=0
|
|
||||||
old_cc="$CC"
|
|
||||||
old_cflags="$CFLAGS"
|
|
||||||
OBJC='$(OBJZ) $(OBJG)'
|
|
||||||
PIC_OBJC='$(PIC_OBJZ) $(PIC_OBJG)'
|
|
||||||
|
|
||||||
# leave this script, optionally in a bad way
|
|
||||||
leave()
|
|
||||||
{
|
|
||||||
if test "$*" != "0"; then
|
|
||||||
echo "** $0 aborting." | tee -a configure.log
|
|
||||||
fi
|
|
||||||
rm -f $test.[co] $test $test$shared_ext $test.gcno ./--version
|
|
||||||
echo -------------------- >> configure.log
|
|
||||||
echo >> configure.log
|
|
||||||
echo >> configure.log
|
|
||||||
exit $1
|
|
||||||
}
|
|
||||||
|
|
||||||
# process command line options
|
|
||||||
while test $# -ge 1
|
|
||||||
do
|
|
||||||
case "$1" in
|
|
||||||
-h* | --help)
|
|
||||||
echo 'usage:' | tee -a configure.log
|
|
||||||
echo ' configure [--const] [--zprefix] [--prefix=PREFIX] [--eprefix=EXPREFIX]' | tee -a configure.log
|
|
||||||
echo ' [--static] [--64] [--libdir=LIBDIR] [--sharedlibdir=LIBDIR]' | tee -a configure.log
|
|
||||||
echo ' [--includedir=INCLUDEDIR] [--archs="-arch i386 -arch x86_64"]' | tee -a configure.log
|
|
||||||
exit 0 ;;
|
|
||||||
-p*=* | --prefix=*) prefix=`echo $1 | sed 's/.*=//'`; shift ;;
|
|
||||||
-e*=* | --eprefix=*) exec_prefix=`echo $1 | sed 's/.*=//'`; shift ;;
|
|
||||||
-l*=* | --libdir=*) libdir=`echo $1 | sed 's/.*=//'`; shift ;;
|
|
||||||
--sharedlibdir=*) sharedlibdir=`echo $1 | sed 's/.*=//'`; shift ;;
|
|
||||||
-i*=* | --includedir=*) includedir=`echo $1 | sed 's/.*=//'`;shift ;;
|
|
||||||
-u*=* | --uname=*) uname=`echo $1 | sed 's/.*=//'`;shift ;;
|
|
||||||
-p* | --prefix) prefix="$2"; shift; shift ;;
|
|
||||||
-e* | --eprefix) exec_prefix="$2"; shift; shift ;;
|
|
||||||
-l* | --libdir) libdir="$2"; shift; shift ;;
|
|
||||||
-i* | --includedir) includedir="$2"; shift; shift ;;
|
|
||||||
-s* | --shared | --enable-shared) shared=1; shift ;;
|
|
||||||
-t | --static) shared=0; shift ;;
|
|
||||||
--solo) solo=1; shift ;;
|
|
||||||
--cover) cover=1; shift ;;
|
|
||||||
-z* | --zprefix) zprefix=1; shift ;;
|
|
||||||
-6* | --64) build64=1; shift ;;
|
|
||||||
-a*=* | --archs=*) ARCHS=`echo $1 | sed 's/.*=//'`; shift ;;
|
|
||||||
--sysconfdir=*) echo "ignored option: --sysconfdir" | tee -a configure.log; shift ;;
|
|
||||||
--localstatedir=*) echo "ignored option: --localstatedir" | tee -a configure.log; shift ;;
|
|
||||||
-c* | --const) zconst=1; shift ;;
|
|
||||||
-w* | --warn) warn=1; shift ;;
|
|
||||||
-d* | --debug) debug=1; shift ;;
|
|
||||||
*)
|
|
||||||
echo "unknown option: $1" | tee -a configure.log
|
|
||||||
echo "$0 --help for help" | tee -a configure.log
|
|
||||||
leave 1;;
|
|
||||||
esac
|
|
||||||
done
|
|
||||||
|
|
||||||
# temporary file name
|
|
||||||
test=ztest$$
|
|
||||||
|
|
||||||
# put arguments in log, also put test file in log if used in arguments
|
|
||||||
show()
|
|
||||||
{
|
|
||||||
case "$*" in
|
|
||||||
*$test.c*)
|
|
||||||
echo === $test.c === >> configure.log
|
|
||||||
cat $test.c >> configure.log
|
|
||||||
echo === >> configure.log;;
|
|
||||||
esac
|
|
||||||
echo $* >> configure.log
|
|
||||||
}
|
|
||||||
|
|
||||||
# check for gcc vs. cc and set compile and link flags based on the system identified by uname
|
|
||||||
cat > $test.c <<EOF
|
|
||||||
extern int getchar();
|
|
||||||
int hello() {return getchar();}
|
|
||||||
EOF
|
|
||||||
|
|
||||||
test -z "$CC" && echo Checking for ${CROSS_PREFIX}gcc... | tee -a configure.log
|
|
||||||
cc=${CC-${CROSS_PREFIX}gcc}
|
|
||||||
cflags=${CFLAGS-"-O3"}
|
|
||||||
# to force the asm version use: CFLAGS="-O3 -DASMV" ./configure
|
|
||||||
case "$cc" in
|
|
||||||
*gcc*) gcc=1 ;;
|
|
||||||
*clang*) gcc=1 ;;
|
|
||||||
esac
|
|
||||||
case `$cc -v 2>&1` in
|
|
||||||
*gcc*) gcc=1 ;;
|
|
||||||
*clang*) gcc=1 ;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
show $cc -c $test.c
|
|
||||||
if test "$gcc" -eq 1 && ($cc -c $test.c) >> configure.log 2>&1; then
|
|
||||||
echo ... using gcc >> configure.log
|
|
||||||
CC="$cc"
|
|
||||||
CFLAGS="${CFLAGS--O3}"
|
|
||||||
SFLAGS="${CFLAGS--O3} -fPIC"
|
|
||||||
if test "$ARCHS"; then
|
|
||||||
CFLAGS="${CFLAGS} ${ARCHS}"
|
|
||||||
LDFLAGS="${LDFLAGS} ${ARCHS}"
|
|
||||||
fi
|
|
||||||
if test $build64 -eq 1; then
|
|
||||||
CFLAGS="${CFLAGS} -m64"
|
|
||||||
SFLAGS="${SFLAGS} -m64"
|
|
||||||
fi
|
|
||||||
if test "$warn" -eq 1; then
|
|
||||||
if test "$zconst" -eq 1; then
|
|
||||||
CFLAGS="${CFLAGS} -Wall -Wextra -Wcast-qual -pedantic -DZLIB_CONST -fsanitize=address"
|
|
||||||
else
|
|
||||||
CFLAGS="${CFLAGS} -Wall -Wextra -pedantic -fsanitize=address"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
if test $debug -eq 1; then
|
|
||||||
CFLAGS="${CFLAGS} -DZLIB_DEBUG"
|
|
||||||
SFLAGS="${SFLAGS} -DZLIB_DEBUG"
|
|
||||||
fi
|
|
||||||
if test -z "$uname"; then
|
|
||||||
uname=`(uname -s || echo unknown) 2>/dev/null`
|
|
||||||
fi
|
|
||||||
case "$uname" in
|
|
||||||
Linux* | linux* | GNU | GNU/* | solaris*)
|
|
||||||
LDSHARED=${LDSHARED-"$cc -shared -Wl,-soname,libz.so.1,--version-script,${SRCDIR}zlib.map"} ;;
|
|
||||||
*BSD | *bsd* | DragonFly)
|
|
||||||
LDSHARED=${LDSHARED-"$cc -shared -Wl,-soname,libz.so.1,--version-script,${SRCDIR}zlib.map"}
|
|
||||||
LDCONFIG="ldconfig -m" ;;
|
|
||||||
CYGWIN* | Cygwin* | cygwin* | OS/2*)
|
|
||||||
EXE='.exe' ;;
|
|
||||||
MINGW* | mingw*)
|
|
||||||
# temporary bypass
|
|
||||||
rm -f $test.[co] $test $test$shared_ext
|
|
||||||
echo "Please use win32/Makefile.gcc instead." | tee -a configure.log
|
|
||||||
leave 1
|
|
||||||
LDSHARED=${LDSHARED-"$cc -shared"}
|
|
||||||
LDSHAREDLIBC=""
|
|
||||||
EXE='.exe' ;;
|
|
||||||
QNX*) # This is for QNX6. I suppose that the QNX rule below is for QNX2,QNX4
|
|
||||||
# (alain.bonnefoy@icbt.com)
|
|
||||||
LDSHARED=${LDSHARED-"$cc -shared -Wl,-hlibz.so.1"} ;;
|
|
||||||
HP-UX*)
|
|
||||||
LDSHARED=${LDSHARED-"$cc -shared $SFLAGS"}
|
|
||||||
case `(uname -m || echo unknown) 2>/dev/null` in
|
|
||||||
ia64)
|
|
||||||
shared_ext='.so'
|
|
||||||
SHAREDLIB='libz.so' ;;
|
|
||||||
*)
|
|
||||||
shared_ext='.sl'
|
|
||||||
SHAREDLIB='libz.sl' ;;
|
|
||||||
esac ;;
|
|
||||||
Darwin* | darwin*)
|
|
||||||
shared_ext='.dylib'
|
|
||||||
SHAREDLIB=libz$shared_ext
|
|
||||||
SHAREDLIBV=libz.$VER$shared_ext
|
|
||||||
SHAREDLIBM=libz.$VER1$shared_ext
|
|
||||||
LDSHARED=${LDSHARED-"$cc -dynamiclib -install_name $libdir/$SHAREDLIBM -compatibility_version $VER1 -current_version $VER3"}
|
|
||||||
if libtool -V 2>&1 | grep Apple > /dev/null; then
|
|
||||||
AR="libtool"
|
|
||||||
else
|
|
||||||
AR="/usr/bin/libtool"
|
|
||||||
fi
|
|
||||||
ARFLAGS="-o" ;;
|
|
||||||
*) LDSHARED=${LDSHARED-"$cc -shared"} ;;
|
|
||||||
esac
|
|
||||||
else
|
|
||||||
# find system name and corresponding cc options
|
|
||||||
CC=${CC-cc}
|
|
||||||
gcc=0
|
|
||||||
echo ... using $CC >> configure.log
|
|
||||||
if test -z "$uname"; then
|
|
||||||
uname=`(uname -sr || echo unknown) 2>/dev/null`
|
|
||||||
fi
|
|
||||||
case "$uname" in
|
|
||||||
HP-UX*) SFLAGS=${CFLAGS-"-O +z"}
|
|
||||||
CFLAGS=${CFLAGS-"-O"}
|
|
||||||
# LDSHARED=${LDSHARED-"ld -b +vnocompatwarnings"}
|
|
||||||
LDSHARED=${LDSHARED-"ld -b"}
|
|
||||||
case `(uname -m || echo unknown) 2>/dev/null` in
|
|
||||||
ia64)
|
|
||||||
shared_ext='.so'
|
|
||||||
SHAREDLIB='libz.so' ;;
|
|
||||||
*)
|
|
||||||
shared_ext='.sl'
|
|
||||||
SHAREDLIB='libz.sl' ;;
|
|
||||||
esac ;;
|
|
||||||
IRIX*) SFLAGS=${CFLAGS-"-ansi -O2 -rpath ."}
|
|
||||||
CFLAGS=${CFLAGS-"-ansi -O2"}
|
|
||||||
LDSHARED=${LDSHARED-"cc -shared -Wl,-soname,libz.so.1"} ;;
|
|
||||||
OSF1\ V4*) SFLAGS=${CFLAGS-"-O -std1"}
|
|
||||||
CFLAGS=${CFLAGS-"-O -std1"}
|
|
||||||
LDFLAGS="${LDFLAGS} -Wl,-rpath,."
|
|
||||||
LDSHARED=${LDSHARED-"cc -shared -Wl,-soname,libz.so -Wl,-msym -Wl,-rpath,$(libdir) -Wl,-set_version,${VER}:1.0"} ;;
|
|
||||||
OSF1*) SFLAGS=${CFLAGS-"-O -std1"}
|
|
||||||
CFLAGS=${CFLAGS-"-O -std1"}
|
|
||||||
LDSHARED=${LDSHARED-"cc -shared -Wl,-soname,libz.so.1"} ;;
|
|
||||||
QNX*) SFLAGS=${CFLAGS-"-4 -O"}
|
|
||||||
CFLAGS=${CFLAGS-"-4 -O"}
|
|
||||||
LDSHARED=${LDSHARED-"cc"}
|
|
||||||
RANLIB=${RANLIB-"true"}
|
|
||||||
AR="cc"
|
|
||||||
ARFLAGS="-A" ;;
|
|
||||||
SCO_SV\ 3.2*) SFLAGS=${CFLAGS-"-O3 -dy -KPIC "}
|
|
||||||
CFLAGS=${CFLAGS-"-O3"}
|
|
||||||
LDSHARED=${LDSHARED-"cc -dy -KPIC -G"} ;;
|
|
||||||
SunOS\ 5* | solaris*)
|
|
||||||
LDSHARED=${LDSHARED-"cc -G -h libz$shared_ext.$VER1"}
|
|
||||||
SFLAGS=${CFLAGS-"-fast -KPIC"}
|
|
||||||
CFLAGS=${CFLAGS-"-fast"}
|
|
||||||
if test $build64 -eq 1; then
|
|
||||||
# old versions of SunPRO/Workshop/Studio don't support -m64,
|
|
||||||
# but newer ones do. Check for it.
|
|
||||||
flag64=`$CC -flags | egrep -- '^-m64'`
|
|
||||||
if test x"$flag64" != x"" ; then
|
|
||||||
CFLAGS="${CFLAGS} -m64"
|
|
||||||
SFLAGS="${SFLAGS} -m64"
|
|
||||||
else
|
|
||||||
case `(uname -m || echo unknown) 2>/dev/null` in
|
|
||||||
i86*)
|
|
||||||
SFLAGS="$SFLAGS -xarch=amd64"
|
|
||||||
CFLAGS="$CFLAGS -xarch=amd64" ;;
|
|
||||||
*)
|
|
||||||
SFLAGS="$SFLAGS -xarch=v9"
|
|
||||||
CFLAGS="$CFLAGS -xarch=v9" ;;
|
|
||||||
esac
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
if test -n "$ZINC"; then
|
|
||||||
ZINC='-I- -I. -I$(SRCDIR)'
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
SunOS\ 4*) SFLAGS=${CFLAGS-"-O2 -PIC"}
|
|
||||||
CFLAGS=${CFLAGS-"-O2"}
|
|
||||||
LDSHARED=${LDSHARED-"ld"} ;;
|
|
||||||
SunStudio\ 9*) SFLAGS=${CFLAGS-"-fast -xcode=pic32 -xtarget=ultra3 -xarch=v9b"}
|
|
||||||
CFLAGS=${CFLAGS-"-fast -xtarget=ultra3 -xarch=v9b"}
|
|
||||||
LDSHARED=${LDSHARED-"cc -xarch=v9b"} ;;
|
|
||||||
UNIX_System_V\ 4.2.0)
|
|
||||||
SFLAGS=${CFLAGS-"-KPIC -O"}
|
|
||||||
CFLAGS=${CFLAGS-"-O"}
|
|
||||||
LDSHARED=${LDSHARED-"cc -G"} ;;
|
|
||||||
UNIX_SV\ 4.2MP)
|
|
||||||
SFLAGS=${CFLAGS-"-Kconform_pic -O"}
|
|
||||||
CFLAGS=${CFLAGS-"-O"}
|
|
||||||
LDSHARED=${LDSHARED-"cc -G"} ;;
|
|
||||||
OpenUNIX\ 5)
|
|
||||||
SFLAGS=${CFLAGS-"-KPIC -O"}
|
|
||||||
CFLAGS=${CFLAGS-"-O"}
|
|
||||||
LDSHARED=${LDSHARED-"cc -G"} ;;
|
|
||||||
AIX*) # Courtesy of dbakker@arrayasolutions.com
|
|
||||||
SFLAGS=${CFLAGS-"-O -qmaxmem=8192"}
|
|
||||||
CFLAGS=${CFLAGS-"-O -qmaxmem=8192"}
|
|
||||||
LDSHARED=${LDSHARED-"xlc -G"} ;;
|
|
||||||
# send working options for other systems to zlib@gzip.org
|
|
||||||
*) SFLAGS=${CFLAGS-"-O"}
|
|
||||||
CFLAGS=${CFLAGS-"-O"}
|
|
||||||
LDSHARED=${LDSHARED-"cc -shared"} ;;
|
|
||||||
esac
|
|
||||||
fi
|
|
||||||
|
|
||||||
# destination names for shared library if not defined above
|
|
||||||
SHAREDLIB=${SHAREDLIB-"libz$shared_ext"}
|
|
||||||
SHAREDLIBV=${SHAREDLIBV-"libz$shared_ext.$VER"}
|
|
||||||
SHAREDLIBM=${SHAREDLIBM-"libz$shared_ext.$VER1"}
|
|
||||||
|
|
||||||
echo >> configure.log
|
|
||||||
|
|
||||||
# define functions for testing compiler and library characteristics and logging the results
|
|
||||||
|
|
||||||
cat > $test.c <<EOF
|
|
||||||
#error error
|
|
||||||
EOF
|
|
||||||
if ($CC -c $CFLAGS $test.c) 2>/dev/null; then
|
|
||||||
try()
|
|
||||||
{
|
|
||||||
show $*
|
|
||||||
test "`( $* ) 2>&1 | tee -a configure.log`" = ""
|
|
||||||
}
|
|
||||||
echo - using any output from compiler to indicate an error >> configure.log
|
|
||||||
else
|
|
||||||
try()
|
|
||||||
{
|
|
||||||
show $*
|
|
||||||
( $* ) >> configure.log 2>&1
|
|
||||||
ret=$?
|
|
||||||
if test $ret -ne 0; then
|
|
||||||
echo "(exit code "$ret")" >> configure.log
|
|
||||||
fi
|
|
||||||
return $ret
|
|
||||||
}
|
|
||||||
fi
|
|
||||||
|
|
||||||
tryboth()
|
|
||||||
{
|
|
||||||
show $*
|
|
||||||
got=`( $* ) 2>&1`
|
|
||||||
ret=$?
|
|
||||||
printf %s "$got" >> configure.log
|
|
||||||
if test $ret -ne 0; then
|
|
||||||
return $ret
|
|
||||||
fi
|
|
||||||
test "$got" = ""
|
|
||||||
}
|
|
||||||
|
|
||||||
cat > $test.c << EOF
|
|
||||||
int foo() { return 0; }
|
|
||||||
EOF
|
|
||||||
echo "Checking for obsessive-compulsive compiler options..." >> configure.log
|
|
||||||
if try $CC -c $CFLAGS $test.c; then
|
|
||||||
:
|
|
||||||
else
|
|
||||||
echo "Compiler error reporting is too harsh for $0 (perhaps remove -Werror)." | tee -a configure.log
|
|
||||||
leave 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo >> configure.log
|
|
||||||
|
|
||||||
# see if shared library build supported
|
|
||||||
cat > $test.c <<EOF
|
|
||||||
extern int getchar();
|
|
||||||
int hello() {return getchar();}
|
|
||||||
EOF
|
|
||||||
if test $shared -eq 1; then
|
|
||||||
echo Checking for shared library support... | tee -a configure.log
|
|
||||||
# we must test in two steps (cc then ld), required at least on SunOS 4.x
|
|
||||||
if try $CC -w -c $SFLAGS $test.c &&
|
|
||||||
try $LDSHARED $SFLAGS -o $test$shared_ext $test.o; then
|
|
||||||
echo Building shared library $SHAREDLIBV with $CC. | tee -a configure.log
|
|
||||||
elif test -z "$old_cc" -a -z "$old_cflags"; then
|
|
||||||
echo No shared library support. | tee -a configure.log
|
|
||||||
shared=0;
|
|
||||||
else
|
|
||||||
echo 'No shared library support; try without defining CC and CFLAGS' | tee -a configure.log
|
|
||||||
shared=0;
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
if test $shared -eq 0; then
|
|
||||||
LDSHARED="$CC"
|
|
||||||
ALL="static"
|
|
||||||
TEST="all teststatic"
|
|
||||||
SHAREDLIB=""
|
|
||||||
SHAREDLIBV=""
|
|
||||||
SHAREDLIBM=""
|
|
||||||
echo Building static library $STATICLIB version $VER with $CC. | tee -a configure.log
|
|
||||||
else
|
|
||||||
ALL="static shared"
|
|
||||||
TEST="all teststatic testshared"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# check for underscores in external names for use by assembler code
|
|
||||||
CPP=${CPP-"$CC -E"}
|
|
||||||
case $CFLAGS in
|
|
||||||
*ASMV*)
|
|
||||||
echo >> configure.log
|
|
||||||
show "$NM $test.o | grep _hello"
|
|
||||||
if test "`$NM $test.o | grep _hello | tee -a configure.log`" = ""; then
|
|
||||||
CPP="$CPP -DNO_UNDERLINE"
|
|
||||||
echo Checking for underline in external names... No. | tee -a configure.log
|
|
||||||
else
|
|
||||||
echo Checking for underline in external names... Yes. | tee -a configure.log
|
|
||||||
fi ;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
echo >> configure.log
|
|
||||||
|
|
||||||
# check for size_t
|
|
||||||
cat > $test.c <<EOF
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
size_t dummy = 0;
|
|
||||||
EOF
|
|
||||||
if try $CC -c $CFLAGS $test.c; then
|
|
||||||
echo "Checking for size_t... Yes." | tee -a configure.log
|
|
||||||
need_sizet=0
|
|
||||||
else
|
|
||||||
echo "Checking for size_t... No." | tee -a configure.log
|
|
||||||
need_sizet=1
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo >> configure.log
|
|
||||||
|
|
||||||
# find the size_t integer type, if needed
|
|
||||||
if test $need_sizet -eq 1; then
|
|
||||||
cat > $test.c <<EOF
|
|
||||||
long long dummy = 0;
|
|
||||||
EOF
|
|
||||||
if try $CC -c $CFLAGS $test.c; then
|
|
||||||
echo "Checking for long long... Yes." | tee -a configure.log
|
|
||||||
cat > $test.c <<EOF
|
|
||||||
#include <stdio.h>
|
|
||||||
int main(void) {
|
|
||||||
if (sizeof(void *) <= sizeof(int)) puts("int");
|
|
||||||
else if (sizeof(void *) <= sizeof(long)) puts("long");
|
|
||||||
else puts("z_longlong");
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
EOF
|
|
||||||
else
|
|
||||||
echo "Checking for long long... No." | tee -a configure.log
|
|
||||||
cat > $test.c <<EOF
|
|
||||||
#include <stdio.h>
|
|
||||||
int main(void) {
|
|
||||||
if (sizeof(void *) <= sizeof(int)) puts("int");
|
|
||||||
else puts("long");
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
EOF
|
|
||||||
fi
|
|
||||||
if try $CC $CFLAGS -o $test $test.c; then
|
|
||||||
sizet=`./$test`
|
|
||||||
echo "Checking for a pointer-size integer type..." $sizet"." | tee -a configure.log
|
|
||||||
else
|
|
||||||
echo "Failed to find a pointer-size integer type." | tee -a configure.log
|
|
||||||
leave 1
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test $need_sizet -eq 1; then
|
|
||||||
CFLAGS="${CFLAGS} -DNO_SIZE_T=${sizet}"
|
|
||||||
SFLAGS="${SFLAGS} -DNO_SIZE_T=${sizet}"
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo >> configure.log
|
|
||||||
|
|
||||||
# check for large file support, and if none, check for fseeko()
|
|
||||||
cat > $test.c <<EOF
|
|
||||||
#include <sys/types.h>
|
|
||||||
off64_t dummy = 0;
|
|
||||||
EOF
|
|
||||||
if try $CC -c $CFLAGS -D_LARGEFILE64_SOURCE=1 $test.c; then
|
|
||||||
CFLAGS="${CFLAGS} -D_LARGEFILE64_SOURCE=1"
|
|
||||||
SFLAGS="${SFLAGS} -D_LARGEFILE64_SOURCE=1"
|
|
||||||
ALL="${ALL} all64"
|
|
||||||
TEST="${TEST} test64"
|
|
||||||
echo "Checking for off64_t... Yes." | tee -a configure.log
|
|
||||||
echo "Checking for fseeko... Yes." | tee -a configure.log
|
|
||||||
else
|
|
||||||
echo "Checking for off64_t... No." | tee -a configure.log
|
|
||||||
echo >> configure.log
|
|
||||||
cat > $test.c <<EOF
|
|
||||||
#include <stdio.h>
|
|
||||||
int main(void) {
|
|
||||||
fseeko(NULL, 0, 0);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
EOF
|
|
||||||
if try $CC $CFLAGS -o $test $test.c; then
|
|
||||||
echo "Checking for fseeko... Yes." | tee -a configure.log
|
|
||||||
else
|
|
||||||
CFLAGS="${CFLAGS} -DNO_FSEEKO"
|
|
||||||
SFLAGS="${SFLAGS} -DNO_FSEEKO"
|
|
||||||
echo "Checking for fseeko... No." | tee -a configure.log
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo >> configure.log
|
|
||||||
|
|
||||||
# check for strerror() for use by gz* functions
|
|
||||||
cat > $test.c <<EOF
|
|
||||||
#include <string.h>
|
|
||||||
#include <errno.h>
|
|
||||||
int main() { return strlen(strerror(errno)); }
|
|
||||||
EOF
|
|
||||||
if try $CC $CFLAGS -o $test $test.c; then
|
|
||||||
echo "Checking for strerror... Yes." | tee -a configure.log
|
|
||||||
else
|
|
||||||
CFLAGS="${CFLAGS} -DNO_STRERROR"
|
|
||||||
SFLAGS="${SFLAGS} -DNO_STRERROR"
|
|
||||||
echo "Checking for strerror... No." | tee -a configure.log
|
|
||||||
fi
|
|
||||||
|
|
||||||
# copy clean zconf.h for subsequent edits
|
|
||||||
cp -p ${SRCDIR}zconf.h.in zconf.h
|
|
||||||
|
|
||||||
echo >> configure.log
|
|
||||||
|
|
||||||
# check for unistd.h and save result in zconf.h
|
|
||||||
cat > $test.c <<EOF
|
|
||||||
#include <unistd.h>
|
|
||||||
int main() { return 0; }
|
|
||||||
EOF
|
|
||||||
if try $CC -c $CFLAGS $test.c; then
|
|
||||||
sed < zconf.h "/^#ifdef HAVE_UNISTD_H.* may be/s/def HAVE_UNISTD_H\(.*\) may be/ 1\1 was/" > zconf.temp.h
|
|
||||||
mv zconf.temp.h zconf.h
|
|
||||||
echo "Checking for unistd.h... Yes." | tee -a configure.log
|
|
||||||
else
|
|
||||||
echo "Checking for unistd.h... No." | tee -a configure.log
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo >> configure.log
|
|
||||||
|
|
||||||
# check for stdarg.h and save result in zconf.h
|
|
||||||
cat > $test.c <<EOF
|
|
||||||
#include <stdarg.h>
|
|
||||||
int main() { return 0; }
|
|
||||||
EOF
|
|
||||||
if try $CC -c $CFLAGS $test.c; then
|
|
||||||
sed < zconf.h "/^#ifdef HAVE_STDARG_H.* may be/s/def HAVE_STDARG_H\(.*\) may be/ 1\1 was/" > zconf.temp.h
|
|
||||||
mv zconf.temp.h zconf.h
|
|
||||||
echo "Checking for stdarg.h... Yes." | tee -a configure.log
|
|
||||||
else
|
|
||||||
echo "Checking for stdarg.h... No." | tee -a configure.log
|
|
||||||
fi
|
|
||||||
|
|
||||||
# if the z_ prefix was requested, save that in zconf.h
|
|
||||||
if test $zprefix -eq 1; then
|
|
||||||
sed < zconf.h "/#ifdef Z_PREFIX.* may be/s/def Z_PREFIX\(.*\) may be/ 1\1 was/" > zconf.temp.h
|
|
||||||
mv zconf.temp.h zconf.h
|
|
||||||
echo >> configure.log
|
|
||||||
echo "Using z_ prefix on all symbols." | tee -a configure.log
|
|
||||||
fi
|
|
||||||
|
|
||||||
# if --solo compilation was requested, save that in zconf.h and remove gz stuff from object lists
|
|
||||||
if test $solo -eq 1; then
|
|
||||||
sed '/#define ZCONF_H/a\
|
|
||||||
#define Z_SOLO
|
|
||||||
|
|
||||||
' < zconf.h > zconf.temp.h
|
|
||||||
mv zconf.temp.h zconf.h
|
|
||||||
OBJC='$(OBJZ)'
|
|
||||||
PIC_OBJC='$(PIC_OBJZ)'
|
|
||||||
fi
|
|
||||||
|
|
||||||
# if code coverage testing was requested, use older gcc if defined, e.g. "gcc-4.2" on Mac OS X
|
|
||||||
if test $cover -eq 1; then
|
|
||||||
CFLAGS="${CFLAGS} -fprofile-arcs -ftest-coverage"
|
|
||||||
if test -n "$GCC_CLASSIC"; then
|
|
||||||
CC=$GCC_CLASSIC
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo >> configure.log
|
|
||||||
|
|
||||||
# conduct a series of tests to resolve eight possible cases of using "vs" or "s" printf functions
|
|
||||||
# (using stdarg or not), with or without "n" (proving size of buffer), and with or without a
|
|
||||||
# return value. The most secure result is vsnprintf() with a return value. snprintf() with a
|
|
||||||
# return value is secure as well, but then gzprintf() will be limited to 20 arguments.
|
|
||||||
cat > $test.c <<EOF
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <stdarg.h>
|
|
||||||
#include "zconf.h"
|
|
||||||
int main()
|
|
||||||
{
|
|
||||||
#ifndef STDC
|
|
||||||
choke me
|
|
||||||
#endif
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
EOF
|
|
||||||
if try $CC -c $CFLAGS $test.c; then
|
|
||||||
echo "Checking whether to use vs[n]printf() or s[n]printf()... using vs[n]printf()." | tee -a configure.log
|
|
||||||
|
|
||||||
echo >> configure.log
|
|
||||||
cat > $test.c <<EOF
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <stdarg.h>
|
|
||||||
int mytest(const char *fmt, ...)
|
|
||||||
{
|
|
||||||
char buf[20];
|
|
||||||
va_list ap;
|
|
||||||
va_start(ap, fmt);
|
|
||||||
vsnprintf(buf, sizeof(buf), fmt, ap);
|
|
||||||
va_end(ap);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
int main()
|
|
||||||
{
|
|
||||||
return (mytest("Hello%d\n", 1));
|
|
||||||
}
|
|
||||||
EOF
|
|
||||||
if try $CC $CFLAGS -o $test $test.c; then
|
|
||||||
echo "Checking for vsnprintf() in stdio.h... Yes." | tee -a configure.log
|
|
||||||
|
|
||||||
echo >> configure.log
|
|
||||||
cat >$test.c <<EOF
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <stdarg.h>
|
|
||||||
int mytest(const char *fmt, ...)
|
|
||||||
{
|
|
||||||
int n;
|
|
||||||
char buf[20];
|
|
||||||
va_list ap;
|
|
||||||
va_start(ap, fmt);
|
|
||||||
n = vsnprintf(buf, sizeof(buf), fmt, ap);
|
|
||||||
va_end(ap);
|
|
||||||
return n;
|
|
||||||
}
|
|
||||||
int main()
|
|
||||||
{
|
|
||||||
return (mytest("Hello%d\n", 1));
|
|
||||||
}
|
|
||||||
EOF
|
|
||||||
|
|
||||||
if try $CC -c $CFLAGS $test.c; then
|
|
||||||
echo "Checking for return value of vsnprintf()... Yes." | tee -a configure.log
|
|
||||||
else
|
|
||||||
CFLAGS="$CFLAGS -DHAS_vsnprintf_void"
|
|
||||||
SFLAGS="$SFLAGS -DHAS_vsnprintf_void"
|
|
||||||
echo "Checking for return value of vsnprintf()... No." | tee -a configure.log
|
|
||||||
echo " WARNING: apparently vsnprintf() does not return a value. zlib" | tee -a configure.log
|
|
||||||
echo " can build but will be open to possible string-format security" | tee -a configure.log
|
|
||||||
echo " vulnerabilities." | tee -a configure.log
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
CFLAGS="$CFLAGS -DNO_vsnprintf"
|
|
||||||
SFLAGS="$SFLAGS -DNO_vsnprintf"
|
|
||||||
echo "Checking for vsnprintf() in stdio.h... No." | tee -a configure.log
|
|
||||||
echo " WARNING: vsnprintf() not found, falling back to vsprintf(). zlib" | tee -a configure.log
|
|
||||||
echo " can build but will be open to possible buffer-overflow security" | tee -a configure.log
|
|
||||||
echo " vulnerabilities." | tee -a configure.log
|
|
||||||
|
|
||||||
echo >> configure.log
|
|
||||||
cat >$test.c <<EOF
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <stdarg.h>
|
|
||||||
int mytest(const char *fmt, ...)
|
|
||||||
{
|
|
||||||
int n;
|
|
||||||
char buf[20];
|
|
||||||
va_list ap;
|
|
||||||
va_start(ap, fmt);
|
|
||||||
n = vsprintf(buf, fmt, ap);
|
|
||||||
va_end(ap);
|
|
||||||
return n;
|
|
||||||
}
|
|
||||||
int main()
|
|
||||||
{
|
|
||||||
return (mytest("Hello%d\n", 1));
|
|
||||||
}
|
|
||||||
EOF
|
|
||||||
|
|
||||||
if try $CC -c $CFLAGS $test.c; then
|
|
||||||
echo "Checking for return value of vsprintf()... Yes." | tee -a configure.log
|
|
||||||
else
|
|
||||||
CFLAGS="$CFLAGS -DHAS_vsprintf_void"
|
|
||||||
SFLAGS="$SFLAGS -DHAS_vsprintf_void"
|
|
||||||
echo "Checking for return value of vsprintf()... No." | tee -a configure.log
|
|
||||||
echo " WARNING: apparently vsprintf() does not return a value. zlib" | tee -a configure.log
|
|
||||||
echo " can build but will be open to possible string-format security" | tee -a configure.log
|
|
||||||
echo " vulnerabilities." | tee -a configure.log
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
echo "Checking whether to use vs[n]printf() or s[n]printf()... using s[n]printf()." | tee -a configure.log
|
|
||||||
|
|
||||||
echo >> configure.log
|
|
||||||
cat >$test.c <<EOF
|
|
||||||
#include <stdio.h>
|
|
||||||
int mytest()
|
|
||||||
{
|
|
||||||
char buf[20];
|
|
||||||
snprintf(buf, sizeof(buf), "%s", "foo");
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
int main()
|
|
||||||
{
|
|
||||||
return (mytest());
|
|
||||||
}
|
|
||||||
EOF
|
|
||||||
|
|
||||||
if try $CC $CFLAGS -o $test $test.c; then
|
|
||||||
echo "Checking for snprintf() in stdio.h... Yes." | tee -a configure.log
|
|
||||||
|
|
||||||
echo >> configure.log
|
|
||||||
cat >$test.c <<EOF
|
|
||||||
#include <stdio.h>
|
|
||||||
int mytest()
|
|
||||||
{
|
|
||||||
char buf[20];
|
|
||||||
return snprintf(buf, sizeof(buf), "%s", "foo");
|
|
||||||
}
|
|
||||||
int main()
|
|
||||||
{
|
|
||||||
return (mytest());
|
|
||||||
}
|
|
||||||
EOF
|
|
||||||
|
|
||||||
if try $CC -c $CFLAGS $test.c; then
|
|
||||||
echo "Checking for return value of snprintf()... Yes." | tee -a configure.log
|
|
||||||
else
|
|
||||||
CFLAGS="$CFLAGS -DHAS_snprintf_void"
|
|
||||||
SFLAGS="$SFLAGS -DHAS_snprintf_void"
|
|
||||||
echo "Checking for return value of snprintf()... No." | tee -a configure.log
|
|
||||||
echo " WARNING: apparently snprintf() does not return a value. zlib" | tee -a configure.log
|
|
||||||
echo " can build but will be open to possible string-format security" | tee -a configure.log
|
|
||||||
echo " vulnerabilities." | tee -a configure.log
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
CFLAGS="$CFLAGS -DNO_snprintf"
|
|
||||||
SFLAGS="$SFLAGS -DNO_snprintf"
|
|
||||||
echo "Checking for snprintf() in stdio.h... No." | tee -a configure.log
|
|
||||||
echo " WARNING: snprintf() not found, falling back to sprintf(). zlib" | tee -a configure.log
|
|
||||||
echo " can build but will be open to possible buffer-overflow security" | tee -a configure.log
|
|
||||||
echo " vulnerabilities." | tee -a configure.log
|
|
||||||
|
|
||||||
echo >> configure.log
|
|
||||||
cat >$test.c <<EOF
|
|
||||||
#include <stdio.h>
|
|
||||||
int mytest()
|
|
||||||
{
|
|
||||||
char buf[20];
|
|
||||||
return sprintf(buf, "%s", "foo");
|
|
||||||
}
|
|
||||||
int main()
|
|
||||||
{
|
|
||||||
return (mytest());
|
|
||||||
}
|
|
||||||
EOF
|
|
||||||
|
|
||||||
if try $CC -c $CFLAGS $test.c; then
|
|
||||||
echo "Checking for return value of sprintf()... Yes." | tee -a configure.log
|
|
||||||
else
|
|
||||||
CFLAGS="$CFLAGS -DHAS_sprintf_void"
|
|
||||||
SFLAGS="$SFLAGS -DHAS_sprintf_void"
|
|
||||||
echo "Checking for return value of sprintf()... No." | tee -a configure.log
|
|
||||||
echo " WARNING: apparently sprintf() does not return a value. zlib" | tee -a configure.log
|
|
||||||
echo " can build but will be open to possible string-format security" | tee -a configure.log
|
|
||||||
echo " vulnerabilities." | tee -a configure.log
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
# see if we can hide zlib internal symbols that are linked between separate source files
|
|
||||||
if test "$gcc" -eq 1; then
|
|
||||||
echo >> configure.log
|
|
||||||
cat > $test.c <<EOF
|
|
||||||
#define ZLIB_INTERNAL __attribute__((visibility ("hidden")))
|
|
||||||
int ZLIB_INTERNAL foo;
|
|
||||||
int main()
|
|
||||||
{
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
EOF
|
|
||||||
if tryboth $CC -c $CFLAGS $test.c; then
|
|
||||||
CFLAGS="$CFLAGS -DHAVE_HIDDEN"
|
|
||||||
SFLAGS="$SFLAGS -DHAVE_HIDDEN"
|
|
||||||
echo "Checking for attribute(visibility) support... Yes." | tee -a configure.log
|
|
||||||
else
|
|
||||||
echo "Checking for attribute(visibility) support... No." | tee -a configure.log
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
# show the results in the log
|
|
||||||
echo >> configure.log
|
|
||||||
echo ALL = $ALL >> configure.log
|
|
||||||
echo AR = $AR >> configure.log
|
|
||||||
echo ARFLAGS = $ARFLAGS >> configure.log
|
|
||||||
echo CC = $CC >> configure.log
|
|
||||||
echo CFLAGS = $CFLAGS >> configure.log
|
|
||||||
echo CPP = $CPP >> configure.log
|
|
||||||
echo EXE = $EXE >> configure.log
|
|
||||||
echo LDCONFIG = $LDCONFIG >> configure.log
|
|
||||||
echo LDFLAGS = $LDFLAGS >> configure.log
|
|
||||||
echo LDSHARED = $LDSHARED >> configure.log
|
|
||||||
echo LDSHAREDLIBC = $LDSHAREDLIBC >> configure.log
|
|
||||||
echo OBJC = $OBJC >> configure.log
|
|
||||||
echo PIC_OBJC = $PIC_OBJC >> configure.log
|
|
||||||
echo RANLIB = $RANLIB >> configure.log
|
|
||||||
echo SFLAGS = $SFLAGS >> configure.log
|
|
||||||
echo SHAREDLIB = $SHAREDLIB >> configure.log
|
|
||||||
echo SHAREDLIBM = $SHAREDLIBM >> configure.log
|
|
||||||
echo SHAREDLIBV = $SHAREDLIBV >> configure.log
|
|
||||||
echo STATICLIB = $STATICLIB >> configure.log
|
|
||||||
echo TEST = $TEST >> configure.log
|
|
||||||
echo VER = $VER >> configure.log
|
|
||||||
echo Z_U4 = $Z_U4 >> configure.log
|
|
||||||
echo SRCDIR = $SRCDIR >> configure.log
|
|
||||||
echo exec_prefix = $exec_prefix >> configure.log
|
|
||||||
echo includedir = $includedir >> configure.log
|
|
||||||
echo libdir = $libdir >> configure.log
|
|
||||||
echo mandir = $mandir >> configure.log
|
|
||||||
echo prefix = $prefix >> configure.log
|
|
||||||
echo sharedlibdir = $sharedlibdir >> configure.log
|
|
||||||
echo uname = $uname >> configure.log
|
|
||||||
|
|
||||||
# udpate Makefile with the configure results
|
|
||||||
sed < ${SRCDIR}Makefile.in "
|
|
||||||
/^CC *=/s#=.*#=$CC#
|
|
||||||
/^CFLAGS *=/s#=.*#=$CFLAGS#
|
|
||||||
/^SFLAGS *=/s#=.*#=$SFLAGS#
|
|
||||||
/^LDFLAGS *=/s#=.*#=$LDFLAGS#
|
|
||||||
/^LDSHARED *=/s#=.*#=$LDSHARED#
|
|
||||||
/^CPP *=/s#=.*#=$CPP#
|
|
||||||
/^STATICLIB *=/s#=.*#=$STATICLIB#
|
|
||||||
/^SHAREDLIB *=/s#=.*#=$SHAREDLIB#
|
|
||||||
/^SHAREDLIBV *=/s#=.*#=$SHAREDLIBV#
|
|
||||||
/^SHAREDLIBM *=/s#=.*#=$SHAREDLIBM#
|
|
||||||
/^AR *=/s#=.*#=$AR#
|
|
||||||
/^ARFLAGS *=/s#=.*#=$ARFLAGS#
|
|
||||||
/^RANLIB *=/s#=.*#=$RANLIB#
|
|
||||||
/^LDCONFIG *=/s#=.*#=$LDCONFIG#
|
|
||||||
/^LDSHAREDLIBC *=/s#=.*#=$LDSHAREDLIBC#
|
|
||||||
/^EXE *=/s#=.*#=$EXE#
|
|
||||||
/^SRCDIR *=/s#=.*#=$SRCDIR#
|
|
||||||
/^ZINC *=/s#=.*#=$ZINC#
|
|
||||||
/^ZINCOUT *=/s#=.*#=$ZINCOUT#
|
|
||||||
/^prefix *=/s#=.*#=$prefix#
|
|
||||||
/^exec_prefix *=/s#=.*#=$exec_prefix#
|
|
||||||
/^libdir *=/s#=.*#=$libdir#
|
|
||||||
/^sharedlibdir *=/s#=.*#=$sharedlibdir#
|
|
||||||
/^includedir *=/s#=.*#=$includedir#
|
|
||||||
/^mandir *=/s#=.*#=$mandir#
|
|
||||||
/^OBJC *=/s#=.*#= $OBJC#
|
|
||||||
/^PIC_OBJC *=/s#=.*#= $PIC_OBJC#
|
|
||||||
/^all: */s#:.*#: $ALL#
|
|
||||||
/^test: */s#:.*#: $TEST#
|
|
||||||
" > Makefile
|
|
||||||
|
|
||||||
# create zlib.pc with the configure results
|
|
||||||
sed < ${SRCDIR}zlib.pc.in "
|
|
||||||
/^CC *=/s#=.*#=$CC#
|
|
||||||
/^CFLAGS *=/s#=.*#=$CFLAGS#
|
|
||||||
/^CPP *=/s#=.*#=$CPP#
|
|
||||||
/^LDSHARED *=/s#=.*#=$LDSHARED#
|
|
||||||
/^STATICLIB *=/s#=.*#=$STATICLIB#
|
|
||||||
/^SHAREDLIB *=/s#=.*#=$SHAREDLIB#
|
|
||||||
/^SHAREDLIBV *=/s#=.*#=$SHAREDLIBV#
|
|
||||||
/^SHAREDLIBM *=/s#=.*#=$SHAREDLIBM#
|
|
||||||
/^AR *=/s#=.*#=$AR#
|
|
||||||
/^ARFLAGS *=/s#=.*#=$ARFLAGS#
|
|
||||||
/^RANLIB *=/s#=.*#=$RANLIB#
|
|
||||||
/^EXE *=/s#=.*#=$EXE#
|
|
||||||
/^prefix *=/s#=.*#=$prefix#
|
|
||||||
/^exec_prefix *=/s#=.*#=$exec_prefix#
|
|
||||||
/^libdir *=/s#=.*#=$libdir#
|
|
||||||
/^sharedlibdir *=/s#=.*#=$sharedlibdir#
|
|
||||||
/^includedir *=/s#=.*#=$includedir#
|
|
||||||
/^mandir *=/s#=.*#=$mandir#
|
|
||||||
/^LDFLAGS *=/s#=.*#=$LDFLAGS#
|
|
||||||
" | sed -e "
|
|
||||||
s/\@VERSION\@/$VER/g;
|
|
||||||
" > zlib.pc
|
|
||||||
|
|
||||||
# done
|
|
||||||
leave 0
|
|
|
@ -1,867 +0,0 @@
|
||||||
$! make libz under VMS written by
|
|
||||||
$! Martin P.J. Zinser
|
|
||||||
$!
|
|
||||||
$! In case of problems with the install you might contact me at
|
|
||||||
$! zinser@zinser.no-ip.info(preferred) or
|
|
||||||
$! martin.zinser@eurexchange.com (work)
|
|
||||||
$!
|
|
||||||
$! Make procedure history for Zlib
|
|
||||||
$!
|
|
||||||
$!------------------------------------------------------------------------------
|
|
||||||
$! Version history
|
|
||||||
$! 0.01 20060120 First version to receive a number
|
|
||||||
$! 0.02 20061008 Adapt to new Makefile.in
|
|
||||||
$! 0.03 20091224 Add support for large file check
|
|
||||||
$! 0.04 20100110 Add new gzclose, gzlib, gzread, gzwrite
|
|
||||||
$! 0.05 20100221 Exchange zlibdefs.h by zconf.h.in
|
|
||||||
$! 0.06 20120111 Fix missing amiss_err, update zconf_h.in, fix new exmples
|
|
||||||
$! subdir path, update module search in makefile.in
|
|
||||||
$! 0.07 20120115 Triggered by work done by Alexey Chupahin completly redesigned
|
|
||||||
$! shared image creation
|
|
||||||
$! 0.08 20120219 Make it work on VAX again, pre-load missing symbols to shared
|
|
||||||
$! image
|
|
||||||
$! 0.09 20120305 SMS. P1 sets builder ("MMK", "MMS", " " (built-in)).
|
|
||||||
$! "" -> automatic, preference: MMK, MMS, built-in.
|
|
||||||
$!
|
|
||||||
$ on error then goto err_exit
|
|
||||||
$!
|
|
||||||
$ true = 1
|
|
||||||
$ false = 0
|
|
||||||
$ tmpnam = "temp_" + f$getjpi("","pid")
|
|
||||||
$ tt = tmpnam + ".txt"
|
|
||||||
$ tc = tmpnam + ".c"
|
|
||||||
$ th = tmpnam + ".h"
|
|
||||||
$ define/nolog tconfig 'th'
|
|
||||||
$ its_decc = false
|
|
||||||
$ its_vaxc = false
|
|
||||||
$ its_gnuc = false
|
|
||||||
$ s_case = False
|
|
||||||
$!
|
|
||||||
$! Setup variables holding "config" information
|
|
||||||
$!
|
|
||||||
$ Make = "''p1'"
|
|
||||||
$ name = "Zlib"
|
|
||||||
$ version = "?.?.?"
|
|
||||||
$ v_string = "ZLIB_VERSION"
|
|
||||||
$ v_file = "zlib.h"
|
|
||||||
$ ccopt = "/include = []"
|
|
||||||
$ lopts = ""
|
|
||||||
$ dnsrl = ""
|
|
||||||
$ aconf_in_file = "zconf.h.in#zconf.h_in#zconf_h.in"
|
|
||||||
$ conf_check_string = ""
|
|
||||||
$ linkonly = false
|
|
||||||
$ optfile = name + ".opt"
|
|
||||||
$ mapfile = name + ".map"
|
|
||||||
$ libdefs = ""
|
|
||||||
$ vax = f$getsyi("HW_MODEL").lt.1024
|
|
||||||
$ axp = f$getsyi("HW_MODEL").ge.1024 .and. f$getsyi("HW_MODEL").lt.4096
|
|
||||||
$ ia64 = f$getsyi("HW_MODEL").ge.4096
|
|
||||||
$!
|
|
||||||
$! 2012-03-05 SMS.
|
|
||||||
$! Why is this needed? And if it is needed, why not simply ".not. vax"?
|
|
||||||
$!
|
|
||||||
$!!! if axp .or. ia64 then set proc/parse=extended
|
|
||||||
$!
|
|
||||||
$ whoami = f$parse(f$environment("Procedure"),,,,"NO_CONCEAL")
|
|
||||||
$ mydef = F$parse(whoami,,,"DEVICE")
|
|
||||||
$ mydir = f$parse(whoami,,,"DIRECTORY") - "]["
|
|
||||||
$ myproc = f$parse(whoami,,,"Name") + f$parse(whoami,,,"type")
|
|
||||||
$!
|
|
||||||
$! Check for MMK/MMS
|
|
||||||
$!
|
|
||||||
$ if (Make .eqs. "")
|
|
||||||
$ then
|
|
||||||
$ If F$Search ("Sys$System:MMS.EXE") .nes. "" Then Make = "MMS"
|
|
||||||
$ If F$Type (MMK) .eqs. "STRING" Then Make = "MMK"
|
|
||||||
$ else
|
|
||||||
$ Make = f$edit( Make, "trim")
|
|
||||||
$ endif
|
|
||||||
$!
|
|
||||||
$ gosub find_version
|
|
||||||
$!
|
|
||||||
$ open/write topt tmp.opt
|
|
||||||
$ open/write optf 'optfile'
|
|
||||||
$!
|
|
||||||
$ gosub check_opts
|
|
||||||
$!
|
|
||||||
$! Look for the compiler used
|
|
||||||
$!
|
|
||||||
$ gosub check_compiler
|
|
||||||
$ close topt
|
|
||||||
$ close optf
|
|
||||||
$!
|
|
||||||
$ if its_decc
|
|
||||||
$ then
|
|
||||||
$ ccopt = "/prefix=all" + ccopt
|
|
||||||
$ if f$trnlnm("SYS") .eqs. ""
|
|
||||||
$ then
|
|
||||||
$ if axp
|
|
||||||
$ then
|
|
||||||
$ define sys sys$library:
|
|
||||||
$ else
|
|
||||||
$ ccopt = "/decc" + ccopt
|
|
||||||
$ define sys decc$library_include:
|
|
||||||
$ endif
|
|
||||||
$ endif
|
|
||||||
$!
|
|
||||||
$! 2012-03-05 SMS.
|
|
||||||
$! Why /NAMES = AS_IS? Why not simply ".not. vax"? And why not on VAX?
|
|
||||||
$!
|
|
||||||
$ if axp .or. ia64
|
|
||||||
$ then
|
|
||||||
$ ccopt = ccopt + "/name=as_is/opt=(inline=speed)"
|
|
||||||
$ s_case = true
|
|
||||||
$ endif
|
|
||||||
$ endif
|
|
||||||
$ if its_vaxc .or. its_gnuc
|
|
||||||
$ then
|
|
||||||
$ if f$trnlnm("SYS").eqs."" then define sys sys$library:
|
|
||||||
$ endif
|
|
||||||
$!
|
|
||||||
$! Build a fake configure input header
|
|
||||||
$!
|
|
||||||
$ open/write conf_hin config.hin
|
|
||||||
$ write conf_hin "#undef _LARGEFILE64_SOURCE"
|
|
||||||
$ close conf_hin
|
|
||||||
$!
|
|
||||||
$!
|
|
||||||
$ i = 0
|
|
||||||
$FIND_ACONF:
|
|
||||||
$ fname = f$element(i,"#",aconf_in_file)
|
|
||||||
$ if fname .eqs. "#" then goto AMISS_ERR
|
|
||||||
$ if f$search(fname) .eqs. ""
|
|
||||||
$ then
|
|
||||||
$ i = i + 1
|
|
||||||
$ goto find_aconf
|
|
||||||
$ endif
|
|
||||||
$ open/read/err=aconf_err aconf_in 'fname'
|
|
||||||
$ open/write aconf zconf.h
|
|
||||||
$ACONF_LOOP:
|
|
||||||
$ read/end_of_file=aconf_exit aconf_in line
|
|
||||||
$ work = f$edit(line, "compress,trim")
|
|
||||||
$ if f$extract(0,6,work) .nes. "#undef"
|
|
||||||
$ then
|
|
||||||
$ if f$extract(0,12,work) .nes. "#cmakedefine"
|
|
||||||
$ then
|
|
||||||
$ write aconf line
|
|
||||||
$ endif
|
|
||||||
$ else
|
|
||||||
$ cdef = f$element(1," ",work)
|
|
||||||
$ gosub check_config
|
|
||||||
$ endif
|
|
||||||
$ goto aconf_loop
|
|
||||||
$ACONF_EXIT:
|
|
||||||
$ write aconf ""
|
|
||||||
$ write aconf "/* VMS specifics added by make_vms.com: */"
|
|
||||||
$ write aconf "#define VMS 1"
|
|
||||||
$ write aconf "#include <unistd.h>"
|
|
||||||
$ write aconf "#include <unixio.h>"
|
|
||||||
$ write aconf "#ifdef _LARGEFILE"
|
|
||||||
$ write aconf "# define off64_t __off64_t"
|
|
||||||
$ write aconf "# define fopen64 fopen"
|
|
||||||
$ write aconf "# define fseeko64 fseeko"
|
|
||||||
$ write aconf "# define lseek64 lseek"
|
|
||||||
$ write aconf "# define ftello64 ftell"
|
|
||||||
$ write aconf "#endif"
|
|
||||||
$ write aconf "#if !defined( __VAX) && (__CRTL_VER >= 70312000)"
|
|
||||||
$ write aconf "# define HAVE_VSNPRINTF"
|
|
||||||
$ write aconf "#endif"
|
|
||||||
$ close aconf_in
|
|
||||||
$ close aconf
|
|
||||||
$ if f$search("''th'") .nes. "" then delete 'th';*
|
|
||||||
$! Build the thing plain or with mms
|
|
||||||
$!
|
|
||||||
$ write sys$output "Compiling Zlib sources ..."
|
|
||||||
$ if make.eqs.""
|
|
||||||
$ then
|
|
||||||
$ if (f$search( "example.obj;*") .nes. "") then delete example.obj;*
|
|
||||||
$ if (f$search( "minigzip.obj;*") .nes. "") then delete minigzip.obj;*
|
|
||||||
$ CALL MAKE adler32.OBJ "CC ''CCOPT' adler32" -
|
|
||||||
adler32.c zlib.h zconf.h
|
|
||||||
$ CALL MAKE compress.OBJ "CC ''CCOPT' compress" -
|
|
||||||
compress.c zlib.h zconf.h
|
|
||||||
$ CALL MAKE crc32.OBJ "CC ''CCOPT' crc32" -
|
|
||||||
crc32.c zlib.h zconf.h
|
|
||||||
$ CALL MAKE deflate.OBJ "CC ''CCOPT' deflate" -
|
|
||||||
deflate.c deflate.h zutil.h zlib.h zconf.h
|
|
||||||
$ CALL MAKE gzclose.OBJ "CC ''CCOPT' gzclose" -
|
|
||||||
gzclose.c zutil.h zlib.h zconf.h
|
|
||||||
$ CALL MAKE gzlib.OBJ "CC ''CCOPT' gzlib" -
|
|
||||||
gzlib.c zutil.h zlib.h zconf.h
|
|
||||||
$ CALL MAKE gzread.OBJ "CC ''CCOPT' gzread" -
|
|
||||||
gzread.c zutil.h zlib.h zconf.h
|
|
||||||
$ CALL MAKE gzwrite.OBJ "CC ''CCOPT' gzwrite" -
|
|
||||||
gzwrite.c zutil.h zlib.h zconf.h
|
|
||||||
$ CALL MAKE infback.OBJ "CC ''CCOPT' infback" -
|
|
||||||
infback.c zutil.h inftrees.h inflate.h inffast.h inffixed.h
|
|
||||||
$ CALL MAKE inffast.OBJ "CC ''CCOPT' inffast" -
|
|
||||||
inffast.c zutil.h zlib.h zconf.h inffast.h
|
|
||||||
$ CALL MAKE inflate.OBJ "CC ''CCOPT' inflate" -
|
|
||||||
inflate.c zutil.h zlib.h zconf.h infblock.h
|
|
||||||
$ CALL MAKE inftrees.OBJ "CC ''CCOPT' inftrees" -
|
|
||||||
inftrees.c zutil.h zlib.h zconf.h inftrees.h
|
|
||||||
$ CALL MAKE trees.OBJ "CC ''CCOPT' trees" -
|
|
||||||
trees.c deflate.h zutil.h zlib.h zconf.h
|
|
||||||
$ CALL MAKE uncompr.OBJ "CC ''CCOPT' uncompr" -
|
|
||||||
uncompr.c zlib.h zconf.h
|
|
||||||
$ CALL MAKE zutil.OBJ "CC ''CCOPT' zutil" -
|
|
||||||
zutil.c zutil.h zlib.h zconf.h
|
|
||||||
$ write sys$output "Building Zlib ..."
|
|
||||||
$ CALL MAKE libz.OLB "lib/crea libz.olb *.obj" *.OBJ
|
|
||||||
$ write sys$output "Building example..."
|
|
||||||
$ CALL MAKE example.OBJ "CC ''CCOPT' [.test]example" -
|
|
||||||
[.test]example.c zlib.h zconf.h
|
|
||||||
$ call make example.exe "LINK example,libz.olb/lib" example.obj libz.olb
|
|
||||||
$ write sys$output "Building minigzip..."
|
|
||||||
$ CALL MAKE minigzip.OBJ "CC ''CCOPT' [.test]minigzip" -
|
|
||||||
[.test]minigzip.c zlib.h zconf.h
|
|
||||||
$ call make minigzip.exe -
|
|
||||||
"LINK minigzip,libz.olb/lib" -
|
|
||||||
minigzip.obj libz.olb
|
|
||||||
$ else
|
|
||||||
$ gosub crea_mms
|
|
||||||
$ write sys$output "Make ''name' ''version' with ''Make' "
|
|
||||||
$ 'make'
|
|
||||||
$ endif
|
|
||||||
$!
|
|
||||||
$! Create shareable image
|
|
||||||
$!
|
|
||||||
$ gosub crea_olist
|
|
||||||
$ write sys$output "Creating libzshr.exe"
|
|
||||||
$ call map_2_shopt 'mapfile' 'optfile'
|
|
||||||
$ LINK_'lopts'/SHARE=libzshr.exe modules.opt/opt,'optfile'/opt
|
|
||||||
$ write sys$output "Zlib build completed"
|
|
||||||
$ delete/nolog tmp.opt;*
|
|
||||||
$ exit
|
|
||||||
$AMISS_ERR:
|
|
||||||
$ write sys$output "No source for config.hin found."
|
|
||||||
$ write sys$output "Tried any of ''aconf_in_file'"
|
|
||||||
$ goto err_exit
|
|
||||||
$CC_ERR:
|
|
||||||
$ write sys$output "C compiler required to build ''name'"
|
|
||||||
$ goto err_exit
|
|
||||||
$ERR_EXIT:
|
|
||||||
$ set message/facil/ident/sever/text
|
|
||||||
$ close/nolog optf
|
|
||||||
$ close/nolog topt
|
|
||||||
$ close/nolog aconf_in
|
|
||||||
$ close/nolog aconf
|
|
||||||
$ close/nolog out
|
|
||||||
$ close/nolog min
|
|
||||||
$ close/nolog mod
|
|
||||||
$ close/nolog h_in
|
|
||||||
$ write sys$output "Exiting..."
|
|
||||||
$ exit 2
|
|
||||||
$!
|
|
||||||
$!
|
|
||||||
$MAKE: SUBROUTINE !SUBROUTINE TO CHECK DEPENDENCIES
|
|
||||||
$ V = 'F$Verify(0)
|
|
||||||
$! P1 = What we are trying to make
|
|
||||||
$! P2 = Command to make it
|
|
||||||
$! P3 - P8 What it depends on
|
|
||||||
$
|
|
||||||
$ If F$Search(P1) .Eqs. "" Then Goto Makeit
|
|
||||||
$ Time = F$CvTime(F$File(P1,"RDT"))
|
|
||||||
$arg=3
|
|
||||||
$Loop:
|
|
||||||
$ Argument = P'arg
|
|
||||||
$ If Argument .Eqs. "" Then Goto Exit
|
|
||||||
$ El=0
|
|
||||||
$Loop2:
|
|
||||||
$ File = F$Element(El," ",Argument)
|
|
||||||
$ If File .Eqs. " " Then Goto Endl
|
|
||||||
$ AFile = ""
|
|
||||||
$Loop3:
|
|
||||||
$ OFile = AFile
|
|
||||||
$ AFile = F$Search(File)
|
|
||||||
$ If AFile .Eqs. "" .Or. AFile .Eqs. OFile Then Goto NextEl
|
|
||||||
$ If F$CvTime(F$File(AFile,"RDT")) .Ges. Time Then Goto Makeit
|
|
||||||
$ Goto Loop3
|
|
||||||
$NextEL:
|
|
||||||
$ El = El + 1
|
|
||||||
$ Goto Loop2
|
|
||||||
$EndL:
|
|
||||||
$ arg=arg+1
|
|
||||||
$ If arg .Le. 8 Then Goto Loop
|
|
||||||
$ Goto Exit
|
|
||||||
$
|
|
||||||
$Makeit:
|
|
||||||
$ VV=F$VERIFY(0)
|
|
||||||
$ write sys$output P2
|
|
||||||
$ 'P2
|
|
||||||
$ VV='F$Verify(VV)
|
|
||||||
$Exit:
|
|
||||||
$ If V Then Set Verify
|
|
||||||
$ENDSUBROUTINE
|
|
||||||
$!------------------------------------------------------------------------------
|
|
||||||
$!
|
|
||||||
$! Check command line options and set symbols accordingly
|
|
||||||
$!
|
|
||||||
$!------------------------------------------------------------------------------
|
|
||||||
$! Version history
|
|
||||||
$! 0.01 20041206 First version to receive a number
|
|
||||||
$! 0.02 20060126 Add new "HELP" target
|
|
||||||
$ CHECK_OPTS:
|
|
||||||
$ i = 1
|
|
||||||
$ OPT_LOOP:
|
|
||||||
$ if i .lt. 9
|
|
||||||
$ then
|
|
||||||
$ cparm = f$edit(p'i',"upcase")
|
|
||||||
$!
|
|
||||||
$! Check if parameter actually contains something
|
|
||||||
$!
|
|
||||||
$ if f$edit(cparm,"trim") .nes. ""
|
|
||||||
$ then
|
|
||||||
$ if cparm .eqs. "DEBUG"
|
|
||||||
$ then
|
|
||||||
$ ccopt = ccopt + "/noopt/deb"
|
|
||||||
$ lopts = lopts + "/deb"
|
|
||||||
$ endif
|
|
||||||
$ if f$locate("CCOPT=",cparm) .lt. f$length(cparm)
|
|
||||||
$ then
|
|
||||||
$ start = f$locate("=",cparm) + 1
|
|
||||||
$ len = f$length(cparm) - start
|
|
||||||
$ ccopt = ccopt + f$extract(start,len,cparm)
|
|
||||||
$ if f$locate("AS_IS",f$edit(ccopt,"UPCASE")) .lt. f$length(ccopt) -
|
|
||||||
then s_case = true
|
|
||||||
$ endif
|
|
||||||
$ if cparm .eqs. "LINK" then linkonly = true
|
|
||||||
$ if f$locate("LOPTS=",cparm) .lt. f$length(cparm)
|
|
||||||
$ then
|
|
||||||
$ start = f$locate("=",cparm) + 1
|
|
||||||
$ len = f$length(cparm) - start
|
|
||||||
$ lopts = lopts + f$extract(start,len,cparm)
|
|
||||||
$ endif
|
|
||||||
$ if f$locate("CC=",cparm) .lt. f$length(cparm)
|
|
||||||
$ then
|
|
||||||
$ start = f$locate("=",cparm) + 1
|
|
||||||
$ len = f$length(cparm) - start
|
|
||||||
$ cc_com = f$extract(start,len,cparm)
|
|
||||||
if (cc_com .nes. "DECC") .and. -
|
|
||||||
(cc_com .nes. "VAXC") .and. -
|
|
||||||
(cc_com .nes. "GNUC")
|
|
||||||
$ then
|
|
||||||
$ write sys$output "Unsupported compiler choice ''cc_com' ignored"
|
|
||||||
$ write sys$output "Use DECC, VAXC, or GNUC instead"
|
|
||||||
$ else
|
|
||||||
$ if cc_com .eqs. "DECC" then its_decc = true
|
|
||||||
$ if cc_com .eqs. "VAXC" then its_vaxc = true
|
|
||||||
$ if cc_com .eqs. "GNUC" then its_gnuc = true
|
|
||||||
$ endif
|
|
||||||
$ endif
|
|
||||||
$ if f$locate("MAKE=",cparm) .lt. f$length(cparm)
|
|
||||||
$ then
|
|
||||||
$ start = f$locate("=",cparm) + 1
|
|
||||||
$ len = f$length(cparm) - start
|
|
||||||
$ mmks = f$extract(start,len,cparm)
|
|
||||||
$ if (mmks .eqs. "MMK") .or. (mmks .eqs. "MMS")
|
|
||||||
$ then
|
|
||||||
$ make = mmks
|
|
||||||
$ else
|
|
||||||
$ write sys$output "Unsupported make choice ''mmks' ignored"
|
|
||||||
$ write sys$output "Use MMK or MMS instead"
|
|
||||||
$ endif
|
|
||||||
$ endif
|
|
||||||
$ if cparm .eqs. "HELP" then gosub bhelp
|
|
||||||
$ endif
|
|
||||||
$ i = i + 1
|
|
||||||
$ goto opt_loop
|
|
||||||
$ endif
|
|
||||||
$ return
|
|
||||||
$!------------------------------------------------------------------------------
|
|
||||||
$!
|
|
||||||
$! Look for the compiler used
|
|
||||||
$!
|
|
||||||
$! Version history
|
|
||||||
$! 0.01 20040223 First version to receive a number
|
|
||||||
$! 0.02 20040229 Save/set value of decc$no_rooted_search_lists
|
|
||||||
$! 0.03 20060202 Extend handling of GNU C
|
|
||||||
$! 0.04 20090402 Compaq -> hp
|
|
||||||
$CHECK_COMPILER:
|
|
||||||
$ if (.not. (its_decc .or. its_vaxc .or. its_gnuc))
|
|
||||||
$ then
|
|
||||||
$ its_decc = (f$search("SYS$SYSTEM:DECC$COMPILER.EXE") .nes. "")
|
|
||||||
$ its_vaxc = .not. its_decc .and. (F$Search("SYS$System:VAXC.Exe") .nes. "")
|
|
||||||
$ its_gnuc = .not. (its_decc .or. its_vaxc) .and. (f$trnlnm("gnu_cc") .nes. "")
|
|
||||||
$ endif
|
|
||||||
$!
|
|
||||||
$! Exit if no compiler available
|
|
||||||
$!
|
|
||||||
$ if (.not. (its_decc .or. its_vaxc .or. its_gnuc))
|
|
||||||
$ then goto CC_ERR
|
|
||||||
$ else
|
|
||||||
$ if its_decc
|
|
||||||
$ then
|
|
||||||
$ write sys$output "CC compiler check ... hp C"
|
|
||||||
$ if f$trnlnm("decc$no_rooted_search_lists") .nes. ""
|
|
||||||
$ then
|
|
||||||
$ dnrsl = f$trnlnm("decc$no_rooted_search_lists")
|
|
||||||
$ endif
|
|
||||||
$ define/nolog decc$no_rooted_search_lists 1
|
|
||||||
$ else
|
|
||||||
$ if its_vaxc then write sys$output "CC compiler check ... VAX C"
|
|
||||||
$ if its_gnuc
|
|
||||||
$ then
|
|
||||||
$ write sys$output "CC compiler check ... GNU C"
|
|
||||||
$ if f$trnlnm(topt) then write topt "gnu_cc:[000000]gcclib.olb/lib"
|
|
||||||
$ if f$trnlnm(optf) then write optf "gnu_cc:[000000]gcclib.olb/lib"
|
|
||||||
$ cc = "gcc"
|
|
||||||
$ endif
|
|
||||||
$ if f$trnlnm(topt) then write topt "sys$share:vaxcrtl.exe/share"
|
|
||||||
$ if f$trnlnm(optf) then write optf "sys$share:vaxcrtl.exe/share"
|
|
||||||
$ endif
|
|
||||||
$ endif
|
|
||||||
$ return
|
|
||||||
$!------------------------------------------------------------------------------
|
|
||||||
$!
|
|
||||||
$! If MMS/MMK are available dump out the descrip.mms if required
|
|
||||||
$!
|
|
||||||
$CREA_MMS:
|
|
||||||
$ write sys$output "Creating descrip.mms..."
|
|
||||||
$ create descrip.mms
|
|
||||||
$ open/append out descrip.mms
|
|
||||||
$ copy sys$input: out
|
|
||||||
$ deck
|
|
||||||
# descrip.mms: MMS description file for building zlib on VMS
|
|
||||||
# written by Martin P.J. Zinser
|
|
||||||
# <zinser@zinser.no-ip.info or martin.zinser@eurexchange.com>
|
|
||||||
|
|
||||||
OBJS = adler32.obj, compress.obj, crc32.obj, gzclose.obj, gzlib.obj\
|
|
||||||
gzread.obj, gzwrite.obj, uncompr.obj, infback.obj\
|
|
||||||
deflate.obj, trees.obj, zutil.obj, inflate.obj, \
|
|
||||||
inftrees.obj, inffast.obj
|
|
||||||
|
|
||||||
$ eod
|
|
||||||
$ write out "CFLAGS=", ccopt
|
|
||||||
$ write out "LOPTS=", lopts
|
|
||||||
$ write out "all : example.exe minigzip.exe libz.olb"
|
|
||||||
$ copy sys$input: out
|
|
||||||
$ deck
|
|
||||||
@ write sys$output " Example applications available"
|
|
||||||
|
|
||||||
libz.olb : libz.olb($(OBJS))
|
|
||||||
@ write sys$output " libz available"
|
|
||||||
|
|
||||||
example.exe : example.obj libz.olb
|
|
||||||
link $(LOPTS) example,libz.olb/lib
|
|
||||||
|
|
||||||
minigzip.exe : minigzip.obj libz.olb
|
|
||||||
link $(LOPTS) minigzip,libz.olb/lib
|
|
||||||
|
|
||||||
clean :
|
|
||||||
delete *.obj;*,libz.olb;*,*.opt;*,*.exe;*
|
|
||||||
|
|
||||||
|
|
||||||
# Other dependencies.
|
|
||||||
adler32.obj : adler32.c zutil.h zlib.h zconf.h
|
|
||||||
compress.obj : compress.c zlib.h zconf.h
|
|
||||||
crc32.obj : crc32.c zutil.h zlib.h zconf.h
|
|
||||||
deflate.obj : deflate.c deflate.h zutil.h zlib.h zconf.h
|
|
||||||
example.obj : [.test]example.c zlib.h zconf.h
|
|
||||||
gzclose.obj : gzclose.c zutil.h zlib.h zconf.h
|
|
||||||
gzlib.obj : gzlib.c zutil.h zlib.h zconf.h
|
|
||||||
gzread.obj : gzread.c zutil.h zlib.h zconf.h
|
|
||||||
gzwrite.obj : gzwrite.c zutil.h zlib.h zconf.h
|
|
||||||
inffast.obj : inffast.c zutil.h zlib.h zconf.h inftrees.h inffast.h
|
|
||||||
inflate.obj : inflate.c zutil.h zlib.h zconf.h
|
|
||||||
inftrees.obj : inftrees.c zutil.h zlib.h zconf.h inftrees.h
|
|
||||||
minigzip.obj : [.test]minigzip.c zlib.h zconf.h
|
|
||||||
trees.obj : trees.c deflate.h zutil.h zlib.h zconf.h
|
|
||||||
uncompr.obj : uncompr.c zlib.h zconf.h
|
|
||||||
zutil.obj : zutil.c zutil.h zlib.h zconf.h
|
|
||||||
infback.obj : infback.c zutil.h inftrees.h inflate.h inffast.h inffixed.h
|
|
||||||
$ eod
|
|
||||||
$ close out
|
|
||||||
$ return
|
|
||||||
$!------------------------------------------------------------------------------
|
|
||||||
$!
|
|
||||||
$! Read list of core library sources from makefile.in and create options
|
|
||||||
$! needed to build shareable image
|
|
||||||
$!
|
|
||||||
$CREA_OLIST:
|
|
||||||
$ open/read min makefile.in
|
|
||||||
$ open/write mod modules.opt
|
|
||||||
$ src_check_list = "OBJZ =#OBJG ="
|
|
||||||
$MRLOOP:
|
|
||||||
$ read/end=mrdone min rec
|
|
||||||
$ i = 0
|
|
||||||
$SRC_CHECK_LOOP:
|
|
||||||
$ src_check = f$element(i, "#", src_check_list)
|
|
||||||
$ i = i+1
|
|
||||||
$ if src_check .eqs. "#" then goto mrloop
|
|
||||||
$ if (f$extract(0,6,rec) .nes. src_check) then goto src_check_loop
|
|
||||||
$ rec = rec - src_check
|
|
||||||
$ gosub extra_filnam
|
|
||||||
$ if (f$element(1,"\",rec) .eqs. "\") then goto mrloop
|
|
||||||
$MRSLOOP:
|
|
||||||
$ read/end=mrdone min rec
|
|
||||||
$ gosub extra_filnam
|
|
||||||
$ if (f$element(1,"\",rec) .nes. "\") then goto mrsloop
|
|
||||||
$MRDONE:
|
|
||||||
$ close min
|
|
||||||
$ close mod
|
|
||||||
$ return
|
|
||||||
$!------------------------------------------------------------------------------
|
|
||||||
$!
|
|
||||||
$! Take record extracted in crea_olist and split it into single filenames
|
|
||||||
$!
|
|
||||||
$EXTRA_FILNAM:
|
|
||||||
$ myrec = f$edit(rec - "\", "trim,compress")
|
|
||||||
$ i = 0
|
|
||||||
$FELOOP:
|
|
||||||
$ srcfil = f$element(i," ", myrec)
|
|
||||||
$ if (srcfil .nes. " ")
|
|
||||||
$ then
|
|
||||||
$ write mod f$parse(srcfil,,,"NAME"), ".obj"
|
|
||||||
$ i = i + 1
|
|
||||||
$ goto feloop
|
|
||||||
$ endif
|
|
||||||
$ return
|
|
||||||
$!------------------------------------------------------------------------------
|
|
||||||
$!
|
|
||||||
$! Find current Zlib version number
|
|
||||||
$!
|
|
||||||
$FIND_VERSION:
|
|
||||||
$ open/read h_in 'v_file'
|
|
||||||
$hloop:
|
|
||||||
$ read/end=hdone h_in rec
|
|
||||||
$ rec = f$edit(rec,"TRIM")
|
|
||||||
$ if (f$extract(0,1,rec) .nes. "#") then goto hloop
|
|
||||||
$ rec = f$edit(rec - "#", "TRIM")
|
|
||||||
$ if f$element(0," ",rec) .nes. "define" then goto hloop
|
|
||||||
$ if f$element(1," ",rec) .eqs. v_string
|
|
||||||
$ then
|
|
||||||
$ version = 'f$element(2," ",rec)'
|
|
||||||
$ goto hdone
|
|
||||||
$ endif
|
|
||||||
$ goto hloop
|
|
||||||
$hdone:
|
|
||||||
$ close h_in
|
|
||||||
$ return
|
|
||||||
$!------------------------------------------------------------------------------
|
|
||||||
$!
|
|
||||||
$CHECK_CONFIG:
|
|
||||||
$!
|
|
||||||
$ in_ldef = f$locate(cdef,libdefs)
|
|
||||||
$ if (in_ldef .lt. f$length(libdefs))
|
|
||||||
$ then
|
|
||||||
$ write aconf "#define ''cdef' 1"
|
|
||||||
$ libdefs = f$extract(0,in_ldef,libdefs) + -
|
|
||||||
f$extract(in_ldef + f$length(cdef) + 1, -
|
|
||||||
f$length(libdefs) - in_ldef - f$length(cdef) - 1, -
|
|
||||||
libdefs)
|
|
||||||
$ else
|
|
||||||
$ if (f$type('cdef') .eqs. "INTEGER")
|
|
||||||
$ then
|
|
||||||
$ write aconf "#define ''cdef' ", 'cdef'
|
|
||||||
$ else
|
|
||||||
$ if (f$type('cdef') .eqs. "STRING")
|
|
||||||
$ then
|
|
||||||
$ write aconf "#define ''cdef' ", """", '''cdef'', """"
|
|
||||||
$ else
|
|
||||||
$ gosub check_cc_def
|
|
||||||
$ endif
|
|
||||||
$ endif
|
|
||||||
$ endif
|
|
||||||
$ return
|
|
||||||
$!------------------------------------------------------------------------------
|
|
||||||
$!
|
|
||||||
$! Check if this is a define relating to the properties of the C/C++
|
|
||||||
$! compiler
|
|
||||||
$!
|
|
||||||
$ CHECK_CC_DEF:
|
|
||||||
$ if (cdef .eqs. "_LARGEFILE64_SOURCE")
|
|
||||||
$ then
|
|
||||||
$ copy sys$input: 'tc'
|
|
||||||
$ deck
|
|
||||||
#include "tconfig"
|
|
||||||
#define _LARGEFILE
|
|
||||||
#include <stdio.h>
|
|
||||||
|
|
||||||
int main(){
|
|
||||||
FILE *fp;
|
|
||||||
fp = fopen("temp.txt","r");
|
|
||||||
fseeko(fp,1,SEEK_SET);
|
|
||||||
fclose(fp);
|
|
||||||
}
|
|
||||||
|
|
||||||
$ eod
|
|
||||||
$ test_inv = false
|
|
||||||
$ comm_h = false
|
|
||||||
$ gosub cc_prop_check
|
|
||||||
$ return
|
|
||||||
$ endif
|
|
||||||
$ write aconf "/* ", line, " */"
|
|
||||||
$ return
|
|
||||||
$!------------------------------------------------------------------------------
|
|
||||||
$!
|
|
||||||
$! Check for properties of C/C++ compiler
|
|
||||||
$!
|
|
||||||
$! Version history
|
|
||||||
$! 0.01 20031020 First version to receive a number
|
|
||||||
$! 0.02 20031022 Added logic for defines with value
|
|
||||||
$! 0.03 20040309 Make sure local config file gets not deleted
|
|
||||||
$! 0.04 20041230 Also write include for configure run
|
|
||||||
$! 0.05 20050103 Add processing of "comment defines"
|
|
||||||
$CC_PROP_CHECK:
|
|
||||||
$ cc_prop = true
|
|
||||||
$ is_need = false
|
|
||||||
$ is_need = (f$extract(0,4,cdef) .eqs. "NEED") .or. (test_inv .eq. true)
|
|
||||||
$ if f$search(th) .eqs. "" then create 'th'
|
|
||||||
$ set message/nofac/noident/nosever/notext
|
|
||||||
$ on error then continue
|
|
||||||
$ cc 'tmpnam'
|
|
||||||
$ if .not. ($status) then cc_prop = false
|
|
||||||
$ on error then continue
|
|
||||||
$! The headers might lie about the capabilities of the RTL
|
|
||||||
$ link 'tmpnam',tmp.opt/opt
|
|
||||||
$ if .not. ($status) then cc_prop = false
|
|
||||||
$ set message/fac/ident/sever/text
|
|
||||||
$ on error then goto err_exit
|
|
||||||
$ delete/nolog 'tmpnam'.*;*/exclude='th'
|
|
||||||
$ if (cc_prop .and. .not. is_need) .or. -
|
|
||||||
(.not. cc_prop .and. is_need)
|
|
||||||
$ then
|
|
||||||
$ write sys$output "Checking for ''cdef'... yes"
|
|
||||||
$ if f$type('cdef_val'_yes) .nes. ""
|
|
||||||
$ then
|
|
||||||
$ if f$type('cdef_val'_yes) .eqs. "INTEGER" -
|
|
||||||
then call write_config f$fao("#define !AS !UL",cdef,'cdef_val'_yes)
|
|
||||||
$ if f$type('cdef_val'_yes) .eqs. "STRING" -
|
|
||||||
then call write_config f$fao("#define !AS !AS",cdef,'cdef_val'_yes)
|
|
||||||
$ else
|
|
||||||
$ call write_config f$fao("#define !AS 1",cdef)
|
|
||||||
$ endif
|
|
||||||
$ if (cdef .eqs. "HAVE_FSEEKO") .or. (cdef .eqs. "_LARGE_FILES") .or. -
|
|
||||||
(cdef .eqs. "_LARGEFILE64_SOURCE") then -
|
|
||||||
call write_config f$string("#define _LARGEFILE 1")
|
|
||||||
$ else
|
|
||||||
$ write sys$output "Checking for ''cdef'... no"
|
|
||||||
$ if (comm_h)
|
|
||||||
$ then
|
|
||||||
call write_config f$fao("/* !AS */",line)
|
|
||||||
$ else
|
|
||||||
$ if f$type('cdef_val'_no) .nes. ""
|
|
||||||
$ then
|
|
||||||
$ if f$type('cdef_val'_no) .eqs. "INTEGER" -
|
|
||||||
then call write_config f$fao("#define !AS !UL",cdef,'cdef_val'_no)
|
|
||||||
$ if f$type('cdef_val'_no) .eqs. "STRING" -
|
|
||||||
then call write_config f$fao("#define !AS !AS",cdef,'cdef_val'_no)
|
|
||||||
$ else
|
|
||||||
$ call write_config f$fao("#undef !AS",cdef)
|
|
||||||
$ endif
|
|
||||||
$ endif
|
|
||||||
$ endif
|
|
||||||
$ return
|
|
||||||
$!------------------------------------------------------------------------------
|
|
||||||
$!
|
|
||||||
$! Check for properties of C/C++ compiler with multiple result values
|
|
||||||
$!
|
|
||||||
$! Version history
|
|
||||||
$! 0.01 20040127 First version
|
|
||||||
$! 0.02 20050103 Reconcile changes from cc_prop up to version 0.05
|
|
||||||
$CC_MPROP_CHECK:
|
|
||||||
$ cc_prop = true
|
|
||||||
$ i = 1
|
|
||||||
$ idel = 1
|
|
||||||
$ MT_LOOP:
|
|
||||||
$ if f$type(result_'i') .eqs. "STRING"
|
|
||||||
$ then
|
|
||||||
$ set message/nofac/noident/nosever/notext
|
|
||||||
$ on error then continue
|
|
||||||
$ cc 'tmpnam'_'i'
|
|
||||||
$ if .not. ($status) then cc_prop = false
|
|
||||||
$ on error then continue
|
|
||||||
$! The headers might lie about the capabilities of the RTL
|
|
||||||
$ link 'tmpnam'_'i',tmp.opt/opt
|
|
||||||
$ if .not. ($status) then cc_prop = false
|
|
||||||
$ set message/fac/ident/sever/text
|
|
||||||
$ on error then goto err_exit
|
|
||||||
$ delete/nolog 'tmpnam'_'i'.*;*
|
|
||||||
$ if (cc_prop)
|
|
||||||
$ then
|
|
||||||
$ write sys$output "Checking for ''cdef'... ", mdef_'i'
|
|
||||||
$ if f$type(mdef_'i') .eqs. "INTEGER" -
|
|
||||||
then call write_config f$fao("#define !AS !UL",cdef,mdef_'i')
|
|
||||||
$ if f$type('cdef_val'_yes) .eqs. "STRING" -
|
|
||||||
then call write_config f$fao("#define !AS !AS",cdef,mdef_'i')
|
|
||||||
$ goto msym_clean
|
|
||||||
$ else
|
|
||||||
$ i = i + 1
|
|
||||||
$ goto mt_loop
|
|
||||||
$ endif
|
|
||||||
$ endif
|
|
||||||
$ write sys$output "Checking for ''cdef'... no"
|
|
||||||
$ call write_config f$fao("#undef !AS",cdef)
|
|
||||||
$ MSYM_CLEAN:
|
|
||||||
$ if (idel .le. msym_max)
|
|
||||||
$ then
|
|
||||||
$ delete/sym mdef_'idel'
|
|
||||||
$ idel = idel + 1
|
|
||||||
$ goto msym_clean
|
|
||||||
$ endif
|
|
||||||
$ return
|
|
||||||
$!------------------------------------------------------------------------------
|
|
||||||
$!
|
|
||||||
$! Write configuration to both permanent and temporary config file
|
|
||||||
$!
|
|
||||||
$! Version history
|
|
||||||
$! 0.01 20031029 First version to receive a number
|
|
||||||
$!
|
|
||||||
$WRITE_CONFIG: SUBROUTINE
|
|
||||||
$ write aconf 'p1'
|
|
||||||
$ open/append confh 'th'
|
|
||||||
$ write confh 'p1'
|
|
||||||
$ close confh
|
|
||||||
$ENDSUBROUTINE
|
|
||||||
$!------------------------------------------------------------------------------
|
|
||||||
$!
|
|
||||||
$! Analyze the project map file and create the symbol vector for a shareable
|
|
||||||
$! image from it
|
|
||||||
$!
|
|
||||||
$! Version history
|
|
||||||
$! 0.01 20120128 First version
|
|
||||||
$! 0.02 20120226 Add pre-load logic
|
|
||||||
$!
|
|
||||||
$ MAP_2_SHOPT: Subroutine
|
|
||||||
$!
|
|
||||||
$ SAY := "WRITE_ SYS$OUTPUT"
|
|
||||||
$!
|
|
||||||
$ IF F$SEARCH("''P1'") .EQS. ""
|
|
||||||
$ THEN
|
|
||||||
$ SAY "MAP_2_SHOPT-E-NOSUCHFILE: Error, inputfile ''p1' not available"
|
|
||||||
$ goto exit_m2s
|
|
||||||
$ ENDIF
|
|
||||||
$ IF "''P2'" .EQS. ""
|
|
||||||
$ THEN
|
|
||||||
$ SAY "MAP_2_SHOPT: Error, no output file provided"
|
|
||||||
$ goto exit_m2s
|
|
||||||
$ ENDIF
|
|
||||||
$!
|
|
||||||
$ module1 = "deflate#deflateEnd#deflateInit_#deflateParams#deflateSetDictionary"
|
|
||||||
$ module2 = "gzclose#gzerror#gzgetc#gzgets#gzopen#gzprintf#gzputc#gzputs#gzread"
|
|
||||||
$ module3 = "gzseek#gztell#inflate#inflateEnd#inflateInit_#inflateSetDictionary"
|
|
||||||
$ module4 = "inflateSync#uncompress#zlibVersion#compress"
|
|
||||||
$ open/read map 'p1
|
|
||||||
$ if axp .or. ia64
|
|
||||||
$ then
|
|
||||||
$ open/write aopt a.opt
|
|
||||||
$ open/write bopt b.opt
|
|
||||||
$ write aopt " CASE_SENSITIVE=YES"
|
|
||||||
$ write bopt "SYMBOL_VECTOR= (-"
|
|
||||||
$ mod_sym_num = 1
|
|
||||||
$ MOD_SYM_LOOP:
|
|
||||||
$ if f$type(module'mod_sym_num') .nes. ""
|
|
||||||
$ then
|
|
||||||
$ mod_in = 0
|
|
||||||
$ MOD_SYM_IN:
|
|
||||||
$ shared_proc = f$element(mod_in, "#", module'mod_sym_num')
|
|
||||||
$ if shared_proc .nes. "#"
|
|
||||||
$ then
|
|
||||||
$ write aopt f$fao(" symbol_vector=(!AS/!AS=PROCEDURE)",-
|
|
||||||
f$edit(shared_proc,"upcase"),shared_proc)
|
|
||||||
$ write bopt f$fao("!AS=PROCEDURE,-",shared_proc)
|
|
||||||
$ mod_in = mod_in + 1
|
|
||||||
$ goto mod_sym_in
|
|
||||||
$ endif
|
|
||||||
$ mod_sym_num = mod_sym_num + 1
|
|
||||||
$ goto mod_sym_loop
|
|
||||||
$ endif
|
|
||||||
$MAP_LOOP:
|
|
||||||
$ read/end=map_end map line
|
|
||||||
$ if (f$locate("{",line).lt. f$length(line)) .or. -
|
|
||||||
(f$locate("global:", line) .lt. f$length(line))
|
|
||||||
$ then
|
|
||||||
$ proc = true
|
|
||||||
$ goto map_loop
|
|
||||||
$ endif
|
|
||||||
$ if f$locate("}",line).lt. f$length(line) then proc = false
|
|
||||||
$ if f$locate("local:", line) .lt. f$length(line) then proc = false
|
|
||||||
$ if proc
|
|
||||||
$ then
|
|
||||||
$ shared_proc = f$edit(line,"collapse")
|
|
||||||
$ chop_semi = f$locate(";", shared_proc)
|
|
||||||
$ if chop_semi .lt. f$length(shared_proc) then -
|
|
||||||
shared_proc = f$extract(0, chop_semi, shared_proc)
|
|
||||||
$ write aopt f$fao(" symbol_vector=(!AS/!AS=PROCEDURE)",-
|
|
||||||
f$edit(shared_proc,"upcase"),shared_proc)
|
|
||||||
$ write bopt f$fao("!AS=PROCEDURE,-",shared_proc)
|
|
||||||
$ endif
|
|
||||||
$ goto map_loop
|
|
||||||
$MAP_END:
|
|
||||||
$ close/nolog aopt
|
|
||||||
$ close/nolog bopt
|
|
||||||
$ open/append libopt 'p2'
|
|
||||||
$ open/read aopt a.opt
|
|
||||||
$ open/read bopt b.opt
|
|
||||||
$ALOOP:
|
|
||||||
$ read/end=aloop_end aopt line
|
|
||||||
$ write libopt line
|
|
||||||
$ goto aloop
|
|
||||||
$ALOOP_END:
|
|
||||||
$ close/nolog aopt
|
|
||||||
$ sv = ""
|
|
||||||
$BLOOP:
|
|
||||||
$ read/end=bloop_end bopt svn
|
|
||||||
$ if (svn.nes."")
|
|
||||||
$ then
|
|
||||||
$ if (sv.nes."") then write libopt sv
|
|
||||||
$ sv = svn
|
|
||||||
$ endif
|
|
||||||
$ goto bloop
|
|
||||||
$BLOOP_END:
|
|
||||||
$ write libopt f$extract(0,f$length(sv)-2,sv), "-"
|
|
||||||
$ write libopt ")"
|
|
||||||
$ close/nolog bopt
|
|
||||||
$ delete/nolog/noconf a.opt;*,b.opt;*
|
|
||||||
$ else
|
|
||||||
$ if vax
|
|
||||||
$ then
|
|
||||||
$ open/append libopt 'p2'
|
|
||||||
$ mod_sym_num = 1
|
|
||||||
$ VMOD_SYM_LOOP:
|
|
||||||
$ if f$type(module'mod_sym_num') .nes. ""
|
|
||||||
$ then
|
|
||||||
$ mod_in = 0
|
|
||||||
$ VMOD_SYM_IN:
|
|
||||||
$ shared_proc = f$element(mod_in, "#", module'mod_sym_num')
|
|
||||||
$ if shared_proc .nes. "#"
|
|
||||||
$ then
|
|
||||||
$ write libopt f$fao("UNIVERSAL=!AS",-
|
|
||||||
f$edit(shared_proc,"upcase"))
|
|
||||||
$ mod_in = mod_in + 1
|
|
||||||
$ goto vmod_sym_in
|
|
||||||
$ endif
|
|
||||||
$ mod_sym_num = mod_sym_num + 1
|
|
||||||
$ goto vmod_sym_loop
|
|
||||||
$ endif
|
|
||||||
$VMAP_LOOP:
|
|
||||||
$ read/end=vmap_end map line
|
|
||||||
$ if (f$locate("{",line).lt. f$length(line)) .or. -
|
|
||||||
(f$locate("global:", line) .lt. f$length(line))
|
|
||||||
$ then
|
|
||||||
$ proc = true
|
|
||||||
$ goto vmap_loop
|
|
||||||
$ endif
|
|
||||||
$ if f$locate("}",line).lt. f$length(line) then proc = false
|
|
||||||
$ if f$locate("local:", line) .lt. f$length(line) then proc = false
|
|
||||||
$ if proc
|
|
||||||
$ then
|
|
||||||
$ shared_proc = f$edit(line,"collapse")
|
|
||||||
$ chop_semi = f$locate(";", shared_proc)
|
|
||||||
$ if chop_semi .lt. f$length(shared_proc) then -
|
|
||||||
shared_proc = f$extract(0, chop_semi, shared_proc)
|
|
||||||
$ write libopt f$fao("UNIVERSAL=!AS",-
|
|
||||||
f$edit(shared_proc,"upcase"))
|
|
||||||
$ endif
|
|
||||||
$ goto vmap_loop
|
|
||||||
$VMAP_END:
|
|
||||||
$ else
|
|
||||||
$ write sys$output "Unknown Architecture (Not VAX, AXP, or IA64)"
|
|
||||||
$ write sys$output "No options file created"
|
|
||||||
$ endif
|
|
||||||
$ endif
|
|
||||||
$ EXIT_M2S:
|
|
||||||
$ close/nolog map
|
|
||||||
$ close/nolog libopt
|
|
||||||
$ endsubroutine
|
|
|
@ -1,116 +0,0 @@
|
||||||
<?xml version="1.0" ?>
|
|
||||||
<package name="zlib" version="1.2.11.1">
|
|
||||||
<library name="zlib" dlversion="1.2.11.1" dlname="z">
|
|
||||||
<property name="description"> zip compression library </property>
|
|
||||||
<property name="include-target-dir" value="$(@PACKAGE/install-includedir)" />
|
|
||||||
|
|
||||||
<!-- fixme: not implemented yet -->
|
|
||||||
<property name="compiler/c/inline" value="yes" />
|
|
||||||
|
|
||||||
<include-file name="zlib.h" scope="public" mode="644" />
|
|
||||||
<include-file name="zconf.h" scope="public" mode="644" />
|
|
||||||
|
|
||||||
<source name="adler32.c">
|
|
||||||
<depend name="zlib.h" />
|
|
||||||
<depend name="zconf.h" />
|
|
||||||
</source>
|
|
||||||
<source name="compress.c">
|
|
||||||
<depend name="zlib.h" />
|
|
||||||
<depend name="zconf.h" />
|
|
||||||
</source>
|
|
||||||
<source name="crc32.c">
|
|
||||||
<depend name="zlib.h" />
|
|
||||||
<depend name="zconf.h" />
|
|
||||||
<depend name="crc32.h" />
|
|
||||||
</source>
|
|
||||||
<source name="gzclose.c">
|
|
||||||
<depend name="zlib.h" />
|
|
||||||
<depend name="zconf.h" />
|
|
||||||
<depend name="gzguts.h" />
|
|
||||||
</source>
|
|
||||||
<source name="gzlib.c">
|
|
||||||
<depend name="zlib.h" />
|
|
||||||
<depend name="zconf.h" />
|
|
||||||
<depend name="gzguts.h" />
|
|
||||||
</source>
|
|
||||||
<source name="gzread.c">
|
|
||||||
<depend name="zlib.h" />
|
|
||||||
<depend name="zconf.h" />
|
|
||||||
<depend name="gzguts.h" />
|
|
||||||
</source>
|
|
||||||
<source name="gzwrite.c">
|
|
||||||
<depend name="zlib.h" />
|
|
||||||
<depend name="zconf.h" />
|
|
||||||
<depend name="gzguts.h" />
|
|
||||||
</source>
|
|
||||||
<source name="uncompr.c">
|
|
||||||
<depend name="zlib.h" />
|
|
||||||
<depend name="zconf.h" />
|
|
||||||
</source>
|
|
||||||
<source name="deflate.c">
|
|
||||||
<depend name="zlib.h" />
|
|
||||||
<depend name="zconf.h" />
|
|
||||||
<depend name="zutil.h" />
|
|
||||||
<depend name="deflate.h" />
|
|
||||||
</source>
|
|
||||||
<source name="trees.c">
|
|
||||||
<depend name="zlib.h" />
|
|
||||||
<depend name="zconf.h" />
|
|
||||||
<depend name="zutil.h" />
|
|
||||||
<depend name="deflate.h" />
|
|
||||||
<depend name="trees.h" />
|
|
||||||
</source>
|
|
||||||
<source name="zutil.c">
|
|
||||||
<depend name="zlib.h" />
|
|
||||||
<depend name="zconf.h" />
|
|
||||||
<depend name="zutil.h" />
|
|
||||||
</source>
|
|
||||||
<source name="inflate.c">
|
|
||||||
<depend name="zlib.h" />
|
|
||||||
<depend name="zconf.h" />
|
|
||||||
<depend name="zutil.h" />
|
|
||||||
<depend name="inftrees.h" />
|
|
||||||
<depend name="inflate.h" />
|
|
||||||
<depend name="inffast.h" />
|
|
||||||
</source>
|
|
||||||
<source name="infback.c">
|
|
||||||
<depend name="zlib.h" />
|
|
||||||
<depend name="zconf.h" />
|
|
||||||
<depend name="zutil.h" />
|
|
||||||
<depend name="inftrees.h" />
|
|
||||||
<depend name="inflate.h" />
|
|
||||||
<depend name="inffast.h" />
|
|
||||||
</source>
|
|
||||||
<source name="inftrees.c">
|
|
||||||
<depend name="zlib.h" />
|
|
||||||
<depend name="zconf.h" />
|
|
||||||
<depend name="zutil.h" />
|
|
||||||
<depend name="inftrees.h" />
|
|
||||||
</source>
|
|
||||||
<source name="inffast.c">
|
|
||||||
<depend name="zlib.h" />
|
|
||||||
<depend name="zconf.h" />
|
|
||||||
<depend name="zutil.h" />
|
|
||||||
<depend name="inftrees.h" />
|
|
||||||
<depend name="inflate.h" />
|
|
||||||
<depend name="inffast.h" />
|
|
||||||
</source>
|
|
||||||
</library>
|
|
||||||
</package>
|
|
||||||
|
|
||||||
<!--
|
|
||||||
CFLAGS=-O
|
|
||||||
#CFLAGS=-O -DMAX_WBITS=14 -DMAX_MEM_LEVEL=7
|
|
||||||
#CFLAGS=-g -DZLIB_DEBUG
|
|
||||||
#CFLAGS=-O3 -Wall -Wwrite-strings -Wpointer-arith -Wconversion \
|
|
||||||
# -Wstrict-prototypes -Wmissing-prototypes
|
|
||||||
|
|
||||||
# OBJA =
|
|
||||||
# to use the asm code: make OBJA=match.o
|
|
||||||
#
|
|
||||||
match.o: match.S
|
|
||||||
$(CPP) match.S > _match.s
|
|
||||||
$(CC) -c _match.s
|
|
||||||
mv _match.o match.o
|
|
||||||
rm -f _match.s
|
|
||||||
-->
|
|
|
@ -1,149 +0,0 @@
|
||||||
.TH ZLIB 3 "xx Jan 2017"
|
|
||||||
.SH NAME
|
|
||||||
zlib \- compression/decompression library
|
|
||||||
.SH SYNOPSIS
|
|
||||||
[see
|
|
||||||
.I zlib.h
|
|
||||||
for full description]
|
|
||||||
.SH DESCRIPTION
|
|
||||||
The
|
|
||||||
.I zlib
|
|
||||||
library is a general purpose data compression library.
|
|
||||||
The code is thread safe, assuming that the standard library functions
|
|
||||||
used are thread safe, such as memory allocation routines.
|
|
||||||
It provides in-memory compression and decompression functions,
|
|
||||||
including integrity checks of the uncompressed data.
|
|
||||||
This version of the library supports only one compression method (deflation)
|
|
||||||
but other algorithms may be added later
|
|
||||||
with the same stream interface.
|
|
||||||
.LP
|
|
||||||
Compression can be done in a single step if the buffers are large enough
|
|
||||||
or can be done by repeated calls of the compression function.
|
|
||||||
In the latter case,
|
|
||||||
the application must provide more input and/or consume the output
|
|
||||||
(providing more output space) before each call.
|
|
||||||
.LP
|
|
||||||
The library also supports reading and writing files in
|
|
||||||
.IR gzip (1)
|
|
||||||
(.gz) format
|
|
||||||
with an interface similar to that of stdio.
|
|
||||||
.LP
|
|
||||||
The library does not install any signal handler.
|
|
||||||
The decoder checks the consistency of the compressed data,
|
|
||||||
so the library should never crash even in the case of corrupted input.
|
|
||||||
.LP
|
|
||||||
All functions of the compression library are documented in the file
|
|
||||||
.IR zlib.h .
|
|
||||||
The distribution source includes examples of use of the library
|
|
||||||
in the files
|
|
||||||
.I test/example.c
|
|
||||||
and
|
|
||||||
.IR test/minigzip.c,
|
|
||||||
as well as other examples in the
|
|
||||||
.IR examples/
|
|
||||||
directory.
|
|
||||||
.LP
|
|
||||||
Changes to this version are documented in the file
|
|
||||||
.I ChangeLog
|
|
||||||
that accompanies the source.
|
|
||||||
.LP
|
|
||||||
.I zlib
|
|
||||||
is built in to many languages and operating systems, including but not limited to
|
|
||||||
Java, Python, .NET, PHP, Perl, Ruby, Swift, and Go.
|
|
||||||
.LP
|
|
||||||
An experimental package to read and write files in the .zip format,
|
|
||||||
written on top of
|
|
||||||
.I zlib
|
|
||||||
by Gilles Vollant (info@winimage.com),
|
|
||||||
is available at:
|
|
||||||
.IP
|
|
||||||
http://www.winimage.com/zLibDll/minizip.html
|
|
||||||
and also in the
|
|
||||||
.I contrib/minizip
|
|
||||||
directory of the main
|
|
||||||
.I zlib
|
|
||||||
source distribution.
|
|
||||||
.SH "SEE ALSO"
|
|
||||||
The
|
|
||||||
.I zlib
|
|
||||||
web site can be found at:
|
|
||||||
.IP
|
|
||||||
http://zlib.net/
|
|
||||||
.LP
|
|
||||||
The data format used by the
|
|
||||||
.I zlib
|
|
||||||
library is described by RFC
|
|
||||||
(Request for Comments) 1950 to 1952 in the files:
|
|
||||||
.IP
|
|
||||||
http://tools.ietf.org/html/rfc1950 (for the zlib header and trailer format)
|
|
||||||
.br
|
|
||||||
http://tools.ietf.org/html/rfc1951 (for the deflate compressed data format)
|
|
||||||
.br
|
|
||||||
http://tools.ietf.org/html/rfc1952 (for the gzip header and trailer format)
|
|
||||||
.LP
|
|
||||||
Mark Nelson wrote an article about
|
|
||||||
.I zlib
|
|
||||||
for the Jan. 1997 issue of Dr. Dobb's Journal;
|
|
||||||
a copy of the article is available at:
|
|
||||||
.IP
|
|
||||||
http://marknelson.us/1997/01/01/zlib-engine/
|
|
||||||
.SH "REPORTING PROBLEMS"
|
|
||||||
Before reporting a problem,
|
|
||||||
please check the
|
|
||||||
.I zlib
|
|
||||||
web site to verify that you have the latest version of
|
|
||||||
.IR zlib ;
|
|
||||||
otherwise,
|
|
||||||
obtain the latest version and see if the problem still exists.
|
|
||||||
Please read the
|
|
||||||
.I zlib
|
|
||||||
FAQ at:
|
|
||||||
.IP
|
|
||||||
http://zlib.net/zlib_faq.html
|
|
||||||
.LP
|
|
||||||
before asking for help.
|
|
||||||
Send questions and/or comments to zlib@gzip.org,
|
|
||||||
or (for the Windows DLL version) to Gilles Vollant (info@winimage.com).
|
|
||||||
.SH AUTHORS AND LICENSE
|
|
||||||
Version 1.2.11.1
|
|
||||||
.LP
|
|
||||||
Copyright (C) 1995-2017 Jean-loup Gailly and Mark Adler
|
|
||||||
.LP
|
|
||||||
This software is provided 'as-is', without any express or implied
|
|
||||||
warranty. In no event will the authors be held liable for any damages
|
|
||||||
arising from the use of this software.
|
|
||||||
.LP
|
|
||||||
Permission is granted to anyone to use this software for any purpose,
|
|
||||||
including commercial applications, and to alter it and redistribute it
|
|
||||||
freely, subject to the following restrictions:
|
|
||||||
.LP
|
|
||||||
.nr step 1 1
|
|
||||||
.IP \n[step]. 3
|
|
||||||
The origin of this software must not be misrepresented; you must not
|
|
||||||
claim that you wrote the original software. If you use this software
|
|
||||||
in a product, an acknowledgment in the product documentation would be
|
|
||||||
appreciated but is not required.
|
|
||||||
.IP \n+[step].
|
|
||||||
Altered source versions must be plainly marked as such, and must not be
|
|
||||||
misrepresented as being the original software.
|
|
||||||
.IP \n+[step].
|
|
||||||
This notice may not be removed or altered from any source distribution.
|
|
||||||
.LP
|
|
||||||
Jean-loup Gailly Mark Adler
|
|
||||||
.br
|
|
||||||
jloup@gzip.org madler@alumni.caltech.edu
|
|
||||||
.LP
|
|
||||||
The deflate format used by
|
|
||||||
.I zlib
|
|
||||||
was defined by Phil Katz.
|
|
||||||
The deflate and
|
|
||||||
.I zlib
|
|
||||||
specifications were written by L. Peter Deutsch.
|
|
||||||
Thanks to all the people who reported problems and suggested various
|
|
||||||
improvements in
|
|
||||||
.IR zlib ;
|
|
||||||
who are too numerous to cite here.
|
|
||||||
.LP
|
|
||||||
UNIX manual page by R. P. C. Rodgers,
|
|
||||||
U.S. National Library of Medicine (rodgers@nlm.nih.gov).
|
|
||||||
.\" end of man page
|
|
Binary file not shown.
|
@ -1,94 +0,0 @@
|
||||||
ZLIB_1.2.0 {
|
|
||||||
global:
|
|
||||||
compressBound;
|
|
||||||
deflateBound;
|
|
||||||
inflateBack;
|
|
||||||
inflateBackEnd;
|
|
||||||
inflateBackInit_;
|
|
||||||
inflateCopy;
|
|
||||||
local:
|
|
||||||
deflate_copyright;
|
|
||||||
inflate_copyright;
|
|
||||||
inflate_fast;
|
|
||||||
inflate_table;
|
|
||||||
zcalloc;
|
|
||||||
zcfree;
|
|
||||||
z_errmsg;
|
|
||||||
gz_error;
|
|
||||||
gz_intmax;
|
|
||||||
_*;
|
|
||||||
};
|
|
||||||
|
|
||||||
ZLIB_1.2.0.2 {
|
|
||||||
gzclearerr;
|
|
||||||
gzungetc;
|
|
||||||
zlibCompileFlags;
|
|
||||||
} ZLIB_1.2.0;
|
|
||||||
|
|
||||||
ZLIB_1.2.0.8 {
|
|
||||||
deflatePrime;
|
|
||||||
} ZLIB_1.2.0.2;
|
|
||||||
|
|
||||||
ZLIB_1.2.2 {
|
|
||||||
adler32_combine;
|
|
||||||
crc32_combine;
|
|
||||||
deflateSetHeader;
|
|
||||||
inflateGetHeader;
|
|
||||||
} ZLIB_1.2.0.8;
|
|
||||||
|
|
||||||
ZLIB_1.2.2.3 {
|
|
||||||
deflateTune;
|
|
||||||
gzdirect;
|
|
||||||
} ZLIB_1.2.2;
|
|
||||||
|
|
||||||
ZLIB_1.2.2.4 {
|
|
||||||
inflatePrime;
|
|
||||||
} ZLIB_1.2.2.3;
|
|
||||||
|
|
||||||
ZLIB_1.2.3.3 {
|
|
||||||
adler32_combine64;
|
|
||||||
crc32_combine64;
|
|
||||||
gzopen64;
|
|
||||||
gzseek64;
|
|
||||||
gztell64;
|
|
||||||
inflateUndermine;
|
|
||||||
} ZLIB_1.2.2.4;
|
|
||||||
|
|
||||||
ZLIB_1.2.3.4 {
|
|
||||||
inflateReset2;
|
|
||||||
inflateMark;
|
|
||||||
} ZLIB_1.2.3.3;
|
|
||||||
|
|
||||||
ZLIB_1.2.3.5 {
|
|
||||||
gzbuffer;
|
|
||||||
gzoffset;
|
|
||||||
gzoffset64;
|
|
||||||
gzclose_r;
|
|
||||||
gzclose_w;
|
|
||||||
} ZLIB_1.2.3.4;
|
|
||||||
|
|
||||||
ZLIB_1.2.5.1 {
|
|
||||||
deflatePending;
|
|
||||||
} ZLIB_1.2.3.5;
|
|
||||||
|
|
||||||
ZLIB_1.2.5.2 {
|
|
||||||
deflateResetKeep;
|
|
||||||
gzgetc_;
|
|
||||||
inflateResetKeep;
|
|
||||||
} ZLIB_1.2.5.1;
|
|
||||||
|
|
||||||
ZLIB_1.2.7.1 {
|
|
||||||
inflateGetDictionary;
|
|
||||||
gzvprintf;
|
|
||||||
} ZLIB_1.2.5.2;
|
|
||||||
|
|
||||||
ZLIB_1.2.9 {
|
|
||||||
inflateCodesUsed;
|
|
||||||
inflateValidate;
|
|
||||||
uncompress2;
|
|
||||||
gzfread;
|
|
||||||
gzfwrite;
|
|
||||||
deflateGetDictionary;
|
|
||||||
adler32_z;
|
|
||||||
crc32_z;
|
|
||||||
} ZLIB_1.2.7.1;
|
|
|
@ -1,13 +0,0 @@
|
||||||
prefix=@prefix@
|
|
||||||
exec_prefix=@exec_prefix@
|
|
||||||
libdir=@libdir@
|
|
||||||
sharedlibdir=@sharedlibdir@
|
|
||||||
includedir=@includedir@
|
|
||||||
|
|
||||||
Name: zlib
|
|
||||||
Description: zlib compression library
|
|
||||||
Version: @VERSION@
|
|
||||||
|
|
||||||
Requires:
|
|
||||||
Libs: -L${libdir} -L${sharedlibdir} -lz
|
|
||||||
Cflags: -I${includedir}
|
|
|
@ -1,152 +0,0 @@
|
||||||
#!/usr/bin/perl
|
|
||||||
|
|
||||||
# Transform K&R C function definitions into ANSI equivalent.
|
|
||||||
#
|
|
||||||
# Author: Paul Marquess
|
|
||||||
# Version: 1.0
|
|
||||||
# Date: 3 October 2006
|
|
||||||
|
|
||||||
# TODO
|
|
||||||
#
|
|
||||||
# Asumes no function pointer parameters. unless they are typedefed.
|
|
||||||
# Assumes no literal strings that look like function definitions
|
|
||||||
# Assumes functions start at the beginning of a line
|
|
||||||
|
|
||||||
use strict;
|
|
||||||
use warnings;
|
|
||||||
|
|
||||||
local $/;
|
|
||||||
$_ = <>;
|
|
||||||
|
|
||||||
my $sp = qr{ \s* (?: /\* .*? \*/ )? \s* }x; # assume no nested comments
|
|
||||||
|
|
||||||
my $d1 = qr{ $sp (?: [\w\*\s]+ $sp)* $sp \w+ $sp [\[\]\s]* $sp }x ;
|
|
||||||
my $decl = qr{ $sp (?: \w+ $sp )+ $d1 }xo ;
|
|
||||||
my $dList = qr{ $sp $decl (?: $sp , $d1 )* $sp ; $sp }xo ;
|
|
||||||
|
|
||||||
|
|
||||||
while (s/^
|
|
||||||
( # Start $1
|
|
||||||
( # Start $2
|
|
||||||
.*? # Minimal eat content
|
|
||||||
( ^ \w [\w\s\*]+ ) # $3 -- function name
|
|
||||||
\s* # optional whitespace
|
|
||||||
) # $2 - Matched up to before parameter list
|
|
||||||
|
|
||||||
\( \s* # Literal "(" + optional whitespace
|
|
||||||
( [^\)]+ ) # $4 - one or more anythings except ")"
|
|
||||||
\s* \) # optional whitespace surrounding a Literal ")"
|
|
||||||
|
|
||||||
( (?: $dList )+ ) # $5
|
|
||||||
|
|
||||||
$sp ^ { # literal "{" at start of line
|
|
||||||
) # Remember to $1
|
|
||||||
//xsom
|
|
||||||
)
|
|
||||||
{
|
|
||||||
my $all = $1 ;
|
|
||||||
my $prefix = $2;
|
|
||||||
my $param_list = $4 ;
|
|
||||||
my $params = $5;
|
|
||||||
|
|
||||||
StripComments($params);
|
|
||||||
StripComments($param_list);
|
|
||||||
$param_list =~ s/^\s+//;
|
|
||||||
$param_list =~ s/\s+$//;
|
|
||||||
|
|
||||||
my $i = 0 ;
|
|
||||||
my %pList = map { $_ => $i++ }
|
|
||||||
split /\s*,\s*/, $param_list;
|
|
||||||
my $pMatch = '(\b' . join('|', keys %pList) . '\b)\W*$' ;
|
|
||||||
|
|
||||||
my @params = split /\s*;\s*/, $params;
|
|
||||||
my @outParams = ();
|
|
||||||
foreach my $p (@params)
|
|
||||||
{
|
|
||||||
if ($p =~ /,/)
|
|
||||||
{
|
|
||||||
my @bits = split /\s*,\s*/, $p;
|
|
||||||
my $first = shift @bits;
|
|
||||||
$first =~ s/^\s*//;
|
|
||||||
push @outParams, $first;
|
|
||||||
$first =~ /^(\w+\s*)/;
|
|
||||||
my $type = $1 ;
|
|
||||||
push @outParams, map { $type . $_ } @bits;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
$p =~ s/^\s+//;
|
|
||||||
push @outParams, $p;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
my %tmp = map { /$pMatch/; $_ => $pList{$1} }
|
|
||||||
@outParams ;
|
|
||||||
|
|
||||||
@outParams = map { " $_" }
|
|
||||||
sort { $tmp{$a} <=> $tmp{$b} }
|
|
||||||
@outParams ;
|
|
||||||
|
|
||||||
print $prefix ;
|
|
||||||
print "(\n" . join(",\n", @outParams) . ")\n";
|
|
||||||
print "{" ;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
# Output any trailing code.
|
|
||||||
print ;
|
|
||||||
exit 0;
|
|
||||||
|
|
||||||
|
|
||||||
sub StripComments
|
|
||||||
{
|
|
||||||
|
|
||||||
no warnings;
|
|
||||||
|
|
||||||
# Strip C & C++ coments
|
|
||||||
# From the perlfaq
|
|
||||||
$_[0] =~
|
|
||||||
|
|
||||||
s{
|
|
||||||
/\* ## Start of /* ... */ comment
|
|
||||||
[^*]*\*+ ## Non-* followed by 1-or-more *'s
|
|
||||||
(
|
|
||||||
[^/*][^*]*\*+
|
|
||||||
)* ## 0-or-more things which don't start with /
|
|
||||||
## but do end with '*'
|
|
||||||
/ ## End of /* ... */ comment
|
|
||||||
|
|
||||||
| ## OR C++ Comment
|
|
||||||
// ## Start of C++ comment //
|
|
||||||
[^\n]* ## followed by 0-or-more non end of line characters
|
|
||||||
|
|
||||||
| ## OR various things which aren't comments:
|
|
||||||
|
|
||||||
(
|
|
||||||
" ## Start of " ... " string
|
|
||||||
(
|
|
||||||
\\. ## Escaped char
|
|
||||||
| ## OR
|
|
||||||
[^"\\] ## Non "\
|
|
||||||
)*
|
|
||||||
" ## End of " ... " string
|
|
||||||
|
|
||||||
| ## OR
|
|
||||||
|
|
||||||
' ## Start of ' ... ' string
|
|
||||||
(
|
|
||||||
\\. ## Escaped char
|
|
||||||
| ## OR
|
|
||||||
[^'\\] ## Non '\
|
|
||||||
)*
|
|
||||||
' ## End of ' ... ' string
|
|
||||||
|
|
||||||
| ## OR
|
|
||||||
|
|
||||||
. ## Anything other char
|
|
||||||
[^/"'\\]* ## Chars which doesn't start a comment, string or escape
|
|
||||||
)
|
|
||||||
}{$2}gxs;
|
|
||||||
|
|
||||||
}
|
|
Loading…
Reference in New Issue