1AC_PREREQ(2.60)
2AC_INIT(linknx, 0.0.1.32, linknx@ouaye.net)
3AM_INIT_AUTOMAKE
4AC_CONFIG_SRCDIR([src/linknx.cpp])
5AC_CONFIG_HEADER([config.h])
6
7PKG_CONFIG=`which pkg-config`
8
9# Checks for programs.
10AC_PROG_CXX
11AC_PROG_CC
12AC_PROG_RANLIB
13AC_CHECK_PTHSEM(2.0.4,yes,yes,no)
14AC_CHECK_HEADER(argp.h,,[AC_MSG_ERROR([argp_parse not found])])
15AC_SEARCH_LIBS(argp_parse,argp,,[AC_MSG_ERROR([argp_parse not found])])
16
17dnl Check for CPPUnit
18ifdef([AM_PATH_CPPUNIT], [AM_PATH_CPPUNIT(1.9.6, [AM_CONDITIONAL(CPPUNIT, true)], [AM_CONDITIONAL(CPPUNIT, false)])],
19                         [AM_CONDITIONAL(CPPUNIT, false)])
20
21# Checks for libraries.
22LIBCURL_CHECK_CONFIG([yes], [7.14.0])
23
24# Checks for header files.
25AC_HEADER_STDC
26AC_CHECK_HEADERS([fcntl.h stddef.h stdlib.h unistd.h])
27
28AC_CHECK_MEMBER(struct tm.tm_gmtoff,
29    [member_struct_tm_tm_gmtoff=yes],
30    [member_struct_tm_tm_gmtoff=no],
31    [#include <time.h>])
32if test "$member_struct_tm_tm_gmtoff" = yes; then
33    AC_DEFINE(HAVE_TM_GMTOFF,1,
34        [Define if the tm_gmtoff member is present in struct tm.])
35else
36    AC_CHECK_MEMBER(struct tm.__tm_gmtoff,
37        [member_struct_tm___tm_gmtoff=yes],
38        [member_struct_tm___tm_gmtoff=no],
39        [#include <time.h>])
40    if test "$member_struct_tm___tm_gmtoff" = yes; then
41        AC_DEFINE(HAVE___TM_GMTOFF,1,
42            [Define if the __tm_gmtoff member is present in struct tm.])
43    fi
44fi
45
46WITH_MYSQL()
47
48dnl #########################################################################
49dnl Check if using libesmtp
50dnl #########################################################################
51
52AC_ARG_ENABLE([smtp],
53	AC_HELP_STRING([--enable-smtp], [build with libesmtp email support (default=auto)]),
54	,
55	enable_smtp=auto)
56
57if test x"$enable_smtp" != xno ; then
58	AC_CHECK_HEADER([libesmtp.h],
59		if test x"$enable_smtp" = xstatic ; then
60			enable_smtp=static
61		else
62			enable_smtp=yes
63		fi,
64		if test x"$enable_smtp" = xyes -o x"$enable_smtp" = xstatic ; then
65			AC_MSG_ERROR([Cannot find libesmtp.])
66		else
67			enable_smtp=no
68		fi
69	)
70fi
71
72AC_MSG_CHECKING(whether to use libesmtp)
73if test x"$enable_smtp" != xno ; then
74	ESMTP_CFLAGS="`libesmtp-config --cflags`"
75	ESMTP_LIBS="`libesmtp-config --libs`"
76	if test x"`libesmtp-config --libs | grep pthread`" != x ; then
77		AC_MSG_WARN([libesmtp is compiled with pthread support. This can conflict with pth. If you observe segmentation faults at startup, try to recompile with libesmtp support disabled])
78		AC_DEFINE([HAVE_LIBESMTP_PTHREAD], [1], [libesmtp is compiled with pthread support.])
79	fi
80	CFLAGS="$ESMTP_CFLAGS $CFLAGS"
81	if test x"$enable_smtp" = xstatic ; then
82
83		LIBS=`echo $ESMTP_LIBS $LIBS | sed 's/-lesmtp/-Xlinker -Bstatic -lesmtp -Xlinker -Bdynamic/'`
84	else
85		LIBS="$ESMTP_LIBS $LIBS"
86	fi
87	AC_DEFINE([HAVE_LIBESMTP], [1], [Build with libesmtp email support.])
88	AC_MSG_RESULT([yes])
89else
90	AC_MSG_RESULT([no])
91fi
92
93dnl #########################################################################
94dnl Check if using log4cpp
95dnl #########################################################################
96
97AC_PATH_PROG(LOG4CPP_CONFIG,log4cpp-config)
98AC_ARG_WITH(log4cpp, AC_HELP_STRING([--with-log4cpp],[Advanced logging with Log4cpp]),
99[WITH_LOG4CPP=$withval],[WITH_LOG4CPP=auto])
100
101if test x"$WITH_LOG4CPP" != xno; then
102  # try pkgconfig
103  if test x"$WITH_LOG4CPP" = xyes ; then
104    LOG4CPPPC=log4cpp
105  elif test x"$WITH_LOG4CPP" = xauto ; then
106    LOG4CPPPC=log4cpp
107  else
108    LOG4CPPPC=$WITH_LOG4CPP
109  fi
110
111  if test x"$WITH_LOG4CPP" = xauto ; then
112    PKG_CHECK_MODULES(LOG4CPP, $LOG4CPPPC >= 1.0, [
113      AC_DEFINE([HAVE_LOG4CPP], [1], [liblog4cpp])
114      AC_SUBST(LOG4CPP_CFLAGS)
115      AC_SUBST(LOG4CPP_LIBS)
116    ],[
117      AC_MSG_RESULT([no])
118    ])
119  else
120    PKG_CHECK_MODULES(LOG4CPP, $LOG4CPPPC >= 1.0, [
121      AC_DEFINE([HAVE_LOG4CPP], [1], [liblog4cpp])
122      AC_SUBST(LOG4CPP_CFLAGS)
123      AC_SUBST(LOG4CPP_LIBS)
124    ])
125  fi
126fi
127
128dnl #########################################################################
129dnl Check if using lua
130dnl #########################################################################
131
132AC_ARG_WITH(lua, AC_HELP_STRING([--with-lua],[Enable lua scripting engine]),
133[WITH_LUA=$withval],[WITH_LUA=auto])
134
135if test x"$WITH_LUA" != xno ; then
136  # try pkgconfig
137  if test x"$WITH_LUA" = xyes ; then
138    LUAPC=lua-
139  elif test x"$WITH_LUA" = xauto ; then
140    LUAPC=lua-
141  else
142    LUAPC=$WITH_LUA
143  fi
144
145  if test x"$WITH_LUA" = xauto; then
146    PKG_CHECK_MODULES(LUA, lua >= 5.1, [
147      AC_DEFINE([HAVE_LUA], [1], [liblua])
148      AC_DEFINE([HAVE_LUA_H], [1], [lua.h])
149      AC_SUBST(LUA_CFLAGS)
150      AC_SUBST(LUA_LIBS)
151    ],[
152      AC_MSG_RESULT([no])
153      PKG_CHECK_MODULES(LUA, lua5.1 >= 5.1, [
154        AC_DEFINE([HAVE_LUA], [1], [liblua])
155        AC_DEFINE([HAVE_LUA_H], [1], [lua.h])
156        AC_SUBST(LUA_CFLAGS)
157        AC_SUBST(LUA_LIBS)
158      ],[
159        AC_MSG_RESULT([no])
160      ])
161    ])
162  else
163    PKG_CHECK_MODULES(LUA, $LUAPC >= 5.1, [
164      AC_DEFINE([HAVE_LUA], [1], [liblua])
165      AC_DEFINE([HAVE_LUA_H], [1], [lua.h])
166      AC_SUBST(LUA_CFLAGS)
167      AC_SUBST(LUA_LIBS)
168    ],[
169      AC_MSG_RESULT([no])
170      PKG_CHECK_MODULES(LUA, "$LUAPC"5.1 >= 5.1, [
171        AC_DEFINE([HAVE_LUA], [1], [liblua])
172        AC_DEFINE([HAVE_LUA_H], [1], [lua.h])
173        AC_SUBST(LUA_CFLAGS)
174        AC_SUBST(LUA_LIBS)
175      ])
176    ])
177  fi
178fi
179
180# Checks for typedefs, structures, and compiler characteristics.
181AC_HEADER_STDBOOL
182AC_C_CONST
183AC_C_INLINE
184AC_TYPE_INT16_T
185AC_TYPE_INT64_T
186AC_TYPE_SIZE_T
187AC_TYPE_UINT16_T
188AC_TYPE_UINT8_T
189AC_CHECK_TYPES([ptrdiff_t])
190
191# Checks for library functions.
192AC_FUNC_FORK
193AC_TYPE_SIGNAL
194AC_FUNC_VPRINTF
195AC_CHECK_FUNCS([dup2 memmove memset strchr])
196
197AC_DEFINE(TIXML_USE_TICPP, [1], [Use TICPP interface])
198
199AC_LANG_SAVE
200AC_LANG_CPLUSPLUS
201AC_TRY_COMPILE([#include <sstream>
202#include <stdint.h>],
203[int64_t value; std::istringstream val("1234"); val >> value;],
204AC_DEFINE(STL_STREAM_SUPPORT_INT64, [1], [STL streams has support for 64 bit integer]),)
205AC_LANG_RESTORE
206
207
208AC_CONFIG_FILES([Makefile
209                 src/Makefile
210                 ticpp/Makefile
211                 include/Makefile
212                 test/Makefile
213                 conf/Makefile])
214AC_OUTPUT
215