chiark / gitweb /
65f6ed917f1cecce1a4d5b2c0d4f0f979f091db6
[userv.git] / configure.in
1 #  userv - configure.in
2 #
3 #  Copyright (C)1996-1997,1999-2000,2003 Ian Jackson
4 #   
5 #  This is free software; you can redistribute it and/or modify it
6 #  under the terms of the GNU General Public License as published by
7 #  the Free Software Foundation; either version 2 of the License, or
8 #  (at your option) any later version.
9
10 #  This program is distributed in the hope that it will be useful, but
11 #  WITHOUT ANY WARRANTY; without even the implied warranty of
12 #  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13 #  General Public License for more details.
14
15 #  You should have received a copy of the GNU General Public License
16 #  along with userv; if not, write to the Free Software
17 #  Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
18
19 AC_INIT(language.i4)
20 AC_CONFIG_HEADER(config.h)
21
22 AC_PREFIX_DEFAULT(/usr/local)
23
24 crdir="`pwd`"
25 AC_SUBST(DEBUGDEFS)
26 AC_SUBST(DEBUGLIBS)
27 DEBUGDEFS=''
28 DEBUGLIBS=''
29 AC_ARG_ENABLE(debug,
30 [  --enable-debug          build debugging version],
31 [
32  if test "x$enable_debug" = xyes; then
33   DEBUGDEFS="-DDEBUG -DVARDIR='\"$crdir/vd\"' -DSYSTEMCONFIGDIR='\"$crdir/slash-etc\"' -DSERVICEUSERDIR='\"$crdir/tilde\"'"
34   DEBUGLIBS=-lefence
35   echo will build debugging version
36  elif test "x$enable_debug" != xno; then
37   AC_MSG_ERROR(--enable-debug does not allow any arguments except 'yes' and 'no')
38  fi
39 ])
40
41 AC_PROG_CC
42 AC_PROG_CPP
43 AC_PROG_INSTALL
44 AC_CHECK_PROGS(MD5SUM_SIMPLE, md5sum md5 gmd5sum)
45
46 CFLAGS="$CFLAGS -D_GNU_SOURCE"
47
48 AC_CHECK_LIB(socket,socket)
49 AC_CHECK_FUNCS(setenv strsignal)
50
51 AC_CACHE_CHECK(for EPROTO,userv_cv_hdr_eproto,
52  AC_EGREP_CPP(yes,
53 [
54 #include <errno.h>
55 #ifdef EPROTO
56  yes
57 #endif
58 ],userv_cv_hdr_eproto=yes,userv_cv_hdr_eproto=no))
59 if test $userv_cv_hdr_eproto = yes
60 then
61         AC_DEFINE(HAVE_EPROTO)
62 fi
63
64 AC_CACHE_CHECK(for LOG_AUTHPRIV,userv_cv_hdr_logauthpriv,
65  AC_EGREP_CPP(yes,
66 [
67 #include <syslog.h>
68 #ifdef LOG_AUTHPRIV
69  yes
70 #endif
71 ],userv_cv_hdr_logauthpriv=yes,userv_cv_hdr_logauthpriv=no))
72 if test $userv_cv_hdr_logauthpriv = yes
73 then
74         AC_DEFINE(HAVE_LOG_AUTHPRIV)
75 fi
76
77 AC_CACHE_CHECK(for WCOREDUMP,userv_cv_hdr_wcoredump,
78  AC_EGREP_CPP(yes,
79 [
80 #include <syslog.h>
81 #ifdef WCOREDUMP
82  yes
83 #endif
84 ],userv_cv_hdr_wcoredump=yes,userv_cv_hdr_wcoredump=no))
85 if test $userv_cv_hdr_wcoredump = yes
86 then
87         AC_DEFINE(HAVE_WCOREDUMP)
88 fi
89
90 AC_SUBST(OPTIMISE)
91 if test "${GCC-no}" = yes; then
92  OPTIMISE=-O2
93 else
94  OPTIMISE=-O
95 fi
96
97 dnl DPKG_CACHED_TRY_COMPILE(<description>,<cachevar>,<include>,<program>,<ifyes>,<ifno>)
98 define(DPKG_CACHED_TRY_COMPILE,[
99  AC_MSG_CHECKING($1)
100  AC_CACHE_VAL($2,[
101   AC_TRY_COMPILE([$3],[$4],[$2=yes],[$2=no])
102  ])
103  if test "x$$2" = xyes; then
104   true
105   $5
106  else
107   true
108   $6
109  fi
110 ])
111
112 DPKG_CACHED_TRY_COMPILE(your C compiler,dpkg_cv_c_works,
113  [#include <string.h>], [strcmp("a","b")],
114  AC_MSG_RESULT(works),
115  AC_MSG_RESULT(broken)
116  AC_MSG_ERROR(C compiler is broken))
117
118 DPKG_CACHED_TRY_COMPILE(__attribute__((,,)),dpkg_cv_c_attribute_supported,,
119  [extern int testfunction(int x) __attribute__((,,))],
120  AC_MSG_RESULT(yes)
121  AC_DEFINE(HAVE_GNUC25_ATTRIB)
122   DPKG_CACHED_TRY_COMPILE(__attribute__((noreturn)),dpkg_cv_c_attribute_noreturn,,
123    [extern int testfunction(int x) __attribute__((noreturn))],
124    AC_MSG_RESULT(yes)
125    AC_DEFINE(HAVE_GNUC25_NORETURN),
126    AC_MSG_RESULT(no))
127   DPKG_CACHED_TRY_COMPILE(__attribute__((unused)),dpkg_cv_c_attribute_unused,,
128    [extern int testfunction(int x) __attribute__((unused))],
129    AC_MSG_RESULT(yes)
130    AC_DEFINE(HAVE_GNUC25_UNUSED),
131    AC_MSG_RESULT(no))
132   DPKG_CACHED_TRY_COMPILE(__attribute__((format...)),dpkg_cv_attribute_format,,
133    [extern int testfunction(char *y, ...) __attribute__((format(printf,1,2)))],
134    AC_MSG_RESULT(yes)
135    AC_DEFINE(HAVE_GNUC25_PRINTFFORMAT),
136    AC_MSG_RESULT(no)),
137  AC_MSG_RESULT(no))
138
139 AC_SUBST(CWARNS)
140 CWARNS=""
141
142 dnl DPKG_C_GCC_TRY_WARNS(<warnings>,<cachevar>)
143 define(DPKG_C_GCC_TRY_WARNS,[
144  AC_MSG_CHECKING([GCC warning flag(s) $1])
145  if test "${GCC-no}" = yes
146  then
147   AC_CACHE_VAL($2,[
148    oldcflags="${CFLAGS-}"
149    CFLAGS="${CFLAGS-} ${CWARNS} $1 -Werror"
150    AC_TRY_COMPILE([
151 #include <string.h>
152 #include <stdio.h>
153 ],[
154     strcmp("a","b"); fprintf(stdout,"test ok\n");
155 ], [$2=yes], [$2=no])
156    CFLAGS="${oldcflags}"])
157   if test "x$$2" = xyes; then
158    CWARNS="${CWARNS} $1"
159    AC_MSG_RESULT(ok)
160   else
161    $2=''
162    AC_MSG_RESULT(no)
163   fi
164  else
165   AC_MSG_RESULT(no, not using GCC)
166  fi
167 ])
168
169 DPKG_C_GCC_TRY_WARNS(-Wall -Wno-implicit, dpkg_cv_c_gcc_warn_all)
170 DPKG_C_GCC_TRY_WARNS(-Wwrite-strings, dpkg_cv_c_gcc_warn_writestrings)
171 DPKG_C_GCC_TRY_WARNS(-Wpointer-arith, dpkg_cv_c_gcc_warn_pointerarith)
172 DPKG_C_GCC_TRY_WARNS(-Wimplicit -Wnested-externs, dpkg_cv_c_gcc_warn_implicit)
173
174 if test "${GCC-no}" = yes; then
175  CWARNS="${CWARNS} -Wmissing-prototypes -Wstrict-prototypes"
176 fi
177 [CFLAGS="`echo $CFLAGS $CWARNS | sed -e 's/-O[0-9]*/$(OPTIMISE)/'`"]
178
179 AC_SUBST(VERSION)
180 VERSION="`sed -n '/^userv (.*)/!d; s/^userv (//; s/).*//; p; q' debian/changelog`"
181 echo will build version $VERSION
182
183 AC_OUTPUT(Makefile)