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])
Jan Safranek b63d74
		WIRESHARK_CFLAGS="-DWS_VAR_IMPORT=extern -DWS_MSVC_NORETURN= -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
])