xref: /freebsd/contrib/ntp/sntp/libopts/m4/libopts.m4 (revision 02e9120893770924227138ba49df1edb3896112a)
1
2dnl do always before generated macros:
3dnl
4AC_DEFUN([INVOKE_LIBOPTS_MACROS_FIRST],[
5  AC_REQUIRE([AC_HEADER_STDC])
6  AC_HEADER_DIRENT
7
8  # =================
9  # AC_CHECK_HEADERS
10  # =================
11  AC_CHECK_HEADERS([ \
12      sys/mman.h    sys/param.h   sys/poll.h    sys/procset.h \
13      sys/select.h  sys/socket.h  sys/stropts.h sys/time.h \
14      sys/un.h      sys/wait.h    dlfcn.h       errno.h \
15      fcntl.h       libgen.h      libintl.h     memory.h \
16      netinet/in.h  setjmp.h      stdbool.h     sysexits.h \
17      unistd.h      utime.h])
18
19  AC_CHECK_HEADERS([stdarg.h     varargs.h],
20      [lo_have_arg_hdr=true;break],
21      [lo_have_arg_hdr=false])
22
23  AC_CHECK_HEADERS([string.h     strings.h],
24      [lo_have_str_hdr=true;break],
25      [lo_have_str_hdr=false])
26
27  AC_CHECK_HEADERS([limits.h     sys/limits.h  values.h],
28      [lo_have_lim_hdr=true;break],
29      [lo_have_lim_hdr=false])
30
31  AC_CHECK_HEADERS([inttypes.h   stdint.h],
32      [lo_have_typ_hdr=true;break],
33      [lo_have_typ_hdr=false])
34  gl_STDNORETURN_H
35
36  # ----------------------------------------------------------------------
37  # check for various programs used during the build.
38  # On OS/X, "wchar.h" needs "runetype.h" to work properly.
39  # ----------------------------------------------------------------------
40  AC_CHECK_HEADERS([runetype.h wchar.h], [], [],[
41  AC_INCLUDES_DEFAULT
42  #if HAVE_RUNETYPE_H
43  # include <runetype.h>
44  #endif
45  ])
46
47  AC_ARG_ENABLE([nls],
48  AS_HELP_STRING([--disable-nls],[disable nls support in libopts]))
49  AS_IF([test "x$enable_nls" != "xno" && \
50  test "X${ac_cv_header_libintl_h}" = Xyes], [
51  AC_DEFINE([ENABLE_NLS],[1],[nls support in libopts])])
52
53  # --------------------------------------------
54  # Verify certain entries from AC_CHECK_HEADERS
55  # --------------------------------------------
56  [${lo_have_arg_hdr} || \
57    ]AC_MSG_ERROR([you must have stdarg.h or varargs.h on your system])[
58
59  ${lo_have_str_hdr} || \
60    ]AC_MSG_ERROR([you must have string.h or strings.h on your system])[
61
62  ${lo_have_lim_hdr} || \
63    ]AC_MSG_ERROR(
64      [you must have one of limits.h, sys/limits.h or values.h])[
65
66  ${lo_have_typ_hdr} || \
67    ]AC_MSG_ERROR([you must have inttypes.h or stdint.h on your system])[
68
69  for f in sys_types sys_param sys_stat string errno stdlib memory setjmp
70  do eval as_ac_var=\${ac_cv_header_${f}_h}
71     test "X${as_ac_var}" = Xyes || {
72       ]AC_MSG_ERROR([you must have ${f}.h on your system])[
73     }
74  done
75  test "X${ac_cv_header_inttypes_h-no}" = Xyes || \
76    echo '#include <stdint.h>' > inttypes.h]
77
78  # ----------------------------------------------------------------------
79  # Checks for typedefs
80  # ----------------------------------------------------------------------
81  AC_CHECK_TYPES(wchar_t)
82  AC_CHECK_TYPES(wint_t, [], [], [
83    AC_INCLUDES_DEFAULT
84    #if HAVE_RUNETYPE_H
85    # include <runetype.h>
86    #endif
87    #if HAVE_WCHAR_H
88    # include <wchar.h>
89    #endif
90  ])
91  AC_CHECK_TYPES([int8_t, uint8_t, int16_t, uint16_t, int32_t, uint32_t,
92  intptr_t, uintptr_t, uint_t, pid_t, size_t, ptrdiff_t])
93  AC_CHECK_SIZEOF(char *, 8)
94  AC_CHECK_SIZEOF(int,    4)
95  AC_CHECK_SIZEOF(long,   8)
96  AC_CHECK_SIZEOF(short,  2)
97
98  # ------------
99  # AC_CHECK_LIB
100  # ------------
101  AC_CHECK_LIB(gen, pathfind)
102  AC_CHECK_LIB(intl,gettext)
103  AC_FUNC_VPRINTF
104  AC_FUNC_FORK
105  AC_CHECK_FUNCS([mmap canonicalize_file_name snprintf strdup strchr \
106                 strrchr strsignal fchmod fstat chmod])
107  AC_PROG_SED
108  [while :
109  do
110      test -x "$POSIX_SHELL" && break
111      POSIX_SHELL=`which bash`
112      test -x "$POSIX_SHELL" && break
113      POSIX_SHELL=`which dash`
114      test -x "$POSIX_SHELL" && break
115      POSIX_SHELL=/usr/xpg4/bin/sh
116      test -x "$POSIX_SHELL" && break
117      POSIX_SHELL=`/bin/sh -c '
118          exec 2>/dev/null
119          if ! true ; then exit 1 ; fi
120          echo /bin/sh'`
121      test -x "$POSIX_SHELL" && break
122      ]AC_MSG_ERROR([cannot locate a working POSIX shell])[
123  done]
124  AC_DEFINE_UNQUOTED([POSIX_SHELL], ["${POSIX_SHELL}"],
125           [define to a working POSIX compliant shell])
126  AC_SUBST([POSIX_SHELL])
127])
128
129dnl
130dnl @synopsis  INVOKE_LIBOPTS_MACROS
131dnl
132dnl  This macro will invoke the AutoConf macros specified in libopts.def
133dnl  that have not been disabled with "omit-invocation".
134dnl
135AC_DEFUN([LIBOPTS_WITH_REGEX_HEADER],[
136  AC_ARG_WITH([regex-header],
137    AS_HELP_STRING([--with-regex-header], [a reg expr header is specified]),
138    [libopts_cv_with_regex_header=${with_regex_header}],
139    AC_CACHE_CHECK([whether a reg expr header is specified], libopts_cv_with_regex_header,
140      libopts_cv_with_regex_header=no)
141  ) # end of AC_ARG_WITH
142  if test "X${libopts_cv_with_regex_header}" != Xno
143  then
144    AC_DEFINE_UNQUOTED([REGEX_HEADER],[<${libopts_cv_with_regex_header}>])
145  else
146    AC_DEFINE([REGEX_HEADER],[<regex.h>],[name of regex header file])
147  fi
148
149]) # end of AC_DEFUN of LIBOPTS_WITH_REGEX_HEADER
150
151
152AC_DEFUN([LIBOPTS_WITHLIB_REGEX],[
153  AC_ARG_WITH([libregex],
154    AS_HELP_STRING([--with-libregex], [libregex installation prefix]),
155    [libopts_cv_with_libregex_root=${with_libregex}],
156    AC_CACHE_CHECK([whether with-libregex was specified], libopts_cv_with_libregex_root,
157      libopts_cv_with_libregex_root=no)
158  ) # end of AC_ARG_WITH libregex
159
160  if test "${with_libregex+set}" = set && \
161     test "X${withval}" = Xno
162  then ## disabled by request
163    libopts_cv_with_libregex_root=no
164    libopts_cv_with_libregex_cflags=no
165    libopts_cv_with_libregex_libs=no
166  else
167
168  AC_ARG_WITH([libregex-cflags],
169    AS_HELP_STRING([--with-libregex-cflags], [libregex compile flags]),
170    [libopts_cv_with_libregex_cflags=${with_libregex_cflags}],
171    AC_CACHE_CHECK([whether with-libregex-cflags was specified], libopts_cv_with_libregex_cflags,
172      libopts_cv_with_libregex_cflags=no)
173  ) # end of AC_ARG_WITH libregex-cflags
174
175  AC_ARG_WITH([libregex-libs],
176    AS_HELP_STRING([--with-libregex-libs], [libregex link command arguments]),
177    [libopts_cv_with_libregex_libs=${with_libregex_libs}],
178    AC_CACHE_CHECK([whether with-libregex-libs was specified], libopts_cv_with_libregex_libs,
179      libopts_cv_with_libregex_libs=no)
180  ) # end of AC_ARG_WITH libregex-libs
181
182  case "X${libopts_cv_with_libregex_cflags}" in
183  Xyes|Xno|X )
184    case "X${libopts_cv_with_libregex_root}" in
185    Xyes|Xno|X ) libopts_cv_with_libregex_cflags=no ;;
186    * ) libopts_cv_with_libregex_cflags=-I${libopts_cv_with_libregex_root}/include ;;
187    esac
188  esac
189  case "X${libopts_cv_with_libregex_libs}" in
190  Xyes|Xno|X )
191    case "X${libopts_cv_with_libregex_root}" in
192    Xyes|Xno|X ) libopts_cv_with_libregex_libs=no ;;
193    * )        libopts_cv_with_libregex_libs="-L${libopts_cv_with_libregex_root}/lib -lregex" ;;
194    esac
195  esac
196  libopts_save_CPPFLAGS="${CPPFLAGS}"
197  libopts_save_LIBS="${LIBS}"
198  case "X${libopts_cv_with_libregex_cflags}" in
199  Xyes|Xno|X )
200    libopts_cv_with_libregex_cflags="" ;;
201  * ) CPPFLAGS="${CPPFLAGS} ${libopts_cv_with_libregex_cflags}" ;;
202  esac
203  case "X${libopts_cv_with_libregex_libs}" in
204  Xyes|Xno|X )
205    libopts_cv_with_libregex_libs="" ;;
206  * )
207    LIBS="${LIBS} ${libopts_cv_with_libregex_libs}" ;;
208  esac
209  LIBREGEX_CFLAGS=""
210  LIBREGEX_LIBS=""
211  AC_MSG_CHECKING([whether libregex functions properly])
212  AC_CACHE_VAL([libopts_cv_with_libregex],[
213  AC_RUN_IFELSE([AC_LANG_SOURCE([@%:@include <stdio.h>
214@%:@include <stdlib.h>
215@%:@include <sys/types.h>
216@%:@include REGEX_HEADER
217static regex_t re;
218void comp_re(char const * pzPat) {
219  int res = regcomp( &re, pzPat, REG_EXTENDED|REG_ICASE|REG_NEWLINE );
220  if (res == 0) return;
221  exit( res ); }
222int main() {
223  regmatch_t m@<:@2@:>@;
224  comp_re( "^.*\@S|@"   );
225  comp_re( "()|no.*" );
226  comp_re( "."       );
227  if (regexec( &re, "X", 2, m, 0 ) != 0)  return 1;
228  if ((m@<:@0@:>@.rm_so != 0) || (m@<:@0@:>@.rm_eo != 1)) {
229    fputs( "error: regex -->.<-- did not match\n", stderr );
230    return 1;
231  }
232  return 0; }] )],
233    [libopts_cv_with_libregex=yes], [libopts_cv_with_libregex=no],
234    [libopts_cv_with_libregex=no]) # end of AC_RUN_IFELSE
235  ]) # end of AC_CACHE_VAL for libopts_cv_with_libregex
236  fi ## disabled by request
237  AC_MSG_RESULT([${libopts_cv_with_libregex}])
238  if test "X${libopts_cv_with_libregex}" != Xno
239  then
240    AC_DEFINE([WITH_LIBREGEX],[1],
241        [Define this if a working libregex can be found])
242  else
243    CPPFLAGS="${libopts_save_CPPFLAGS}"
244    LIBS="${libopts_save_LIBS}"
245    libopts_cv_with_libregex_root=no
246libopts_cv_with_libregex_cflags=no
247libopts_cv_with_libregex_libs=no
248libopts_cv_with_libregex=no
249  fi
250
251]) # end of AC_DEFUN of LIBOPTS_WITHLIB_REGEX
252
253
254AC_DEFUN([LIBOPTS_RUN_PATHFIND],[
255  AC_MSG_CHECKING([whether pathfind(3) works])
256  AC_CACHE_VAL([libopts_cv_run_pathfind],[
257  AC_RUN_IFELSE([AC_LANG_SOURCE([@%:@include <string.h>
258@%:@include <stdlib.h>
259int main (int argc, char ** argv) {
260   char * pz = pathfind( getenv( "PATH" ), "sh", "x" );
261   return (pz == 0) ? 1 : 0;
262}] )],
263    [libopts_cv_run_pathfind=yes],[libopts_cv_run_pathfind=no],[libopts_cv_run_pathfind=no]
264  ) # end of RUN_IFELSE
265  ]) # end of AC_CACHE_VAL for libopts_cv_run_pathfind
266  AC_MSG_RESULT([${libopts_cv_run_pathfind}])
267  if test "X${libopts_cv_run_pathfind}" != Xno
268  then
269    AC_DEFINE([HAVE_PATHFIND],[1],
270        [Define this if pathfind(3) works])
271  fi
272
273]) # end of AC_DEFUN of LIBOPTS_RUN_PATHFIND
274
275
276AC_DEFUN([LIBOPTS_TEST_DEV_ZERO],[
277  AC_MSG_CHECKING([whether /dev/zero is readable device])
278  AC_CACHE_VAL([libopts_cv_test_dev_zero],[
279    libopts_cv_test_dev_zero=`exec 2> /dev/null
280dzero=\`ls -lL /dev/zero | egrep ^c......r\`
281test -z "${dzero}" && exit 1
282echo ${dzero}`
283    if test $? -ne 0 || test -z "$libopts_cv_test_dev_zero"
284    then libopts_cv_test_dev_zero=no
285    fi
286  ]) # end of CACHE_VAL of libopts_cv_test_dev_zero
287  AC_MSG_RESULT([${libopts_cv_test_dev_zero}])
288  if test "X${libopts_cv_test_dev_zero}" != Xno
289  then
290    AC_DEFINE([HAVE_DEV_ZERO],[1],
291        [Define this if /dev/zero is readable device])
292  fi
293
294]) # end of AC_DEFUN of LIBOPTS_TEST_DEV_ZERO
295
296
297AC_DEFUN([LIBOPTS_RUN_REALPATH],[
298  AC_MSG_CHECKING([whether we have a functional realpath(3C)])
299  AC_CACHE_VAL([libopts_cv_run_realpath],[
300  AC_RUN_IFELSE([AC_LANG_SOURCE([@%:@include <limits.h>
301@%:@include <stdlib.h>
302int main (int argc, char ** argv) {
303@%:@ifndef PATH_MAX
304choke me!!
305@%:@else
306   char zPath@<:@PATH_MAX+1@:>@;
307@%:@endif
308   char *pz = realpath(argv@<:@0@:>@, zPath);
309   return (pz == zPath) ? 0 : 1;
310}] )],
311    [libopts_cv_run_realpath=yes],[libopts_cv_run_realpath=no],[libopts_cv_run_realpath=no]
312  ) # end of RUN_IFELSE
313  ]) # end of AC_CACHE_VAL for libopts_cv_run_realpath
314  AC_MSG_RESULT([${libopts_cv_run_realpath}])
315  if test "X${libopts_cv_run_realpath}" != Xno
316  then
317    AC_DEFINE([HAVE_REALPATH],[1],
318        [Define this if we have a functional realpath(3C)])
319  fi
320
321]) # end of AC_DEFUN of LIBOPTS_RUN_REALPATH
322
323
324AC_DEFUN([LIBOPTS_RUN_STRFTIME],[
325  AC_MSG_CHECKING([whether strftime() works])
326  AC_CACHE_VAL([libopts_cv_run_strftime],[
327  AC_RUN_IFELSE([AC_LANG_SOURCE([@%:@include <time.h>
328@%:@include <string.h>
329char t_buf@<:@ 64 @:>@;
330int main() {
331  static char const z@<:@@:>@ = "Thursday Aug 28 240";
332  struct tm tm;
333  tm.tm_sec   = 36;  /* seconds after the minute @<:@0, 61@:>@  */
334  tm.tm_min   = 44;  /* minutes after the hour @<:@0, 59@:>@ */
335  tm.tm_hour  = 12;  /* hour since midnight @<:@0, 23@:>@ */
336  tm.tm_mday  = 28;  /* day of the month @<:@1, 31@:>@ */
337  tm.tm_mon   =  7;  /* months since January @<:@0, 11@:>@ */
338  tm.tm_year  = 86;  /* years since 1900 */
339  tm.tm_wday  =  4;  /* days since Sunday @<:@0, 6@:>@ */
340  tm.tm_yday  = 239; /* days since January 1 @<:@0, 365@:>@ */
341  tm.tm_isdst =  1;  /* flag for daylight savings time */
342  strftime( t_buf, sizeof( t_buf ), "%A %b %d %j", &tm );
343  return (strcmp( t_buf, z ) != 0); }] )],
344    [libopts_cv_run_strftime=yes],[libopts_cv_run_strftime=no],[libopts_cv_run_strftime=no]
345  ) # end of RUN_IFELSE
346  ]) # end of AC_CACHE_VAL for libopts_cv_run_strftime
347  AC_MSG_RESULT([${libopts_cv_run_strftime}])
348  if test "X${libopts_cv_run_strftime}" != Xno
349  then
350    AC_DEFINE([HAVE_STRFTIME],[1],
351        [Define this if strftime() works])
352  fi
353
354]) # end of AC_DEFUN of LIBOPTS_RUN_STRFTIME
355
356
357AC_DEFUN([LIBOPTS_RUN_FOPEN_BINARY],[
358  AC_MSG_CHECKING([whether fopen accepts "b" mode])
359  AC_CACHE_VAL([libopts_cv_run_fopen_binary],[
360  AC_RUN_IFELSE([AC_LANG_SOURCE([@%:@include <stdio.h>
361int main (int argc, char ** argv) {
362FILE * fp = fopen("conftest.@S|@ac_ext", "rb");
363return (fp == NULL) ? 1 : fclose(fp); }] )],
364    [libopts_cv_run_fopen_binary=yes],[libopts_cv_run_fopen_binary=no],[libopts_cv_run_fopen_binary=no]
365  ) # end of RUN_IFELSE
366  ]) # end of AC_CACHE_VAL for libopts_cv_run_fopen_binary
367  AC_MSG_RESULT([${libopts_cv_run_fopen_binary}])
368  if test "X${libopts_cv_run_fopen_binary}" != Xno
369  then
370    AC_DEFINE([FOPEN_BINARY_FLAG],"b",
371	[fopen(3) accepts a 'b' in the mode flag])
372  else
373    AC_DEFINE([FOPEN_BINARY_FLAG],"",
374	[fopen(3) accepts a 'b' in the mode flag])
375  fi
376
377]) # end of AC_DEFUN of LIBOPTS_RUN_FOPEN_BINARY
378
379
380AC_DEFUN([LIBOPTS_RUN_FOPEN_TEXT],[
381  AC_MSG_CHECKING([whether fopen accepts "t" mode])
382  AC_CACHE_VAL([libopts_cv_run_fopen_text],[
383  AC_RUN_IFELSE([AC_LANG_SOURCE([@%:@include <stdio.h>
384int main (int argc, char ** argv) {
385FILE * fp = fopen("conftest.@S|@ac_ext", "rt");
386return (fp == NULL) ? 1 : fclose(fp); }] )],
387    [libopts_cv_run_fopen_text=yes],[libopts_cv_run_fopen_text=no],[libopts_cv_run_fopen_text=no]
388  ) # end of RUN_IFELSE
389  ]) # end of AC_CACHE_VAL for libopts_cv_run_fopen_text
390  AC_MSG_RESULT([${libopts_cv_run_fopen_text}])
391  if test "X${libopts_cv_run_fopen_text}" != Xno
392  then
393    AC_DEFINE([FOPEN_TEXT_FLAG],"t",
394	[fopen(3) accepts a 't' in the mode flag])
395  else
396    AC_DEFINE([FOPEN_TEXT_FLAG],"",
397	[fopen(3) accepts a 't' in the mode flag])
398  fi
399
400]) # end of AC_DEFUN of LIBOPTS_RUN_FOPEN_TEXT
401
402
403AC_DEFUN([LIBOPTS_DISABLE_OPTIONAL_ARGS],[
404  AC_ARG_ENABLE([optional-args],
405    AS_HELP_STRING([--disable-optional-args], [not wanting optional option args]),
406    [libopts_cv_enable_optional_args=${enable_optional_args}],
407    AC_CACHE_CHECK([whether not wanting optional option args], libopts_cv_enable_optional_args,
408      libopts_cv_enable_optional_args=yes)
409  ) # end of AC_ARG_ENABLE
410  if test "X${libopts_cv_enable_optional_args}" = Xno
411  then
412    AC_DEFINE([NO_OPTIONAL_OPT_ARGS], [1],
413          [Define this if optional arguments are disallowed])
414  fi
415
416]) # end of AC_DEFUN of LIBOPTS_DISABLE_OPTIONAL_ARGS
417
418
419AC_DEFUN([INVOKE_LIBOPTS_MACROS],[
420  AC_REQUIRE([INVOKE_LIBOPTS_MACROS_FIRST])
421  # Check to see if a reg expr header is specified.
422  LIBOPTS_WITH_REGEX_HEADER
423
424  # Check to see if a working libregex can be found.
425  LIBOPTS_WITHLIB_REGEX
426
427  # Check to see if pathfind(3) works.
428  LIBOPTS_RUN_PATHFIND
429
430  # Check to see if /dev/zero is readable device.
431  LIBOPTS_TEST_DEV_ZERO
432
433  # Check to see if we have a functional realpath(3C).
434  LIBOPTS_RUN_REALPATH
435
436  # Check to see if strftime() works.
437  LIBOPTS_RUN_STRFTIME
438
439  # Check to see if fopen accepts "b" mode.
440  LIBOPTS_RUN_FOPEN_BINARY
441
442  # Check to see if fopen accepts "t" mode.
443  LIBOPTS_RUN_FOPEN_TEXT
444
445  # Check to see if not wanting optional option args.
446  LIBOPTS_DISABLE_OPTIONAL_ARGS
447
448]) # end AC_DEFUN of INVOKE_LIBOPTS_MACROS
449
450dnl @synopsis  LIBOPTS_CHECK
451dnl
452dnl If autoopts-config works, add the linking information to LIBS.
453dnl Otherwise, add ``libopts-${ao_rev}'' to SUBDIRS and run all
454dnl the config tests that the library needs.  Invoke the
455dnl "INVOKE_LIBOPTS_MACROS" macro iff we are building libopts.
456dnl
457dnl  This file is part of AutoGen.
458dnl  AutoGen Copyright (C) 1992-2018 by Bruce Korb - all rights reserved
459dnl
460dnl  AutoGen is free software: you can redistribute it and/or modify it
461dnl  under the terms of the GNU General Public License as published by the
462dnl  Free Software Foundation, either version 3 of the License, or
463dnl  (at your option) any later version.
464dnl
465dnl  AutoGen is distributed in the hope that it will be useful, but
466dnl  WITHOUT ANY WARRANTY; without even the implied warranty of
467dnl  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
468dnl  See the GNU General Public License for more details.
469dnl
470dnl  You should have received a copy of the GNU General Public License along
471dnl  with this program.  If not, see <http://www.gnu.org/licenses/>.
472dnl
473dnl Default to system libopts
474dnl
475AC_DEFUN([LIBOPTS_CHECK_COMMON],[
476  AC_REQUIRE([INVOKE_LIBOPTS_MACROS_FIRST])
477  [NEED_LIBOPTS_DIR='']
478  m4_pushdef([AO_Libopts_Dir],
479	    [ifelse($1, , [libopts], [$1])])
480  AC_ARG_ENABLE([local-libopts],
481    AC_HELP_STRING([--enable-local-libopts],
482       [Use the supplied libopts tearoff code]),[
483    if test x$enableval = xyes ; then
484       AC_MSG_NOTICE([Using supplied libopts tearoff])
485       LIBOPTS_CFLAGS='-I$(top_srcdir)/AO_Libopts_Dir'
486       NEED_LIBOPTS_DIR=true
487       LIBOPTS_LDADD='$(top_builddir)/AO_Libopts_Dir/libopts.la'
488    fi])
489
490  AC_ARG_ENABLE([libopts-install],
491    AC_HELP_STRING([--enable-libopts-install],
492       [Install libopts with client installation]))
493  AM_CONDITIONAL([INSTALL_LIBOPTS],[test "X${enable_libopts_install}" = Xyes])
494
495  [if test -z "${NEED_LIBOPTS_DIR}" ; then]
496     AC_MSG_CHECKING([whether autoopts-config can be found])
497     AC_ARG_WITH([autoopts-config],
498        AC_HELP_STRING([--with-autoopts-config],
499             [specify the config-info script]),
500        [lo_cv_with_autoopts_config=${with_autoopts_config}],
501        AC_CACHE_CHECK([whether autoopts-config is specified],
502             [lo_cv_with_autoopts_config],
503             [if autoopts-config --help 2>/dev/null 1>&2
504        then lo_cv_with_autoopts_config=autoopts-config
505        elif libopts-config --help 2>/dev/null 1>&2
506        then lo_cv_with_autoopts_config=libopts-config
507        else lo_cv_with_autoopts_config=no ; fi])
508     ) # end of AC_ARG_WITH
509
510     AC_CACHE_VAL([lo_cv_test_autoopts],[
511        if test -z "${lo_cv_with_autoopts_config}" \
512                -o X"${lo_cv_with_autoopts_config}" = Xno
513        then
514           if autoopts-config --help 2>/dev/null 1>&2
515           then lo_cv_with_autoopts_config=autoopts-config
516           elif libopts-config --help 2>/dev/null 1>&2
517           then lo_cv_with_autoopts_config=libopts-config
518           else lo_cv_with_autoopts_config=false ; fi
519        fi
520        lo_cv_test_autoopts=`
521            ${lo_cv_with_autoopts_config} --libs` 2> /dev/null
522        if test $? -ne 0 -o -z "${lo_cv_test_autoopts}"
523        then lo_cv_test_autoopts=no ; fi
524     ]) # end of CACHE_VAL
525     AC_MSG_RESULT([${lo_cv_test_autoopts}])
526
527     [if test "X${lo_cv_test_autoopts}" != Xno
528     then
529        LIBOPTS_LDADD="${lo_cv_test_autoopts}"
530        LIBOPTS_CFLAGS="`${lo_cv_with_autoopts_config} --cflags`"
531     else
532        LIBOPTS_LDADD='$(top_builddir)/]AO_Libopts_Dir[/libopts.la'
533        LIBOPTS_CFLAGS='-I$(top_srcdir)/]AO_Libopts_Dir['
534        NEED_LIBOPTS_DIR=true
535     fi
536  fi # end of if test -z "${NEED_LIBOPTS_DIR}"
537  if test -n "${LIBOPTS_BUILD_BLOCKED}" ; then
538    NEED_LIBOPTS_DIR=''
539  fi]
540  AM_CONDITIONAL([NEED_LIBOPTS], [test -n "${NEED_LIBOPTS_DIR}"])
541  AC_SUBST(LIBOPTS_LDADD)
542  AC_SUBST(LIBOPTS_CFLAGS)
543  AC_SUBST(LIBOPTS_DIR, AO_Libopts_Dir)
544  m4_popdef([AO_Libopts_Dir])
545[# end of AC_DEFUN of LIBOPTS_CHECK_COMMON]
546])
547dnl
548dnl AC_CONFIG_FILES conditionalization requires using AM_COND_IF, however
549dnl AM_COND_IF is new to Automake 1.11.  To use it on new Automake without
550dnl requiring same, a fallback implementation for older Automake is provided.
551dnl Note that disabling of AC_CONFIG_FILES requires Automake 1.11, this code
552dnl is correct only in terms of m4sh generated script.
553dnl
554m4_ifndef([AM_COND_IF],
555  [AC_DEFUN([AM_COND_IF], [
556    if test -z "$$1_TRUE"; then :
557      m4_n([$2])[]dnl
558      m4_ifval([$3],[
559    else
560      $3
561    ])dnl
562    fi[]dnl
563  ])dnl
564])
565dnl
566AC_DEFUN([LIBOPTS_CHECK_NOBUILD], [
567  m4_pushdef([AO_Libopts_Dir],
568	      [ifelse($1, , [libopts], [$1])])
569  LIBOPTS_BUILD_BLOCKED=true
570  LIBOPTS_CHECK_COMMON(AO_Libopts_Dir)
571  m4_popdef([AO_Libopts_Dir])dnl
572# end of AC_DEFUN of LIBOPTS_CHECK_NOBUILD
573])
574dnl
575AC_DEFUN([LIBOPTS_CHECK], [
576  m4_pushdef([AO_Libopts_Dir],
577	      [ifelse($1, , [libopts], [$1])])
578  LIBOPTS_BUILD_BLOCKED=''
579  LIBOPTS_CHECK_COMMON(AO_Libopts_Dir)
580  AM_COND_IF([NEED_LIBOPTS], [
581    INVOKE_LIBOPTS_MACROS
582  ])
583  AC_CONFIG_FILES(AO_Libopts_Dir/Makefile)
584  m4_popdef([AO_Libopts_Dir])dnl
585# end of AC_DEFUN of LIBOPTS_CHECK
586])
587