Two build != host fixes

Alan Modra amodra@gmail.com
Thu Jan 23 03:46:00 GMT 2014


I was hoping for a reply from someone who could OK the previous patches
submitted.  Admittedly, I didn't tick all the boxes (no changelog entry),
so here they are again.

The Makefile.in BUILD_CPPFLAGS change is for exactly the same reason
as my 2013-12-05 change.  When GMPINC points at an installed host gmp,
it results in picking up other host headers, which might be wrong for
the build machine.  We found this to be true even for very similar
build and host machines, in our case a powerpc64-linux build,
powerpc64le-linux host and target configuration, where differences in
glibc version between the build and host were enough to cause errors.

The configure.ac change is to fix a bug Bernd found when gmp is
in-tree but not installed.  In that case the recursive configure fails
due to system.h wanting to include gmp.h and not finding it:

/* Do not introduce a gmp.h dependency on the build system.  */
#ifndef GENERATOR_FILE
#include <gmp.h>
#endif

So, define GENERATOR_FILE for configure as we do when actually running
the build compiler.  The other changes are for consistency, but are
not strictly necessary.  I left them in this patch because they make
sense to me, and that's the way both Bernd and I tested this patch.

OK for mainline?

Bernd, if this isn't approved then I'll revert my previous change.
I believe I can do that without approval.

	* Makefile.in (BUILD_CPPFLAGS): Do not use ALL_CPPFLAGS.
	* configure.ac <recursive call for build != host>: Define
	GENERATOR_FILE.  Comment.  Use CXX_FOR_BUILD, CXXFLAGS_FOR_BUILD
	and LD_FOR_BUILD too.
	* configure: Regenerate.

Index: gcc/Makefile.in
===================================================================
--- gcc/Makefile.in	(revision 206915)
+++ gcc/Makefile.in	(working copy)
@@ -761,7 +761,8 @@
 
 # Native linker and preprocessor flags.  For x-fragment overrides.
 BUILD_LDFLAGS=@BUILD_LDFLAGS@
-BUILD_CPPFLAGS=$(ALL_CPPFLAGS)
+BUILD_CPPFLAGS= -I. -I$(@D) -I$(srcdir) -I$(srcdir)/$(@D) \
+		-I$(srcdir)/../include $(CPPINC)
 
 # Actual name to use when installing a native compiler.
 GCC_INSTALL_NAME := $(shell echo gcc|sed '$(program_transform_name)')
Index: gcc/configure.ac
===================================================================
--- gcc/configure.ac	(revision 206915)
+++ gcc/configure.ac	(working copy)
@@ -1529,8 +1529,13 @@
 	/* | [A-Za-z]:[\\/]* ) realsrcdir=${srcdir};;
 	*) realsrcdir=../${srcdir};;
 	esac
+	# Clearing GMPINC is necessary to prevent host headers being
+	# used by the build compiler.  Defining GENERATOR_FILE stops
+	# system.h from including gmp.h.
 	CC="${CC_FOR_BUILD}" CFLAGS="${CFLAGS_FOR_BUILD}" \
-	LDFLAGS="${LDFLAGS_FOR_BUILD}" GMPINC="" \
+	CXX="${CXX_FOR_BUILD}" CXXFLAGS="${CXXFLAGS_FOR_BUILD}" \
+	LD="${LD_FOR_BUILD}" LDFLAGS="${LDFLAGS_FOR_BUILD}" \
+	GMPINC="" CPPFLAGS="${CPPFLAGS} -DGENERATOR_FILE" \
 	${realsrcdir}/configure \
 		--enable-languages=${enable_languages-all} \
 		--target=$target_alias --host=$build_alias --build=$build_alias


-- 
Alan Modra
Australia Development Lab, IBM



More information about the Gcc-patches mailing list