Subversion Repositories SmartDukaan

Rev

Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
30 ashish 1
dnl @synopsis AX_LIB_ZLIB([MINIMUM-VERSION])
2
dnl
3
dnl Test for the libz library of a particular version (or newer).
4
dnl
5
dnl If no path to the installed zlib is given, the macro will first try
6
dnl using no -I or -L flags, then searches under /usr, /usr/local, /opt,
7
dnl and /opt/zlib.
8
dnl If these all fail, it will try the $ZLIB_ROOT environment variable.
9
dnl
10
dnl This macro calls:
11
dnl   AC_SUBST(ZLIB_CPPFLAGS)
12
dnl   AC_SUBST(ZLIB_LDFLAGS)
13
dnl   AC_SUBST(ZLIB_LIBS)
14
dnl
15
dnl And (if zlib is found):
16
dnl   AC_DEFINE(HAVE_ZLIB)
17
dnl
18
dnl It also leaves the shell variables "success" and "ax_have_zlib"
19
dnl set to "yes" or "no".
20
dnl
21
dnl NOTE: This macro does not currently work for cross-compiling,
22
dnl       but it can be easily modified to allow it.  (grep "cross").
23
dnl
24
dnl @category InstalledPackages
25
dnl @category C
26
dnl @version 2007-09-12
27
dnl @license AllPermissive
28
dnl
29
dnl Copyright (C) 2009 David Reiss
30
dnl Copying and distribution of this file, with or without modification,
31
dnl are permitted in any medium without royalty provided the copyright
32
dnl notice and this notice are preserved.
33
 
34
dnl Input: ax_zlib_path, WANT_ZLIB_VERSION
35
dnl Output: success=yes/no
36
AC_DEFUN([AX_LIB_ZLIB_DO_CHECK],
37
         [
38
          # Save our flags.
39
          CPPFLAGS_SAVED="$CPPFLAGS"
40
          LDFLAGS_SAVED="$LDFLAGS"
41
          LIBS_SAVED="$LIBS"
42
          LD_LIBRARY_PATH_SAVED="$LD_LIBRARY_PATH"
43
 
44
          # Set our flags if we are checking a specific directory.
45
          if test -n "$ax_zlib_path" ; then
46
            ZLIB_CPPFLAGS="-I$ax_zlib_path/include"
47
            ZLIB_LDFLAGS="-L$ax_zlib_path/lib"
48
            LD_LIBRARY_PATH="$ax_zlib_path/lib:$LD_LIBRARY_PATH"
49
          else
50
            ZLIB_CPPFLAGS=""
51
            ZLIB_LDFLAGS=""
52
          fi
53
 
54
          # Required flag for zlib.
55
          ZLIB_LIBS="-lz"
56
 
57
          # Prepare the environment for compilation.
58
          CPPFLAGS="$CPPFLAGS $ZLIB_CPPFLAGS"
59
          LDFLAGS="$LDFLAGS $ZLIB_LDFLAGS"
60
          LIBS="$LIBS $ZLIB_LIBS"
61
          export CPPFLAGS
62
          export LDFLAGS
63
          export LIBS
64
          export LD_LIBRARY_PATH
65
 
66
          success=no
67
 
68
          # Compile, link, and run the program.  This checks:
69
          # - zlib.h is available for including.
70
          # - zlibVersion() is available for linking.
71
          # - ZLIB_VERNUM is greater than or equal to the desired version.
72
          # - ZLIB_VERSION (defined in zlib.h) matches zlibVersion()
73
          #   (defined in the library).
74
          AC_LANG_PUSH([C])
75
          dnl This can be changed to AC_LINK_IFELSE if you are cross-compiling.
76
          AC_RUN_IFELSE([AC_LANG_PROGRAM([[
77
          #include <zlib.h>
78
          #if ZLIB_VERNUM >= 0x$WANT_ZLIB_VERSION
79
          #else
80
          # error zlib is too old
81
          #endif
82
          ]], [[
83
          const char* lib_version = zlibVersion();
84
          const char* hdr_version = ZLIB_VERSION;
85
          for (;;) {
86
            if (*lib_version != *hdr_version) {
87
              /* If this happens, your zlib header doesn't match your zlib */
88
              /* library.  That is really bad. */
89
              return 1;
90
            }
91
            if (*lib_version == '\0') {
92
              break;
93
            }
94
            lib_version++;
95
            hdr_version++;
96
          }
97
          return 0;
98
          ]])], [
99
          success=yes
100
          ])
101
          AC_LANG_POP([C])
102
 
103
          # Restore flags.
104
          CPPFLAGS="$CPPFLAGS_SAVED"
105
          LDFLAGS="$LDFLAGS_SAVED"
106
          LIBS="$LIBS_SAVED"
107
          LD_LIBRARY_PATH="$LD_LIBRARY_PATH_SAVED"
108
         ])
109
 
110
 
111
AC_DEFUN([AX_LIB_ZLIB],
112
         [
113
 
114
          dnl Allow search path to be overridden on the command line.
115
          AC_ARG_WITH([zlib],
116
                      AS_HELP_STRING([--with-zlib@<:@=DIR@:>@], [use zlib (default is yes) - it is possible to specify an alternate root directory for zlib]),
117
                      [
118
                       if test "x$withval" = "xno"; then
119
                         want_zlib="no"
120
                       elif test "x$withval" = "xyes"; then
121
                         want_zlib="yes"
122
                         ax_zlib_path=""
123
                       else
124
                         want_zlib="yes"
125
                         ax_zlib_path="$withval"
126
                       fi
127
                       ],
128
                       [want_zlib="yes" ; ax_zlib_path="" ])
129
 
130
 
131
          if test "$want_zlib" = "yes"; then
132
            # Parse out the version.
133
            zlib_version_req=ifelse([$1], ,1.2.3,$1)
134
            zlib_version_req_major=`expr $zlib_version_req : '\([[0-9]]*\)'`
135
            zlib_version_req_minor=`expr $zlib_version_req : '[[0-9]]*\.\([[0-9]]*\)'`
136
            zlib_version_req_patch=`expr $zlib_version_req : '[[0-9]]*\.[[0-9]]*\.\([[0-9]]*\)'`
137
            if test -z "$zlib_version_req_patch" ; then
138
              zlib_version_req_patch="0"
139
            fi
140
            WANT_ZLIB_VERSION=`expr $zlib_version_req_major \* 1000 \+  $zlib_version_req_minor \* 100 \+ $zlib_version_req_patch \* 10`
141
 
142
            AC_MSG_CHECKING(for zlib >= $zlib_version_req)
143
 
144
            # Run tests.
145
            if test -n "$ax_zlib_path"; then
146
              AX_LIB_ZLIB_DO_CHECK
147
            else
148
              for ax_zlib_path in "" /usr /usr/local /opt /opt/zlib "$ZLIB_ROOT" ; do
149
                AX_LIB_ZLIB_DO_CHECK
150
                if test "$success" = "yes"; then
151
                  break;
152
                fi
153
              done
154
            fi
155
 
156
            if test "$success" != "yes" ; then
157
              AC_MSG_RESULT(no)
158
              ZLIB_CPPFLAGS=""
159
              ZLIB_LDFLAGS=""
160
              ZLIB_LIBS=""
161
            else
162
              AC_MSG_RESULT(yes)
163
              AC_DEFINE(HAVE_ZLIB,,[define if zlib is available])
164
            fi
165
 
166
            ax_have_zlib="$success"
167
 
168
            AC_SUBST(ZLIB_CPPFLAGS)
169
            AC_SUBST(ZLIB_LDFLAGS)
170
            AC_SUBST(ZLIB_LIBS)
171
          fi
172
 
173
          ])