Split setenv module into setenv and unsetenv. Get rid of setenv.h.
[gnulib.git] / m4 / setenv.m4
1 # setenv.m4 serial 9
2 dnl Copyright (C) 2001-2004, 2006-2007 Free Software Foundation, Inc.
3 dnl This file is free software; the Free Software Foundation
4 dnl gives unlimited permission to copy and/or distribute it,
5 dnl with or without modifications, as long as this notice is preserved.
6
7 AC_DEFUN([gl_FUNC_SETENV],
8 [
9   AC_REQUIRE([gl_STDLIB_H_DEFAULTS])
10   AC_CHECK_FUNCS_ONCE([setenv])
11   if test $ac_cv_func_setenv = no; then
12     HAVE_SETENV=0
13     AC_LIBOBJ([setenv])
14     gl_PREREQ_SETENV
15   fi
16 ])
17
18 # Like gl_FUNC_SETENV, except prepare for separate compilation (no AC_LIBOBJ).
19 AC_DEFUN([gl_FUNC_SETENV_SEPARATE],
20 [
21   AC_REQUIRE([gl_STDLIB_H_DEFAULTS])
22   AC_CHECK_FUNCS_ONCE([setenv])
23   if test $ac_cv_func_setenv = no; then
24     HAVE_SETENV=0
25   fi
26   gl_PREREQ_SETENV
27 ])
28
29 AC_DEFUN([gl_FUNC_UNSETENV],
30 [
31   AC_REQUIRE([gl_STDLIB_H_DEFAULTS])
32   AC_CHECK_FUNCS([unsetenv])
33   if test $ac_cv_func_unsetenv = no; then
34     HAVE_UNSETENV=0
35     AC_LIBOBJ([unsetenv])
36     gl_PREREQ_UNSETENV
37   else
38     AC_CACHE_CHECK([for unsetenv() return type], gt_cv_func_unsetenv_ret,
39       [AC_TRY_COMPILE([#include <stdlib.h>
40 extern
41 #ifdef __cplusplus
42 "C"
43 #endif
44 #if defined(__STDC__) || defined(__cplusplus)
45 int unsetenv (const char *name);
46 #else
47 int unsetenv();
48 #endif
49 ], , gt_cv_func_unsetenv_ret='int', gt_cv_func_unsetenv_ret='void')])
50     if test $gt_cv_func_unsetenv_ret = 'void'; then
51       VOID_UNSETENV=1
52     fi
53   fi
54 ])
55
56 # Check if a variable is properly declared.
57 # gt_CHECK_VAR_DECL(includes,variable)
58 AC_DEFUN([gt_CHECK_VAR_DECL],
59 [
60   define([gt_cv_var], [gt_cv_var_]$2[_declaration])
61   AC_MSG_CHECKING([if $2 is properly declared])
62   AC_CACHE_VAL(gt_cv_var, [
63     AC_TRY_COMPILE([$1
64       extern struct { int foo; } $2;],
65       [$2.foo = 1;],
66       gt_cv_var=no,
67       gt_cv_var=yes)])
68   AC_MSG_RESULT($gt_cv_var)
69   if test $gt_cv_var = yes; then
70     AC_DEFINE([HAVE_]translit($2, [a-z], [A-Z])[_DECL], 1,
71               [Define if you have the declaration of $2.])
72   fi
73 ])
74
75 # Prerequisites of lib/setenv.c.
76 AC_DEFUN([gl_PREREQ_SETENV],
77 [
78   AC_REQUIRE([AC_FUNC_ALLOCA])
79   AC_CHECK_HEADERS_ONCE(unistd.h)
80   AC_CHECK_HEADERS(search.h)
81   AC_CHECK_FUNCS(tsearch)
82   gt_CHECK_VAR_DECL([#include <unistd.h>], environ)
83 ])
84
85 # Prerequisites of lib/unsetenv.c.
86 AC_DEFUN([gl_PREREQ_UNSETENV],
87 [
88   AC_CHECK_HEADERS_ONCE(unistd.h)
89   gt_CHECK_VAR_DECL([#include <unistd.h>], environ)
90 ])