xref: /openbmc/ipmitool/configure.ac (revision 70984dca)
1dnl
2dnl autoconf for ipmitool
3dnl
4AC_INIT([src/ipmitool.c])
5AC_CANONICAL_SYSTEM
6AM_INIT_AUTOMAKE([ipmitool], [1.8.15-cvs])
7AM_CONFIG_HEADER(config.h)
8AC_CONFIG_SRCDIR([src/ipmitool.c])
9AC_PREREQ(2.50)
10AC_SUBST(ac_configure_args)
11
12dnl check for requirements
13AC_PROG_CC
14AC_PROG_INSTALL
15AC_PROG_LN_S
16AC_PROG_MAKE_SET
17AC_CHECK_PROG([RPMBUILD], [rpmbuild], [rpmbuild], [rpm])
18AC_CHECK_PROG([SED], [sed], [sed])
19
20AC_HEADER_STDC
21AC_CHECK_HEADERS([stdlib.h string.h sys/ioctl.h sys/stat.h unistd.h paths.h])
22AC_CHECK_HEADERS([arpa/inet.h fcntl.h netdb.h netinet/in.h sys/socket.h])
23AC_CHECK_HEADERS([sys/byteorder.h byteswap.h])
24
25AC_C_CONST
26AC_C_INLINE
27AC_C_BIGENDIAN
28
29AC_FUNC_SELECT_ARGTYPES
30AC_FUNC_STRTOD
31AC_CHECK_FUNCS([alarm gethostbyname getaddrinfo getifaddrs socket select])
32AC_CHECK_FUNCS([memmove memset strchr strdup strerror])
33AC_CHECK_FUNCS([getpassphrase])
34
35CFLAGS="$CFLAGS -Wall -Wextra -std=c99 -pedantic -Wformat -Wformat-nonliteral"
36
37AM_PROG_LIBTOOL
38LIBTOOL="$LIBTOOL --silent"
39
40AC_SEARCH_LIBS([gethostbyname], [nsl])
41AC_SEARCH_LIBS([getaddrinfo], [nsl])
42AC_SEARCH_LIBS([getifaddrs], [nsl])
43AC_SEARCH_LIBS([socket], [socket], [],
44	[AC_CHECK_LIB([nsl], [socket],
45		[LIBS="$LIBS -lsocket -lnsl"], [], [-lsocket])])
46
47if test "x$prefix" = "xNONE"; then
48	prefix="$ac_default_prefix"
49fi
50
51if test "x$exec_prefix" = "xNONE"; then
52	exec_prefix="$prefix"
53fi
54
55dnl
56dnl set default option values
57dnl
58
59xenable_intf_bmc=no
60xenable_intf_imb=yes
61xenable_intf_open=yes
62xenable_intf_lipmi=yes
63#xenable_intf_serial=yes
64xenable_intf_dummy=no
65xenable_all_options=yes
66xenable_ipmishell=yes
67
68dnl set some things so we build with GNU tools on Solaris
69case "$host_os" in
70solaris*)
71	MAKE=gmake
72	STRIP=gstrip
73	LD=gld
74	AR=gar
75	# openssl libs are in /usr/sfw/lib on solaris 10
76	LIBS="$LIBS -R/usr/sfw/lib"
77	# disable the linux-specific interfaces
78	xenable_intf_bmc=yes
79	xenable_intf_imb=no
80	xenable_intf_open=no
81	xenable_intf_lipmi=no
82	xenable_ipmishell=no
83	xenable_all_options=no
84	;;
85*cygwin*)
86	# disable the linux and solaris-specific interfaces
87	xenable_intf_imb=no
88	xenable_intf_open=no
89	xenable_intf_lipmi=no
90	xenable_intf_bmc=no
91	;;
92*darwin*|aix*)
93	# disable the linux and solaris-specific interfaces
94	xenable_intf_imb=no
95	xenable_intf_open=no
96	xenable_intf_lipmi=no
97	xenable_intf_bmc=no
98	xenable_ipmishell=no
99	;;
100*freebsd*)
101	xenable_intf_imb=no
102	xenable_intf_lipmi=no
103	xenable_intf_bmc=no
104	;;
105*netbsd*)
106	xenable_intf_imb=no
107	xenable_intf_lipmi=no
108	xenable_intf_bmc=no
109	xenable_intf_open=no
110	;;
111gnu*)
112	# disable the linux and solaris-specific interfaces on Hurd
113	xenable_intf_imb=no
114	xenable_intf_open=no
115	;;
116esac
117
118AC_SUBST(ARCH, $host_cpu)
119AC_SUBST(OS, $host_os)
120AC_SUBST(PSTAMP, $host)
121AC_SUBST(BASEDIR, $prefix)
122
123dnl allow solaris builds to include all options
124AC_ARG_ENABLE([solaris-opt],
125	[AC_HELP_STRING([--enable-solaris-opt],
126			[enable all options for Solaris [default=no]])],
127	[xenable_solaris_opt=$enableval],
128	[xenable_solaris_opt=no])
129if test "x$xenable_all_options" = "xyes" || test "x$xenable_solaris_opt" = "xyes"; then
130	AC_DEFINE(ENABLE_ALL_OPTIONS, [1], [Define to 1 to enable all command line options.])
131fi
132
133dnl check for OpenSSL functionality
134AC_ARG_ENABLE([internal-md5],
135	[AC_HELP_STRING([--enable-internal-md5],
136			[enable internal MD5 library [default=no]])],
137	[xenable_internal_md5=$enableval],
138	[xenable_internal_md5=no])
139
140AC_CHECK_LIB([crypto], [EVP_aes_128_cbc],
141	[if test "x$xenable_internal_md5" != "xyes"; then
142	    have_crypto=yes; LIBS="$LIBS -lcrypto"
143	fi],
144	[have_crypto=no], [-lcrypto])
145
146AC_CHECK_LIB([crypto], [MD5_Init],
147	[if test "x$xenable_internal_md5" != "xyes"; then
148	    if test "x$have_crypto" != "xyes"; then
149	        LIBS="$LIBS -lcrypto"
150	        have_md5=yes
151	    fi
152	    AC_DEFINE(HAVE_CRYPTO_MD5, [1], [Define to 1 if libcrypto supports MD5.])
153	fi],
154	[], [-lcrypto])
155
156AC_CHECK_LIB([crypto], [MD2_Init],
157	[if test "x$xenable_internal_md5" != "xyes"; then
158	    if test "x$have_crypto" != "xyes" && test "x$have_md5" != "xyes"; then
159	        LIBS="$LIBS -lcrypto"
160	        have_md2=yes
161	    fi
162	    AC_DEFINE(HAVE_CRYPTO_MD2, [1], [Define to 1 if libcrypto supports MD2.])
163	fi],
164	[], [-lcrypto])
165
166dnl enable IPMIv1.5 LAN interface
167AC_ARG_ENABLE([intf-lan],
168	[AC_HELP_STRING([--enable-intf-lan],
169			[enable IPMIv1.5 LAN interface [default=yes]])],
170	[xenable_intf_lan=$enableval],
171	[xenable_intf_lan=yes])
172if test "x$xenable_intf_lan" = "xstatic" || test "x$xenable_intf_lan" = "xplugin"; then
173	xenable_intf_lan=yes
174fi
175if test "x$xenable_intf_lan" = "xyes"; then
176	AC_DEFINE(IPMI_INTF_LAN, [1], [Define to 1 to enable LAN IPMIv1.5 interface.])
177	AC_SUBST(INTF_LAN, [lan])
178	AC_SUBST(INTF_LAN_LIB, [libintf_lan.la])
179	IPMITOOL_INTF_LIB="$IPMITOOL_INTF_LIB lan/libintf_lan.la"
180fi
181
182dnl enable IPMIv2.0 RMCP+ LAN interface
183AC_ARG_ENABLE([intf-lanplus],
184	[AC_HELP_STRING([--enable-intf-lanplus],
185			[enable IPMIv2.0 RMCP+ LAN interface [default=auto]])],
186	[xenable_intf_lanplus=$enableval],
187	[xenable_intf_lanplus=$have_crypto])
188if test "x$xenable_intf_lanplus" = "xstatic" || test "x$xenable_intf_lanplus" = "xplugin"; then
189	xenable_intf_lanplus=yes
190fi
191if test "x$xenable_intf_lanplus" != "xno" && test "x$have_crypto" != "xyes"; then
192	echo "** The lanplus interface requires an SSL library with EVP_aes_128_cbc defined."
193	xenable_intf_lanplus=no
194fi
195if test "x$xenable_intf_lanplus" = "xyes"; then
196	AC_DEFINE(IPMI_INTF_LANPLUS, [1], [Define to 1 to enable LAN+ IPMIv2 interface.])
197	AC_SUBST(INTF_LANPLUS, [lanplus])
198	AC_SUBST(INTF_LANPLUS_LIB, [libintf_lanplus.la])
199	IPMITOOL_INTF_LIB="$IPMITOOL_INTF_LIB lanplus/libintf_lanplus.la"
200else
201	xenable_intf_lanplus=no
202fi
203
204ORIG_CPPFLAGS=$CPPFLAGS
205
206dnl enable serial interface
207AC_ARG_ENABLE([intf-serial],
208	[AC_HELP_STRING([--enable-intf-serial],
209			[enable direct Serial Basic/Terminal mode interface [default=yes]])],
210	[xenable_intf_serial=$enableval], [xenable_intf_serial=yes])
211if test "x$enable_intf_serial" = "xstatic" || test "x$enable_intf_serial" = "xplugin"; then
212   xenable_intf_serial=yes
213fi
214if test "x$xenable_intf_serial" = "xyes"; then
215    AC_DEFINE(IPMI_INTF_SERIAL, [1], [Define to 1 to enable serial interface.])
216    AC_SUBST(INTF_SERIAL, [serial])
217    AC_SUBST(INTF_SERIAL_LIB, [libintf_serial.la])
218    IPMITOOL_INTF_LIB="$IPMITOOL_INTF_LIB serial/libintf_serial.la"
219else
220	xenable_intf_serial=no
221fi
222
223dnl look for OpenIPMI header files
224AC_ARG_WITH([kerneldir],
225	[AC_HELP_STRING([--with-kerneldir=DIR],
226			[set kernel include path to DIR])],
227	[if test "x$with_kerneldir" = "xyes"; then
228	    with_kerneldir="/lib/modules/`uname -r`/build"
229	fi
230	CFLAGS="$CFLAGS -I ${with_kerneldir}/include"
231	AC_SUBST(CFLAGS)
232	CPPFLAGS="$CPPFLAGS -I ${with_kerneldir}/include"
233	AC_SUBST(CPPFLAGS)
234	if test -s ${with_kerneldir}/include/linux/version.h ; then
235	    kernelver=`grep UTS_RELEASE ${with_kerneldir}/include/linux/version.h | \
236	        sed 's/^\#define UTS_RELEASE \"\(2\.[0-9]\)\..*/\1/'`
237	    if test "x$kernelver" = "x2.6"; then
238	        CPPFLAGS="$CPPFLAGS -D__user="
239	        AC_SUBST(CPPFLAGS)
240	    fi
241	fi])
242
243AH_TEMPLATE([HAVE_LINUX_COMPILER_H], [])
244AC_MSG_CHECKING([for linux/compiler.h])
245
246m4_version_prereq([2.68],
247	[AC_PREPROC_IFELSE([AC_LANG_SOURCE([[#include <linux/compiler.h>]])],
248		[AC_DEFINE(HAVE_LINUX_COMPILER_H, [1],
249			[Define to 1 if you have the <linux/compiler.h> header file.])
250		AC_MSG_RESULT([yes])],
251		[AC_MSG_RESULT([no])])],
252	[AC_PREPROC_IFELSE([#include <linux/compiler.h>],
253		[AC_DEFINE(HAVE_LINUX_COMPILER_H, [1],
254		[Define to 1 if you have the <linux/compiler.h> header file.])
255		AC_MSG_RESULT([yes])],
256		[AC_MSG_RESULT([no])])])
257
258CPPFLAGS=$ORIG_CPPFLAGS
259AC_SUBST(CPPFLAGS)
260
261AC_CHECK_HEADER([sys/ioccom.h],
262	[AC_DEFINE(HAVE_SYS_IOCCOM_H, [1],
263	[Define to 1 if you have the <sys/ioccom.h> header file.])])
264
265AC_CHECK_HEADER([linux/ipmi.h],
266	[AC_DEFINE(HAVE_OPENIPMI_H, [1],
267	[Define to 1 if you have the <linux/ipmi.h> header file.])],
268	[AC_CHECK_HEADER([sys/ipmi.h],
269		[AC_DEFINE(HAVE_FREEBSD_IPMI_H, [1],
270		[Define to 1 if you have the <sys/ipmi.h> header file.])],
271		[echo "** Unable to find OpenIPMI header files.  Using internal version."])])
272
273dnl look for FreeIPMI files
274AC_CHECK_LIB(freeipmi, ipmi_open_inband, [have_free=yes], [have_free=no])
275if test "x$have_free" != "xyes"; then
276	AC_CHECK_LIB(freeipmi, ipmi_ctx_open_inband, [have_free=yes], [have_free=no])
277fi
278AC_ARG_ENABLE([intf-free],
279	[AC_HELP_STRING([--enable-intf-free],
280		[enable FreeIPMI IPMI interface [default=auto]])],
281	[xenable_intf_free=$enableval],
282	[xenable_intf_free=$have_free])
283if test "x$xenable_intf_free" = "xstatic" || test "x$xenable_intf_free" = "xplugin"; then
284	xenable_intf_free=yes
285fi
286if test "x$xenable_intf_free" != "xno" && test "x$have_free" != "xyes"; then
287	echo "** Unable to build FreeIPMI interface support!"
288	xenable_intf_free=no
289fi
290if test "x$xenable_intf_free" = "xyes"; then
291dnl Determine if you got the right FreeIPMI version
292    AC_MSG_CHECKING([for libfreeipmi version 0.3.0])
293    AC_TRY_COMPILE([
294#include <sys/types.h>	/* For size_t */
295#include <stdio.h>	/* For NULL */
296#include <freeipmi/freeipmi.h>
297#include <freeipmi/udm/ipmi-udm.h>
298    ], [
299    ipmi_device_t dev;
300    dev = ipmi_open_inband(IPMI_DEVICE_KCS,
301                           0,
302                           0,
303                           0,
304                           NULL,
305                           0);
306    ], ac_free_version_0_3_0=yes, ac_free_version_0_3_0=no)
307    AC_MSG_RESULT($ac_free_version_0_3_0)
308    AC_MSG_CHECKING([for libfreeipmi version 0.4.0])
309    AC_TRY_COMPILE([
310#include <sys/types.h>	/* For size_t */
311#include <stdio.h>	/* For NULL */
312#include <freeipmi/freeipmi.h>
313#include <freeipmi/udm/ipmi-udm.h>
314    ], [
315    ipmi_device_t dev = NULL;
316    int rv;
317    dev = ipmi_device_create();
318    rv = ipmi_open_inband(dev,
319                          IPMI_DEVICE_KCS,
320                          0,
321                          0,
322                          0,
323                          NULL,
324                          0);
325    ], ac_free_version_0_4_0=yes, ac_free_version_0_4_0=no)
326    AC_MSG_RESULT($ac_free_version_0_4_0)
327    AC_MSG_CHECKING([for libfreeipmi version 0.5.0])
328    AC_TRY_COMPILE([
329#include <sys/types.h>	/* For size_t */
330#include <stdio.h>	/* For NULL */
331#include <freeipmi/freeipmi.h>
332#include <freeipmi/udm/ipmi-udm.h>
333    ], [
334    ipmi_device_t dev = NULL;
335    int rv;
336    dev = ipmi_device_create();
337    rv = ipmi_open_inband(dev,
338                          IPMI_DEVICE_KCS,
339                          0,
340                          0,
341                          0,
342                          NULL,
343                          0,
344                          0);
345    ], ac_free_version_0_5_0=yes, ac_free_version_0_5_0=no)
346    AC_MSG_RESULT($ac_free_version_0_5_0)
347
348    AC_MSG_CHECKING([for libfreeipmi version 0.6.0])
349    AC_TRY_COMPILE([
350#include <stdio.h>	/* For NULL */
351#include <freeipmi/freeipmi.h>
352    ], [
353    ipmi_ctx_t ctx = NULL;
354    int rv;
355    ctx = ipmi_ctx_create();
356    rv = ipmi_ctx_open_inband(ctx,
357                              IPMI_DEVICE_KCS,
358                              0,
359                              0,
360                              0,
361                              NULL,
362                              0,
363                              0);
364    ], ac_free_version_0_6_0=yes, ac_free_version_0_6_0=no)
365    AC_MSG_RESULT($ac_free_version_0_6_0)
366
367    if test "x$ac_free_version_0_3_0" = "xyes" \
368       || test "x$ac_free_version_0_4_0" = "xyes" \
369       || test "x$ac_free_version_0_5_0" = "xyes" \
370       || test "x$ac_free_version_0_6_0" = "xyes"; then
371       AC_DEFINE(IPMI_INTF_FREE, [1], [Define to 1 to enable FreeIPMI interface.])
372       AC_SUBST(INTF_FREE, [free])
373       AC_SUBST(INTF_FREE_LIB, [libintf_free.la])
374       IPMITOOL_INTF_LIB="$IPMITOOL_INTF_LIB free/libintf_free.la"
375       if test "x$ac_free_version_0_3_0" = "xyes"; then
376          AC_DEFINE(IPMI_INTF_FREE_0_3_0, [1], [Define to 1 for FreeIPMI 0.3.0.])
377       fi
378       if test "x$ac_free_version_0_4_0" = "xyes"; then
379          AC_DEFINE(IPMI_INTF_FREE_0_4_0, [1], [Define to 1 for FreeIPMI 0.4.0.])
380       fi
381       if test "x$ac_free_version_0_5_0" = "xyes"; then
382          AC_DEFINE(IPMI_INTF_FREE_0_5_0, [1], [Define to 1 for FreeIPMI 0.5.0.])
383       fi
384       if test "x$ac_free_version_0_6_0" = "xyes"; then
385          AC_DEFINE(IPMI_INTF_FREE_0_6_0, [1], [Define to 1 for FreeIPMI 0.6.0.])
386       fi
387    else
388       xenable_intf_free=no
389    fi
390
391    AC_CHECK_LIB(freeipmi,
392      ipmi_cmd_raw_ipmb,
393      AC_DEFINE(IPMI_INTF_FREE_BRIDGING, [1],
394        [Define to 1 to enable FreeIPMI Bridging Support.]))
395fi
396
397dnl look for termios header file
398AC_CHECK_HEADER([termios.h],
399	[AC_DEFINE(HAVE_TERMIOS_H, [1], [Define to 1 if you have <termios.h>.])],
400	[AC_CHECK_HEADER([sys/termios.h],
401		[AC_DEFINE(HAVE_SYS_TERMIOS_H, [1], [Define to 1 if you have <sys/termios.h>.])],
402		[echo "** Unable to find termios header file."])])
403
404dnl set RPM distro tag for use in RPM name
405AC_ARG_WITH([rpm-distro],
406	[AC_HELP_STRING([--with-rpm-distro=DISTRO],
407			[set Linux distribution tag for use in RPM version string])],
408	[AC_SUBST(DISTRO, $with_rpm_distro)])
409
410dnl set RPM release tag
411AC_ARG_WITH([rpm-release],
412	[AC_HELP_STRING([--with-rpm-release=RELEASE],
413			[set release number for RPM release field])],
414	[], [with_rpm_release=1])
415AC_SUBST(RPM_RELEASE, $with_rpm_release)
416
417dnl enable Linux OpenIPMI interface
418AC_ARG_ENABLE([intf-open],
419	[AC_HELP_STRING([--enable-intf-open],
420			[enable Linux OpenIPMI interface [default=auto]])],
421	[xenable_intf_open=$enableval],
422	[])
423if test "x$xenable_intf_open" = "xstatic" || test "x$xenable_intf_open" = "xplugin"; then
424	xenable_intf_open=yes
425fi
426if test "x$xenable_intf_open" = "xyes"; then
427	AC_DEFINE(IPMI_INTF_OPEN, [1], [Define to 1 to enable Linux OpenIPMI interface.])
428	AC_SUBST(INTF_OPEN, [open])
429	AC_SUBST(INTF_OPEN_LIB, [libintf_open.la])
430	IPMITOOL_INTF_LIB="$IPMITOOL_INTF_LIB open/libintf_open.la"
431
432	dnl Check for dual bridge support in OpenIPMI
433	AC_MSG_CHECKING([for OpenIPMI dual bridge support])
434	have_openipmi_dual_bridge=no
435	ORIG_CPPFLAGS="$CPPFLAGS"
436	CPPFLAGS="$CPPFLAGS -Isrc/plugins/open -DENABLE_INTF_OPEN_DUAL_BRIDGE"
437	AC_TRY_COMPILE([
438			#if defined(HAVE_OPENIPMI_H)
439			# if defined(HAVE_LINUX_COMPILER_H)
440			#  include <linux/compiler.h>
441			# endif
442			# include <linux/ipmi.h>
443			#elif defined(HAVE_FREEBSD_IPMI_H)
444			# include <sys/ipmi.h>
445			#else
446			# include "open.h"
447			#endif
448		], [
449			struct ipmi_ipmb_addr a;
450			a.transit_slave_addr = 0;
451		], [have_openipmi_dual_bridge=yes])
452	if test x"$have_openipmi_dual_bridge" = x"yes"; then
453		AC_DEFINE(ENABLE_INTF_OPEN_DUAL_BRIDGE, [1],
454			[Define to 1 to enable OpenIPMI interface dual bridge support])
455	fi
456	CPPFLAGS="$ORIG_CPPFLAGS"
457	AC_MSG_RESULT([$have_openipmi_dual_bridge])
458fi
459
460dnl enable Intel IMB interface
461AC_ARG_ENABLE([intf-imb],
462	[AC_HELP_STRING([--enable-intf-imb],
463			[enable Intel IMB driver interface [default=auto]])],
464	[xenable_intf_imb=$enableval],
465	[])
466if test "x$xenable_intf_imb" = "xstatic" || test "x$xenable_intf_imb" = "xplugin"; then
467	xenable_intf_imb=yes
468fi
469if test "x$xenable_intf_imb" = "xyes"; then
470	AC_DEFINE(IPMI_INTF_IMB, [1], [Define to 1 to enable Intel IMB interface.])
471	AC_SUBST(INTF_IMB, [imb])
472	AC_SUBST(INTF_IMB_LIB, [libintf_imb.la])
473	IPMITOOL_INTF_LIB="$IPMITOOL_INTF_LIB imb/libintf_imb.la"
474fi
475
476dnl enable Solaris LIPMI interface
477AC_CHECK_HEADER([sys/lipmi/lipmi_intf.h], [have_lipmi=yes], [have_lipmi=no])
478AC_ARG_ENABLE([intf-lipmi],
479	[AC_HELP_STRING([--enable-intf-lipmi],
480			[enable Solaris 9 x86 IPMI interface [default=no]])],
481	[xenable_intf_lipmi=$enableval],
482	[])
483if test "x$xenable_intf_lipmi" = "xstatic" || test "x$xenable_intf_lipmi" = "xplugin"; then
484	xenable_intf_lipmi=yes
485fi
486if test "x$xenable_intf_lipmi" != "xno" && test "x$have_lipmi" != "xyes"; then
487	echo "** Unable to build Solaris 9 x86 IPMI interface support!"
488	xenable_intf_lipmi=no
489fi
490if test "x$xenable_intf_lipmi" = "xyes"; then
491	AC_DEFINE(IPMI_INTF_LIPMI, [1], [Define to 1 to enable Solaris 9 LIPMI interface.])
492	AC_SUBST(INTF_LIPMI, [lipmi])
493	AC_SUBST(INTF_LIPMI_LIB, [libintf_lipmi.la])
494	IPMITOOL_INTF_LIB="$IPMITOOL_INTF_LIB lipmi/libintf_lipmi.la"
495fi
496
497dnl enable Solaris BMC interface
498AC_ARG_ENABLE([intf-bmc],
499	[AC_HELP_STRING([--enable-intf-bmc],
500			[enable Solaris 10 x86 IPMI interface [default=auto]])],
501	[xenable_intf_bmc=$enableval],
502	[xenable_intf_bmc=no])
503if test "x$xenable_intf_bmc" = "xstatic" || test "x$xenable_intf_bmc" = "xplugin"; then
504	xenable_intf_bmc=yes
505fi
506if test "x$xenable_intf_bmc" = "xyes"; then
507	AC_DEFINE(IPMI_INTF_BMC, [1], [Define to 1 to enable Solaris 10 BMC interface.])
508	AC_SUBST(INTF_BMC, [bmc])
509	AC_SUBST(INTF_BMC_LIB, [libintf_bmc.la])
510	IPMITOOL_INTF_LIB="$IPMITOOL_INTF_LIB bmc/libintf_bmc.la"
511fi
512
513dnl enable Dummy interface for testing
514AC_ARG_ENABLE([intf-dummy],
515	[AC_HELP_STRING([--enable-intf-dummy],
516			[enable Dummy(test) interface [default=no]])],
517	[xenable_intf_dummy=$enableval], [xenable_intf_dummy=no])
518if test "x$xenable_intf_dummy" = "xyes"; then
519	AC_DEFINE(IPMI_INTF_DUMMY, [1], [Define to 1 to enable Dummy interface.])
520	AC_SUBST(INTF_DUMMY, [dummy])
521	AC_SUBST(INTF_DUMMY_LIB, [libintf_dummy.la])
522	IPMITOOL_INTF_LIB="$IPMITOOL_INTF_LIB dummy/libintf_dummy.la"
523fi
524
525AC_SUBST(IPMITOOL_INTF_LIB)
526
527if test "x$xenable_ipmishell" = "xyes"; then
528	AC_SEARCH_LIBS([tgetent], [tinfo ncurses curses readline termcap])
529	AC_SEARCH_LIBS([initscr], [ncurses curses], [have_curses=yes])
530	AC_SEARCH_LIBS([readline], [readline edit], [have_readline=yes])
531	if test "x$have_curses" != "xyes" || test "x$have_readline" != "xyes"; then
532		xenable_ipmishell=no
533	fi
534fi
535
536dnl check for readline library to enable ipmi shell
537AC_ARG_ENABLE([ipmishell],
538	[AC_HELP_STRING([--enable-ipmishell],
539			[enable IPMI shell interface [default=auto]])],
540	[xenable_ipmishell=$enableval],
541	[])
542if test "x$xenable_ipmishell" = "xyes"; then
543	AC_SEARCH_LIBS([tgetent], [tinfo ncurses curses readline termcap])
544	AC_SEARCH_LIBS([initscr], [ncurses curses], [have_curses=yes])
545	AC_SEARCH_LIBS([readline], [readline edit], [have_readline=yes])
546	if test "x$have_curses" != "xyes"; then
547		AC_MSG_ERROR([** Unable to find curses required by ipmishell.])
548	fi
549	if test "x$have_readline" != "xyes"; then
550		AC_MSG_ERROR([** Unable to find readline required by ipmishell.])
551	fi
552	AC_DEFINE(HAVE_READLINE, [1], [Define to 1 if readline present.])
553fi
554
555dnl Enable -Wall -Werror
556AC_ARG_ENABLE([buildcheck],
557	[AC_HELP_STRING([--enable-buildcheck],
558			[enable -Wall -Werror for build testing [default=no]])],
559	[xenable_buildcheck=$enableval],
560	[xenable_buildcheck=no])
561if test "x$xenable_buildcheck" != "xno"; then
562	CFLAGS="$CFLAGS -Wall -Werror -Wpointer-arith -Wstrict-prototypes"
563fi
564AC_SUBST(CFLAGS)
565
566dnl Enable extra file security paranoia
567AC_ARG_ENABLE([file-security],
568	[AC_HELP_STRING([--enable-file-security],
569			[enable extra security checks on files opened for read [default=no]])],
570	[xenable_file_security=$enableval],
571	[xenable_file_security=no])
572if test "x$xenable_file_security" != "xno"; then
573	AC_DEFINE(ENABLE_FILE_SECURITY, [1], [Define to 1 for extra file security.])
574fi
575
576
577AC_TRY_COMPILE([],[
578	#include <stdio.h>
579
580	struct packstruct {
581		unsigned char t0       :5;
582		unsigned char t1       :5;
583		unsigned char t2       :5;
584		unsigned char t3       :5;
585		unsigned char t4       :4;
586	} __attribute__ ((packed));
587
588	int
589	main(int argc, char ** argv)
590	{
591	if(sizeof(struct packstruct) != 3)
592	return(1);
593	else
594	return(0);
595	}
596	],
597	[],
598	[AC_DEFINE(HAVE_PRAGMA_PACK,[1],
599		[Define to 1 if you need to use #pragma pack instead of __attribute__ ((packed))])]
600)
601
602
603dnl Generate files for build
604AC_CONFIG_FILES([Makefile
605		doc/Makefile
606		contrib/Makefile
607		control/Makefile
608		control/pkginfo
609		control/prototype
610		control/rpmmacros
611		control/ipmitool.spec
612		lib/Makefile
613		include/Makefile
614		include/ipmitool/Makefile
615		src/Makefile
616		src/plugins/Makefile
617		src/plugins/lan/Makefile
618		src/plugins/lanplus/Makefile
619		src/plugins/open/Makefile
620		src/plugins/free/Makefile
621		src/plugins/imb/Makefile
622		src/plugins/bmc/Makefile
623		src/plugins/lipmi/Makefile
624		src/plugins/serial/Makefile
625		src/plugins/dummy/Makefile])
626
627AC_OUTPUT
628
629AC_MSG_RESULT([])
630AC_MSG_RESULT([ipmitool $VERSION])
631AC_MSG_RESULT([])
632AC_MSG_RESULT([Interfaces])
633AC_MSG_RESULT([  lan     : $xenable_intf_lan])
634AC_MSG_RESULT([  lanplus : $xenable_intf_lanplus])
635AC_MSG_RESULT([  open    : $xenable_intf_open])
636AC_MSG_RESULT([  free    : $xenable_intf_free])
637AC_MSG_RESULT([  imb     : $xenable_intf_imb])
638AC_MSG_RESULT([  bmc     : $xenable_intf_bmc])
639AC_MSG_RESULT([  lipmi   : $xenable_intf_lipmi])
640AC_MSG_RESULT([  serial  : $xenable_intf_serial])
641AC_MSG_RESULT([  dummy   : $xenable_intf_dummy])
642AC_MSG_RESULT([])
643AC_MSG_RESULT([Extra tools])
644AC_MSG_RESULT([  ipmievd   : yes])
645AC_MSG_RESULT([  ipmishell : $xenable_ipmishell])
646AC_MSG_RESULT([])
647
648