1AC_INIT([Arts++], [1.1.a12])
2AC_PREREQ(2.53)
3AC_CONFIG_SRCDIR(classes/include/Arts.hh)
4AC_CONFIG_HEADER(classes/include/caida_t.h classes/include/artslocal.h include/aclocal.h classes/include/Ipv4PrefixPatricia.hh)
5
6dnl  @(#) $Name: arts++-1-1-a13 $
7dnl  @(#) $Id: configure.in,v 1.6 2006/09/08 22:30:05 youngh Exp $
8
9dnl  ###  override prefix if not set
10
11if test "$prefix" = "NONE"; then
12  prefix="/usr/local/arts"
13fi
14
15AC_LANG(C++)
16
17dnl  ###  Checks for programs.
18
19AC_PROG_CC
20AC_PROG_CXX
21AC_AIX
22AC_PROG_RANLIB
23AC_PATH_XTRA
24AC_CANONICAL_SYSTEM
25AM_DISABLE_SHARED
26AM_PROG_LIBTOOL
27
28inttypes=no
29AC_CHECK_HEADERS(inttypes.h,[inttypes=yes])
30case $inttypes in
31  yes)
32    AC_MSG_CHECKING([for int8_t in <inttypes.h>])
33    AC_TRY_COMPILE([#include <inttypes.h>],
34	[int8_t  bar;],
35        [AC_DEFINE(HAVE_INT8_T)
36	 AC_MSG_RESULT(yes)
37	],
38	AC_MSG_RESULT(no))
39    AC_MSG_CHECKING([for int16_t in <inttypes.h>])
40    AC_TRY_COMPILE([#include <inttypes.h>],
41	[int16_t  bar;],
42        [AC_DEFINE(HAVE_INT16_T)
43	 AC_MSG_RESULT(yes)
44	],
45	AC_MSG_RESULT(no))
46    AC_MSG_CHECKING([for int32_t in <inttypes.h>])
47    AC_TRY_COMPILE([#include <inttypes.h>],
48	[int32_t  bar;],
49        [AC_DEFINE(HAVE_INT32_T)
50	 AC_MSG_RESULT(yes)
51	],
52	AC_MSG_RESULT(no))
53    AC_MSG_CHECKING([for int64_t in <inttypes.h>])
54    AC_TRY_COMPILE([#include <inttypes.h>],
55	[int64_t  bar;],
56        [AC_DEFINE(HAVE_INT64_T)
57	 AC_MSG_RESULT(yes)
58	],
59	AC_MSG_RESULT(no))
60    AC_MSG_CHECKING([for uint8_t in <inttypes.h>])
61    AC_TRY_COMPILE([#include <inttypes.h>],
62	[uint8_t  bar;],
63        [AC_DEFINE(HAVE_UINT8_T)
64	 AC_MSG_RESULT(yes)
65	],
66	AC_MSG_RESULT(no))
67    AC_MSG_CHECKING([for uint16_t in <inttypes.h>])
68    AC_TRY_COMPILE([#include <inttypes.h>],
69	[uint16_t  bar;],
70        [AC_DEFINE(HAVE_UINT16_T)
71	 AC_MSG_RESULT(yes)
72	],
73	AC_MSG_RESULT(no))
74    AC_MSG_CHECKING([for uint32_t in <inttypes.h>])
75    AC_TRY_COMPILE([#include <inttypes.h>],
76	[uint32_t  bar;],
77        [AC_DEFINE(HAVE_UINT32_T)
78	 AC_MSG_RESULT(yes)
79	],
80	AC_MSG_RESULT(no))
81    AC_MSG_CHECKING([for uint64_t in <inttypes.h>])
82    AC_TRY_COMPILE([#include <inttypes.h>],
83	[uint64_t  bar;],
84        [AC_DEFINE(HAVE_UINT64_T)
85	 AC_MSG_RESULT(yes)
86	],
87	AC_MSG_RESULT(no))
88    ;;
89esac
90
91dnl ---------------------------------------------------------------------------
92dnl   Check for <machine/types.h>, then check to see if it's got definitions
93dnl   for the types in the ISO C working draft <inttypes.h> or includes
94dnl   some other header files that defines them.
95dnl ---------------------------------------------------------------------------
96
97machine_types=no
98AC_CHECK_HEADERS(machine/types.h,[machine_types=yes])
99
100case $machine_types in
101  yes)
102    AC_MSG_CHECKING([for int8_t in <machine/types.h>])
103    AC_TRY_COMPILE([#include <machine/types.h>],
104	[int8_t  bar;],
105        [AC_DEFINE(HAVE_INT8_T)
106	 AC_MSG_RESULT(yes)
107	],
108	AC_MSG_RESULT(no))
109    AC_MSG_CHECKING([for int16_t in <machine/types.h>])
110    AC_TRY_COMPILE([#include <machine/types.h>],
111	[int16_t  bar;],
112        [AC_DEFINE(HAVE_INT16_T)
113	 AC_MSG_RESULT(yes)
114	],
115	AC_MSG_RESULT(no))
116    AC_MSG_CHECKING([for int32_t in <machine/types.h>])
117    AC_TRY_COMPILE([#include <machine/types.h>],
118	[int32_t  bar;],
119        [AC_DEFINE(HAVE_INT32_T)
120	 AC_MSG_RESULT(yes)
121	],
122	AC_MSG_RESULT(no))
123    AC_MSG_CHECKING([for int64_t in <machine/types.h>])
124    AC_TRY_COMPILE([#include <machine/types.h>],
125	[int64_t  bar;],
126        [AC_DEFINE(HAVE_INT64_T)
127	 AC_MSG_RESULT(yes)
128	],
129	AC_MSG_RESULT(no))
130    AC_MSG_CHECKING([for uint8_t in <machine/types.h>])
131    AC_TRY_COMPILE([#include <machine/types.h>],
132	[uint8_t  bar;],
133        [AC_DEFINE(HAVE_UINT8_T)
134	 AC_MSG_RESULT(yes)
135	],
136	AC_MSG_RESULT(no))
137    AC_MSG_CHECKING([for uint16_t in <machine/types.h>])
138    AC_TRY_COMPILE([#include <machine/types.h>],
139	[uint16_t  bar;],
140        [AC_DEFINE(HAVE_UINT16_T)
141	 AC_MSG_RESULT(yes)
142	],
143	AC_MSG_RESULT(no))
144    AC_MSG_CHECKING([for uint32_t in <machine/types.h>])
145    AC_TRY_COMPILE([#include <machine/types.h>],
146	[uint32_t  bar;],
147        [AC_DEFINE(HAVE_UINT32_T)
148	 AC_MSG_RESULT(yes)
149	],
150	AC_MSG_RESULT(no))
151    AC_MSG_CHECKING([for uint64_t in <machine/types.h>])
152    AC_TRY_COMPILE([#include <machine/types.h>],
153	[uint64_t  bar;],
154        [AC_DEFINE(HAVE_UINT64_T)
155	 AC_MSG_RESULT(yes)
156	],
157	AC_MSG_RESULT(no))
158    ;;
159esac
160
161dnl ---------------------------------------------------------------------------
162dnl   Check for <sys/types.h>, then check to see if it's got definitions
163dnl   for the types in the ISO C working draft <inttypes.h> or includes
164dnl   some other header file which defines them.
165dnl ---------------------------------------------------------------------------
166sys_types=no
167AC_CHECK_HEADERS(sys/types.h,[sys_types=yes])
168
169case $sys_types in
170  yes)
171    AC_MSG_CHECKING([for int8_t in <sys/types.h>])
172    AC_TRY_COMPILE([#include <sys/types.h>],
173	[int8_t  bar;],
174        [AC_DEFINE(HAVE_INT8_T)
175	 AC_MSG_RESULT(yes)
176	],
177	AC_MSG_RESULT(no))
178    AC_MSG_CHECKING([for int16_t in <sys/types.h>])
179    AC_TRY_COMPILE([#include <sys/types.h>],
180	[int16_t  bar;],
181        [AC_DEFINE(HAVE_INT16_T)
182	 AC_MSG_RESULT(yes)
183	],
184	AC_MSG_RESULT(no))
185    AC_MSG_CHECKING([for int32_t in <sys/types.h>])
186    AC_TRY_COMPILE([#include <sys/types.h>],
187	[int32_t  bar;],
188        [AC_DEFINE(HAVE_INT32_T)
189	 AC_MSG_RESULT(yes)
190	],
191	AC_MSG_RESULT(no))
192    AC_MSG_CHECKING([for int64_t in <sys/types.h>])
193    AC_TRY_COMPILE([#include <sys/types.h>],
194	[int64_t  bar;],
195        [AC_DEFINE(HAVE_INT64_T)
196	 AC_MSG_RESULT(yes)
197	],
198	AC_MSG_RESULT(no))
199    AC_MSG_CHECKING([for uint8_t in <sys/types.h>])
200    AC_TRY_COMPILE([#include <sys/types.h>],
201	[uint8_t  bar;],
202        [AC_DEFINE(HAVE_UINT8_T)
203	 AC_MSG_RESULT(yes)
204	],
205	AC_MSG_RESULT(no))
206    AC_MSG_CHECKING([for uint16_t in <sys/types.h>])
207    AC_TRY_COMPILE([#include <sys/types.h>],
208	[uint16_t  bar;],
209        [AC_DEFINE(HAVE_UINT16_T)
210	 AC_MSG_RESULT(yes)
211	],
212	AC_MSG_RESULT(no))
213    AC_MSG_CHECKING([for uint32_t in <sys/types.h>])
214    AC_TRY_COMPILE([#include <sys/types.h>],
215	[uint32_t  bar;],
216        [AC_DEFINE(HAVE_UINT32_T)
217	 AC_MSG_RESULT(yes)
218	],
219	AC_MSG_RESULT(no))
220    AC_MSG_CHECKING([for uint64_t in <sys/types.h>])
221    AC_TRY_COMPILE([#include <sys/types.h>],
222	[uint64_t  bar;],
223        [AC_DEFINE(HAVE_UINT64_T)
224	 AC_MSG_RESULT(yes)
225	],
226	AC_MSG_RESULT(no))
227    ;;
228esac
229
230AC_CHECK_SIZEOF(unsigned short,2)
231AC_CHECK_SIZEOF(short,2)
232AC_CHECK_SIZEOF(unsigned int,4)
233AC_CHECK_SIZEOF(int,4)
234AC_CHECK_SIZEOF(unsigned long,4)
235AC_CHECK_SIZEOF(long,4)
236AC_CHECK_SIZEOF(unsigned long long,8)
237AC_CHECK_SIZEOF(long long,8)
238
239AC_C_BIGENDIAN
240
241AC_TRY_CPP([#include <fstream>],AC_DEFINE(HAVE_FSTREAM))
242AC_TRY_CPP([#include <iostream>],AC_DEFINE(HAVE_IOSTREAM))
243AC_TRY_CPP([#include <iomanip>],AC_DEFINE(HAVE_IOMANIP))
244AC_TRY_CPP([#include <sstream>],AC_DEFINE(HAVE_SSTREAM))
245AC_TRY_CPP([#include <strstream>],AC_DEFINE(HAVE_STRSTREAM))
246
247AC_CHECK_LIB(nsl, inet_ntoa)
248AC_CHECK_LIB(socket, socket)
249AC_CHECK_LIB(rpc, xdr_float)
250AC_CHECK_LIB(rpcsvc, xdr_float)
251
252dnl  ###  Read some useful macros.
253
254builtin(include, ./xrt.m4)      dnl  check for XRT libraries
255builtin(include, ./dwm.m4)      dnl
256
257AC_CHECK_LIB(fl,yywrap,
258             [flexdirguess=system],
259             [flexguess=`which flex`
260              flexdirguess=`echo $flexguess | awk -F/ '{for (i = 2; i < NF-1; i++) {printf "/%s",$i;} printf "\n";}'`])
261DWM_PREREQ_PATH(flexdir,$flexdirguess,[flex directory])
262
263case $flexdirguess in
264  system)
265    FLEXINC=""
266    FLEXLIB="-lfl"
267    ;;
268  *)
269    FLEXINC="-I ${flexdir}/include"
270    FLEXLIB="-L ${flexdir}/lib -lfl"
271    ;;
272esac
273
274AC_SUBST(FLEXINC)
275AC_SUBST(FLEXLIB)
276
277dnl DWM_PREREQ_PATH(krb4,/usr/kerberos,[Kerberos 4 top-level directory])
278DWM_PREREQ_PATH(XINCDIR,$x_includes,[X11 include directory])
279DWM_PREREQ_PATH(XLIBDIR,$x_libraries,[X11 library directory])
280DWM_PREREQ_PATH(MOTIFINCDIR,/usr/include)
281DWM_PREREQ_PATH(MOTIFLIBDIR,/usr/lib)
282DWM_PREREQ_PATH(artspptop,`pwd`,[arts++ top-level source directory])
283DWM_PREREQ_PATH(docurl,/caida/powertools/arts,[top-level documentation URL])
284
285dnl  ###  set defaults for paths I'll use if user didn't specify them.
286
287DWM_PRESET_PATH(includedir,$prefix/include)
288DWM_PRESET_PATH(libdir,$prefix/lib)
289DWM_PRESET_PATH(bindir,$prefix/bin)
290DWM_PRESET_PATH(mandir,$prefix/man)
291
292DWM_DISABLE(debug,[disable debugging])
293case $debug in
294  no)
295    CXXFLAGS="${CXXFLAGS} -DNDEBUG"
296    ;;
297  yes)
298    ;;
299esac
300
301OSNAME=`echo ${host_cpu}-${host_os} | sed 's/\//\_/g'`
302dnl OSNAME=`uname | sed 's/\//\_/g'`
303AC_SUBST(OSNAME)
304
305echo "OSNAME set to $OSNAME"
306dnl OSRELEASE=`uname -r | sed 's/\//\_/g'`
307dnl AC_SUBST(OSRELEASE)
308dnl echo "OSRELEASE set to $OSRELEASE"
309
310case $host_os in
311  bsdi*)
312    TAR="tar"
313    ;;
314  freebsd2*)
315    DWM_XDR_DESTROY_MACRO_DONT_PASS_POINTER()
316    TAR="/usr/bin/tar -P"
317    ;;
318  freebsd3*)
319    TAR="/usr/bin/tar -P"
320    ;;
321  linux*)
322    TAR="/bin/tar -P"
323    ;;
324  solaris*)
325    DWM_PREREQ_PATH(MOTIFINCDIR,/usr/dt/include)
326    DWM_PREREQ_PATH(MOTIFLIBDIR,/usr/dt/lib)
327    X_EXTRA_LIBS="-lICE -lSM"
328    TAR="/usr/bin/tar"
329    ;;
330  sunos*)
331    dnl  this is a guess, I don't have a sunos 4.x machine
332    DWM_PREREQ_PATH(MOTIFINCDIR,/usr/dt/include)
333    DWM_PREREQ_PATH(MOTIFLIBDIR,/usr/dt/lib)
334    X_EXTRA_LIBS="-lICE -lSM"
335    TAR="/usr/bin/tar"
336    ;;
337  *)
338    TAR="tar"
339    ;;
340esac
341
342AC_SUBST(TAR)
343
344DWM_SET_VERSION(PKG_VERSION,$Name: arts++-1-1-a13 $,[arts++-1-1-a12])
345
346dnl   C_R_A is the 'Current', 'Revision', 'Age' triplet for shared
347dnl   library versioning using libtool.  Here are a set of rules
348dnl   in updating library version information:
349dnl
350dnl   1. Start with version information of `0:0:0' for each libtool
351dnl      library.
352dnl
353dnl   2. Update the version information only immediately before a
354dnl      public release.  More frequent updates are unnecessary, and
355dnl      only guarantee that the current interface number gets larger
356dnl      faster.
357dnl
358dnl   3. If the arts++ library source code has changed at all since
359dnl      the last update, then increment REVISION (`C:R:A' becomes
360dnl      `C:r+1:A').
361dnl
362dnl   4. If any interfaces have been added, removed, or changed since
363dnl      the last update, increment CURRENT, and set REVISION to 0.
364dnl
365dnl   5. If any interfaces have been added since the last public
366dnl      release, then increment AGE.
367dnl
368dnl   6. If any interfaces have been removed since the last public
369dnl      release, then set AGE to 0.
370
371DWM_SET_VERSION(C_R_A,[0:0:0],[0:0:0])
372
373DWM_LIST_PREREQ_PATHS()
374DWM_LIST_INSTALL_PATHS()
375
376AC_CONFIG_FILES(Makefile \
377	  classes/src/Makefile \
378	  classes/include/Makefile \
379	  doc/Makefile \
380	  doc/libArts/Makefile \
381	  doc/installHtml.sh \
382	  doc/libArts/installHtml.sh \
383	  apps/artsagg/Makefile \
384	  apps/artsases/Makefile \
385	  apps/artsasagg/Makefile \
386	  apps/artsdump/Makefile \
387	  apps/artsintfms/Makefile \
388	  apps/artsintfmagg/Makefile \
389	  apps/artsnets/Makefile \
390	  apps/artsnexthops/Makefile \
391	  apps/artsnexthopagg/Makefile \
392	  apps/artsnetagg/Makefile \
393	  apps/artsportagg/Makefile \
394	  apps/artsportmagg/Makefile \
395	  apps/artsportms/Makefile \
396	  apps/artsports/Makefile \
397	  apps/artsprotoagg/Makefile \
398	  apps/artsprotos/Makefile \
399	  apps/artstoc/Makefile \
400	  apps/artstos/Makefile \
401	  apps/artstrunc/Makefile)
402AC_OUTPUT
403
404