blob: 585bf21babbf89bb3da79d7d9ca092e0d6cd8810 [file] [log] [blame]
Marco Nelissen548dde42014-01-07 10:11:28 -08001dnl @synopsis GP_CHECK_POPT(FLAG)
2dnl
3dnl Check whether libpopt is available.
4dnl FLAG must be one of
5dnl "mandatory"
6dnl "default-enabled"
7dnl "default-disabled"
8dnl
9AC_DEFUN([GP_CHECK_POPT],[
10#
11# [GP_CHECK_POPT]
12#
13AC_REQUIRE([GP_CONFIG_MSG])dnl
14m4_if([$1],[mandatory], [_GP_CHECK_POPT([mandatory])],
15 [$1],[default-enabled], [_GP_CHECK_POPT([disable])],
16 [$1],[default-disabled], [_GP_CHECK_POPT([enable])],
17 [m4_errprint(__file__:__line__:[ Error:
18Illegal argument to $0: `$1'
19Valid values are: mandatory, default-enabled, default-disabled
20])m4_exit(1)])dnl
21])dnl
22dnl
23AC_DEFUN([_GP_CHECK_POPT],[
24m4_if([$1],[mandatory],[
25try_popt=yes
26require_popt=yes
27],[
28try_popt=auto
29require_popt=no
30AC_ARG_ENABLE([popt],
31[AS_HELP_STRING([--$1-popt],[Do not use popt])],
32[ if test "x$withval" = no \
33 || test "x$withval" = off \
34 || test "x$withval" = false;
35 then
36 try_popt=no
37 require_popt=no
38 elif test "x$withval" = yes \
39 || test "x$withval" = on \
40 || test "x$withval" = true
41 then
42 try_popt=yes
43 require_popt=yes
44 fi
45])dnl
46])dnl
47
48AC_MSG_CHECKING([whether popt is required])
49AC_MSG_RESULT([${require_popt}])
50
51if test "$require_popt" != yes; then
52 AC_MSG_CHECKING([whether popt is requested])
53 AC_MSG_RESULT([${try_popt}])
54fi
55
56dnl Implicit AC_SUBST
57AC_ARG_VAR([POPT_CFLAGS],[CPPFLAGS to compile with libpopt])dnl
58AC_ARG_VAR([POPT_LIBS],[LDFLAGS to link with libpopt])dnl
59
60have_popt=no
61
62if test "x$POPT_CFLAGS" = "x" && test "x$POPT_LIBS" = "x"; then
63
64 # try to find options to compile popt.h
65 CPPFLAGS_save="$CPPFLAGS"
66 popth_found=no
67 for popt_prefix in "" /usr /usr/local
68 do
69 if test -n "${popt_prefix}"; then
70 :
71 elif test -d "${popt_prefix}/include"; then
72 CPPFLAGS="-I${popt_prefix}/include ${CPPFLAGS}"
73 else
74 continue
75 fi
76 ac_cv_header_popt_h=""
77 unset ac_cv_header_popt_h
78 AC_CHECK_HEADER([popt.h], [popth_found=yes])
79 if test "$popth_found" = yes; then break; fi
80 done
81 CPPFLAGS="$CPPFLAGS_save"
82 if test "$popth_found" = "yes"; then
83 if test "$popt_prefix" = ""; then
84 POPT_CFLAGS=""
85 else
86 POPT_CFLAGS="-I${popt_prefix}/include"
87 fi
88 else
89 AC_MSG_ERROR([
90* Cannot autodetect popt.h
91*
92* Set POPT_CFLAGS and POPT_LIBS correctly.
93])
94 fi
95
96 # try to find options to link against popt
97 LDFLAGS_save="$LDFLAGS"
98 popt_links=no
99 for popt_prefix in /usr "" /usr/local; do
100 # We could have "/usr" and "lib64" at the beginning of the
101 # lists. Then the first tested location would
102 # incidentally be the right one on 64bit systems, and
103 # thus work around a bug in libtool on 32bit systems:
104 #
105 # 32bit libtool doesn't know about 64bit systems, and so the
106 # compilation will fail when linking a 32bit library from
107 # /usr/lib to a 64bit binary.
108 #
109 # This hack has been confirmed to workwith a
110 # 32bit Debian Sarge and 64bit Fedora Core 3 system.
111 for ldir in lib64 "" lib; do
112 popt_libdir="${popt_prefix}/${ldir}"
113 if test "${popt_libdir}" = "/"; then
114 popt_libdir=""
115 elif test -d "${popt_libdir}"; then
116 LDFLAGS="-L${popt_libdir} ${LDFLAGS}"
117 else
118 continue
119 fi
120 # Avoid caching of results
121 ac_cv_lib_popt_poptStuffArgs=""
122 unset ac_cv_lib_popt_poptStuffArgs
123 AC_CHECK_LIB([popt], [poptStuffArgs], [popt_links=yes])
124 if test "$popt_links" = yes; then break; fi
125 done
126 if test "$popt_links" = yes; then break; fi
127 done
128 LDFLAGS="$LDFLAGS_save"
129 if test "$popt_links" = "yes"; then
130 if test "$popt_libdir" = ""; then
131 POPT_LIBS="-lpopt"
132 else
133 POPT_LIBS="-L${popt_libdir} -lpopt"
134 fi
135 else
136 AC_MSG_ERROR([
137* Cannot autodetect library directory containing popt
138*
139* Set POPT_CFLAGS and POPT_LIBS correctly.
140])
141 fi
142 have_popt=yes
143elif test "x$POPT_CFLAGS" != "x" && test "x$POPT_LIBS" != "x"; then
144 # just use the user specivied option
145 popt_msg="yes (user specified)"
146 have_popt=yes
147else
148 AC_MSG_ERROR([
149* Fatal: Either set both POPT_CFLAGS and POPT_LIBS or neither.
150])
151fi
152
153AC_MSG_CHECKING([if popt is functional])
154if test "$require_popt$have_popt" = "yesno"; then
155 AC_MSG_RESULT([no, but required])
156 AC_MSG_ERROR([
157* popt library not found
158* Fatal: ${PACKAGE_NAME} (${PACKAGE_TARNAME}) requires popt
159* Please install it and/or set POPT_CFLAGS and POPT_LIBS.
160])
161fi
162AC_MSG_RESULT([${have_popt}])
163
164GP_CONFIG_MSG([use popt library], [${have_popt}])
165if test "$have_popt" = "yes"; then
166 AC_DEFINE([HAVE_POPT],[1],[whether the popt library is available])
167 GP_CONFIG_MSG([popt libs],[${POPT_LIBS}])
168 GP_CONFIG_MSG([popt cppflags],[${POPT_CFLAGS}])
169fi
170AM_CONDITIONAL([HAVE_POPT],[test "$have_popt" = "yes"])
171])dnl
172dnl
173dnl Please do not remove this:
174dnl filetype: 7595380e-eff3-49e5-90ab-e40f1d544639
175dnl I use this to find all the different instances of this file which
176dnl are supposed to be synchronized.
177dnl
178dnl Local Variables:
179dnl mode: autoconf
180dnl End: