summaryrefslogtreecommitdiff
path: root/configure.ac
blob: 2beaef34b68fa6d47ae14f34d9c82eec801a03ed (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
# Configure template for GNU tar.
# Copyright (C) 1991, 1994, 1995, 1996, 1997 Free Software Foundation, Inc.
# Process this file with autoconf to produce a configure script.

AC_INIT(src/tar.c)
AM_CONFIG_HEADER(config.h)
AC_PREREQ(2.12)
AM_INIT_AUTOMAKE(tar, 1.12)
AC_DEFINE(_GNU_SOURCE)
ALL_LINGUAS="de fr it ko nl no pl pt sl sv"

fp_PROG_ECHO
test $fp_cv_prog_echo_nonl = no \
  && echo 2>&1 "WARNING: \`echo' not powerful enough for \`make check'"
AC_PROG_CC
AC_PROG_GCC_TRADITIONAL
AC_AIX
AC_MINIX
AC_PROG_RANLIB
AC_PROG_YACC

AC_ISC_POSIX
AM_C_PROTOTYPES
AC_C_CONST
AC_C_INLINE
AC_CHECK_SIZEOF(unsigned long, 4)
AC_CHECK_SIZEOF(long long, 0)

AC_CHECK_HEADERS(fcntl.h limits.h linux/fd.h memory.h net/errno.h poll.h \
sgtty.h string.h stropts.h \
sys/buf.h sys/device.h sys/gentape.h sys/inet.h sys/io/trioctl.h sys/ioccom.h \
sys/mtio.h sys/param.h sys/tprintf.h sys/tape.h sys/time.h sys/timeb.h \
sys/wait.h unistd.h)

# It seems that that many machines where <utime.h> seems to be
# broken just require something like -D_XXX_SOURCE, where XXX might
# be POSIX, POSIX_C, ALL, HPUX or whatever, depending on the machine.

AC_CACHE_CHECK(for utime.h, tar_cv_header_utime_h,
  [AC_TRY_COMPILE([
#include <sys/types.h>
#include <utime.h>], [struct utimbuf foo],
  tar_cv_header_utime_h=yes, tar_cv_header_utime_h=no)])
test $tar_cv_header_utime_h = yes && AC_DEFINE(HAVE_UTIME_H)

if test $ac_cv_header_sys_mtio_h = yes; then
  AC_CACHE_CHECK(for remote tape header files, tar_cv_header_rmt,
    [AC_TRY_CPP([
#if HAVE_SGTTY_H
# include <sgtty.h>
#endif
#include <sys/socket.h>],
    tar_cv_header_rmt=yes, tar_cv_header_rmt=no)])
  test $tar_cv_header_rmt = yes && RMT=rmt
  AC_SUBST(RMT)
fi

AC_CACHE_CHECK(for getgrgid declaration, tar_cv_header_getgrgid,
  [AC_EGREP_HEADER(getgrgid, grp.h,
  tar_cv_header_getgrgid=yes, tar_cv_header_getgrgid=no)])
test $tar_cv_header_getgrgid = yes && AC_DEFINE(HAVE_GETGRGID)

AC_CACHE_CHECK(for getpwuid declaration, tar_cv_header_getpwuid,
  [AC_EGREP_HEADER(getpwuid, pwd.h,
  tar_cv_header_getpwuid=yes, tar_cv_header_getpwuid=no)])
test $tar_cv_header_getpwuid = yes && AC_DEFINE(HAVE_GETPWUID)

AC_CACHE_CHECK(which ioctl field to test for reversed bytes,
  tar_cv_header_mtio_check_field,
  [AC_EGREP_HEADER(mt_model, sys/mtio.h,
  tar_cv_header_mtio_check_field=mt_model,
  tar_cv_header_mtio_check_field=mt_type)])
AC_DEFINE_UNQUOTED(MTIO_CHECK_FIELD, $tar_cv_header_mtio_check_field)

AC_HEADER_DIRENT
AC_HEADER_MAJOR
AC_HEADER_STAT
AC_HEADER_STDC
AC_HEADER_TIME
AC_STRUCT_ST_BLKSIZE
AC_STRUCT_ST_BLOCKS
AC_TYPE_SIGNAL
AC_TYPE_SIZE_T
AC_TYPE_UID_T

AC_CHECK_FUNCS(fsync ftime getcwd isascii lchown mkfifo nap napms poll \
select strerror strstr usleep)

AC_CACHE_CHECK(for mknod, tar_cv_func_mknod,
  [AC_TRY_LINK([
#include <sys/types.h>
#include <sys/stat.h>],
  [mknod (0, 0, 0)],
  tar_cv_func_mknod=yes, tar_cv_func_mknod=no)])
test $tar_cv_func_mknod = yes && AC_DEFINE(HAVE_MKNOD)

# Whenever both -lsocket and -lnsl are needed, it seems to be always the
# case that gethostbyname requires -lnsl.  So, check -lnsl first, for it
# to be in LIBS before the setsockopt checks are performed.  *However*,
# on SINIX-N 5.43, this is false, and gethostent seems to be a better
# candidate. So, let's use it below instead of gethostbyname, and see.

AC_CHECK_FUNC(gethostent)
if test $ac_cv_func_gethostent = no; then
  AC_CHECK_LIB(nsl, gethostent)
fi
AC_CHECK_FUNC(setsockopt)
if test $ac_cv_func_setsockopt = no; then
  AC_CHECK_LIB(socket, setsockopt)
fi

AC_FUNC_ALLOCA
AC_FUNC_FNMATCH
test $ac_cv_func_fnmatch_works = yes || LIBOBJS="$LIBOBJS fnmatch.o"
AC_FUNC_VPRINTF
AC_REPLACE_FUNCS(basename dirname execlp ftruncate memset mkdir rename rmdir)
test "$ac_cv_func_strstr" = yes || LIBOBJS="$LIBOBJS strstr.o"

# The 3-argument open happens to go along with the O_* defines, which
# are easier to check for.

AC_CACHE_CHECK(for 3-argument open, tar_cv_func_open3,
  [AC_TRY_COMPILE([
#if HAVE_FCNTL_H
# include <fcntl.h>
#else
# include <sys/file.h>
#endif],
  [int x = O_RDONLY],
  tar_cv_func_open3=yes, tar_cv_func_open3=no)])
if test $tar_cv_func_open3 = no; then
  AC_DEFINE(EMUL_OPEN3)
fi

# `union wait' is preferrably avoided.  We merely assume below
# that if `int pid;' fails, `union wait pid;' would have worked.
# Directly trying `union wait pid;' is seeking for trouble, as
# some POSIX systems are offering compatibility hacks generating
# ugly diagnostics.  Also, on some systems, WEXITSTATUS exists,
# but fails when called on `union wait' variables.

AC_CACHE_CHECK(for union wait, tar_cv_header_union_wait,
  [AC_TRY_COMPILE([
#include <sys/types.h>
#if HAVE_SYS_WAIT_H
# include <sys/wait.h>
#endif],
  [int status; int pid; pid = wait (&status);],
  tar_cv_header_union_wait=no, tar_cv_header_union_wait=yes)])
test $tar_cv_header_union_wait = yes && AC_DEFINE(HAVE_UNION_WAIT)

AC_CACHE_CHECK(for remote shell, tar_cv_path_RSH,
  [if test -n "$RSH"; then
    tar_cv_path_RSH=$RSH
  else
    tar_cv_path_RSH=no
    for ac_file in /usr/ucb/rsh /usr/bin/remsh /usr/bin/rsh /usr/bsd/rsh \
  	/usr/bin/nsh /usr/bin/rcmd
    do
      if test -f $ac_file; then
        tar_cv_path_RSH=$ac_file
        break
      fi
    done
  fi])
if test $tar_cv_path_RSH = no; then
  AC_CHECK_HEADERS(netdb.h)
else
  AC_DEFINE_UNQUOTED(REMOTE_SHELL, "$tar_cv_path_RSH")
fi

AC_MSG_CHECKING(for default archive)

if test -z "$DEFAULT_ARCHIVE"; then
  DEFAULT_ARCHIVE=-
else
  if test -z "`ls $DEFAULT_ARCHIVE 2>/dev/null`"; then
    AC_MSG_WARN(DEFAULT_ARCHIVE \`$DEFAULT_ARCHIVE' not found on this system)
  fi
  # FIXME: Look for DEFTAPE in <sys/mtio.h>.
  # FIXME: Let DEVICE_PREFIX be configured from the environment.
  # FIXME: Rearrange, here.
  case $DEFAULT_ARCHIVE in
changequote(, )dnl
    *[0-7][lmh])
      device_prefix=`echo $DEFAULT_ARCHIVE | sed 's/[0-7][lmh]$//'`
changequote([, ])dnl
      AC_DEFINE_UNQUOTED(DEVICE_PREFIX, "$device_prefix")
      AC_DEFINE(DENSITY_LETTER)
      ;;
changequote(, )dnl
    *[0-7])
      device_prefix=`echo $DEFAULT_ARCHIVE | sed 's/[0-7]$//'`
changequote([, ])dnl
      AC_DEFINE_UNQUOTED(DEVICE_PREFIX, "$device_prefix")
      ;;
  esac
fi
AC_DEFINE_UNQUOTED(DEFAULT_ARCHIVE, "$DEFAULT_ARCHIVE")
AC_MSG_RESULT($DEFAULT_ARCHIVE)

AC_MSG_CHECKING(for default blocking)
DEFAULT_BLOCKING=${DEFAULT_BLOCKING-20}
AC_DEFINE_UNQUOTED(DEFAULT_BLOCKING, $DEFAULT_BLOCKING)
AC_MSG_RESULT($DEFAULT_BLOCKING)

fp_WITH_INCLUDED_MALLOC
AM_WITH_DMALLOC

AM_GNU_GETTEXT
AC_LINK_FILES($nls_cv_header_libgt, $nls_cv_header_intl)

AC_OUTPUT([Makefile doc/Makefile intl/Makefile lib/Makefile po/Makefile.in \
scripts/Makefile src/Makefile tests/Makefile tests/preset],
[sed -e "/POTFILES =/r po/POTFILES" po/Makefile.in > po/Makefile])