summaryrefslogtreecommitdiff
path: root/configure.in
blob: d7bd71b521ef60b799fe0967e74ef9cf21f6c028 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
dnl Process this file with autoconf to produce a configure script.
AC_REVISION([$Id$])
AC_PREREQ(2.13)dnl		dnl Minimum Autoconf version required.
AC_INIT(vpath.c)dnl		dnl A distinctive file to look for in srcdir.

AM_INIT_AUTOMAKE(make, 3.78.90)
AM_CONFIG_HEADER(config.h)

dnl Regular configure stuff

AC_CANONICAL_HOST
AC_PROG_MAKE_SET
AC_PROG_CC
AC_PROG_INSTALL
AC_CHECK_PROG(AR, ar, ar, ar)
AC_PROG_RANLIB
AC_PROG_CPP			dnl Later checks need this.
AC_AIX
AC_ISC_POSIX
AC_MINIX

AC_CHECK_PROG(PERL, perl, perl, perl)	dnl Needed for the test suite (only)

dnl This test must come as early as possible after the compiler configuration
dnl tests, because the choice of the file model can (in principle) affect
dnl whether functions and headers are available, whether they work, etc.
AC_SYS_LARGEFILE

AC_HEADER_STDC
AC_HEADER_DIRENT
AC_TYPE_UID_T			dnl Also does gid_t.
AC_TYPE_PID_T
AC_TYPE_SIGNAL
AC_CHECK_HEADERS(stdlib.h unistd.h limits.h sys/param.h fcntl.h string.h \
		 memory.h sys/timeb.h)
AC_PROG_CC_C_O
AM_PROG_CC_STDC
AC_C_CONST			dnl getopt needs this.
AC_C_INLINE			dnl gettext needs this.
AC_HEADER_STAT

AC_STRUCT_ST_MTIM_NSEC
jm_AC_TYPE_UINTMAX_T

AC_SUBST(LIBOBJS)

AC_DEFUN(AC_CHECK_SYMBOL, [dnl
AC_MSG_CHECKING(for $1)
AC_CACHE_VAL(ac_cv_check_symbol_$1, [dnl
AC_TRY_LINK(, [extern char *sys_siglist[]; puts(*sys_siglist);],
	    ac_cv_check_symbol_$1=yes, ac_cv_check_symbol_$1=no)])
if test "$ac_cv_check_symbol_$1" = yes; then
changequote(,)dnl
  ac_tr_symbol=`echo $1 | tr '[a-z]' '[A-Z]'`
changequote([,])dnl
  AC_DEFINE_UNQUOTED(HAVE_${ac_tr_symbol})
fi
AC_MSG_RESULT($ac_cv_check_symbol_$1)])dnl

# clock_gettime is in -lposix4 in Solaris 2.6.
AC_CHECK_LIB(posix4, clock_gettime)

AC_CHECK_FUNCS(memmove strchr memcpy strdup psignal mktemp pstat_getdynamic \
	       clock_gettime dup2 getcwd sigsetmask sigaction getgroups \
	       setlinebuf seteuid setegid setreuid setregid pipe \
	       strerror strsignal)
AC_CHECK_SYMBOL(sys_siglist)
AC_FUNC_ALLOCA
AC_FUNC_VFORK
AC_FUNC_VPRINTF
AC_FUNC_STRCOLL
AC_FUNC_CLOSEDIR_VOID
AC_FUNC_SETVBUF_REVERSED
AC_FUNC_SELECT

AC_CHECK_LIB(kstat, kstat_open) dnl _Must_ come before AC_FUNC_GETLOADAVG.
AC_FUNC_GETLOADAVG

# Check out the wait reality.
AC_CHECK_HEADERS(sys/wait.h)
AC_CHECK_FUNCS(waitpid wait3)
AC_MSG_CHECKING(for union wait)
AC_CACHE_VAL(make_cv_union_wait, [dnl
AC_TRY_LINK([#include <sys/types.h>
#include <sys/wait.h>],
	    [union wait status; int pid; pid = wait (&status);
#ifdef WEXITSTATUS
/* Some POSIXoid systems have both the new-style macros and the old
   union wait type, and they do not work together.  If union wait
   conflicts with WEXITSTATUS et al, we don't want to use it at all.  */
if (WEXITSTATUS (status) != 0) pid = -1;
#ifdef WTERMSIG
/* If we have WEXITSTATUS and WTERMSIG, just use them on ints.  */
-- blow chunks here --
#endif
#endif
#ifdef HAVE_WAITPID
/* Make sure union wait works with waitpid.  */
pid = waitpid (-1, &status, 0);
#endif
],
	    [make_cv_union_wait=yes], [make_cv_union_wait=no])])
if test "$make_cv_union_wait" = yes; then
  AC_DEFINE(HAVE_UNION_WAIT)
fi
AC_MSG_RESULT($make_cv_union_wait)

AC_DECL_SYS_SIGLIST

dnl Handle internationalization

ALL_LINGUAS="de es fr ko nl pl ru"
fp_WITH_GETTEXT

# The presence of the following is not meant to imply
# that make necessarily works on those systems.
AC_CHECK_LIB(sun, getpwnam)

AC_SUBST(REMOTE) REMOTE=stub
make_try_customs=no
AC_ARG_WITH(customs,
[  --with-customs=DIR      Enable remote jobs via Customs--see README.customs],
[case "$withval" in
  n|no) ;;
  *) make_cppflags="$CPPFLAGS"
     case "$withval" in
       y|ye|yes) ;;
       *) CPPFLAGS="$CPPFLAGS -I$with_customs/include/customs"
	  make_ldflags="$LDFLAGS -L$with_customs/lib" ;;
     esac
     CF_NETLIBS
     AC_CHECK_HEADER(customs.h,
	             REMOTE=cstms
                       LIBS="$LIBS -lcustoms" LDFLAGS="$make_ldflags",
		     with_customs=no
                       CPPFLAGS="$make_cppflags" make_badcust=yes)
     ;;
esac])

dnl See if we can handle the job server feature, and if the user wants it.

AC_ARG_ENABLE(job-server,
  [  --disable-job-server    Disallow recursive make communication during -jN],
  [make_cv_job_server="$enableval" user_job_server="$enableval"],
  [make_cv_job_server="yes"])

has_wait_nohang=yes
case "$ac_cv_func_waitpid/$ac_cv_func_wait3" in
  no/no) has_wait_nohang=no ;;
esac

case "$ac_cv_func_pipe/$ac_cv_func_sigaction/$has_wait_nohang/$make_cv_job_server" in
  yes/yes/yes/yes) AC_DEFINE(MAKE_JOBSERVER) ;;
esac

dnl Allow building with dmalloc

AC_ARG_ENABLE(dmalloc,
  [  --enable-dmalloc        Enable support for the dmalloc debugging library],
  [make_cv_dmalloc="$enableval"],
  [make_cv_dmalloc="no"])

case "$make_cv_dmalloc" in
  yes) AC_CHECK_HEADERS(dmalloc.h)
       AC_CHECK_LIB(dmalloc, dmalloc_shutdown)
       CPPFLAGS="$CPPFLAGS -DDMALLOC_FUNC_CHECK" ;;
esac

AC_CACHE_CHECK(for location of SCCS get command, make_cv_path_sccs_get, [
if test -f /usr/sccs/get; then
  make_cv_path_sccs_get=/usr/sccs/get
else
  make_cv_path_sccs_get=get
fi])
AC_DEFINE_UNQUOTED(SCCS_GET,["$make_cv_path_sccs_get"])

ac_clean_files="$ac_clean_files s.conftest conftoast" # Remove these later.
if ( /usr/sccs/admin -n s.conftest || admin -n s.conftest ) >/dev/null 2>&1 &&
   test -f s.conftest; then
  # We successfully created an SCCS file.
  AC_CACHE_CHECK(if SCCS get command understands -G, make_cv_sys_get_minus_G, [
    if $make_cv_path_sccs_get -Gconftoast s.conftest >/dev/null 2>&1 &&
       test -f conftoast; then
       make_cv_sys_get_minus_G=yes
    else
       make_cv_sys_get_minus_G=no
    fi])
  case "$make_cv_sys_get_minus_G" in
    yes) AC_DEFINE(SCCS_GET_MINUS_G);;
  esac
fi
rm -f s.conftest conftoast

AC_MSG_CHECKING(if system libc has GNU glob)
AC_CACHE_VAL(make_cv_sys_gnu_glob, [
 AC_TRY_CPP([
#include <features.h>
#include <glob.h>
#include <fnmatch.h>

#define GLOB_INTERFACE_VERSION 1
#if defined _LIBC || !defined __GNU_LIBRARY__ || __GNU_LIBRARY__ <= 1
# error no gnu glob
#else
# include <gnu-versions.h>
# if _GNU_GLOB_INTERFACE_VERSION != GLOB_INTERFACE_VERSION
#  error no gnu glob
# endif
#endif
 ], make_cv_sys_gnu_glob=yes, make_cv_sys_gnu_glob=no)])
case "$make_cv_sys_gnu_glob" in
  yes) AC_MSG_RESULT(yes) ;;
  no)  AC_MSG_RESULT([no; using local copy])
       AC_SUBST(GLOBDIR) GLOBDIR=glob
       AC_SUBST(GLOBINC) GLOBINC='-I$(srcdir)/glob'
       AC_SUBST(GLOBLIB) GLOBLIB=glob/libglob.a
       ;;
esac

AC_DEFINE_UNQUOTED(MAKE_HOST,"$host",[Build host information.])
MAKE_HOST="$host"
AC_SUBST(MAKE_HOST)

MAINT_MAKEFILE=/dev/null
if test -r "$srcdir/maintMakefile"; then
  MAINT_MAKEFILE="$srcdir/maintMakefile"
fi
AC_SUBST_FILE(MAINT_MAKEFILE)

AC_OUTPUT(build.sh Makefile glob/Makefile i18n/Makefile)

dnl If we don't yet have build.sh.in, build.sh is a bogus 0-length file
dnl so remove it.
dnl Can't do this because then remote builds with build.sh don't work.
dnl test -f build.sh.in || rm -f build.sh


case "$make_badcust" in
  yes) echo
       echo "WARNING: --with-customs specified but no customs.h could be found;"
       echo "         disabling Customs support."
       echo ;;
esac

case "$with_customs" in
  ""|n|no|y|ye|yes) ;;
  *) if test -f "$with_customs/lib/libcustoms.a"; then
       :
     else
       echo
       echo "WARNING: \`$with_customs/lib' does not appear to contain the"
       echo "         Customs library.  You must build and install Customs"
       echo "         before compiling GNU make."
       echo
     fi ;;
esac

case "$has_wait_nohang" in
  no) echo
      echo "WARNING: Your system has neither waitpid() nor wait3()."
      echo "         Without one of these, signal handling is unreliable."
      echo "         You should be aware that running GNU make with -j"
      echo "         could result in erratic behavior."
      echo ;;
esac

case "$make_cv_job_server/$user_job_server" in
  no/yes) echo
	  echo "WARNING: Make job server requires a POSIX-ish system that"
	  echo "         supports the pipe(), sigaction(), and either"
          echo "         waitpid() or wait3() functions.  Your system doesn't"
	  echo "         appear to provide one or more of those."
	  echo "         Disabling job server support."
          echo ;;
esac

dnl Local Variables:
dnl comment-start: "dnl "
dnl comment-end: ""
dnl comment-start-skip: "\\bdnl\\b\\s *"
dnl compile-command: "make configure config.h.in"
dnl End: