freebsd: Fix build problem due to picking up the wrong libvirt.h

Gettext annoyingly modifies CPPFLAGS in-place, putting
-I/usr/local/include into the search patch if libintl headers
must be used from that location.  But since we must support
automake 1.9.6 which lacks AM_CPPFLAGS, and since CPPFLAGS is used
prior to INCLUDES, this means that the build picks up the _old_
installed libvirt.h in priority to the in-tree version, leading
to all sorts of weird build failures on FreeBSD.

Fix this by teaching configure to undo gettext's actions, but
to keep any changes required by gettext at the end of INCLUDES
after all in-tree locations are used first.  Also requires
adding a wrapper Makefile.am and making gnulib-tool create
just gnulib.mk files during the bootstrap process.

Signed-off-by: Eric Blake <eblake@redhat.com>
This commit is contained in:
Matthias Bolte 2011-07-28 14:55:21 +02:00 committed by Eric Blake
parent c0e5994aef
commit b590866bdb
10 changed files with 70 additions and 20 deletions

6
.gitignore vendored
View File

@ -36,7 +36,9 @@
/configure.lineno
/daemon/*_dispatch.h
/docs/hvsupport.html.in
/gnulib/
/gnulib/lib/*
/gnulib/m4/*
/gnulib/tests/*
/libtool
/libvirt-*.tar.gz
/libvirt-[0-9]*
@ -74,6 +76,8 @@ results.log
stamp-h
stamp-h.in
stamp-h1
!/gnulib/lib/Makefile.am
!/gnulib/tests/Makefile.am
!/m4/virt-*.m4
!/po/*.po
!/po/POTFILES.in

View File

@ -161,7 +161,6 @@ gnulib_name=libgnu
m4_base=gnulib/m4
source_base=gnulib/lib
tests_base=gnulib/tests
gnulib_mk=Makefile.am
gnulib_tool_option_extras="\
--lgpl=2\
--with-tests\
@ -203,9 +202,9 @@ gnulib_extra_files="
bootstrap_epilogue()
{
# Change paths in gnulib/tests/Makefile.am from "../../.." to "../..",
# Change paths in gnulib/tests/gnulib.mk from "../../.." to "../..",
# then ensure that gnulib/tests/Makefile.in is up-to-date.
m=gnulib/tests/Makefile.am
m=gnulib/tests/gnulib.mk
sed 's,\.\./\.\./\.\.,../..,g' $m > $m-t
mv -f $m-t $m
${AUTOMAKE-automake} gnulib/tests/Makefile

View File

@ -2058,8 +2058,30 @@ dnl Enable building libvirtd?
AM_CONDITIONAL([WITH_LIBVIRTD],[test "x$with_libvirtd" = "xyes"])
dnl Check for gettext - don't go any newer than what RHEL 5 supports
dnl
dnl save and restore CPPFLAGS around gettext check as the internal iconv
dnl check might leave -I/usr/local/include in CPPFLAGS on FreeBSD resulting
dnl in the build picking up previously installed libvirt/libvirt.h instead
dnl of the correct one from the source tree.
dnl compute the difference between save_CPPFLAGS and CPPFLAGS and append it
dnl to INCLUDES in order to preserve changes made by gettext but in a place
dnl that does not break the build
save_CPPFLAGS="$CPPFLAGS"
AM_GNU_GETTEXT_VERSION([0.17])
AM_GNU_GETTEXT([external])
GETTEXT_CPPFLAGS=
if test "x$save_CPPFLAGS" != "x$CPPFLAGS"; then
set dummy $CPPFLAGS; shift
for var
do
case " $var " in
" $save_CPPFLAGS ") ;;
*) GETTEXT_CPPFLAGS="$GETTEXT_CPPFLAGS $var" ;;
esac
done
fi
CPPFLAGS="$save_CPPFLAGS"
AC_SUBST([GETTEXT_CPPFLAGS])
ALL_LINGUAS=`cd "$srcdir/po" > /dev/null && ls *.po | sed 's+\.po$++'`

View File

@ -3,6 +3,16 @@
## Copyright (C) 2005-2011 Red Hat, Inc.
## See COPYING.LIB for the License of this software
INCLUDES = \
-I$(top_srcdir)/gnulib/lib -I../gnulib/lib \
-I$(top_srcdir)/include -I$(top_builddir)/include \
-I$(top_srcdir)/src \
-I$(top_srcdir)/src/util \
-I$(top_srcdir)/src/conf \
-I$(top_srcdir)/src/rpc \
-I$(top_srcdir)/src/remote \
$(GETTEXT_CPPFLAGS)
CLEANFILES =
DAEMON_GENERATED = \
@ -82,13 +92,6 @@ libvirtd_SOURCES = $(DAEMON_SOURCES)
#-D_XOPEN_SOURCE=600 -D_XOPEN_SOURCE_EXTENDED=1 -D_POSIX_C_SOURCE=199506L
libvirtd_CFLAGS = \
-I$(top_srcdir)/gnulib/lib -I../gnulib/lib \
-I$(top_srcdir)/include -I$(top_builddir)/include \
-I$(top_srcdir)/src \
-I$(top_srcdir)/src/util \
-I$(top_srcdir)/src/conf \
-I$(top_srcdir)/src/rpc \
-I$(top_srcdir)/src/remote \
$(LIBXML_CFLAGS) $(GNUTLS_CFLAGS) $(SASL_CFLAGS) \
$(XDR_CFLAGS) $(POLKIT_CFLAGS) \
$(WARN_CFLAGS) \

8
gnulib/lib/Makefile.am Normal file
View File

@ -0,0 +1,8 @@
## Makefile for gnulib/lib -*-Makefile-*-
## Copyright (C) 2011 Red Hat, Inc.
## See COPYING.LIB for the License of this software
include gnulib.mk
INCLUDES = $(GETTEXT_CPPFLAGS)

8
gnulib/tests/Makefile.am Normal file
View File

@ -0,0 +1,8 @@
## Makefile for gnulib/lib -*-Makefile-*-
## Copyright (C) 2011 Red Hat, Inc.
## See COPYING.LIB for the License of this software
include gnulib.mk
INCLUDES = $(GETTEXT_CPPFLAGS)

View File

@ -9,7 +9,8 @@ INCLUDES = \
$(PYTHON_INCLUDES) \
-I$(top_srcdir)/include \
-I$(top_builddir)/include \
-I$(top_builddir)/$(subdir)
-I$(top_builddir)/$(subdir) \
$(GETTEXT_CPPFLAGS)
AM_CFLAGS = $(WARN_CFLAGS)

View File

@ -5,13 +5,14 @@
# No libraries with the exception of LIBXML should be listed
# here. List them against the individual XXX_la_CFLAGS targets
# that actually use them
# that actually use them. Also keep GETTEXT_CPPFLAGS at the end.
INCLUDES = -I$(top_srcdir)/gnulib/lib \
-I../gnulib/lib \
-I../include \
-I@top_srcdir@/src/util \
-I@top_srcdir@/include \
-DIN_LIBVIRT
-DIN_LIBVIRT \
$(GETTEXT_CPPFLAGS)
AM_CFLAGS = $(DRIVER_MODULE_CFLAGS) \
$(LIBXML_CFLAGS) \

View File

@ -11,7 +11,8 @@ INCLUDES = \
-I$(top_srcdir)/include \
-I$(top_srcdir)/src \
-I$(top_srcdir)/src/util \
-I$(top_srcdir)/src/conf
-I$(top_srcdir)/src/conf \
$(GETTEXT_CPPFLAGS)
AM_CFLAGS = \
$(LIBXML_CFLAGS) \

View File

@ -1,6 +1,14 @@
## Copyright (C) 2005-2011 Red Hat, Inc.
## See COPYING.LIB for the License of this software
INCLUDES = \
-I../include -I$(top_srcdir)/include \
-I$(top_srcdir)/gnulib/lib -I../gnulib/lib \
-I$(top_srcdir)/src \
-I$(top_srcdir)/src/util \
-I$(top_srcdir) \
$(GETTEXT_CPPFLAGS)
POD2MAN = pod2man -c "Virtualization Support" -r "$(PACKAGE)-$(VERSION)"
ICON_FILES = \
@ -68,11 +76,6 @@ virsh_LDADD = \
$(LIBXML_LIBS) \
$(VIRSH_LIBS)
virsh_CFLAGS = \
-I$(top_srcdir)/gnulib/lib -I../gnulib/lib \
-I../include -I$(top_srcdir)/include \
-I$(top_srcdir)/src \
-I$(top_srcdir)/src/util \
-I$(top_srcdir) \
$(WARN_CFLAGS) \
$(COVERAGE_CFLAGS) \
$(LIBXML_CFLAGS) \