I love GNU autoconf. I remember the days of downloading a .zip or a .tar.Z of source and having to manually edit a config.h, full of symbols I didn’t understand. GNU autoconf came along and now we just ./configure && make && make install.
Building Kismet from source, I had a difficulty with libusb which is not installed on my linux laptop. I hadn’t installed libusb because I hadn’t needed it yet. Building Kismet on another machine worked fine (libusb installed).
./configure ... checking for libusb... no configure: error: Package requirements (libusb-1.0) were not met: Package 'libusb-1.0', required by 'virtual:world', not found
I was curious about Kismet’s modularity. OK, probably just need to check the configure flags. Usually a properly modular program would allow me to disable USB.
% ./configure --help... --disable-usb Disable libUSB support ...
However, “./configure -disable-usb” still gave me the libusb error. Puzzling. I finally noticed the ./configure was reporting an error, right after starting.
% ./configure --disable-usb configure: WARNING: unrecognized options: --disable-usb ...
Debugging the generated configure script is a pain. Time to dust off my ancient autoconf knowledge. The configure script starts with the configure.ac. I opened that up and searched for the disable-usb;
AC_ARG_ENABLE(libusb, AS_HELP_STRING([--disable-usb], [Disable libUSB support]),
The help string is there. But why doesn’t it work? Is it something simple?
AC_ARG_ENABLE(libusb, - AS_HELP_STRING([--disable-usb], [Disable libUSB support]), + AS_HELP_STRING([--disable-libusb], [Disable libUSB support]),
It might be this simple. Now how do I rebuild the configure script from the configure.ac? It’s been a long time but I remember a magic ‘autoreconf’.
% sudo dnf install autoconf automake % autoreconf
The autoreconf failed with a complaint about AC_PYTHON_MODULE macro. (I’ve lost the actual message to the mists of scrollback.) Autoconf is built around m4. A quick Google search for AC_PYTHON_MODULE leads to an m4 macro library: https://www.gnu.org/software/autoconf-archive/
Download the tarball, ./configure && make && make install and then try autoreconf again. Works! git diff shows the Kismet configure script updated. Run the configure again with –disable-libusb and no complaints.