Mercurial > octave
view kpathsea/common.ac @ 3000:86d3a6fc4c84
[project @ 1997-05-23 03:09:13 by jwe]
author | jwe |
---|---|
date | Fri, 23 May 1997 03:10:11 +0000 |
parents | faa5d0421460 |
children | 0d37334d13ab |
line wrap: on
line source
dnl Common Autoconf sinclude file for kpathsea-using programs. (Have to dnl use the m4 `sinclude' builtin instead of `include', since Autoconf dnl disables `include'.) dnl Write output here, instead of putting a zillion -D's on the command line. AC_CONFIG_HEADER(c-auto.h) AC_PROG_CC AC_PROG_INSTALL AC_PROG_MAKE_SET AC_HEADER_DIRENT AC_HEADER_STDC AC_FUNC_CLOSEDIR_VOID AC_CHECK_HEADERS(assert.h float.h limits.h memory.h pwd.h stdlib.h \ string.h sys/param.h unistd.h) dnl We would to do the klibtool stuff only in kpathsea (i.e., in dnl kpathsea/configure.in instead of here in common.ac), but then dnl HAVE_BASENAME etc. are not defined when compiling the programs, dnl because <kpathsea/config.h> includes <c-auto.h> (the programs'), dnl not <kpathsea/c-auto.h>. Should it include both? But then we will dnl have many benign redefinitions that some compilers may not consider dnl benign. And it's a big change. sinclude(acklibtool.m4) kb_AC_PROG_LIBTOOL dnl If the list of functions here changes, also change acconfig.h. */ kb_AC_KLIBTOOL_REPLACE_FUNCS(basename putenv strcasecmp strtol strstr) AC_CHECK_FUNCS(bcopy getwd) AC_C_CONST # This is a GNU libc invention. AC_MSG_CHECKING(whether program_invocation_name is predefined) AC_CACHE_VAL(kb_cv_var_program_inv_name, [AC_TRY_LINK(, [main() { program_invocation_name = "love"; }], kb_cv_var_program_inv_name=yes, kb_cv_var_program_inv_name=no)])dnl AC_MSG_RESULT($kb_cv_var_program_inv_name) if test "$kb_cv_var_program_inv_name" = yes; then AC_DEFINE(HAVE_PROGRAM_INVOCATION_NAME) fi # Some BSD putenv's, e.g., FreeBSD, do malloc/free's on the environment. # This test program is due to Mike Hibler <mike@cs.utah.edu>. # We don't actually need to run this if we don't have putenv, but it # doesn't hurt. AC_MSG_CHECKING(whether putenv uses malloc) AC_CACHE_VAL(kb_cv_func_putenv_malloc, [AC_TRY_RUN([ #define VAR "YOW_VAR" #define STRING1 "GabbaGabbaHey" #define STRING2 "Yow!!" /* should be shorter than STRING1 */ extern char *getenv (); /* in case char* and int don't mix gracefully */ main () { char *str1, *rstr1, *str2, *rstr2; str1 = getenv (VAR); if (str1) exit (1); str1 = malloc (strlen (VAR) + 1 + strlen (STRING1) + 1); if (str1 == 0) exit (2); strcpy (str1, VAR); strcat (str1, "="); strcat (str1, STRING1); if (putenv (str1) < 0) exit (3); rstr1 = getenv (VAR); if (rstr1 == 0) exit (4); rstr1 -= strlen (VAR) + 1; if (strncmp (rstr1, VAR, strlen (VAR))) exit (5); str2 = malloc (strlen (VAR) + 1 + strlen (STRING2) + 1); if (str2 == 0 || str1 == str2) exit (6); strcpy (str2, VAR); strcat (str2, "="); strcat (str2, STRING2); if (putenv (str2) < 0) exit (7); rstr2 = getenv (VAR); if (rstr2 == 0) exit (8); rstr2 -= strlen (VAR) + 1; #if 0 printf ("rstr1=0x%x, rstr2=0x%x\n", rstr1, rstr2); /* * If string from first call was reused for the second call, * you had better not do a free on the first string! */ if (rstr1 == rstr2) printf ("#define SMART_PUTENV\n"); else printf ("#undef SMART_PUTENV\n"); #endif exit (rstr1 == rstr2 ? 0 : 1); }], kb_cv_func_putenv_malloc=yes, kb_cv_func_putenv_malloc=no, kb_cv_func_putenv_malloc=no)])dnl AC_MSG_RESULT($kb_cv_func_putenv_malloc) if test $kb_cv_func_putenv_malloc = yes; then AC_DEFINE(SMART_PUTENV) fi # Common --with and --enable options. sinclude(../kpathsea/withenable.ac)