#! /bin/sh

#
# Script to give the appropriate compiler flags and linker flags
# to use when building code that uses libpcap.
#
prefix="/usr/local"
exec_prefix="${prefix}"
includedir="${prefix}/include"
libdir="${exec_prefix}/lib"
V_RPATH_OPT="-Wl,-rpath,"
LIBS=""

static=0
show_cflags=0
show_libs=0
while [ "$#" != 0 ]
do
	case "$1" in

	--static)
		static=1
		;;

	--cflags)
		show_cflags=1
		;;

	--libs)
		show_libs=1
		;;

	--additional-libs)
		show_additional_libs=1
		;;
	esac
	shift
done
if [ "$V_RPATH_OPT" != "" ]
then
	#
	# If libdir isn't /usr/lib, add it to the run-time linker path.
	#
	if [ "$libdir" != "/usr/lib" ]
	then
		RPATH=$V_RPATH_OPT$libdir
	fi
fi
if [ "$static" = 1 ]
then
	#
	# Include LIBS so that the flags include libraries containing
	# routines that libpcap uses.
	#
	if [ "$show_cflags" = 1 -a "$show_libs" = 1 ]
	then
		echo "-I$includedir -L$libdir -lpcap $LIBS"
	elif [ "$show_cflags" = 1 -a "$show_additional_libs" = 1 ]
	then
		echo "-I$includedir -L$libdir $LIBS"
	elif [ "$show_cflags" = 1 ]
	then
		echo "-I$includedir"
	elif [ "$show_libs" = 1 ]
	then
		echo "-L$libdir -lpcap $LIBS"
	elif [ "$show_additional_libs" = 1 ]
	then
		echo "$LIBS"
	fi
else
	#
	# Omit LIBS - libpcap is assumed to be linked with those
	# libraries, so there's no need to do so explicitly.
	#
	if [ "$show_cflags" = 1 -a "$show_libs" = 1 ]
	then
		echo "-I$includedir -L$libdir $RPATH -lpcap"
	elif [ "$show_cflags" = 1 -a "$show_additional_libs" = 1 ]
	then
		echo "-I$includedir"
	elif [ "$show_cflags" = 1 ]
	then
		echo "-I$includedir"
	elif [ "$show_libs" = 1 ]
	then
		echo "-L$libdir $RPATH -lpcap"
	fi
fi
