autoconfization by Andreas Hofmeister
diff --git a/ChangeLog b/ChangeLog
index 51ac560..1d8862d 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,13 @@
+20020403	Lennert Buytenhek <buytenh@gnu.org>
+
+	* autoconfization by Andreas Hofmeister.
+
+20020116	Lennert Buytenhek <buytenh@gnu.org>
+
+	* On sparc, try to detect 32/64-bitness of the kernel at runtime.
+
+	* Released bridge-utils 0.9.5.
+
 20020106	Lennert Buytenhek <buytenh@gnu.org>
 
 	* Remove 'tap'.
diff --git a/Makefile b/Makefile
deleted file mode 100644
index 8f24b9d..0000000
--- a/Makefile
+++ /dev/null
@@ -1,18 +0,0 @@
-all:				brctl/brctl brctl/brctld misc/bidi
-
-clean:
-				make -C brctl clean
-				make -C libbridge clean
-				make -C misc clean
-
-brctl/brctl:			brctl/brctl.c brctl/brctl.h brctl/brctl_cmd.c brctl/brctl_disp.c libbridge/libbridge.a libbridge/libbridge.h
-				make -C brctl
-
-brctl/brctld:			brctl/brctld.c brctl/brctl.h brctl/brctl_cmd.c brctl/brctl_disp.c libbridge/libbridge.a libbridge/libbridge.h
-				make -C brctl
-
-libbridge/libbridge.a:		libbridge/if_index.c libbridge/libbridge.h libbridge/libbridge_compat.c libbridge/libbridge_devif.c libbridge/libbridge_if.c libbridge/libbridge_init.c libbridge/libbridge_misc.c libbridge/libbridge_private.h
-				make -C libbridge
-
-misc/bidi:			misc/bidi.c
-				make -C misc
diff --git a/Makefile.in b/Makefile.in
new file mode 100644
index 0000000..0189bd7
--- /dev/null
+++ b/Makefile.in
@@ -0,0 +1,34 @@
+
+DESTDIR=
+KERNEL_HEADERS=-I@KERNEL_HEADERS@
+
+INSTALL=install -s
+
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+bindir=@bindir@
+sbindir=@sbindir@
+mandir=@mandir@
+
+SUBDIRS=libbridge brctl doc
+
+all:
+	for x in $(SUBDIRS); do (cd $$x && $(MAKE) ); done
+
+clean:
+	for x in $(SUBDIRS); do (cd $$x && $(MAKE) clean ); done
+
+distclean:	clean
+	rm -f config.log
+	rm -f config.cache
+	rm -f config.status
+
+maintainer-clean: distclean
+	rm -f Makefile
+	rm -f brctl/Makefile
+	rm -f libbridge/Makefile
+	rm -f doc/Makefile
+
+install:
+	for x in $(SUBDIRS); do (cd $$x && $(MAKE) install ); done
+
diff --git a/THANKS b/THANKS
index 26c98c2..a9d8dd8 100644
--- a/THANKS
+++ b/THANKS
@@ -9,6 +9,7 @@
 Alejando Garcia <alexgc@edu.aytolacoruna.es>
 Matthew Grant <grantma@anathoth.gen.nz>
 Mark Hahn <hahn@coffee.psychology.mcmaster.ca>
+Andreas Hofmeister <Andreas.Hofmeister@pyramid.de>
 Oskari Jaaskelainen <osi@fyslab.hut.fi>
 Joshua Jensen <joshua@redhat.com>
 Jason Lambert <jlambert@lambert-comm.net>
diff --git a/brctl/Makefile b/brctl/Makefile
deleted file mode 100644
index e34570b..0000000
--- a/brctl/Makefile
+++ /dev/null
@@ -1,25 +0,0 @@
-all:			brctl brctld
-
-brctl:			brctl.o brctl_cmd.o brctl_disp.o ../libbridge/libbridge.a
-			gcc -Wall -g -o brctl brctl.o brctl_cmd.o brctl_disp.o ../libbridge/libbridge.a
-
-brctld:			brctld.o brctl_cmd.o brctl_disp.o ../libbridge/libbridge.a
-			gcc -Wall -g -o brctld brctld.o brctl_cmd.o brctl_disp.o ../libbridge/libbridge.a
-
-clean:
-			rm -f *.o
-			rm -f brctl
-			rm -f brctld
-			rm -f core
-
-brctl.o:		brctl.c brctl.h
-			gcc -I../libbridge -Wall -c -g -o brctl.o brctl.c
-
-brctld.o:		brctld.c brctl.h
-			gcc -I../libbridge -Wall -c -g -o brctld.o brctld.c
-
-brctl_cmd.o:		brctl_cmd.c brctl.h
-			gcc -I../libbridge -Wall -c -g -o brctl_cmd.o brctl_cmd.c
-
-brctl_disp.o:		brctl_disp.c brctl.h
-			gcc -I../libbridge -Wall -c -g -o brctl_disp.o brctl_disp.c
diff --git a/brctl/Makefile.in b/brctl/Makefile.in
new file mode 100644
index 0000000..d238e5e
--- /dev/null
+++ b/brctl/Makefile.in
@@ -0,0 +1,51 @@
+
+KERNEL_HEADERS=-I@KERNEL_HEADERS@
+
+CC=@CC@
+CFLAGS= -Wall -g @CFLAGS@
+INCLUDE=-I../libbridge $(KERNEL_HEADERS) 
+LIBS= -L ../libbridge -lbridge
+
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+bindir=@bindir@
+sbindir=@sbindir@
+mandir=@mandir@
+
+INSTALL=@INSTALL@
+
+
+common_SOURCES= brctl_cmd.c brctl_disp.c 
+brctl_SOURCES=  brctl.c $(common_SOURCES)
+brctld_SOURCES= brctld.c $(common_SOURCES)
+
+common_OBJECTS= $(common_SOURCES:.c=.o)
+brctl_OBJECTS= $(brctl_SOURCES:.c=.o)
+brctld_OBJECTS= $(brctld_SOURCES:.c=.o)
+
+OBJECTS= $(common_OBJECTS) $(brctl_OBJECTS) $(brctld_OBJECTS)
+
+PROGRAMS= brctl brctld
+
+
+all:	$(PROGRAMS)
+
+install: $(PROGRAMS)
+	mkdir -p $(DESTDIR)$(sbindir)
+	$(INSTALL) -m 755 $(PROGRAMS) $(DESTDIR)$(sbindir)
+
+brctl:	$(brctl_OBJECTS)
+	$(CC) $(brctl_OBJECTS) $(LIBS) -o brctl
+
+brctld:	$(brctld_OBJECTS)
+	$(CC) $(brctld_OBJECTS) $(LIBS) -o brctld
+
+%.o: %.c brctl.h
+	$(CC) $(CFLAGS) $(INCLUDE) -c $< 
+
+clean:
+			rm -f *.o
+			rm -f brctl
+			rm -f brctld
+			rm -f core
+
diff --git a/configure.in b/configure.in
new file mode 100644
index 0000000..7711006
--- /dev/null
+++ b/configure.in
@@ -0,0 +1,34 @@
+dnl Process this file with autoconf to produce a configure script.
+AC_INIT(brctl/brctl.c)
+
+AC_ARG_WITH( linux, [  --with-linux-headers     Location of the linux headers to use], 
+    KERNEL_HEADERS=$withval, KERNEL_HEADERS="/usr/src/linux/include")
+
+dnl Checks for programs.
+AC_PROG_CC
+AC_PROG_INSTALL
+AC_PROG_RANLIB
+
+dnl Checks for header files.
+AC_HEADER_STDC
+AC_HEADER_SYS_WAIT
+AC_CHECK_HEADERS(fcntl.h sys/ioctl.h sys/time.h unistd.h)
+
+dnl Checks for typedefs, structures, and compiler characteristics.
+AC_C_CONST
+AC_HEADER_TIME
+
+dnl Checks for library functions.
+AC_FUNC_ALLOCA
+AC_PROG_GCC_TRADITIONAL
+AC_FUNC_MEMCMP
+AC_TYPE_SIGNAL
+AC_FUNC_WAIT3
+AC_CHECK_FUNCS(gethostname socket strdup uname)
+
+AC_CHECK_FUNC(if_nametoindex, HAVE_IF_INDEX=1)
+
+AC_SUBST(KERNEL_HEADERS)
+AC_SUBST(HAVE_IF_INDEX)
+
+AC_OUTPUT(doc/Makefile libbridge/Makefile brctl/Makefile Makefile)
diff --git a/doc/Makefile.in b/doc/Makefile.in
new file mode 100644
index 0000000..a07a50f
--- /dev/null
+++ b/doc/Makefile.in
@@ -0,0 +1,21 @@
+
+DESTDIR=
+KERNEL_HEADERS=-I@KERNEL_HEADERS@
+
+INSTALL=install -s
+
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+bindir=@bindir@
+sbindir=@sbindir@
+mandir=@mandir@
+
+SUBDIRS=libbridge brctl
+
+all:
+
+clean:
+
+install:
+	mkdir -p $(DESTDIR)$(mandir)/man8
+	install -m 644 brctl.8 $(DESTDIR)$(mandir)/man8
diff --git a/install-sh b/install-sh
new file mode 100755
index 0000000..e9de238
--- /dev/null
+++ b/install-sh
@@ -0,0 +1,251 @@
+#!/bin/sh
+#
+# install - install a program, script, or datafile
+# This comes from X11R5 (mit/util/scripts/install.sh).
+#
+# Copyright 1991 by the Massachusetts Institute of Technology
+#
+# Permission to use, copy, modify, distribute, and sell this software and its
+# documentation for any purpose is hereby granted without fee, provided that
+# the above copyright notice appear in all copies and that both that
+# copyright notice and this permission notice appear in supporting
+# documentation, and that the name of M.I.T. not be used in advertising or
+# publicity pertaining to distribution of the software without specific,
+# written prior permission.  M.I.T. makes no representations about the
+# suitability of this software for any purpose.  It is provided "as is"
+# without express or implied warranty.
+#
+# Calling this script install-sh is preferred over install.sh, to prevent
+# `make' implicit rules from creating a file called install from it
+# when there is no Makefile.
+#
+# This script is compatible with the BSD install script, but was written
+# from scratch.  It can only install one file at a time, a restriction
+# shared with many OS's install programs.
+
+
+# set DOITPROG to echo to test this script
+
+# Don't use :- since 4.3BSD and earlier shells don't like it.
+doit="${DOITPROG-}"
+
+
+# put in absolute paths if you don't have them in your path; or use env. vars.
+
+mvprog="${MVPROG-mv}"
+cpprog="${CPPROG-cp}"
+chmodprog="${CHMODPROG-chmod}"
+chownprog="${CHOWNPROG-chown}"
+chgrpprog="${CHGRPPROG-chgrp}"
+stripprog="${STRIPPROG-strip}"
+rmprog="${RMPROG-rm}"
+mkdirprog="${MKDIRPROG-mkdir}"
+
+transformbasename=""
+transform_arg=""
+instcmd="$mvprog"
+chmodcmd="$chmodprog 0755"
+chowncmd=""
+chgrpcmd=""
+stripcmd=""
+rmcmd="$rmprog -f"
+mvcmd="$mvprog"
+src=""
+dst=""
+dir_arg=""
+
+while [ x"$1" != x ]; do
+    case $1 in
+	-c) instcmd="$cpprog"
+	    shift
+	    continue;;
+
+	-d) dir_arg=true
+	    shift
+	    continue;;
+
+	-m) chmodcmd="$chmodprog $2"
+	    shift
+	    shift
+	    continue;;
+
+	-o) chowncmd="$chownprog $2"
+	    shift
+	    shift
+	    continue;;
+
+	-g) chgrpcmd="$chgrpprog $2"
+	    shift
+	    shift
+	    continue;;
+
+	-s) stripcmd="$stripprog"
+	    shift
+	    continue;;
+
+	-t=*) transformarg=`echo $1 | sed 's/-t=//'`
+	    shift
+	    continue;;
+
+	-b=*) transformbasename=`echo $1 | sed 's/-b=//'`
+	    shift
+	    continue;;
+
+	*)  if [ x"$src" = x ]
+	    then
+		src=$1
+	    else
+		# this colon is to work around a 386BSD /bin/sh bug
+		:
+		dst=$1
+	    fi
+	    shift
+	    continue;;
+    esac
+done
+
+if [ x"$src" = x ]
+then
+	echo "install:	no input file specified"
+	exit 1
+else
+	true
+fi
+
+if [ x"$dir_arg" != x ]; then
+	dst=$src
+	src=""
+	
+	if [ -d $dst ]; then
+		instcmd=:
+		chmodcmd=""
+	else
+		instcmd=mkdir
+	fi
+else
+
+# Waiting for this to be detected by the "$instcmd $src $dsttmp" command
+# might cause directories to be created, which would be especially bad 
+# if $src (and thus $dsttmp) contains '*'.
+
+	if [ -f $src -o -d $src ]
+	then
+		true
+	else
+		echo "install:  $src does not exist"
+		exit 1
+	fi
+	
+	if [ x"$dst" = x ]
+	then
+		echo "install:	no destination specified"
+		exit 1
+	else
+		true
+	fi
+
+# If destination is a directory, append the input filename; if your system
+# does not like double slashes in filenames, you may need to add some logic
+
+	if [ -d $dst ]
+	then
+		dst="$dst"/`basename $src`
+	else
+		true
+	fi
+fi
+
+## this sed command emulates the dirname command
+dstdir=`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'`
+
+# Make sure that the destination directory exists.
+#  this part is taken from Noah Friedman's mkinstalldirs script
+
+# Skip lots of stat calls in the usual case.
+if [ ! -d "$dstdir" ]; then
+defaultIFS='	
+'
+IFS="${IFS-${defaultIFS}}"
+
+oIFS="${IFS}"
+# Some sh's can't handle IFS=/ for some reason.
+IFS='%'
+set - `echo ${dstdir} | sed -e 's@/@%@g' -e 's@^%@/@'`
+IFS="${oIFS}"
+
+pathcomp=''
+
+while [ $# -ne 0 ] ; do
+	pathcomp="${pathcomp}${1}"
+	shift
+
+	if [ ! -d "${pathcomp}" ] ;
+        then
+		$mkdirprog "${pathcomp}"
+	else
+		true
+	fi
+
+	pathcomp="${pathcomp}/"
+done
+fi
+
+if [ x"$dir_arg" != x ]
+then
+	$doit $instcmd $dst &&
+
+	if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; else true ; fi &&
+	if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; else true ; fi &&
+	if [ x"$stripcmd" != x ]; then $doit $stripcmd $dst; else true ; fi &&
+	if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst; else true ; fi
+else
+
+# If we're going to rename the final executable, determine the name now.
+
+	if [ x"$transformarg" = x ] 
+	then
+		dstfile=`basename $dst`
+	else
+		dstfile=`basename $dst $transformbasename | 
+			sed $transformarg`$transformbasename
+	fi
+
+# don't allow the sed command to completely eliminate the filename
+
+	if [ x"$dstfile" = x ] 
+	then
+		dstfile=`basename $dst`
+	else
+		true
+	fi
+
+# Make a temp file name in the proper directory.
+
+	dsttmp=$dstdir/#inst.$$#
+
+# Move or copy the file name to the temp name
+
+	$doit $instcmd $src $dsttmp &&
+
+	trap "rm -f ${dsttmp}" 0 &&
+
+# and set any options; do chmod last to preserve setuid bits
+
+# If any of these fail, we abort the whole thing.  If we want to
+# ignore errors from any of these, just make sure not to ignore
+# errors from the above "$doit $instcmd $src $dsttmp" command.
+
+	if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; else true;fi &&
+	if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; else true;fi &&
+	if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; else true;fi &&
+	if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; else true;fi &&
+
+# Now rename the file to the real destination.
+
+	$doit $rmcmd -f $dstdir/$dstfile &&
+	$doit $mvcmd $dsttmp $dstdir/$dstfile 
+
+fi &&
+
+
+exit 0
diff --git a/libbridge/Makefile b/libbridge/Makefile
deleted file mode 100644
index 375775b..0000000
--- a/libbridge/Makefile
+++ /dev/null
@@ -1,29 +0,0 @@
-CC = gcc
-CFLAGS = -Wall -g
-
-all:			libbridge.a
-
-clean:
-			rcsclean *
-			rm -f *~
-			rm -f *.o
-			rm -f libbridge.a
-
-libbridge.a:		libbridge_compat.o libbridge_devif.o libbridge_if.o libbridge_init.o libbridge_misc.o
-			ar rcs libbridge.a libbridge_compat.o libbridge_devif.o libbridge_if.o libbridge_init.o libbridge_misc.o
-			ranlib libbridge.a
-
-libbridge_compat.o:	libbridge_compat.c if_index.c
-			$(CC) $(CFLAGS) -c libbridge_compat.c
-
-libbridge_devif.o:	libbridge_devif.c libbridge.h libbridge_private.h
-			$(CC) $(CFLAGS) -c libbridge_devif.c
-
-libbridge_if.o:		libbridge_if.c libbridge.h libbridge_private.h
-			$(CC) $(CFLAGS) -c libbridge_if.c
-
-libbridge_init.o:	libbridge_init.c libbridge.h libbridge_private.h
-			$(CC) $(CFLAGS) -c libbridge_init.c
-
-libbridge_misc.o:	libbridge_misc.c libbridge.h libbridge_private.h
-			$(CC) $(CFLAGS) -c libbridge_misc.c
diff --git a/libbridge/Makefile.in b/libbridge/Makefile.in
new file mode 100644
index 0000000..505994a
--- /dev/null
+++ b/libbridge/Makefile.in
@@ -0,0 +1,55 @@
+
+KERNEL_HEADERS=-I@KERNEL_HEADERS@
+
+AR=ar
+RANLIB=@RANLIB@
+
+CC=@CC@
+CFLAGS = -Wall -g $(KERNEL_HEADERS)
+
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+includedir=@includedir@
+libdir=@libdir@
+
+ifndef HAVE_IF_INDEX
+COMPAT_SOURCES=  \
+	libbridge_compat.c 
+else
+COMPAT_SOURCES=  
+endif
+
+libbridge_SOURCES= \
+	$(COMPAT_SOURCES) \
+	libbridge_devif.c \
+	libbridge_if.c \
+	libbridge_init.c \
+	libbridge_misc.c 
+
+libbridge_OBJECTS=$(libbridge_SOURCES:.c=.o)
+
+all:	libbridge.a
+
+install: libbridge.a
+	mkdir -p $(DESTDIR)$(includedir)
+	install -m 644 libbridge.h $(DESTDIR)$(includedir)
+	mkdir -p $(DESTDIR)$(libdir)
+	install -m 644 libbridge.a $(DESTDIR)$(libdir)
+
+
+clean:
+	rcsclean *
+	rm -f *~
+	rm -f *.o
+	rm -f libbridge.a
+
+libbridge.a:	$(libbridge_OBJECTS)
+	$(AR) rcs $@ $(libbridge_OBJECTS)
+	$(RANLIB) $@
+
+%.o: %.c libbridge.h libbridge_private.h
+	$(CC) $(CFLAGS) $(INCLUDE) -c $<
+
+libbridge_compat.o:	libbridge_compat.c if_index.c
+	$(CC) $(CFLAGS) -c libbridge_compat.c
+