1 dnl Process this file with autoconf to produce a configure script.
4 dnl Checks for programs.
10 dnl Checks for libraries.
11 AC_CHECK_LIB(dl, dlopen)
12 AC_CHECK_HEADER(pcap.h,HAVE_PCAP_H=true)
14 dnl Checks for header files.
17 AC_CHECK_HEADERS(fcntl.h unistd.h)
19 dnl Checks for typedefs, structures, and compiler characteristics.
24 dnl Checks for library functions.
26 AC_CHECK_FUNCS(socket strerror)
28 dnl Checks for kernel source directory.
29 AC_MSG_CHECKING([kernel source directory])
30 KSRC="/lib/modules/`uname -r`/build"
32 --with-kernel=DIR kernel source directory,
35 # Check if kernel source directory has been configured
36 if test -f "$KSRC/include/linux/version.h" ; then
37 # Get kernel version number
38 eval KVER=$(echo "#include <linux/version.h>" | cpp -I "$KSRC/include" -dM - | awk '/UTS_RELEASE/ { print $3 }')
39 AC_MSG_RESULT([$KVER])
41 AC_MSG_RESULT([$KSRC/include/linux/version.h not found])
42 AC_MSG_ERROR(kernel source directory not specified or not configured)
47 dnl NetFlow prerequisites.
49 --with-proper=<directory> proper installed in <directory>,
50 [ CPPFLAGS="$CPPFLAGS -I$withval/include" ; LDFLAGS="$LDFLAGS -L$withval/.libs" ],
52 AC_CHECK_HEADER(prop.h, HAVE_PROP_H=true)
53 AC_CHECK_LIB(proper, prop_create_socket)
54 AC_CHECK_HEADER(pthread.h, HAVE_PTHREAD_H=true, AC_MSG_ERROR(NetFlow requires pthread))
55 AC_CHECK_LIB(pthread, pthread_create, [], AC_MSG_ERROR(NetFlow requires pthread))
67 --with-mysql=<directory> mysql installed in <directory>,[
68 if test $withval == no
70 AC_MSG_WARN("mysql disabled.")
72 if test $withval != yes
79 AC_MSG_CHECKING(for MySQL files)
80 for d in $dir/bin /usr/bin /usr/local/bin /usr/local/mysql/bin /opt/mysql/bin /opt/packages/mysql/bin
82 if test -f $d/mysql_config
84 AC_MSG_RESULT(found mysql_config in $d)
90 if test x$mysqldir = x
92 AC_MSG_WARN(MySQL backend not used)
95 MYSQLINCLUDES=`$d/mysql_config --include`
96 MYSQLLIBS=`$d/mysql_config --libs`
98 DATABASE_DIR="${DATABASE_DIR} mysql"
100 MYSQL_LIB="${DATABASE_LIB} ${MYSQLLIBS} "
101 # no change to DATABASE_LIB_DIR, since --libs already includes -L
103 DATABASE_DRIVERS="${DATABASE_DRIVERS} ../mysql/mysql_driver.o "
105 DB_DEF="${DB_DEF} -DHAVE_MYSQL "
108 AC_SUBST(MYSQLINCLUDES)
111 dnl Here we check whether we have an old MySQL client library
112 dnl installed, which does not support the mysql_real_escape_string(),
113 dnl but the real_escape_string() function.
114 dnl Having a look in the libary itself should be more reliable than
115 dnl parsing the output of mysql --version.
117 AC_MSG_CHECKING(for mysql_real_escape_string support)
119 MYSQL_FUNCTION_TEST=`strings ${MYSQLLIBS}/libmysqlclient.so | grep mysql_real_escape_string`
121 if test "x$MYSQL_FUNCTION_TEST" = x
123 EXTRA_MYSQL_DEF="-DOLD_MYSQL=1 "
124 AC_MSG_RESULT(found old MySQL)
126 AC_MSG_RESULT(found new MySQL)
135 dnl Check whether the user wants log IP-addresses as strings rather
136 dnl than as unsigned long-integers to his MySQL-database. Since this
137 dnl feature is only used in ulogd_MYSQL.c, there are no checks in any
141 AC_ARG_WITH(mysql-log-ip-as-string,
142 --with-mysql-log-ip-as-string log IPs as string rather than as
143 unsigned long-integer.
145 EXTRA_MYSQL_DEF="${EXTRA_MYSQL_DEF} -DIP_AS_STRING=1"
146 AC_MSG_WARN(the use of --with-mysql-log-ip-as-string is discouraged)
151 dnl test for PostgreSQL
154 --with-pgsql=<directory> pgsql installed in <directory>,[
155 if test $withval != yes
162 AC_MSG_CHECKING(for PGSQL files)
163 for d in $dir/bin /usr/bin /usr/local/bin /usr/local/pgsql/bin /opt/pgsql/bin /opt/packages/pgsql/bin
165 if test -x $d/pg_config
167 AC_MSG_RESULT(found pg_config in $d)
173 if test x$pgsqldir = x
175 AC_MSG_WARN(PGSQL backend not used)
177 AC_DEFINE(HAVE_PGSQL)
178 PGSQLINCLUDES=`$pgsqldir/pg_config --includedir`
179 PGSQLLIBS=`$pgsqldir/pg_config --libdir`
181 DATABASE_DIR="${DATABASE_DIR} pgsql"
182 PGSQL_LIB="${DATABASE_LIB} -lpq "
184 DATABASE_LIB_DIR="${DATABASE_LIB_DIR} -L${PGSQLLIBS} "
185 DB_DEF="${DB_DEF} -DHAVE_PGSQL "
187 AC_SUBST(PGSQLINCLUDES)
194 dnl Check whether the user wants to log IP-addresses as strings rather
195 dnl than integers to his pgsql-database.
198 AC_ARG_WITH(pgsql-log-ip-as-string,
199 --with-pgsql-log-ip-as-string log IPs as string rather than as interger
201 EXTRA_PGSQL_DEF="-DIP_AS_STRING=1"
209 --with-sqlite3=<directory> sqlite3 installed in <directory>,[
210 if test $withval != yes
217 AC_MSG_CHECKING(for sqlite3 files)
218 for d in $dir /usr /usr/local /usr/local/sqlite3
220 if test -f $d/lib/sqlite3/libsqlite3.so
222 AC_MSG_RESULT(found sqlite3 in $d)
224 sqlite3dir_suffix=/sqlite3
226 elif test -f $d/lib64/sqlite3/libsqlite3.so
228 AC_MSG_RESULT(found sqlite3 in $d)
230 sqlite3dir_suffix=/sqlite3
232 elif test -f $d/lib/libsqlite3.so
234 AC_MSG_RESULT(found sqlite in $d)
238 elif test -f $d/lib64/libsqlite3.so
240 AC_MSG_RESULT(found sqlite in $d)
247 if test x$sqlite3dir = x
249 AC_MSG_WARN(sqlite3 backend not used)
251 AC_DEFINE(HAVE_SQLITE3)
252 SQLITE3INCLUDES=${sqlite3dir}/include${sqlite3dir_suffix}
253 SQLITE3LIBS=${sqlite3dir}/lib${sqlite3dir_suffix}
255 DATABASE_DIR="${DATABASE_DIR} sqlite3"
257 SQLITE3_LIB="${DATABASE_LIB} -lsqlite3 "
258 DATABASE_LIB_DIR="${DATABASE_LIB_DIR} -L${SQLITE3LIBS} "
260 dnl DATABASE_DRIVERS="${DATABASE_DRIVERS} ../sqlite3/mysql_driver.o "
262 DB_DEF="${DB_DEF} -DHAVE_SQLITE3 "
265 AC_SUBST(SQLITE3INCLUDES)
266 AC_SUBST(SQLITE3_LIB)
273 dnl Check whether the user wants log IP-addresses as strings rather
274 dnl than as unsigned long-integers to his sqlite3-database. Since this
275 dnl feature is only used in ulogd_SQLITE3.c, there are no checks in any
279 AC_ARG_WITH(sqlite3-log-ip-as-string,
280 --with-sqlite3-log-ip-as-string log IPs as string rather than as
281 unsigned long-integer.
283 EXTRA_SQLITE3_DEF="${EXTRA_SQLITE3_DEF} -DIP_AS_STRING=1"
284 AC_MSG_WARN(the use of --with-sqlite3-log-ip-as-string is discouraged)
288 AC_SUBST(DATABASE_DIR)
289 AC_SUBST(DATABASE_LIB)
290 AC_SUBST(DATABASE_LIB_DIR)
292 AC_SUBST(EXTRA_MYSQL_DEF)
293 AC_SUBST(EXTRA_PGSQL_DEF)
294 AC_SUBST(EXTRA_SQLITE3_DEF)
296 AC_SUBST(DATABASE_DRIVERS)
297 AC_SUBST(HAVE_PCAP_H)
299 AM_CONDITIONAL(HAVE_MYSQL, test x$mysqldir != x)
300 AM_CONDITIONAL(HAVE_PGSQL, test x$pgsqldir != x)
301 AM_CONDITIONAL(HAVE_SQLITE3, test x$sqlite3dir != x)
303 AC_OUTPUT(extensions/Makefile doc/Makefile conffile/Makefile libipulog/Makefile mysql/Makefile pgsql/Makefile sqlite3/Makefile pcap/Makefile drl/Makefile Makefile Rules.make)