1dnl Process this -*-fundamental-*- file with autoconf
2dnl to produce the configure script for c-nocem.
3AC_INIT(fastcancel.c)
4: $Id: configure.in,v 1.9 2001/02/16 21:59:38 olaf Exp $
5
6dnl     --- Checks for programs. ---
7
8AC_PROG_CC
9AC_PROG_INSTALL
10AC_PROG_AWK
11AC_PATH_PROGS(PERL, [perl perl5 perl4], [not found])
12test "$PERL" = "not found" && AC_MSG_ERROR(This needs perl.)
13AC_PATH_PROG(GPG, gpg, [not found])
14if test "$GPG" = "not found" ; then
15  AC_PATH_PROG(PGP, pgp, [not found])
16  test "$PGP" = "not found" && AC_MSG_ERROR(This needs PGP or GnuPG.)
17  PGP="$PGP -f +batchmode +language=en +verbose=1 +pubring=\$pubring"
18else
19  PGP="$GPG --batch -q --keyring \$pubring"
20fi
21
22dnl     --- Check for headers and libraries. ---
23
24AC_CHECK_HEADERS(string.h memory.h)
25AC_CHECK_LIB(socket,socket)
26AC_CHECK_LIB(nsl,gethostbyname)
27
28dnl     --- Configuration options. ---
29
30nsys=""
31AC_ARG_WITH(cnews,
32[  --with-cnews=DIR        Specify C News source directory], [
33  nsys=cnews
34  nsrc=$withval
35])
36AC_ARG_WITH(inn,
37[  --with-inn=DIR          Specify INN source directory], [
38  nsys=inn
39  nsrc=$withval
40])
41dnl Where to search for sources.
42sdirs="/usr/src /usr/local /usr/local/src /opt/src /var/src"
43
44dnl     --- Search for INN source. ---
45
46if test "X$nsys" = "X" ; then
47  AC_MSG_CHECKING(for INN source)
48  for i in $sdirs ; do
49    for j in INN inn INN2 INN-2 ; do
50      if test "X$nsys" = "X" -a -f $i/$j/lib/dbz.c ; then
51        AC_MSG_RESULT($nsrc)
52        nsys=inn
53        nsrc=$i/$j
54      fi
55    done
56  done
57  if test "X$nsys" = "X" ; then
58    AC_MSG_RESULT(no)
59  fi
60fi
61
62dnl     --- Search for C News source. ---
63
64if test "X$nsys" = "X" ; then
65  AC_MSG_CHECKING(for C News source)
66  for i in $sdirs ; do
67    for j in cnews c-news CNews cnews-CR.G ; do
68      if test "X$nsys" = "X" -a -f $i/$j/libdbz/dbz.c ; then
69        AC_MSG_RESULT($nsrc)
70        nsys=cnews
71        nsrc=$i/$j
72      fi
73    done
74  done
75  if test "X$nsys" = "X" ; then
76    AC_MSG_RESULT(no)
77  fi
78fi
79
80dnl     --- Macros. ---
81
82dnl Get definition for $1 from file $2: line starts with $3 and use pos $4
83  dnl I don't claim this macro is beautiful.
84AC_DEFUN(NEWSVAR, [dnl
85AC_MSG_CHECKING(for $1)
86changequote(, )dnl
87re=`$AWK '/^'$3'[^A-Z_]/ {print $'$4'}' $nsrc/$2`
88changequote([, ])dnl
89if test "$re"; then
90    AC_MSG_RESULT($re)
91else
92    AC_MSG_RESULT(no)
93fi
94$1="$re"])
95
96dnl Check if the $1 parameter exists in inn.conf.
97AC_DEFUN(INNCONF, [dnl
98AC_MSG_CHECKING(for $1 in inn.conf)
99if grep $1 $nsrc/include/libinn.h >/dev/null ; then
100  AC_MSG_RESULT(yes)
101  uc=`echo $1| tr a-z A-Z`
102  AC_DEFINE_UNQUOTED(HAVE_INNCONF_$uc)
103else
104  AC_MSG_RESULT(no)
105fi])
106
107dnl     --- Test for C News. ---
108
109if test "X$nsys" = "Xcnews" ; then
110
111  AC_DEFINE(CNEWS)
112  CPPFLAGS="$CPPFLAGS -I$nsrc/libdbz"
113  LIBS="-L$nsrc -lcnews $LIBS"
114  PROGS="fastcancel"
115  NEWSVAR(newslib, conf/substitutions, NEWSCTL, 2)
116  newsetc=$newslib
117  newsdb=$newslib
118  NEWSVAR(newsarts, conf/substitutions, NEWSARTS, 2)
119  newstmp=$newslib/tmp
120  newslogfile=$newslib/log
121  NEWSVAR(newsbin, conf/substitutions, NEWSBIN, 2)
122else if test "X$nsys" = "Xinn" ; then
123  AC_DEFINE(INN)
124  CPPFLAGS="$CPPFLAGS -I$nsrc/include -I$nsrc/dbz"
125  PROGS="fastcancel groupcheck"
126else
127  AC_MSG_ERROR(Need the news system source to compile.)
128fi
129fi
130
131dnl     --- Test INN version dependencies. ---
132
133cf=
134AC_ARG_ENABLE(cancelfeed,
135[  --enable-cancelfeed     Compile the cancelfeed program], cf=cancelfeed)
136
137if test "X$nsys" = "Xinn" ; then
138  AC_MSG_CHECKING(for INN version)
139  if test -d $nsrc/storage ; then
140    AC_MSG_RESULT(2.x)
141    AC_DEFINE(INN2)
142    dnl Pick up definitions from Makefile.global
143    cat $nsrc/Makefile.global >conftest.make
144    cat <<'END' >>conftest.make
145print-defs:
146	@echo newslib=$(PATHNEWS)
147	@echo newsetc=$(PATHETC)
148	@echo newsdb=$(PATHDB)
149	@echo newsspool=$(PATHSPOOL)
150	@echo newsbin=$(PATHBIN)
151	@echo logdir=$(PATHLOG)
152END
153    eval `make -f conftest.make print-defs`
154    rm -f conftest.make
155    dnl the following is incorrect but newsarts is ignored for 2.x
156    newsarts=$newsspool
157    newstmp=$newsspool/tmp
158    newslogfile=$logdir/news
159    INNCONF(storemsgid)
160    INNCONF(storageapi)
161    INNCONF(extendeddbz)
162    NEWSVAR(libtool, Makefile.global, LIBTOOL, 3)
163    if test -n "$libtool" ; then
164      LIBTOOL="/bin/sh $nsrc/libtool --quiet"
165      dnl hopefully this doesnt change again
166      LIBS="$nsrc/lib/libinn.la $nsrc/storage/libstorage.la $LIBS"
167    else
168      LIBTOOL=
169      LIBS="-L$nsrc -L$nsrc/lib -L$nsrc/storage -lstorage -linn -lstorage $LIBS"
170    fi
171    if test "x$cf" = "x"; then
172      AC_MSG_CHECKING([for INN >= 2.4])
173      $LIBTOOL $CC $CPPFLAGS $CFLAGS $LDFLAGS -o innversion innversion.c $LIBS
174      set `./innversion`
175      case "$2" in
176      2.[[0123]]*) AC_MSG_RESULT(no) ;;
177      *) AC_MSG_RESULT(yes); cf=cancelfeed ;;
178      esac
179    fi
180    PROGS="$PROGS $cf"
181
182    dnl More dbz incompatibilities.
183    xcc="$CC"
184    CC="$LIBTOOL $xcc"
185    AC_MSG_CHECKING(for two-arg form of dbzfetch)
186    AC_TRY_COMPILE([#include "cncdbz.h"],[
187	HASH h;
188	OFFSET_T v;
189	dbzfetch(h, &v);
190],[
191   AC_MSG_RESULT(yes)
192   AC_DEFINE(HAVE_DBZFETCH_2)
193], AC_MSG_RESULT(no))
194
195    AC_MSG_CHECKING(for reverted dbz API)
196    AC_TRY_COMPILE([#include "cncdbz.h"],[
197	#ifndef DO_TAGGED_HASH
198	idxrec ov;
199	#endif
200], AC_MSG_RESULT(no), [
201   AC_MSG_RESULT(yes)
202   AC_DEFINE(DBZ_REVERTED)
203])
204
205    CC="$xcc"
206
207  else
208    AC_MSG_RESULT(1.x)
209    NEWSVAR(newslib, config/config.data, _PATH_NEWSLIB,  2)
210    newsetc=$newslib
211    newsdb=$newslib
212    NEWSVAR(newsarts, config/config.data, _PATH_SPOOL, 2)
213    newstmp=$newslib/tmp
214    NEWSVAR(newsbin, config/config.data, _PATH_NEWSBIN, 2)
215    NEWSVAR(newslogfile, config/config.data, _PATH_LOGFILE, 2)
216    LIBS="-L$nsrc -L$nsrc/lib -linn $LIBS"
217  fi
218fi
219
220dnl     --- Checks for types. ---
221
222AC_MSG_CHECKING(for time_t)
223AC_TRY_COMPILE([#include <time.h>], [time_t t;], [actt=time_t], [
224actt="unsigned long"
225AC_DEFINE(time_t, unsigned long)
226])
227AC_MSG_RESULT($actt)
228
229dnl	--- Prepare output. ---
230
231AC_SUBST(PERL)
232AC_SUBST(PGP)
233AC_SUBST(PROGS)
234AC_SUBST(LIBTOOL)
235AC_SUBST(newslib)
236AC_SUBST(newsetc)
237AC_SUBST(newsdb)
238AC_SUBST(newsarts)
239AC_SUBST(newstmp)
240AC_SUBST(newsbin)
241AC_SUBST(newslogfile)
242newspath="$PATH:$newsbin"
243AC_SUBST(newspath)
244AC_DEFINE_UNQUOTED(NEWSARTS, "$newsarts")
245AC_DEFINE_UNQUOTED(HISTFILE, "$newsdb/history")
246AC_OUTPUT(Makefile c-nocem)
247