• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1dnl Copyright 1996-2003,2005,2006,2008,2009 Alain Knaff.
2dnl This file is part of mtools.
3dnl
4dnl Mtools is free software: you can redistribute it and/or modify
5dnl it under the terms of the GNU General Public License as published by
6dnl the Free Software Foundation, either version 3 of the License, or
7dnl (at your option) any later version.
8dnl
9dnl Mtools is distributed in the hope that it will be useful,
10dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
11dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12dnl GNU General Public License for more details.
13dnl
14dnl You should have received a copy of the GNU General Public License
15dnl along with Mtools.  If not, see <http://www.gnu.org/licenses/>.
16dnl
17dnl Process this file with autoconf to produce a configure script.
18AC_INIT(buffer.c)
19m4_include([m4/ax_lib_socket_nsl.m4])
20AC_CONFIG_HEADER(config.h)
21
22dnl Checks for compiler
23AC_PROG_CC
24dnl AC_PROG_CXX
25AC_PROG_GCC_TRADITIONAL
26AC_PROG_INSTALL
27AC_PROG_LN_S
28
29AC_PATH_PROG(INSTALL_INFO, install-info, "")
30
31dnl Check for Systems
32AC_USE_SYSTEM_EXTENSIONS
33AC_CANONICAL_SYSTEM
34
35AC_C_CONST
36AC_C_INLINE
37
38dnl Check for configuration options
39dnl Enable OS/2 extended density format disks
40AC_ARG_ENABLE(xdf,
41[  --enable-xdf           support for OS/2 extended density format disks],
42[if test x$enableval = xyes; then
43  AC_DEFINE([USE_XDF],1,[Define this if you want to use Xdf])
44  XDF_IO_SRC=xdf_io.c
45  XDF_IO_OBJ=xdf_io.o
46fi],[AC_DEFINE([USE_XDF],1,[Define this if you want to use Xdf])
47XDF_IO_SRC=xdf_io.c
48XDF_IO_OBJ=xdf_io.o
49]
50)
51AC_SUBST(XDF_IO_SRC)
52AC_SUBST(XDF_IO_OBJ)
53
54dnl Check for configuration options
55dnl Enable usage of vold on Solaris
56AC_ARG_ENABLE(vold,
57[  --enable-vold          compatibility with Solaris' vold],
58[if test x$enableval = xyes; then
59  AC_DEFINE([USING_VOLD],1,[Define this if you use mtools together with Solaris' vold])
60fi])
61
62
63dnl Check for configuration options
64dnl Enable usage of vold on Solaris
65AC_ARG_ENABLE(new-vold,
66[  --enable-new-vold          compatibility with Solaris' vold, new version],
67[newVold=x$enableval
68if test x$enableval = xyes; then
69  AC_DEFINE([USING_NEW_VOLD],1,[Define this if you use mtools together with the new Solaris' vold support])
70fi])
71
72
73dnl Check for configuration options
74dnl Debugging
75AC_ARG_ENABLE(debug,
76[  --enable-debug         debugging messages],
77[if test x$enableval = xyes; then
78  AC_DEFINE([DEBUG],1,[Define for debugging messages])
79fi])
80
81
82dnl Check for configuration options
83dnl Raw terminal code (enabled by default)
84AC_ARG_ENABLE(raw_term,
85[  --enable-raw-term      raw terminal (readkey behaviour, default)],
86[if test x$enableval = xyes; then
87  AC_DEFINE([USE_RAWTERM],1,[Define on non Unix OS'es which don't have the concept of tty's])
88fi],
89AC_DEFINE([USE_RAWTERM],1,[Define on non Unix OS'es which don't have the concept of tty's]))
90
91
92dnl Checks for libraries.
93
94dnl AC_IRIX_SUN
95AC_CHECK_LIB(sun, getpwnam)
96AC_CHECK_LIB(cam, cam_open_device)
97AC_CHECK_LIB(iconv, iconv)
98
99dnl Check for platform-specific libraries
100AC_CHECK_LIB(socket,main)
101AX_LIB_SOCKET_NSL
102AC_CHECK_LIB(bsd,main)
103
104dnl Checks for header files.
105AC_HEADER_STDC
106AC_HEADER_SYS_WAIT
107AC_HEADER_STDBOOL
108AC_CHECK_HEADERS(getopt.h stdarg.h stdlib.h unistd.h linux/unistd.h \
109libc.h fcntl.h limits.h sys/file.h sys/ioctl.h sys/time.h strings.h string.h \
110sys/param.h memory.h malloc.h io.h signal.h sys/signal.h utime.h sgtty.h \
111sys/floppy.h mntent.h sys/sysmacros.h netinet/in.h netinet/tcp.h assert.h \
112iconv.h wctype.h wchar.h locale.h xlocale.h linux/fs.h)
113AC_CHECK_HEADERS(termio.h sys/termio.h, [break])
114AC_CHECK_HEADERS(termios.h sys/termios.h, [break])
115
116dnl Check for platform-specific header files
117AC_CHECK_HEADERS(sys/fdio.h)
118AC_CHECK_HEADERS(sys/socket.h arpa/inet.h netdb.h)
119
120dnl Check for types
121AC_SYS_LARGEFILE
122AC_TYPE_INT8_T
123AC_TYPE_INT16_T
124AC_TYPE_INT32_T
125AC_TYPE_UINT8_T
126AC_TYPE_UINT16_T
127AC_TYPE_UINT32_T
128AC_TYPE_SSIZE_T
129AC_TYPE_SIZE_T
130AC_TYPE_OFF_T
131AC_TYPE_SIGNAL
132AC_TYPE_UID_T
133
134AC_CHECK_TYPES(caddr_t)
135AC_CHECK_TYPES(long long)
136AC_CHECK_SIZEOF(size_t)
137AC_CHECK_SIZEOF(off_t)
138AC_CHECK_SIZEOF(time_t)
139AC_CHECK_SIZEOF(long)
140
141seek_function=
142
143if test $ac_cv_sizeof_off_t -ge 8 ; then
144   seek_function=lseek
145fi
146
147dnl Fallback if we have no suitable 64 bit seek function yet
148if test X$seek_function = X ; then
149  AC_DEFINE([_LARGEFILE64_SOURCE],1,[Needed for off64_t / lseek64 ])
150  AC_CHECK_TYPES(off64_t,
151    [ AC_CHECK_FUNCS(lseek64, [ seek_function=lseek64 ])
152    ])
153  AC_CHECK_FUNCS(stat64)
154  if test X$seek_function = Xlseek64 ; then
155    AC_MSG_CHECKING(whether lseek64 declared in unistd.h)
156    AC_CACHE_VAL(mtools_cv_have_lseek64_prototype,
157      AC_COMPILE_IFELSE(
158         [AC_LANG_PROGRAM([[
159              #define _LARGEFILE64_SOURCE
160              #include <sys/types.h>
161              #include <unistd.h>
162            ]], [[extern int lseek64(int);]])],
163        [mtools_cv_have_lseek64_prototype=no],
164        [mtools_cv_have_lseek64_prototype=yes]))
165    AC_MSG_RESULT($mtools_cv_have_lseek64_prototype)
166    if test "$mtools_cv_have_lseek64_prototype" = yes; then
167      AC_DEFINE([HAVE_LSEEK64_PROTOTYPE],1,[Define when you have an LSEEK64 prototype])
168    fi
169  fi
170fi
171
172dnl Fallback if we have no suitable 64 bit seek function yet
173if test X$seek_function = X ; then
174  AC_DEFINE([_LARGEFILE_SOURCE],1,[Might be needed for loff_t / llseek64 ])
175  AC_CHECK_TYPES([loff_t, offset_t, long long],
176    [ AC_CHECK_FUNCS(llseek, [ seek_function=llseek ])
177    ])
178
179  if test X$seek_function = Xllseek ; then
180    dnl
181    dnl Check to see if llseek() is declared in unistd.h.  On some libc's
182    dnl it is, and on others it isn't..... Thank you glibc developers....
183    dnl
184    dnl Warning!  Use of --enable-gcc-wall may throw off this test.
185    dnl
186    dnl
187    AC_MSG_CHECKING(whether llseek declared in unistd.h)
188    AC_CACHE_VAL(mtools_cv_have_llseek_prototype,
189      AC_COMPILE_IFELSE(
190         [AC_LANG_PROGRAM([[
191              #define _LARGEFILE_SOURCE
192              #define _LARGEFILE64_SOURCE
193              #include <sys/types.h>
194              #include <unistd.h>
195	   ]], [[extern int llseek(int);]])],
196        [mtools_cv_have_llseek_prototype=no],
197        [mtools_cv_have_llseek_prototype=yes]))
198    AC_MSG_RESULT($mtools_cv_have_llseek_prototype)
199    if test "$mtools_cv_have_llseek_prototype" = yes; then
200      AC_DEFINE([HAVE_LLSEEK_PROTOTYPE],1,[Define when you have an LLSEEK prototype])
201    fi
202  fi
203fi
204
205AC_CHECK_FUNCS(htons)
206
207dnl Apparently termio before termios is preferred by A/UX, AIX and SCO
208
209dnl Checks for typedefs, structures, and compiler characteristics.
210AC_C_CONST
211AC_C_INLINE
212AC_TYPE_SIZE_T
213AC_HEADER_TIME
214AC_STRUCT_TM
215
216
217dnl Checks for library functions.
218AC_TYPE_SIGNAL
219AC_CHECK_FUNCS(strerror random srandom strchr strrchr lockf flock \
220strcasecmp strncasecmp strnlen atexit on_exit getpass memmove \
221strdup strndup strcspn strspn strtoul strtol strtoll strtoi strtoui \
222memcpy strpbrk memset setenv seteuid setresuid setpgrp \
223tcsetattr tcflush basename fchdir media_oldaliases  \
224snprintf setlocale toupper_l strncasecmp_l \
225wcsdup wcscasecmp wcsnlen putwc \
226getuserid getgroupid \
227alarm sigaction usleep)
228
229
230AC_CHECK_FUNCS(utimes utime, [break])
231AC_CHECK_FUNCS(tzset gettimeofday)
232
233CF_SYS_ERRLIST
234
235[
236host_os0=`echo $host_os | sed 's/-/_/g'`
237host_os1=`echo $host_os0 | sed 's/\./_/g'`
238host_os2=`echo $host_os0 | sed 's/^\([^.]*\)\..*$/\1/g'`
239host_os3=`echo $host_os2 | sed 's/^\([^0-9]*\)[0-9]*$/\1/g'`
240host_cpu1=`echo $host_cpu | sed 's/\./_/g'`
241host_vendor1=`echo $host_vendor | sed 's/\./_/g'`
242HOST_ID="-DCPU_$host_cpu1 -DVENDOR_$host_vendor1 -DOS_$host_os1"
243if [ $host_os1 != $host_os2 ] ; then
244	HOST_ID="$HOST_ID -DOS_$host_os2"
245fi
246if [ $host_os1 != $host_os3 ] && [ $host_os2 != $host_os3 ] ; then
247	HOST_ID="$HOST_ID -DOS_$host_os3"
248fi
249
250my_host_os=`echo $host_os1 $host_os2 $host_os3 | sort -u`
251objs=`echo $srcdir/*.c | sed 's/\.c$/.o/' `
252if [ "X$GCC" = "Xyes" ] ; then
253    Wall=-Wall
254    if [ "$host_os3" = sunos ] ; then
255	    Wall=""
256    fi
257    if [ "$host_os3" = ultrix ] ; then
258	    Wall=""
259    fi
260    if [ "$host_os3" = linux ] ; then
261	    CFLAGS="$CFLAGS -fno-strength-reduce"
262    fi
263    if [ "$host_os3" = aux ] ; then
264	    CFLAGS="$CFLAGS -ZP"
265	    MACHDEPLIBS="-lposix -UTIL"
266    fi
267    case "${host}" in
268       arm*-*-linux) CFLAGS="$CFLAGS -mstructure-size-boundary=8";;
269    esac
270    CFLAGS="$CFLAGS $Wall"
271else
272    if [ $host_os3 = hpux ] ; then
273	    CPPFLAGS="$CPPFLAGS -Ae"
274    fi
275
276    if [ $host_os3 = xenix ] ; then
277	    CFLAGS="$CFLAGS -M2e"
278    fi
279fi
280
281if [ $host_os3 = hpux ] ; then
282	    LDFLAGS="$LDFLAGS -z"
283fi
284
285if [ $host_os3 = xenix ] ; then
286    LDFLAGS="$LDFLAGS -M2e -i -f 5000"
287fi
288
289if [ $host_os2 = sysv4 ] ; then
290    SHLIB="-lc -L/usr/ucblib -lucb"
291else
292    SHLIB=""
293fi
294
295if [ $host_os3 = isc ] ; then
296    CFLAGS="$CFLAGS -D_SYSV3"
297    SHLIB="-lc_s"
298fi
299
300if [ $host_os3 = solaris -a x$newVold = xxyes ] ; then
301    SHLIB="$SHLIB -s -lvolmgt"
302fi
303
304if [ $host_os3 = nextstep ] ; then
305    CFLAGS="$CFLAGS -DBSD"
306    SHLIB=""
307fi
308
309if [ -d /usr/5lib ] ; then
310	extralibdir=-L/usr/5lib
311fi
312
313]
314
315AC_PATH_X
316AC_PATH_XTRA
317
318dnl Floppyd
319AC_ARG_ENABLE(floppyd,
320[  --enable-floppyd       floppy daemon support],
321[if test x$enableval != x; then
322  use_floppyd=$enableval
323fi])
324
325if test X$use_floppyd = X -a X$no_x = X ; then
326    use_floppyd="yes"
327fi
328
329if test X$use_floppyd = Xyes; then
330    if test X$no_x = Xyes ; then
331	echo "Floppyd needs X support" >&2
332	echo "To compile without floppyd, use ./configure --disable-floppyd" >&2
333	exit 1
334    fi
335    FLOPPYD="floppyd floppyd_installtest"
336    BINFLOPPYD="\$(DESTDIR)\$(bindir)/floppyd \$(DESTDIR)\$(bindir)/floppyd_installtest"
337    FLOPPYD_IO_SRC=floppyd_io.c
338    FLOPPYD_IO_OBJ=floppyd_io.o
339    AC_DEFINE([USE_FLOPPYD],1,[Define when you want to include floppyd support])
340    AC_FUNC_SETPGRP
341
342    FLOPPYD_LIBS=""
343    AC_CHECK_LIB(X11, XOpenDisplay, [ FLOPPYD_LIBS="-lX11 $FLOPPYD_LIBS" ])
344    AC_CHECK_LIB(Xau, XauFileName, [ FLOPPYD_LIBS="-lXau $FLOPPYD_LIBS" ])
345else
346    FLOPPYD=
347    BINFLOPPYD=
348    FLOPPYD_IO_SRC=
349    FLOPPYD_IO_OBJ=
350    FLOPPYD_LIBS=
351fi
352
353
354
355AC_SUBST(FLOPPYD_LIBS)
356AC_SUBST(FLOPPYD)
357AC_SUBST(BINFLOPPYD)
358AC_SUBST(FLOPPYD_IO_SRC)
359AC_SUBST(FLOPPYD_IO_OBJ)
360
361AC_SUBST(extraincludedir)
362AC_SUBST(extralibdir)
363AC_SUBST(MACHDEPLIBS)
364AC_SUBST(SHLIB)
365AC_SUBST(host_cpu)
366AC_SUBST(HOST_ID)
367AC_OUTPUT(Makefile)
368