dlz_open_driver: fix build failure without dlfcn.h
Summary
dlfcn.h should not be included if HAVE_DLCFN_H is not defined otherwise build will fail even when configured --without-dlopen.
BIND version used
9.11.5-P4
Steps to reproduce
Build bind on a toolchain without dlfcn.h (tested on buildroot with a toolchain that has only static library support) through the following command line:
./configure --target=arm-buildroot-linux-uclibcgnueabihf --host=arm-buildroot-linux-uclibcgnueabihf --build=x86_64-pc-linux-gnu --prefix=/usr --exec-prefix=/usr --sysconfdir=/etc --localstatedir=/var --program-prefix= --disable-gtk-doc --disable-gtk-doc-html --disable-doc --disable-docs --disable-documentation --with-xmlto=no --with-fop=no --disable-dependency-tracking --enable-ipv6 --disable-nls --enable-static --disable-shared --disable-threads --with-dlopen --without-lmdb --with-libjson=no --with-randomdev=/dev/urandom --enable-epoll --with-libtool --with-gssapi=no --enable-filter-aaaa --without-zlib --disable-linux-caps --with-libxml2=no --with-openssl=no --with-python=no --with-readline=no
Then run make
What is the current bug behavior?
Build fails on:
make[4]: Entering directory '/home/fabrice/buildroot/output/build/bind-9.11.5-P4/bin/named/unix'
/bin/bash /home/fabrice/buildroot/output/build/bind-9.11.5-P4/libtool --mode=compile --tag=CC /home/fabrice/buildroot/output/host/bin/arm-buildroot-linux-uclibcgnueabihf-gcc -I/home/fabrice/buildroot/output/build/bind-9.11.5-P4 -I../../.. -I./include -I./../include -I/home/fabrice/buildroot/output/build/bind-9.11.5-P4/lib/isccfg/include -I../../../lib/isccfg/include -I/home/fabrice/buildroot/output/build/bind-9.11.5-P4/lib/isccc/include -I../../../lib/isccc/include -I/home/fabrice/buildroot/output/build/bind-9.11.5-P4/lib/dns/include -I../../../lib/dns/include -I/home/fabrice/buildroot/output/build/bind-9.11.5-P4/lib/isc/include -I../../../lib/isc -I../../../lib/isc/include -I../../../lib/isc/unix/include -I../../../lib/isc/nothreads/include -I../../../lib/isc/noatomic/include -D_GNU_SOURCE -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -Os -static -W -Wall -Wmissing-prototypes -Wcast-qual -Wwrite-strings -Wformat -Wpointer-arith -fno-strict-aliasing -fno-delete-null-pointer-checks -c dlz_dlopen_driver.c
libtool: compile: /home/fabrice/buildroot/output/host/bin/arm-buildroot-linux-uclibcgnueabihf-gcc -I/home/fabrice/buildroot/output/build/bind-9.11.5-P4 -I../../.. -I./include -I./../include -I/home/fabrice/buildroot/output/build/bind-9.11.5-P4/lib/isccfg/include -I../../../lib/isccfg/include -I/home/fabrice/buildroot/output/build/bind-9.11.5-P4/lib/isccc/include -I../../../lib/isccc/include -I/home/fabrice/buildroot/output/build/bind-9.11.5-P4/lib/dns/include -I../../../lib/dns/include -I/home/fabrice/buildroot/output/build/bind-9.11.5-P4/lib/isc/include -I../../../lib/isc -I../../../lib/isc/include -I../../../lib/isc/unix/include -I../../../lib/isc/nothreads/include -I../../../lib/isc/noatomic/include -D_GNU_SOURCE -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -Os -W -Wall -Wmissing-prototypes -Wcast-qual -Wwrite-strings -Wformat -Wpointer-arith -fno-strict-aliasing -fno-delete-null-pointer-checks -c dlz_dlopen_driver.c -o dlz_dlopen_driver.o
dlz_dlopen_driver.c:20:10: fatal error: dlfcn.h: No such file or directory
#include <dlfcn.h>
^~~~~~~~~
compilation terminated.
make[4]: *** [Makefile:204: dlz_dlopen_driver.lo] Error 1
What is the expected correct behavior?
Build should succeed
Possible fixes
Please find attached a patch that fixed this issue. 0002-dlz_open_driver.c-fix-build-without-dlfcn.h.patch