1*a466cc55SCy Schubert 2ea906c41SOllivier Robertdnl do always before generated macros: 3ea906c41SOllivier Robertdnl 4ea906c41SOllivier RobertAC_DEFUN([INVOKE_LIBOPTS_MACROS_FIRST],[ 52b15cb3dSCy Schubert AC_REQUIRE([AC_HEADER_STDC]) 6ea906c41SOllivier Robert AC_HEADER_DIRENT 7ea906c41SOllivier Robert 8ea906c41SOllivier Robert # ================= 9ea906c41SOllivier Robert # AC_CHECK_HEADERS 10ea906c41SOllivier Robert # ================= 112b15cb3dSCy Schubert AC_CHECK_HEADERS([ \ 122b15cb3dSCy Schubert sys/mman.h sys/param.h sys/poll.h sys/procset.h \ 132b15cb3dSCy Schubert sys/select.h sys/socket.h sys/stropts.h sys/time.h \ 142b15cb3dSCy Schubert sys/un.h sys/wait.h dlfcn.h errno.h \ 152b15cb3dSCy Schubert fcntl.h libgen.h libintl.h memory.h \ 162b15cb3dSCy Schubert netinet/in.h setjmp.h stdbool.h sysexits.h \ 172b15cb3dSCy Schubert unistd.h utime.h]) 182b15cb3dSCy Schubert 192b15cb3dSCy Schubert AC_CHECK_HEADERS([stdarg.h varargs.h], 202b15cb3dSCy Schubert [lo_have_arg_hdr=true;break], 212b15cb3dSCy Schubert [lo_have_arg_hdr=false]) 222b15cb3dSCy Schubert 232b15cb3dSCy Schubert AC_CHECK_HEADERS([string.h strings.h], 242b15cb3dSCy Schubert [lo_have_str_hdr=true;break], 252b15cb3dSCy Schubert [lo_have_str_hdr=false]) 262b15cb3dSCy Schubert 272b15cb3dSCy Schubert AC_CHECK_HEADERS([limits.h sys/limits.h values.h], 282b15cb3dSCy Schubert [lo_have_lim_hdr=true;break], 292b15cb3dSCy Schubert [lo_have_lim_hdr=false]) 302b15cb3dSCy Schubert 312b15cb3dSCy Schubert AC_CHECK_HEADERS([inttypes.h stdint.h], 322b15cb3dSCy Schubert [lo_have_typ_hdr=true;break], 332b15cb3dSCy Schubert [lo_have_typ_hdr=false]) 342b15cb3dSCy Schubert gl_STDNORETURN_H 352b15cb3dSCy Schubert 362b15cb3dSCy Schubert # ---------------------------------------------------------------------- 372b15cb3dSCy Schubert # check for various programs used during the build. 382b15cb3dSCy Schubert # On OS/X, "wchar.h" needs "runetype.h" to work properly. 392b15cb3dSCy Schubert # ---------------------------------------------------------------------- 402b15cb3dSCy Schubert AC_CHECK_HEADERS([runetype.h wchar.h], [], [],[ 412b15cb3dSCy Schubert AC_INCLUDES_DEFAULT 422b15cb3dSCy Schubert #if HAVE_RUNETYPE_H 432b15cb3dSCy Schubert # include <runetype.h> 442b15cb3dSCy Schubert #endif 452b15cb3dSCy Schubert ]) 462b15cb3dSCy Schubert 472b15cb3dSCy Schubert AC_ARG_ENABLE([nls], 482b15cb3dSCy Schubert AS_HELP_STRING([--disable-nls],[disable nls support in libopts])) 492b15cb3dSCy Schubert AS_IF([test "x$enable_nls" != "xno" && \ 502b15cb3dSCy Schubert test "X${ac_cv_header_libintl_h}" = Xyes], [ 512b15cb3dSCy Schubert AC_DEFINE([ENABLE_NLS],[1],[nls support in libopts])]) 52ea906c41SOllivier Robert 53ea906c41SOllivier Robert # -------------------------------------------- 54ea906c41SOllivier Robert # Verify certain entries from AC_CHECK_HEADERS 55ea906c41SOllivier Robert # -------------------------------------------- 562b15cb3dSCy Schubert [${lo_have_arg_hdr} || \ 572b15cb3dSCy Schubert ]AC_MSG_ERROR([you must have stdarg.h or varargs.h on your system])[ 582b15cb3dSCy Schubert 592b15cb3dSCy Schubert ${lo_have_str_hdr} || \ 602b15cb3dSCy Schubert ]AC_MSG_ERROR([you must have string.h or strings.h on your system])[ 612b15cb3dSCy Schubert 622b15cb3dSCy Schubert ${lo_have_lim_hdr} || \ 632b15cb3dSCy Schubert ]AC_MSG_ERROR( 642b15cb3dSCy Schubert [you must have one of limits.h, sys/limits.h or values.h])[ 652b15cb3dSCy Schubert 662b15cb3dSCy Schubert ${lo_have_typ_hdr} || \ 672b15cb3dSCy Schubert ]AC_MSG_ERROR([you must have inttypes.h or stdint.h on your system])[ 682b15cb3dSCy Schubert 692b15cb3dSCy Schubert for f in sys_types sys_param sys_stat string errno stdlib memory setjmp 702b15cb3dSCy Schubert do eval as_ac_var=\${ac_cv_header_${f}_h} 712b15cb3dSCy Schubert test "X${as_ac_var}" = Xyes || { 722b15cb3dSCy Schubert ]AC_MSG_ERROR([you must have ${f}.h on your system])[ 732b15cb3dSCy Schubert } 74ea906c41SOllivier Robert done 752b15cb3dSCy Schubert test "X${ac_cv_header_inttypes_h-no}" = Xyes || \ 762b15cb3dSCy Schubert echo '#include <stdint.h>' > inttypes.h] 77ea906c41SOllivier Robert 782b15cb3dSCy Schubert # ---------------------------------------------------------------------- 792b15cb3dSCy Schubert # Checks for typedefs 802b15cb3dSCy Schubert # ---------------------------------------------------------------------- 812b15cb3dSCy Schubert AC_CHECK_TYPES(wchar_t) 822b15cb3dSCy Schubert AC_CHECK_TYPES(wint_t, [], [], [ 832b15cb3dSCy Schubert AC_INCLUDES_DEFAULT 842b15cb3dSCy Schubert #if HAVE_RUNETYPE_H 852b15cb3dSCy Schubert # include <runetype.h> 862b15cb3dSCy Schubert #endif 872b15cb3dSCy Schubert #if HAVE_WCHAR_H 882b15cb3dSCy Schubert # include <wchar.h> 892b15cb3dSCy Schubert #endif 902b15cb3dSCy Schubert ]) 91ea906c41SOllivier Robert AC_CHECK_TYPES([int8_t, uint8_t, int16_t, uint16_t, int32_t, uint32_t, 922b15cb3dSCy Schubert intptr_t, uintptr_t, uint_t, pid_t, size_t, ptrdiff_t]) 932b15cb3dSCy Schubert AC_CHECK_SIZEOF(char *, 8) 94ea906c41SOllivier Robert AC_CHECK_SIZEOF(int, 4) 952b15cb3dSCy Schubert AC_CHECK_SIZEOF(long, 8) 96ea906c41SOllivier Robert AC_CHECK_SIZEOF(short, 2) 97ea906c41SOllivier Robert 982b15cb3dSCy Schubert # ------------ 992b15cb3dSCy Schubert # AC_CHECK_LIB 1002b15cb3dSCy Schubert # ------------ 101ea906c41SOllivier Robert AC_CHECK_LIB(gen, pathfind) 1022b15cb3dSCy Schubert AC_CHECK_LIB(intl,gettext) 103ea906c41SOllivier Robert AC_FUNC_VPRINTF 1042b15cb3dSCy Schubert AC_FUNC_FORK 1052b15cb3dSCy Schubert AC_CHECK_FUNCS([mmap canonicalize_file_name snprintf strdup strchr \ 1062b15cb3dSCy Schubert strrchr strsignal fchmod fstat chmod]) 1072b15cb3dSCy Schubert AC_PROG_SED 1082b15cb3dSCy Schubert [while : 1092b15cb3dSCy Schubert do 110*a466cc55SCy Schubert test -x "$POSIX_SHELL" && break 1112b15cb3dSCy Schubert POSIX_SHELL=`which bash` 1122b15cb3dSCy Schubert test -x "$POSIX_SHELL" && break 1132b15cb3dSCy Schubert POSIX_SHELL=`which dash` 1142b15cb3dSCy Schubert test -x "$POSIX_SHELL" && break 1152b15cb3dSCy Schubert POSIX_SHELL=/usr/xpg4/bin/sh 1162b15cb3dSCy Schubert test -x "$POSIX_SHELL" && break 1172b15cb3dSCy Schubert POSIX_SHELL=`/bin/sh -c ' 1182b15cb3dSCy Schubert exec 2>/dev/null 1192b15cb3dSCy Schubert if ! true ; then exit 1 ; fi 1202b15cb3dSCy Schubert echo /bin/sh'` 1212b15cb3dSCy Schubert test -x "$POSIX_SHELL" && break 1222b15cb3dSCy Schubert ]AC_MSG_ERROR([cannot locate a working POSIX shell])[ 1232b15cb3dSCy Schubert done] 1242b15cb3dSCy Schubert AC_DEFINE_UNQUOTED([POSIX_SHELL], ["${POSIX_SHELL}"], 1252b15cb3dSCy Schubert [define to a working POSIX compliant shell]) 1262b15cb3dSCy Schubert AC_SUBST([POSIX_SHELL]) 1272b15cb3dSCy Schubert]) 128ea906c41SOllivier Robert 129ea906c41SOllivier Robertdnl 130ea906c41SOllivier Robertdnl @synopsis INVOKE_LIBOPTS_MACROS 131ea906c41SOllivier Robertdnl 132ea906c41SOllivier Robertdnl This macro will invoke the AutoConf macros specified in libopts.def 133ea906c41SOllivier Robertdnl that have not been disabled with "omit-invocation". 134ea906c41SOllivier Robertdnl 135ea906c41SOllivier RobertAC_DEFUN([LIBOPTS_WITH_REGEX_HEADER],[ 136ea906c41SOllivier Robert AC_ARG_WITH([regex-header], 1372b15cb3dSCy Schubert AS_HELP_STRING([--with-regex-header], [a reg expr header is specified]), 138ea906c41SOllivier Robert [libopts_cv_with_regex_header=${with_regex_header}], 139ea906c41SOllivier Robert AC_CACHE_CHECK([whether a reg expr header is specified], libopts_cv_with_regex_header, 140ea906c41SOllivier Robert libopts_cv_with_regex_header=no) 141ea906c41SOllivier Robert ) # end of AC_ARG_WITH 142ea906c41SOllivier Robert if test "X${libopts_cv_with_regex_header}" != Xno 143ea906c41SOllivier Robert then 144ea906c41SOllivier Robert AC_DEFINE_UNQUOTED([REGEX_HEADER],[<${libopts_cv_with_regex_header}>]) 145ea906c41SOllivier Robert else 146ea906c41SOllivier Robert AC_DEFINE([REGEX_HEADER],[<regex.h>],[name of regex header file]) 147ea906c41SOllivier Robert fi 148ea906c41SOllivier Robert 149ea906c41SOllivier Robert]) # end of AC_DEFUN of LIBOPTS_WITH_REGEX_HEADER 150ea906c41SOllivier Robert 151ea906c41SOllivier Robert 152ea906c41SOllivier RobertAC_DEFUN([LIBOPTS_WITHLIB_REGEX],[ 153ea906c41SOllivier Robert AC_ARG_WITH([libregex], 1542b15cb3dSCy Schubert AS_HELP_STRING([--with-libregex], [libregex installation prefix]), 155ea906c41SOllivier Robert [libopts_cv_with_libregex_root=${with_libregex}], 156ea906c41SOllivier Robert AC_CACHE_CHECK([whether with-libregex was specified], libopts_cv_with_libregex_root, 157ea906c41SOllivier Robert libopts_cv_with_libregex_root=no) 158ea906c41SOllivier Robert ) # end of AC_ARG_WITH libregex 159ea906c41SOllivier Robert 1602b15cb3dSCy Schubert if test "${with_libregex+set}" = set && \ 1612b15cb3dSCy Schubert test "X${withval}" = Xno 162ea906c41SOllivier Robert then ## disabled by request 163ea906c41SOllivier Robert libopts_cv_with_libregex_root=no 164ea906c41SOllivier Robert libopts_cv_with_libregex_cflags=no 165ea906c41SOllivier Robert libopts_cv_with_libregex_libs=no 166ea906c41SOllivier Robert else 167ea906c41SOllivier Robert 168ea906c41SOllivier Robert AC_ARG_WITH([libregex-cflags], 1692b15cb3dSCy Schubert AS_HELP_STRING([--with-libregex-cflags], [libregex compile flags]), 1702b15cb3dSCy Schubert [libopts_cv_with_libregex_cflags=${with_libregex_cflags}], 171ea906c41SOllivier Robert AC_CACHE_CHECK([whether with-libregex-cflags was specified], libopts_cv_with_libregex_cflags, 172ea906c41SOllivier Robert libopts_cv_with_libregex_cflags=no) 173ea906c41SOllivier Robert ) # end of AC_ARG_WITH libregex-cflags 174ea906c41SOllivier Robert 175ea906c41SOllivier Robert AC_ARG_WITH([libregex-libs], 1762b15cb3dSCy Schubert AS_HELP_STRING([--with-libregex-libs], [libregex link command arguments]), 1772b15cb3dSCy Schubert [libopts_cv_with_libregex_libs=${with_libregex_libs}], 178ea906c41SOllivier Robert AC_CACHE_CHECK([whether with-libregex-libs was specified], libopts_cv_with_libregex_libs, 179ea906c41SOllivier Robert libopts_cv_with_libregex_libs=no) 180ea906c41SOllivier Robert ) # end of AC_ARG_WITH libregex-libs 181ea906c41SOllivier Robert 182ea906c41SOllivier Robert case "X${libopts_cv_with_libregex_cflags}" in 183ea906c41SOllivier Robert Xyes|Xno|X ) 184ea906c41SOllivier Robert case "X${libopts_cv_with_libregex_root}" in 185ea906c41SOllivier Robert Xyes|Xno|X ) libopts_cv_with_libregex_cflags=no ;; 186ea906c41SOllivier Robert * ) libopts_cv_with_libregex_cflags=-I${libopts_cv_with_libregex_root}/include ;; 187ea906c41SOllivier Robert esac 188ea906c41SOllivier Robert esac 189ea906c41SOllivier Robert case "X${libopts_cv_with_libregex_libs}" in 190ea906c41SOllivier Robert Xyes|Xno|X ) 191ea906c41SOllivier Robert case "X${libopts_cv_with_libregex_root}" in 192ea906c41SOllivier Robert Xyes|Xno|X ) libopts_cv_with_libregex_libs=no ;; 193ea906c41SOllivier Robert * ) libopts_cv_with_libregex_libs="-L${libopts_cv_with_libregex_root}/lib -lregex" ;; 194ea906c41SOllivier Robert esac 195ea906c41SOllivier Robert esac 196ea906c41SOllivier Robert libopts_save_CPPFLAGS="${CPPFLAGS}" 197ea906c41SOllivier Robert libopts_save_LIBS="${LIBS}" 198ea906c41SOllivier Robert case "X${libopts_cv_with_libregex_cflags}" in 199ea906c41SOllivier Robert Xyes|Xno|X ) 200ea906c41SOllivier Robert libopts_cv_with_libregex_cflags="" ;; 201ea906c41SOllivier Robert * ) CPPFLAGS="${CPPFLAGS} ${libopts_cv_with_libregex_cflags}" ;; 202ea906c41SOllivier Robert esac 203ea906c41SOllivier Robert case "X${libopts_cv_with_libregex_libs}" in 204ea906c41SOllivier Robert Xyes|Xno|X ) 205ea906c41SOllivier Robert libopts_cv_with_libregex_libs="" ;; 206ea906c41SOllivier Robert * ) 207ea906c41SOllivier Robert LIBS="${LIBS} ${libopts_cv_with_libregex_libs}" ;; 208ea906c41SOllivier Robert esac 209ea906c41SOllivier Robert LIBREGEX_CFLAGS="" 210ea906c41SOllivier Robert LIBREGEX_LIBS="" 211ea906c41SOllivier Robert AC_MSG_CHECKING([whether libregex functions properly]) 212ea906c41SOllivier Robert AC_CACHE_VAL([libopts_cv_with_libregex],[ 2132d4e511cSCy Schubert AC_RUN_IFELSE([AC_LANG_SOURCE([@%:@include <stdio.h> 214ea906c41SOllivier Robert@%:@include <stdlib.h> 215ea906c41SOllivier Robert@%:@include <sys/types.h> 216ea906c41SOllivier Robert@%:@include REGEX_HEADER 217ea906c41SOllivier Robertstatic regex_t re; 218ea906c41SOllivier Robertvoid comp_re(char const * pzPat) { 219ea906c41SOllivier Robert int res = regcomp( &re, pzPat, REG_EXTENDED|REG_ICASE|REG_NEWLINE ); 220ea906c41SOllivier Robert if (res == 0) return; 221ea906c41SOllivier Robert exit( res ); } 222ea906c41SOllivier Robertint main() { 223ea906c41SOllivier Robert regmatch_t m@<:@2@:>@; 224ea906c41SOllivier Robert comp_re( "^.*\@S|@" ); 225ea906c41SOllivier Robert comp_re( "()|no.*" ); 226ea906c41SOllivier Robert comp_re( "." ); 227ea906c41SOllivier Robert if (regexec( &re, "X", 2, m, 0 ) != 0) return 1; 228ea906c41SOllivier Robert if ((m@<:@0@:>@.rm_so != 0) || (m@<:@0@:>@.rm_eo != 1)) { 229ea906c41SOllivier Robert fputs( "error: regex -->.<-- did not match\n", stderr ); 230ea906c41SOllivier Robert return 1; 231ea906c41SOllivier Robert } 2322d4e511cSCy Schubert return 0; }] )], 233ea906c41SOllivier Robert [libopts_cv_with_libregex=yes], [libopts_cv_with_libregex=no], 2342b15cb3dSCy Schubert [libopts_cv_with_libregex=no]) # end of AC_RUN_IFELSE 235ea906c41SOllivier Robert ]) # end of AC_CACHE_VAL for libopts_cv_with_libregex 2362b15cb3dSCy Schubert fi ## disabled by request 237ea906c41SOllivier Robert AC_MSG_RESULT([${libopts_cv_with_libregex}]) 238ea906c41SOllivier Robert if test "X${libopts_cv_with_libregex}" != Xno 239ea906c41SOllivier Robert then 240ea906c41SOllivier Robert AC_DEFINE([WITH_LIBREGEX],[1], 241ea906c41SOllivier Robert [Define this if a working libregex can be found]) 242ea906c41SOllivier Robert else 243ea906c41SOllivier Robert CPPFLAGS="${libopts_save_CPPFLAGS}" 244ea906c41SOllivier Robert LIBS="${libopts_save_LIBS}" 2452b15cb3dSCy Schubert libopts_cv_with_libregex_root=no 2462b15cb3dSCy Schubertlibopts_cv_with_libregex_cflags=no 2472b15cb3dSCy Schubertlibopts_cv_with_libregex_libs=no 2482b15cb3dSCy Schubertlibopts_cv_with_libregex=no 249ea906c41SOllivier Robert fi 250ea906c41SOllivier Robert 251ea906c41SOllivier Robert]) # end of AC_DEFUN of LIBOPTS_WITHLIB_REGEX 252ea906c41SOllivier Robert 253ea906c41SOllivier Robert 254ea906c41SOllivier RobertAC_DEFUN([LIBOPTS_RUN_PATHFIND],[ 255ea906c41SOllivier Robert AC_MSG_CHECKING([whether pathfind(3) works]) 256ea906c41SOllivier Robert AC_CACHE_VAL([libopts_cv_run_pathfind],[ 2572d4e511cSCy Schubert AC_RUN_IFELSE([AC_LANG_SOURCE([@%:@include <string.h> 258ea906c41SOllivier Robert@%:@include <stdlib.h> 259ea906c41SOllivier Robertint main (int argc, char ** argv) { 260ea906c41SOllivier Robert char * pz = pathfind( getenv( "PATH" ), "sh", "x" ); 261ea906c41SOllivier Robert return (pz == 0) ? 1 : 0; 2622d4e511cSCy Schubert}] )], 263ea906c41SOllivier Robert [libopts_cv_run_pathfind=yes],[libopts_cv_run_pathfind=no],[libopts_cv_run_pathfind=no] 2642b15cb3dSCy Schubert ) # end of RUN_IFELSE 265ea906c41SOllivier Robert ]) # end of AC_CACHE_VAL for libopts_cv_run_pathfind 266ea906c41SOllivier Robert AC_MSG_RESULT([${libopts_cv_run_pathfind}]) 267ea906c41SOllivier Robert if test "X${libopts_cv_run_pathfind}" != Xno 268ea906c41SOllivier Robert then 269ea906c41SOllivier Robert AC_DEFINE([HAVE_PATHFIND],[1], 270ea906c41SOllivier Robert [Define this if pathfind(3) works]) 271ea906c41SOllivier Robert fi 272ea906c41SOllivier Robert 273ea906c41SOllivier Robert]) # end of AC_DEFUN of LIBOPTS_RUN_PATHFIND 274ea906c41SOllivier Robert 275ea906c41SOllivier Robert 276ea906c41SOllivier RobertAC_DEFUN([LIBOPTS_TEST_DEV_ZERO],[ 277ea906c41SOllivier Robert AC_MSG_CHECKING([whether /dev/zero is readable device]) 278ea906c41SOllivier Robert AC_CACHE_VAL([libopts_cv_test_dev_zero],[ 279ea906c41SOllivier Robert libopts_cv_test_dev_zero=`exec 2> /dev/null 280ea906c41SOllivier Robertdzero=\`ls -lL /dev/zero | egrep ^c......r\` 281ea906c41SOllivier Roberttest -z "${dzero}" && exit 1 282ea906c41SOllivier Robertecho ${dzero}` 2832b15cb3dSCy Schubert if test $? -ne 0 || test -z "$libopts_cv_test_dev_zero" 284ea906c41SOllivier Robert then libopts_cv_test_dev_zero=no 285ea906c41SOllivier Robert fi 286ea906c41SOllivier Robert ]) # end of CACHE_VAL of libopts_cv_test_dev_zero 287ea906c41SOllivier Robert AC_MSG_RESULT([${libopts_cv_test_dev_zero}]) 288ea906c41SOllivier Robert if test "X${libopts_cv_test_dev_zero}" != Xno 289ea906c41SOllivier Robert then 290ea906c41SOllivier Robert AC_DEFINE([HAVE_DEV_ZERO],[1], 291ea906c41SOllivier Robert [Define this if /dev/zero is readable device]) 292ea906c41SOllivier Robert fi 293ea906c41SOllivier Robert 294ea906c41SOllivier Robert]) # end of AC_DEFUN of LIBOPTS_TEST_DEV_ZERO 295ea906c41SOllivier Robert 296ea906c41SOllivier Robert 297ea906c41SOllivier RobertAC_DEFUN([LIBOPTS_RUN_REALPATH],[ 298ea906c41SOllivier Robert AC_MSG_CHECKING([whether we have a functional realpath(3C)]) 299ea906c41SOllivier Robert AC_CACHE_VAL([libopts_cv_run_realpath],[ 3002d4e511cSCy Schubert AC_RUN_IFELSE([AC_LANG_SOURCE([@%:@include <limits.h> 301ea906c41SOllivier Robert@%:@include <stdlib.h> 302ea906c41SOllivier Robertint main (int argc, char ** argv) { 303ea906c41SOllivier Robert@%:@ifndef PATH_MAX 304ea906c41SOllivier Robertchoke me!! 305ea906c41SOllivier Robert@%:@else 306ea906c41SOllivier Robert char zPath@<:@PATH_MAX+1@:>@; 307ea906c41SOllivier Robert@%:@endif 308ea906c41SOllivier Robert char *pz = realpath(argv@<:@0@:>@, zPath); 309ea906c41SOllivier Robert return (pz == zPath) ? 0 : 1; 3102d4e511cSCy Schubert}] )], 311ea906c41SOllivier Robert [libopts_cv_run_realpath=yes],[libopts_cv_run_realpath=no],[libopts_cv_run_realpath=no] 3122b15cb3dSCy Schubert ) # end of RUN_IFELSE 313ea906c41SOllivier Robert ]) # end of AC_CACHE_VAL for libopts_cv_run_realpath 314ea906c41SOllivier Robert AC_MSG_RESULT([${libopts_cv_run_realpath}]) 315ea906c41SOllivier Robert if test "X${libopts_cv_run_realpath}" != Xno 316ea906c41SOllivier Robert then 317ea906c41SOllivier Robert AC_DEFINE([HAVE_REALPATH],[1], 318ea906c41SOllivier Robert [Define this if we have a functional realpath(3C)]) 319ea906c41SOllivier Robert fi 320ea906c41SOllivier Robert 321ea906c41SOllivier Robert]) # end of AC_DEFUN of LIBOPTS_RUN_REALPATH 322ea906c41SOllivier Robert 323ea906c41SOllivier Robert 324ea906c41SOllivier RobertAC_DEFUN([LIBOPTS_RUN_STRFTIME],[ 325ea906c41SOllivier Robert AC_MSG_CHECKING([whether strftime() works]) 326ea906c41SOllivier Robert AC_CACHE_VAL([libopts_cv_run_strftime],[ 3272d4e511cSCy Schubert AC_RUN_IFELSE([AC_LANG_SOURCE([@%:@include <time.h> 328ea906c41SOllivier Robert@%:@include <string.h> 329ea906c41SOllivier Robertchar t_buf@<:@ 64 @:>@; 330ea906c41SOllivier Robertint main() { 331ea906c41SOllivier Robert static char const z@<:@@:>@ = "Thursday Aug 28 240"; 332ea906c41SOllivier Robert struct tm tm; 333ea906c41SOllivier Robert tm.tm_sec = 36; /* seconds after the minute @<:@0, 61@:>@ */ 334ea906c41SOllivier Robert tm.tm_min = 44; /* minutes after the hour @<:@0, 59@:>@ */ 335ea906c41SOllivier Robert tm.tm_hour = 12; /* hour since midnight @<:@0, 23@:>@ */ 336ea906c41SOllivier Robert tm.tm_mday = 28; /* day of the month @<:@1, 31@:>@ */ 337ea906c41SOllivier Robert tm.tm_mon = 7; /* months since January @<:@0, 11@:>@ */ 338ea906c41SOllivier Robert tm.tm_year = 86; /* years since 1900 */ 339ea906c41SOllivier Robert tm.tm_wday = 4; /* days since Sunday @<:@0, 6@:>@ */ 340ea906c41SOllivier Robert tm.tm_yday = 239; /* days since January 1 @<:@0, 365@:>@ */ 341ea906c41SOllivier Robert tm.tm_isdst = 1; /* flag for daylight savings time */ 342ea906c41SOllivier Robert strftime( t_buf, sizeof( t_buf ), "%A %b %d %j", &tm ); 3432d4e511cSCy Schubert return (strcmp( t_buf, z ) != 0); }] )], 344ea906c41SOllivier Robert [libopts_cv_run_strftime=yes],[libopts_cv_run_strftime=no],[libopts_cv_run_strftime=no] 3452b15cb3dSCy Schubert ) # end of RUN_IFELSE 346ea906c41SOllivier Robert ]) # end of AC_CACHE_VAL for libopts_cv_run_strftime 347ea906c41SOllivier Robert AC_MSG_RESULT([${libopts_cv_run_strftime}]) 348ea906c41SOllivier Robert if test "X${libopts_cv_run_strftime}" != Xno 349ea906c41SOllivier Robert then 350ea906c41SOllivier Robert AC_DEFINE([HAVE_STRFTIME],[1], 351ea906c41SOllivier Robert [Define this if strftime() works]) 352ea906c41SOllivier Robert fi 353ea906c41SOllivier Robert 354ea906c41SOllivier Robert]) # end of AC_DEFUN of LIBOPTS_RUN_STRFTIME 355ea906c41SOllivier Robert 356ea906c41SOllivier Robert 357ea906c41SOllivier RobertAC_DEFUN([LIBOPTS_RUN_FOPEN_BINARY],[ 358ea906c41SOllivier Robert AC_MSG_CHECKING([whether fopen accepts "b" mode]) 359ea906c41SOllivier Robert AC_CACHE_VAL([libopts_cv_run_fopen_binary],[ 3602d4e511cSCy Schubert AC_RUN_IFELSE([AC_LANG_SOURCE([@%:@include <stdio.h> 361ea906c41SOllivier Robertint main (int argc, char ** argv) { 362ea906c41SOllivier RobertFILE * fp = fopen("conftest.@S|@ac_ext", "rb"); 3632d4e511cSCy Schubertreturn (fp == NULL) ? 1 : fclose(fp); }] )], 364ea906c41SOllivier Robert [libopts_cv_run_fopen_binary=yes],[libopts_cv_run_fopen_binary=no],[libopts_cv_run_fopen_binary=no] 3652b15cb3dSCy Schubert ) # end of RUN_IFELSE 366ea906c41SOllivier Robert ]) # end of AC_CACHE_VAL for libopts_cv_run_fopen_binary 367ea906c41SOllivier Robert AC_MSG_RESULT([${libopts_cv_run_fopen_binary}]) 368ea906c41SOllivier Robert if test "X${libopts_cv_run_fopen_binary}" != Xno 369ea906c41SOllivier Robert then 370ea906c41SOllivier Robert AC_DEFINE([FOPEN_BINARY_FLAG],"b", 371ea906c41SOllivier Robert [fopen(3) accepts a 'b' in the mode flag]) 372ea906c41SOllivier Robert else 373ea906c41SOllivier Robert AC_DEFINE([FOPEN_BINARY_FLAG],"", 374ea906c41SOllivier Robert [fopen(3) accepts a 'b' in the mode flag]) 375ea906c41SOllivier Robert fi 376ea906c41SOllivier Robert 377ea906c41SOllivier Robert]) # end of AC_DEFUN of LIBOPTS_RUN_FOPEN_BINARY 378ea906c41SOllivier Robert 379ea906c41SOllivier Robert 380ea906c41SOllivier RobertAC_DEFUN([LIBOPTS_RUN_FOPEN_TEXT],[ 381ea906c41SOllivier Robert AC_MSG_CHECKING([whether fopen accepts "t" mode]) 382ea906c41SOllivier Robert AC_CACHE_VAL([libopts_cv_run_fopen_text],[ 3832d4e511cSCy Schubert AC_RUN_IFELSE([AC_LANG_SOURCE([@%:@include <stdio.h> 384ea906c41SOllivier Robertint main (int argc, char ** argv) { 385ea906c41SOllivier RobertFILE * fp = fopen("conftest.@S|@ac_ext", "rt"); 3862d4e511cSCy Schubertreturn (fp == NULL) ? 1 : fclose(fp); }] )], 387ea906c41SOllivier Robert [libopts_cv_run_fopen_text=yes],[libopts_cv_run_fopen_text=no],[libopts_cv_run_fopen_text=no] 3882b15cb3dSCy Schubert ) # end of RUN_IFELSE 389ea906c41SOllivier Robert ]) # end of AC_CACHE_VAL for libopts_cv_run_fopen_text 390ea906c41SOllivier Robert AC_MSG_RESULT([${libopts_cv_run_fopen_text}]) 391ea906c41SOllivier Robert if test "X${libopts_cv_run_fopen_text}" != Xno 392ea906c41SOllivier Robert then 393ea906c41SOllivier Robert AC_DEFINE([FOPEN_TEXT_FLAG],"t", 394ea906c41SOllivier Robert [fopen(3) accepts a 't' in the mode flag]) 395ea906c41SOllivier Robert else 396ea906c41SOllivier Robert AC_DEFINE([FOPEN_TEXT_FLAG],"", 397ea906c41SOllivier Robert [fopen(3) accepts a 't' in the mode flag]) 398ea906c41SOllivier Robert fi 399ea906c41SOllivier Robert 400ea906c41SOllivier Robert]) # end of AC_DEFUN of LIBOPTS_RUN_FOPEN_TEXT 401ea906c41SOllivier Robert 402ea906c41SOllivier Robert 403ea906c41SOllivier RobertAC_DEFUN([LIBOPTS_DISABLE_OPTIONAL_ARGS],[ 404ea906c41SOllivier Robert AC_ARG_ENABLE([optional-args], 4052b15cb3dSCy Schubert AS_HELP_STRING([--disable-optional-args], [not wanting optional option args]), 406ea906c41SOllivier Robert [libopts_cv_enable_optional_args=${enable_optional_args}], 407ea906c41SOllivier Robert AC_CACHE_CHECK([whether not wanting optional option args], libopts_cv_enable_optional_args, 408ea906c41SOllivier Robert libopts_cv_enable_optional_args=yes) 409ea906c41SOllivier Robert ) # end of AC_ARG_ENABLE 410ea906c41SOllivier Robert if test "X${libopts_cv_enable_optional_args}" = Xno 411ea906c41SOllivier Robert then 412ea906c41SOllivier Robert AC_DEFINE([NO_OPTIONAL_OPT_ARGS], [1], 413ea906c41SOllivier Robert [Define this if optional arguments are disallowed]) 414ea906c41SOllivier Robert fi 415ea906c41SOllivier Robert 416ea906c41SOllivier Robert]) # end of AC_DEFUN of LIBOPTS_DISABLE_OPTIONAL_ARGS 417ea906c41SOllivier Robert 418ea906c41SOllivier Robert 419ea906c41SOllivier RobertAC_DEFUN([INVOKE_LIBOPTS_MACROS],[ 4202b15cb3dSCy Schubert AC_REQUIRE([INVOKE_LIBOPTS_MACROS_FIRST]) 421ea906c41SOllivier Robert # Check to see if a reg expr header is specified. 422ea906c41SOllivier Robert LIBOPTS_WITH_REGEX_HEADER 423ea906c41SOllivier Robert 424ea906c41SOllivier Robert # Check to see if a working libregex can be found. 425ea906c41SOllivier Robert LIBOPTS_WITHLIB_REGEX 426ea906c41SOllivier Robert 427ea906c41SOllivier Robert # Check to see if pathfind(3) works. 428ea906c41SOllivier Robert LIBOPTS_RUN_PATHFIND 429ea906c41SOllivier Robert 430ea906c41SOllivier Robert # Check to see if /dev/zero is readable device. 431ea906c41SOllivier Robert LIBOPTS_TEST_DEV_ZERO 432ea906c41SOllivier Robert 433ea906c41SOllivier Robert # Check to see if we have a functional realpath(3C). 434ea906c41SOllivier Robert LIBOPTS_RUN_REALPATH 435ea906c41SOllivier Robert 436ea906c41SOllivier Robert # Check to see if strftime() works. 437ea906c41SOllivier Robert LIBOPTS_RUN_STRFTIME 438ea906c41SOllivier Robert 439ea906c41SOllivier Robert # Check to see if fopen accepts "b" mode. 440ea906c41SOllivier Robert LIBOPTS_RUN_FOPEN_BINARY 441ea906c41SOllivier Robert 442ea906c41SOllivier Robert # Check to see if fopen accepts "t" mode. 443ea906c41SOllivier Robert LIBOPTS_RUN_FOPEN_TEXT 444ea906c41SOllivier Robert 445ea906c41SOllivier Robert # Check to see if not wanting optional option args. 446ea906c41SOllivier Robert LIBOPTS_DISABLE_OPTIONAL_ARGS 447ea906c41SOllivier Robert 448ea906c41SOllivier Robert]) # end AC_DEFUN of INVOKE_LIBOPTS_MACROS 449ea906c41SOllivier Robert 450ea906c41SOllivier Robertdnl @synopsis LIBOPTS_CHECK 451ea906c41SOllivier Robertdnl 452ea906c41SOllivier Robertdnl If autoopts-config works, add the linking information to LIBS. 453ea906c41SOllivier Robertdnl Otherwise, add ``libopts-${ao_rev}'' to SUBDIRS and run all 454ea906c41SOllivier Robertdnl the config tests that the library needs. Invoke the 455ea906c41SOllivier Robertdnl "INVOKE_LIBOPTS_MACROS" macro iff we are building libopts. 456ea906c41SOllivier Robertdnl 4572b15cb3dSCy Schubertdnl This file is part of AutoGen. 458*a466cc55SCy Schubertdnl AutoGen Copyright (C) 1992-2018 by Bruce Korb - all rights reserved 4592b15cb3dSCy Schubertdnl 4602b15cb3dSCy Schubertdnl AutoGen is free software: you can redistribute it and/or modify it 4612b15cb3dSCy Schubertdnl under the terms of the GNU General Public License as published by the 4622b15cb3dSCy Schubertdnl Free Software Foundation, either version 3 of the License, or 4632b15cb3dSCy Schubertdnl (at your option) any later version. 4642b15cb3dSCy Schubertdnl 4652b15cb3dSCy Schubertdnl AutoGen is distributed in the hope that it will be useful, but 4662b15cb3dSCy Schubertdnl WITHOUT ANY WARRANTY; without even the implied warranty of 4672b15cb3dSCy Schubertdnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 4682b15cb3dSCy Schubertdnl See the GNU General Public License for more details. 4692b15cb3dSCy Schubertdnl 4702b15cb3dSCy Schubertdnl You should have received a copy of the GNU General Public License along 4712b15cb3dSCy Schubertdnl with this program. If not, see <http://www.gnu.org/licenses/>. 4722b15cb3dSCy Schubertdnl 473ea906c41SOllivier Robertdnl Default to system libopts 474ea906c41SOllivier Robertdnl 4752b15cb3dSCy SchubertAC_DEFUN([LIBOPTS_CHECK_COMMON],[ 4762b15cb3dSCy Schubert AC_REQUIRE([INVOKE_LIBOPTS_MACROS_FIRST]) 477ea906c41SOllivier Robert [NEED_LIBOPTS_DIR=''] 478ea906c41SOllivier Robert m4_pushdef([AO_Libopts_Dir], 479ea906c41SOllivier Robert [ifelse($1, , [libopts], [$1])]) 480ea906c41SOllivier Robert AC_ARG_ENABLE([local-libopts], 481ea906c41SOllivier Robert AC_HELP_STRING([--enable-local-libopts], 4822b15cb3dSCy Schubert [Use the supplied libopts tearoff code]),[ 483ea906c41SOllivier Robert if test x$enableval = xyes ; then 484ea906c41SOllivier Robert AC_MSG_NOTICE([Using supplied libopts tearoff]) 485ea906c41SOllivier Robert LIBOPTS_CFLAGS='-I$(top_srcdir)/AO_Libopts_Dir' 486ea906c41SOllivier Robert NEED_LIBOPTS_DIR=true 4872b15cb3dSCy Schubert LIBOPTS_LDADD='$(top_builddir)/AO_Libopts_Dir/libopts.la' 488ea906c41SOllivier Robert fi]) 489ea906c41SOllivier Robert 490ea906c41SOllivier Robert AC_ARG_ENABLE([libopts-install], 4912b15cb3dSCy Schubert AC_HELP_STRING([--enable-libopts-install], 4922b15cb3dSCy Schubert [Install libopts with client installation])) 4932b15cb3dSCy Schubert AM_CONDITIONAL([INSTALL_LIBOPTS],[test "X${enable_libopts_install}" = Xyes]) 494ea906c41SOllivier Robert 495ea906c41SOllivier Robert [if test -z "${NEED_LIBOPTS_DIR}" ; then] 496ea906c41SOllivier Robert AC_MSG_CHECKING([whether autoopts-config can be found]) 497ea906c41SOllivier Robert AC_ARG_WITH([autoopts-config], 498ea906c41SOllivier Robert AC_HELP_STRING([--with-autoopts-config], 499ea906c41SOllivier Robert [specify the config-info script]), 500ea906c41SOllivier Robert [lo_cv_with_autoopts_config=${with_autoopts_config}], 501ea906c41SOllivier Robert AC_CACHE_CHECK([whether autoopts-config is specified], 502ea906c41SOllivier Robert [lo_cv_with_autoopts_config], 503ea906c41SOllivier Robert [if autoopts-config --help 2>/dev/null 1>&2 504ea906c41SOllivier Robert then lo_cv_with_autoopts_config=autoopts-config 505ea906c41SOllivier Robert elif libopts-config --help 2>/dev/null 1>&2 506ea906c41SOllivier Robert then lo_cv_with_autoopts_config=libopts-config 507ea906c41SOllivier Robert else lo_cv_with_autoopts_config=no ; fi]) 508ea906c41SOllivier Robert ) # end of AC_ARG_WITH 509ea906c41SOllivier Robert 510ea906c41SOllivier Robert AC_CACHE_VAL([lo_cv_test_autoopts],[ 511ea906c41SOllivier Robert if test -z "${lo_cv_with_autoopts_config}" \ 512ea906c41SOllivier Robert -o X"${lo_cv_with_autoopts_config}" = Xno 513ea906c41SOllivier Robert then 514ea906c41SOllivier Robert if autoopts-config --help 2>/dev/null 1>&2 515ea906c41SOllivier Robert then lo_cv_with_autoopts_config=autoopts-config 516ea906c41SOllivier Robert elif libopts-config --help 2>/dev/null 1>&2 517ea906c41SOllivier Robert then lo_cv_with_autoopts_config=libopts-config 518ea906c41SOllivier Robert else lo_cv_with_autoopts_config=false ; fi 519ea906c41SOllivier Robert fi 520ea906c41SOllivier Robert lo_cv_test_autoopts=` 521ea906c41SOllivier Robert ${lo_cv_with_autoopts_config} --libs` 2> /dev/null 522ea906c41SOllivier Robert if test $? -ne 0 -o -z "${lo_cv_test_autoopts}" 523ea906c41SOllivier Robert then lo_cv_test_autoopts=no ; fi 524ea906c41SOllivier Robert ]) # end of CACHE_VAL 525ea906c41SOllivier Robert AC_MSG_RESULT([${lo_cv_test_autoopts}]) 526ea906c41SOllivier Robert 527ea906c41SOllivier Robert [if test "X${lo_cv_test_autoopts}" != Xno 528ea906c41SOllivier Robert then 529ea906c41SOllivier Robert LIBOPTS_LDADD="${lo_cv_test_autoopts}" 530ea906c41SOllivier Robert LIBOPTS_CFLAGS="`${lo_cv_with_autoopts_config} --cflags`" 531ea906c41SOllivier Robert else 532ea906c41SOllivier Robert LIBOPTS_LDADD='$(top_builddir)/]AO_Libopts_Dir[/libopts.la' 533ea906c41SOllivier Robert LIBOPTS_CFLAGS='-I$(top_srcdir)/]AO_Libopts_Dir[' 534ea906c41SOllivier Robert NEED_LIBOPTS_DIR=true 535ea906c41SOllivier Robert fi 5362b15cb3dSCy Schubert fi # end of if test -z "${NEED_LIBOPTS_DIR}" 5372b15cb3dSCy Schubert if test -n "${LIBOPTS_BUILD_BLOCKED}" ; then 5382b15cb3dSCy Schubert NEED_LIBOPTS_DIR='' 5392b15cb3dSCy Schubert fi] 540ea906c41SOllivier Robert AM_CONDITIONAL([NEED_LIBOPTS], [test -n "${NEED_LIBOPTS_DIR}"]) 541ea906c41SOllivier Robert AC_SUBST(LIBOPTS_LDADD) 542ea906c41SOllivier Robert AC_SUBST(LIBOPTS_CFLAGS) 543ea906c41SOllivier Robert AC_SUBST(LIBOPTS_DIR, AO_Libopts_Dir) 544ea906c41SOllivier Robert m4_popdef([AO_Libopts_Dir]) 5452b15cb3dSCy Schubert[# end of AC_DEFUN of LIBOPTS_CHECK_COMMON] 5462b15cb3dSCy Schubert]) 5472b15cb3dSCy Schubertdnl 5482b15cb3dSCy Schubertdnl AC_CONFIG_FILES conditionalization requires using AM_COND_IF, however 5492b15cb3dSCy Schubertdnl AM_COND_IF is new to Automake 1.11. To use it on new Automake without 5502b15cb3dSCy Schubertdnl requiring same, a fallback implementation for older Automake is provided. 5512b15cb3dSCy Schubertdnl Note that disabling of AC_CONFIG_FILES requires Automake 1.11, this code 5522b15cb3dSCy Schubertdnl is correct only in terms of m4sh generated script. 5532b15cb3dSCy Schubertdnl 5542b15cb3dSCy Schubertm4_ifndef([AM_COND_IF], 5552b15cb3dSCy Schubert [AC_DEFUN([AM_COND_IF], [ 5562b15cb3dSCy Schubert if test -z "$$1_TRUE"; then : 5572b15cb3dSCy Schubert m4_n([$2])[]dnl 5582b15cb3dSCy Schubert m4_ifval([$3],[ 559ea906c41SOllivier Robert else 5602b15cb3dSCy Schubert $3 5612b15cb3dSCy Schubert ])dnl 5622b15cb3dSCy Schubert fi[]dnl 5632b15cb3dSCy Schubert ])dnl 5642b15cb3dSCy Schubert]) 5652b15cb3dSCy Schubertdnl 5662b15cb3dSCy SchubertAC_DEFUN([LIBOPTS_CHECK_NOBUILD], [ 5672b15cb3dSCy Schubert m4_pushdef([AO_Libopts_Dir], 5682b15cb3dSCy Schubert [ifelse($1, , [libopts], [$1])]) 5692b15cb3dSCy Schubert LIBOPTS_BUILD_BLOCKED=true 5702b15cb3dSCy Schubert LIBOPTS_CHECK_COMMON(AO_Libopts_Dir) 5712b15cb3dSCy Schubert m4_popdef([AO_Libopts_Dir])dnl 5722b15cb3dSCy Schubert# end of AC_DEFUN of LIBOPTS_CHECK_NOBUILD 5732b15cb3dSCy Schubert]) 5742b15cb3dSCy Schubertdnl 5752b15cb3dSCy SchubertAC_DEFUN([LIBOPTS_CHECK], [ 5762b15cb3dSCy Schubert m4_pushdef([AO_Libopts_Dir], 5772b15cb3dSCy Schubert [ifelse($1, , [libopts], [$1])]) 5782b15cb3dSCy Schubert LIBOPTS_BUILD_BLOCKED='' 5792b15cb3dSCy Schubert LIBOPTS_CHECK_COMMON(AO_Libopts_Dir) 5802b15cb3dSCy Schubert AM_COND_IF([NEED_LIBOPTS], [ 5812b15cb3dSCy Schubert INVOKE_LIBOPTS_MACROS 5822b15cb3dSCy Schubert ]) 5832b15cb3dSCy Schubert AC_CONFIG_FILES(AO_Libopts_Dir/Makefile) 5842b15cb3dSCy Schubert m4_popdef([AO_Libopts_Dir])dnl 5852b15cb3dSCy Schubert# end of AC_DEFUN of LIBOPTS_CHECK 586ea906c41SOllivier Robert]) 587