|
Radek Vokál |
a57ef0 |
dnl AM_PATH_WIRESHARK([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]])
|
|
Radek Vokál |
a57ef0 |
dnl Test for wireshark development files, and define WIRESHARK_CFLAGS,
|
|
Radek Vokál |
a57ef0 |
dnl WIRESHARK_LIBS and WIRESHARK_VERSION.
|
|
Radek Vokál |
a57ef0 |
dnl
|
|
Radek Vokál |
a57ef0 |
AC_DEFUN([AM_PATH_WIRESHARK],[
|
|
Radek Vokál |
a57ef0 |
AC_ARG_WITH(wireshark-prefix,
|
|
Radek Vokál |
a57ef0 |
[ --with-wireshark-prefix=PFX Prefix where wireshark libraries are installed (optional)],
|
|
Radek Vokál |
a57ef0 |
wireshark_config_prefix="$withval", wireshark_config_prefix="")
|
|
Radek Vokál |
a57ef0 |
|
|
Radek Vokál |
a57ef0 |
wireshark_found=no
|
|
Radek Vokál |
a57ef0 |
if test "$wireshark_config_prefix" != "" ; then
|
|
Radek Vokál |
a57ef0 |
AM_PATH_GLIB_2_0(,,,[gmodule])
|
|
Radek Vokál |
a57ef0 |
WIRESHARK_CFLAGS="-DWS_VAR_IMPORT=extern -I$wireshark_config_prefix/include/wireshark -I$wireshark_config_prefix/include/wireshark/epan -I/usr/include/wireshark -I/usr/include/wireshark/epan $GLIB_CFLAGS"
|
|
Radek Vokál |
a57ef0 |
WIRESHARK_LIBS="-L$wireshark_config_prefix/lib -lwireshark -lwiretap $GLIB_LIBS"
|
|
Radek Vokál |
a57ef0 |
wireshark_found=yes
|
|
Radek Vokál |
a57ef0 |
else
|
|
Radek Vokál |
a57ef0 |
PKG_PROG_PKG_CONFIG()
|
|
Radek Vokál |
a57ef0 |
PKG_CHECK_MODULES(WIRESHARK, wireshark, wireshark_found=yes)
|
|
Radek Vokál |
a57ef0 |
fi
|
|
Radek Vokál |
a57ef0 |
|
|
Radek Vokál |
a57ef0 |
ac_save_CFLAGS="$CFLAGS"
|
|
Radek Vokál |
a57ef0 |
ac_save_CLIBS="$LIBS"
|
|
Radek Vokál |
a57ef0 |
CFLAGS="$CFLAGS $WIRESHARK_CFLAGS"
|
|
Radek Vokál |
a57ef0 |
LIBS="$WIRESHARK_LIBS $LIBS"
|
|
Radek Vokál |
a57ef0 |
min_wireshark_version=ifelse([$1], ,0.0.0,[$1])
|
|
Radek Vokál |
a57ef0 |
if test $wireshark_found = yes; then
|
|
Radek Vokál |
a57ef0 |
AC_MSG_CHECKING(for wireshark version >= $min_wireshark_version)
|
|
Radek Vokál |
a57ef0 |
wireshark_found=no
|
|
Radek Vokál |
a57ef0 |
AC_TRY_RUN([
|
|
Radek Vokál |
a57ef0 |
#include <stdlib.h>
|
|
Radek Vokál |
a57ef0 |
#include <stdio.h>
|
|
Radek Vokál |
a57ef0 |
#include <string.h>
|
|
Radek Vokál |
a57ef0 |
#include <gmodule.h>
|
|
Radek Vokál |
a57ef0 |
#include <epan/packet.h>
|
|
Radek Vokál |
a57ef0 |
#include <epan/prefs.h>
|
|
Radek Vokál |
a57ef0 |
|
|
Radek Vokál |
a57ef0 |
int
|
|
Radek Vokál |
a57ef0 |
main()
|
|
Radek Vokál |
a57ef0 |
|
|
Radek Vokál |
a57ef0 |
{
|
|
Radek Vokál |
a57ef0 |
int ws_major_version, ws_minor_version, ws_micro_version;
|
|
Radek Vokál |
a57ef0 |
int major, minor, micro;
|
|
Radek Vokál |
a57ef0 |
char **tmp_version;
|
|
Radek Vokál |
a57ef0 |
|
|
Radek Vokál |
a57ef0 |
tmp_version = (char *) strdup("$min_wireshark_version");
|
|
Radek Vokál |
a57ef0 |
major = 0;
|
|
Radek Vokál |
a57ef0 |
minor = 0;
|
|
Radek Vokál |
a57ef0 |
micro = 0;
|
|
Radek Vokál |
a57ef0 |
sscanf(tmp_version, "%d.%d.%d", &major, &minor, µ);
|
|
Radek Vokál |
a57ef0 |
free(tmp_version);
|
|
Radek Vokál |
a57ef0 |
tmp_version = (char *) epan_get_version();
|
|
Radek Vokál |
a57ef0 |
sscanf(tmp_version, "%d.%d.%d",
|
|
Radek Vokál |
a57ef0 |
&ws_major_version, &ws_minor_version, &ws_micro_version);
|
|
Radek Vokál |
a57ef0 |
|
|
Radek Vokál |
a57ef0 |
if (ws_major_version > major ||
|
|
Radek Vokál |
a57ef0 |
(ws_major_version == major && ws_minor_version > minor) ||
|
|
Radek Vokál |
a57ef0 |
(ws_major_version == major && ws_minor_version == minor &&
|
|
Radek Vokál |
a57ef0 |
ws_micro_version >= micro))
|
|
Radek Vokál |
a57ef0 |
return 0;
|
|
Radek Vokál |
a57ef0 |
|
|
Radek Vokál |
a57ef0 |
printf("\n*** An old version of wireshark (%d.%d.%d) was found.\n",
|
|
Radek Vokál |
a57ef0 |
ws_major_version, ws_minor_version, ws_micro_version);
|
|
Radek Vokál |
a57ef0 |
printf("*** You need a version of wireshark not older than %d.%d.%d. ",
|
|
Radek Vokál |
a57ef0 |
major, minor, micro);
|
|
Radek Vokál |
a57ef0 |
return 1;
|
|
Radek Vokál |
a57ef0 |
}
|
|
Radek Vokál |
a57ef0 |
], wireshark_found=yes)
|
|
Radek Vokál |
a57ef0 |
fi
|
|
Radek Vokál |
a57ef0 |
|
|
Radek Vokál |
a57ef0 |
if test "$wireshark_found" != no; then
|
|
Radek Vokál |
a57ef0 |
AC_LANG_PUSH(C)
|
|
Radek Vokál |
a57ef0 |
AC_LINK_IFELSE([AC_LANG_PROGRAM([
|
|
Radek Vokál |
a57ef0 |
#include <stdlib.h>
|
|
Radek Vokál |
a57ef0 |
#include <stdio.h>
|
|
Radek Vokál |
a57ef0 |
#include <string.h>
|
|
Radek Vokál |
a57ef0 |
#include <gmodule.h>
|
|
Radek Vokál |
a57ef0 |
#include <epan/packet.h>
|
|
Radek Vokál |
a57ef0 |
#include <epan/prefs.h>
|
|
Radek Vokál |
a57ef0 |
], [puts(epan_get_version());])], [WIRESHARK_VERSION=`./conftest$ac_exeext`],
|
|
Radek Vokál |
a57ef0 |
wireshark_found=no)
|
|
Radek Vokál |
a57ef0 |
|
|
Radek Vokál |
a57ef0 |
AC_LANG_POP
|
|
Radek Vokál |
a57ef0 |
fi
|
|
Radek Vokál |
a57ef0 |
|
|
Radek Vokál |
a57ef0 |
CFLAGS="$ac_save_CFLAGS"
|
|
Radek Vokál |
a57ef0 |
LIBS="$ac_save_LIBS"
|
|
Radek Vokál |
a57ef0 |
|
|
Radek Vokál |
a57ef0 |
if test "$wireshark_found" != no; then
|
|
Radek Vokál |
a57ef0 |
AC_MSG_RESULT(yes)
|
|
Radek Vokál |
a57ef0 |
ifelse([$2],, :, [$2])
|
|
Radek Vokál |
a57ef0 |
else
|
|
Radek Vokál |
a57ef0 |
AC_MSG_RESULT(no)
|
|
Radek Vokál |
a57ef0 |
WIRESHARK_CFLAGS=""
|
|
Radek Vokál |
a57ef0 |
WIRESHARK_LIBS=""
|
|
Radek Vokál |
a57ef0 |
WIRESHARK_VERSION=""
|
|
Radek Vokál |
a57ef0 |
ifelse([$3], , :, [$3])
|
|
Radek Vokál |
a57ef0 |
fi
|
|
Radek Vokál |
a57ef0 |
AC_SUBST(WIRESHARK_CFLAGS)
|
|
Radek Vokál |
a57ef0 |
AC_SUBST(WIRESHARK_LIBS)
|
|
Radek Vokál |
a57ef0 |
AC_SUBST(WIRESHARK_VERSION)
|
|
Radek Vokál |
a57ef0 |
])
|