diff options
author | Christian Grothoff <christian@grothoff.org> | 2018-11-21 00:47:06 +0100 |
---|---|---|
committer | Christian Grothoff <christian@grothoff.org> | 2018-11-21 00:47:06 +0100 |
commit | 8a039e9e8142bd95779fd8beb1b316be1a46668f (patch) | |
tree | 6c190c9b3f53b425de3df9a79b33c878d20801aa /m4/ax_lib_postgresql.m4 | |
parent | c737a34c0f9fd5011048331ed5851b0524dec740 (diff) | |
download | gnunet-8a039e9e8142bd95779fd8beb1b316be1a46668f.tar.gz gnunet-8a039e9e8142bd95779fd8beb1b316be1a46668f.zip |
fixing #5440: updating postgres test m4 macro
Diffstat (limited to 'm4/ax_lib_postgresql.m4')
-rw-r--r-- | m4/ax_lib_postgresql.m4 | 272 |
1 files changed, 182 insertions, 90 deletions
diff --git a/m4/ax_lib_postgresql.m4 b/m4/ax_lib_postgresql.m4 index 11b6991f0..cc8e75086 100644 --- a/m4/ax_lib_postgresql.m4 +++ b/m4/ax_lib_postgresql.m4 | |||
@@ -1,10 +1,10 @@ | |||
1 | # =========================================================================== | 1 | # =========================================================================== |
2 | # http://www.gnu.org/software/autoconf-archive/ax_lib_postgresql.html | 2 | # https://www.gnu.org/software/autoconf-archive/ax_lib_postgresql.html |
3 | # =========================================================================== | 3 | # =========================================================================== |
4 | # | 4 | # |
5 | # SYNOPSIS | 5 | # SYNOPSIS |
6 | # | 6 | # |
7 | # AX_LIB_POSTGRESQL([MINIMUM-VERSION]) | 7 | # AX_LIB_POSTGRESQL([MINIMUM-VERSION],[ACTION-IF-FOUND],[ACTION-IF-NOT-FOUND]) |
8 | # | 8 | # |
9 | # DESCRIPTION | 9 | # DESCRIPTION |
10 | # | 10 | # |
@@ -23,133 +23,225 @@ | |||
23 | # should be in the PATH) | 23 | # should be in the PATH) |
24 | # | 24 | # |
25 | # path - complete path to pg_config utility, use this option if pg_config | 25 | # path - complete path to pg_config utility, use this option if pg_config |
26 | # can't be found in the PATH | 26 | # can't be found in the PATH (You could set also PG_CONFIG variable) |
27 | # | 27 | # |
28 | # This macro calls: | 28 | # This macro calls: |
29 | # | 29 | # |
30 | # AC_SUBST(POSTGRESQL_CPPFLAGS) | 30 | # AC_SUBST(POSTGRESQL_CPPFLAGS) |
31 | # AC_SUBST(POSTGRESQL_LDFLAGS) | 31 | # AC_SUBST(POSTGRESQL_LDFLAGS) |
32 | # AC_SUBST(POSTGRESQL_LIBS) | ||
32 | # AC_SUBST(POSTGRESQL_VERSION) | 33 | # AC_SUBST(POSTGRESQL_VERSION) |
33 | # | 34 | # |
34 | # And sets: | 35 | # And sets: |
35 | # | 36 | # |
36 | # HAVE_POSTGRESQL | 37 | # HAVE_POSTGRESQL |
37 | # | 38 | # |
39 | # It execute if found ACTION-IF-FOUND (empty by default) and | ||
40 | # ACTION-IF-NOT-FOUND (AC_MSG_FAILURE by default) if not found. | ||
41 | # | ||
38 | # LICENSE | 42 | # LICENSE |
39 | # | 43 | # |
40 | # Copyright (c) 2008 Mateusz Loskot <mateusz@loskot.net> | 44 | # Copyright (c) 2008 Mateusz Loskot <mateusz@loskot.net> |
45 | # Copyright (c) 2014 Sree Harsha Totakura <sreeharsha@totakura.in> | ||
46 | # Copyright (c) 2018 Bastien Roucaries <rouca@debian.org> | ||
41 | # | 47 | # |
42 | # Copying and distribution of this file, with or without modification, are | 48 | # Copying and distribution of this file, with or without modification, are |
43 | # permitted in any medium without royalty provided the copyright notice | 49 | # permitted in any medium without royalty provided the copyright notice |
44 | # and this notice are preserved. This file is offered as-is, without any | 50 | # and this notice are preserved. This file is offered as-is, without any |
45 | # warranty. | 51 | # warranty. |
46 | 52 | ||
47 | #serial 9 | 53 | #serial 22 |
54 | |||
55 | AC_DEFUN([_AX_LIB_POSTGRESQL_OLD],[ | ||
56 | found_postgresql="no" | ||
57 | _AX_LIB_POSTGRESQL_OLD_fail="no" | ||
58 | while true; do | ||
59 | AC_CACHE_CHECK([for the pg_config program], [ac_cv_path_PG_CONFIG], | ||
60 | [AC_PATH_PROGS_FEATURE_CHECK([PG_CONFIG], [pg_config], | ||
61 | [[ac_cv_path_PG_CONFIG="";$ac_path_PG_CONFIG --includedir > /dev/null \ | ||
62 | && ac_cv_path_PG_CONFIG=$ac_path_PG_CONFIG ac_path_PG_CONFIG_found=:]], | ||
63 | [ac_cv_path_PG_CONFIG=""])]) | ||
64 | PG_CONFIG=$ac_cv_path_PG_CONFIG | ||
65 | AS_IF([test "X$PG_CONFIG" = "X"],[break]) | ||
66 | |||
67 | AC_CACHE_CHECK([for the PostgreSQL libraries CPPFLAGS],[ac_cv_POSTGRESQL_CPPFLAGS], | ||
68 | [ac_cv_POSTGRESQL_CPPFLAGS="-I`$PG_CONFIG --includedir`" || _AX_LIB_POSTGRESQL_OLD_fail=yes]) | ||
69 | AS_IF([test "X$_AX_LIB_POSTGRESQL_OLD_fail" = "Xyes"],[break]) | ||
70 | POSTGRESQL_CPPFLAGS="$ac_cv_POSTGRESQL_CPPFLAGS" | ||
71 | |||
72 | AC_CACHE_CHECK([for the PostgreSQL libraries LDFLAGS],[ac_cv_POSTGRESQL_LDFLAGS], | ||
73 | [ac_cv_POSTGRESQL_LDFLAGS="-L`$PG_CONFIG --libdir`" || _AX_LIB_POSTGRESQL_OLD_fail=yes]) | ||
74 | AS_IF([test "X$_AX_LIB_POSTGRESQL_OLD_fail" = "Xyes"],[break]) | ||
75 | POSTGRESQL_LDFLAGS="$ac_cv_POSTGRESQL_LDFLAGS" | ||
76 | |||
77 | AC_CACHE_CHECK([for the PostgreSQL libraries LIBS],[ac_cv_POSTGRESQL_LIBS], | ||
78 | [ac_cv_POSTGRESQL_LIBS="-lpq"]) | ||
79 | POSTGRESQL_LIBS="$ac_cv_POSTGRESQL_LIBS" | ||
80 | |||
81 | AC_CACHE_CHECK([for the PostgreSQL version],[ac_cv_POSTGRESQL_VERSION], | ||
82 | [ | ||
83 | ac_cv_POSTGRESQL_VERSION=`$PG_CONFIG --version | sed "s/^PostgreSQL[[[:space:]]][[[:space:]]]*\([[0-9.]][[0-9.]]*\).*/\1/"` \ | ||
84 | || _AX_LIB_POSTGRESQL_OLD_fail=yes | ||
85 | ]) | ||
86 | AS_IF([test "X$_AX_LIB_POSTGRESQL_OLD_fail" = "Xyes"],[break]) | ||
87 | POSTGRESQL_VERSION="$ac_cv_POSTGRESQL_VERSION" | ||
88 | |||
89 | |||
90 | dnl | ||
91 | dnl Check if required version of PostgreSQL is available | ||
92 | dnl | ||
93 | AS_IF([test X"$postgresql_version_req" != "X"],[ | ||
94 | AC_MSG_CHECKING([if PostgreSQL version $POSTGRESQL_VERSION is >= $postgresql_version_req]) | ||
95 | AX_COMPARE_VERSION([$POSTGRESQL_VERSION],[ge],[$postgresql_version_req], | ||
96 | [found_postgresql_req_version=yes],[found_postgresql_req_version=no]) | ||
97 | AC_MSG_RESULT([$found_postgresql_req_version]) | ||
98 | ]) | ||
99 | AS_IF([test "Xfound_postgresql_req_version" = "Xno"],[break]) | ||
100 | |||
101 | found_postgresql="yes" | ||
102 | break | ||
103 | done | ||
104 | ]) | ||
48 | 105 | ||
49 | AC_DEFUN([AX_LIB_POSTGRESQL], | 106 | AC_DEFUN([_AX_LIB_POSTGRESQL_PKG_CONFIG], |
50 | [ | 107 | [ |
51 | AC_ARG_WITH([postgresql], | 108 | AC_REQUIRE([PKG_PROG_PKG_CONFIG]) |
52 | AS_HELP_STRING([--with-postgresql=@<:@ARG@:>@], | 109 | found_postgresql=no |
53 | [use PostgreSQL library @<:@default=yes@:>@, optionally specify path to pg_config] | ||
54 | ), | ||
55 | [ | ||
56 | if test "$withval" = "no"; then | ||
57 | want_postgresql="no" | ||
58 | elif test "$withval" = "yes"; then | ||
59 | want_postgresql="yes" | ||
60 | else | ||
61 | want_postgresql="yes" | ||
62 | PG_CONFIG="$withval" | ||
63 | fi | ||
64 | ], | ||
65 | [want_postgresql="yes"] | ||
66 | ) | ||
67 | 110 | ||
68 | POSTGRESQL_CPPFLAGS="" | 111 | while true; do |
69 | POSTGRESQL_LDFLAGS="" | 112 | PKG_PROG_PKG_CONFIG |
70 | POSTGRESQL_VERSION="" | 113 | AS_IF([test X$PKG_CONFIG = X],[break]) |
71 | 114 | ||
72 | dnl | 115 | _AX_LIB_POSTGRESQL_PKG_CONFIG_fail=no; |
73 | dnl Check PostgreSQL libraries (libpq) | 116 | AS_IF([test "X$postgresql_version_req" = "X"], |
74 | dnl | 117 | [PKG_CHECK_EXISTS([libpq],[found_postgresql_pkg_config=yes],[found_postgresql=no])], |
118 | [PKG_CHECK_EXISTS([libpq >= "$postgresql_version_req"], | ||
119 | [found_postgresql=yes],[found_postgresql=no])]) | ||
120 | AS_IF([test "X$found_postgresql" = "no"],[break]) | ||
121 | |||
122 | AC_CACHE_CHECK([for the PostgreSQL libraries CPPFLAGS],[ac_cv_POSTGRESQL_CPPFLAGS], | ||
123 | [ac_cv_POSTGRESQL_CPPFLAGS="`$PKG_CONFIG libpq --cflags-only-I`" || _AX_LIB_POSTGRESQL_PKG_CONFIG_fail=yes]) | ||
124 | AS_IF([test "X$_AX_LIB_POSTGRESQL_PKG_CONFIG_fail" = "Xyes"],[break]) | ||
125 | POSTGRESQL_CPPFLAGS="$ac_cv_POSTGRESQL_CPPFLAGS" | ||
75 | 126 | ||
76 | if test "$want_postgresql" = "yes"; then | ||
77 | 127 | ||
78 | if test -z "$PG_CONFIG" -o test; then | 128 | AC_CACHE_CHECK([for the PostgreSQL libraries LDFLAGS],[ac_cv_POSTGRESQL_LDFLAGS], |
79 | AC_PATH_PROG([PG_CONFIG], [pg_config], []) | 129 | [ac_cv_POSTGRESQL_LDFLAGS="`$PKG_CONFIG libpq --libs-only-L --libs-only-other`" || _AX_LIB_POSTGRESQL_PKG_CONFIG_fail=yes]) |
80 | fi | 130 | AS_IF([test "X$_AX_LIB_POSTGRESQL_PKG_CONFIG_fail" = "Xyes"],[break]) |
131 | POSTGRESQL_LDFLAGS="$ac_cv_POSTGRESQL_LDFLAGS" | ||
81 | 132 | ||
82 | if test ! -x "$PG_CONFIG"; then | ||
83 | dnl AC_MSG_ERROR([$PG_CONFIG does not exist or it is not an exectuable file]) | ||
84 | PG_CONFIG="no" | ||
85 | found_postgresql="no" | ||
86 | fi | ||
87 | 133 | ||
88 | if test "$PG_CONFIG" != "no"; then | 134 | AC_CACHE_CHECK([for the PostgreSQL libraries LIBS],[ac_cv_POSTGRESQL_LIBS], |
89 | AC_MSG_CHECKING([for PostgreSQL libraries]) | 135 | [ac_cv_POSTGRESQL_LIBS="`$PKG_CONFIG libpq --libs-only-l`" || _AX_LIB_POSTGRESQL_PKG_CONFIG_fail=ye]) |
136 | AS_IF([test "X$_AX_LIB_POSTGRESQL_PKG_CONFIG_fail" = "Xyes"],[break]) | ||
137 | POSTGRESQL_LIBS="$ac_cv_POSTGRESQL_LIBS" | ||
90 | 138 | ||
91 | POSTGRESQL_CPPFLAGS="-I`$PG_CONFIG --includedir`" | 139 | dnl already checked by exist but need to be recovered |
92 | POSTGRESQL_LDFLAGS="-L`$PG_CONFIG --libdir`" | 140 | AC_CACHE_CHECK([for the PostgreSQL version],[ac_cv_POSTGRESQL_VERSION], |
141 | [ac_cv_POSTGRESQL_VERSION="`$PKG_CONFIG libpq --modversion`" || _AX_LIB_POSTGRESQL_PKG_CONFIG_fail=yes]) | ||
142 | AS_IF([test "X$_AX_LIB_POSTGRESQL_PKG_CONFIG_fail" = "Xyes"],[break]) | ||
143 | POSTGRESQL_VERSION="$ac_cv_POSTGRESQL_VERSION" | ||
93 | 144 | ||
94 | POSTGRESQL_VERSION=`$PG_CONFIG --version | sed -e 's#PostgreSQL ##' | awk '{print $1}'` | 145 | found_postgresql=yes |
146 | break; | ||
147 | done | ||
95 | 148 | ||
96 | AC_DEFINE([HAVE_POSTGRESQL], [1], | 149 | ]) |
97 | [Define to 1 if PostgreSQL libraries are available]) | ||
98 | 150 | ||
99 | found_postgresql="yes" | ||
100 | AC_MSG_RESULT([yes]) | ||
101 | else | ||
102 | found_postgresql="no" | ||
103 | AC_MSG_RESULT([no]) | ||
104 | fi | ||
105 | fi | ||
106 | 151 | ||
107 | dnl | ||
108 | dnl Check if required version of PostgreSQL is available | ||
109 | dnl | ||
110 | 152 | ||
153 | AC_DEFUN([AX_LIB_POSTGRESQL], | ||
154 | [ | ||
155 | AC_ARG_WITH([postgresql], | ||
156 | AS_HELP_STRING([--with-postgresql=@<:@ARG@:>@], | ||
157 | [use PostgreSQL library @<:@default=yes@:>@, optionally specify path to pg_config] | ||
158 | ), | ||
159 | [ | ||
160 | AS_CASE([$withval], | ||
161 | [[[nN]][[oO]]],[want_postgresql="no"], | ||
162 | [[[yY]][[eE]][[sS]]],[want_postgresql="yes"], | ||
163 | [ | ||
164 | want_postgresql="yes" | ||
165 | PG_CONFIG="$withval" | ||
166 | ]) | ||
167 | ], | ||
168 | [want_postgresql="yes"] | ||
169 | ) | ||
170 | |||
171 | AC_ARG_VAR([POSTGRESQL_CPPFLAGS],[cpp flags for PostgreSQL overriding detected flags]) | ||
172 | AC_ARG_VAR([POSTGRESQL_LIBFLAGS],[libs for PostgreSQL overriding detected flags]) | ||
173 | AC_ARG_VAR([POSTGRESQL_LDFLAGS],[linker flags for PostgreSQL overriding detected flags]) | ||
174 | |||
175 | # populate cache | ||
176 | AS_IF([test "X$POSTGRESQL_CPPFLAGS" != X],[ac_cv_POSTGRESQL_CPPFLAGS="$POSTGRESQL_CPPFLAGS"]) | ||
177 | AS_IF([test "X$POSTGRESQL_LDFLAGS" != X],[ac_cv_POSTGRESQL_LDFLAGS="$POSTGRESQL_LDFLAGS"]) | ||
178 | AS_IF([test "X$POSTGRESQL_LIBS" != X],[ac_cv_POSTGRESQL_LIBS="$POSTGRESQL_LIBS"]) | ||
111 | 179 | ||
112 | postgresql_version_req=ifelse([$1], [], [], [$1]) | 180 | postgresql_version_req=ifelse([$1], [], [], [$1]) |
181 | found_postgresql="no" | ||
113 | 182 | ||
114 | if test "$found_postgresql" = "yes" -a -n "$postgresql_version_req"; then | 183 | POSTGRESQL_VERSION="" |
115 | 184 | ||
116 | AC_MSG_CHECKING([if PostgreSQL version $POSTGRESQL_VERSION is >= $postgresql_version_req]) | 185 | dnl |
117 | 186 | dnl Check PostgreSQL libraries (libpq) | |
118 | dnl Decompose required version string of PostgreSQL | 187 | dnl |
119 | dnl and calculate its number representation | 188 | AS_IF([test X"$want_postgresql" = "Xyes"],[ |
120 | postgresql_version_req_major=`expr $postgresql_version_req : '\([[0-9]]*\)'` | 189 | _AX_LIB_POSTGRESQL_PKG_CONFIG |
121 | postgresql_version_req_minor=`expr $postgresql_version_req : '[[0-9]]*\.\([[0-9]]*\)'` | 190 | |
122 | postgresql_version_req_micro=`expr $postgresql_version_req : '[[0-9]]*\.[[0-9]]*\.\([[0-9]]*\)'` | 191 | |
123 | if test "x$postgresql_version_req_micro" = "x"; then | 192 | AS_IF([test X"$found_postgresql" = "Xno"], |
124 | postgresql_version_req_micro="0" | 193 | [_AX_LIB_POSTGRESQL_OLD]) |
125 | fi | 194 | |
126 | 195 | AS_IF([test X"$found_postgresql" = Xyes],[ | |
127 | postgresql_version_req_number=`expr $postgresql_version_req_major \* 1000000 \ | 196 | _AX_LIB_POSTGRESQL_OLD_CPPFLAGS="$CPPFLAGS" |
128 | \+ $postgresql_version_req_minor \* 1000 \ | 197 | CPPFLAGS="$CPPFLAGS $POSTGRESQL_CPPFLAGS" |
129 | \+ $postgresql_version_req_micro` | 198 | _AX_LIB_POSTGRESQL_OLD_LDFLAGS="$LDFLAGS" |
130 | 199 | LDFLAGS="$LDFLAGS $POSTGRESQL_LDFLAGS" | |
131 | dnl Decompose version string of installed PostgreSQL | 200 | _AX_LIB_POSTGRESQL_OLD_LIBS="$LIBS" |
132 | dnl and calculate its number representation | 201 | LIBS="$LIBS $POSTGRESQL_LIBS" |
133 | postgresql_version_major=`expr $POSTGRESQL_VERSION : '\([[0-9]]*\)'` | 202 | while true; do |
134 | postgresql_version_minor=`expr $POSTGRESQL_VERSION : '[[0-9]]*\.\([[0-9]]*\)'` | 203 | dnl try to compile |
135 | postgresql_version_micro=`expr $POSTGRESQL_VERSION : '[[0-9]]*\.[[0-9]]*\.\([[0-9]]*\)'` | 204 | AC_CHECK_HEADER([libpq-fe.h],[],[found_postgresql=no]) |
136 | if test "x$postgresql_version_micro" = "x"; then | 205 | AS_IF([test "X$found_postgresql" = "Xno"],[break]) |
137 | postgresql_version_micro="0" | 206 | dnl try now to link |
138 | fi | 207 | AC_CACHE_CHECK([for the PostgreSQL library linking is working],[ac_cv_postgresql_found], |
139 | 208 | [ | |
140 | postgresql_version_number=`expr $postgresql_version_major \* 1000000 \ | 209 | AC_LINK_IFELSE([ |
141 | \+ $postgresql_version_minor \* 1000 \ | 210 | AC_LANG_PROGRAM( |
142 | \+ $postgresql_version_micro` | 211 | [ |
143 | 212 | #include <libpq-fe.h> | |
144 | postgresql_version_check=`expr $postgresql_version_number \>\= $postgresql_version_req_number` | 213 | ], |
145 | if test "$postgresql_version_check" = "1"; then | 214 | [[ |
146 | AC_MSG_RESULT([yes]) | 215 | char conninfo[]="dbname = postgres"; |
147 | else | 216 | PGconn *conn; |
148 | AC_MSG_RESULT([no]) | 217 | conn = PQconnectdb(conninfo); |
149 | fi | 218 | ]] |
150 | fi | 219 | ) |
220 | ],[ac_cv_postgresql_found=yes], | ||
221 | [ac_cv_postgresql_found=no]) | ||
222 | ]) | ||
223 | found_postgresql="$ac_cv_postgresql_found" | ||
224 | AS_IF([test "X$found_postgresql" = "Xno"],[break]) | ||
225 | break | ||
226 | done | ||
227 | CPPFLAGS="$_AX_LIB_POSTGRESQL_OLD_CPPFLAGS" | ||
228 | LDFLAGS="$_AX_LIB_POSTGRESQL_OLD_LDFLAGS" | ||
229 | LIBS="$_AX_LIB_POSTGRESQL_OLD_LIBS" | ||
230 | ]) | ||
231 | |||
232 | |||
233 | AS_IF([test "x$found_postgresql" = "xyes"],[ | ||
234 | AC_DEFINE([HAVE_POSTGRESQL], [1], | ||
235 | [Define to 1 if PostgreSQL libraries are available])]) | ||
236 | ]) | ||
151 | 237 | ||
152 | AC_SUBST([POSTGRESQL_VERSION]) | 238 | AC_SUBST([POSTGRESQL_VERSION]) |
153 | AC_SUBST([POSTGRESQL_CPPFLAGS]) | 239 | AC_SUBST([POSTGRESQL_CPPFLAGS]) |
154 | AC_SUBST([POSTGRESQL_LDFLAGS]) | 240 | AC_SUBST([POSTGRESQL_LDFLAGS]) |
241 | AC_SUBST([POSTGRESQL_LIBS]) | ||
242 | |||
243 | AS_IF([test "x$found_postgresql" = "xyes"], | ||
244 | [ifelse([$2], , :, [$2])], | ||
245 | [ifelse([$3], , AS_IF([test X"$want_postgresql" = "Xyes"],[AC_MSG_ERROR([Library requirements (PostgreSQL) not met.])],[:]), [$3])]) | ||
246 | |||
155 | ]) | 247 | ]) |