From 7e50a3977327c52e9e04f9cf3ac1cd0a54f042b2 Mon Sep 17 00:00:00 2001 From: zwelch Date: Wed, 6 May 2009 07:17:57 +0000 Subject: [PATCH] Add autoconf check to determine where environ should be declared. git-svn-id: svn://svn.berlios.de/openocd/trunk@1610 b42882b7-edfa-0310-969c-e2dbd0fdcd60 --- configure.in | 31 +++++++++++++++++++++++++++++++ src/helper/jim.c | 2 +- 2 files changed, 32 insertions(+), 1 deletion(-) diff --git a/configure.in b/configure.in index 3b1d49e4f..50c149a83 100644 --- a/configure.in +++ b/configure.in @@ -784,6 +784,37 @@ AC_PROG_CC AM_PROG_CC_C_O AC_PROG_RANLIB +# Look for environ alternatives. Possibility #1: is environ in unistd.h? +AC_MSG_CHECKING([for environ in unistd.h]) +AC_COMPILE_IFELSE([ +#define _GNU_SOURCE +#include +int main(int argc, char **argv) { char **ep = environ; } + ], [ + AC_MSG_RESULT([yes]) + has_environ=yes + ], [ + AC_MSG_RESULT([no]) + + # Possibility #2: can environ be found in an available library? + AC_MSG_CHECKING([for extern environ]) + AC_LINK_IFELSE([ +extern char **environ; +int main(int argc, char **argv) { char **ep = environ; } + ], [ + AC_DEFINE(NEED_ENVIRON_EXTERN, [1], [Must declare 'environ' to use it.]) + has_environ=yes + ], [ + has_environ=no + ]) + AC_MSG_RESULT([${has_environ}]) + ]) + +if test "${has_environ}" != "yes" ; then + AC_MSG_FAILURE([Could find 'environ' in unistd.h or available libraries.]) +fi + + # set default gcc warnings GCC_WARNINGS="-Wall -Wstrict-prototypes -Wformat-security" if test "${gcc_wextra}" = yes; then diff --git a/src/helper/jim.c b/src/helper/jim.c index 32c146fa8..05236fc20 100644 --- a/src/helper/jim.c +++ b/src/helper/jim.c @@ -11984,7 +11984,7 @@ static int Jim_EnvCoreCommand(Jim_Interp *interp, int argc, if (argc == 1) { -#if !defined(HAVE_UNISTD_H) || !defined(__GNU_LIBRARY__) +#ifdef NEED_ENVIRON_EXTERN extern char **environ; #endif