xfsprogs: Add ability to cross compile to ARM.

Add BUILD_CFLAGS variable, allowing cross compilation.
[http://oss.sgi.com/archives/xfs/2016-02/msg00033.html]

Add BUILD_CC to be able to set the host compiler as well.

BUG=chromium:347322
TEST=Compile, deploy on veyron_speedy.

Change-Id: I6ec3c2a82465c4ee3087aeda5f29ff9176a99721
Signed-off-by: Gwendal Grignou <gwendal@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/347745
Reviewed-by: Mike Frysinger <vapier@chromium.org>
diff --git a/sys-fs/xfsprogs/files/xfsprogs-4.3.0-cross-compile.patch b/sys-fs/xfsprogs/files/xfsprogs-4.3.0-cross-compile.patch
new file mode 100644
index 0000000..f183056
--- /dev/null
+++ b/sys-fs/xfsprogs/files/xfsprogs-4.3.0-cross-compile.patch
@@ -0,0 +1,182 @@
+From 1a366eedc0eb4da46da48e9f6e2da27c7b5d2076 Mon Sep 17 00:00:00 2001
+From: Gwendal Grignou <gwendal@chromium.org>
+Date: Fri, 3 Jun 2016 09:17:28 -0700
+Subject: [PATCH] Allow compiling xfsprogs in a cross compile environment.
+
+Without this patch, we are using the same compiler and options for the host
+compiler (BUILD_CC) and the target compiler (CC), and we would get error
+messages at compilation:
+x86_64-pc-linux-gnu-gcc -O2 -O2 -pipe -march=armv7-a -mtune=cortex-a15 ...
+x86_64-pc-linux-gnu-gcc.real: error: unrecognized command line option
+'-mfpu=neon'
+'-mfloat-abi=hard'
+'-clang-syntax'
+'-mfpu=neon'
+'-mfloat-abi=hard'
+'-clang-syntax'
+
+Add BUILD_CC and BUILD_CFLAGS as precious variables to allow setting it up
+from the ebuild.
+
+Signed-off-by: Gwendal Grignou <gwendal@chromium.org>
+---
+ configure            | 26 +++++++++++++++++++++-----
+ configure.ac         | 20 +++++++++++++++-----
+ include/builddefs.in |  6 ++++--
+ libxfs/Makefile      |  4 ++--
+ 4 files changed, 42 insertions(+), 14 deletions(-)
+
+diff --git a/configure b/configure
+index 325081f..863a447 100755
+--- a/configure
++++ b/configure
+@@ -700,6 +700,7 @@ libreadline
+ enable_blkid
+ enable_gettext
+ enable_shared
++BUILD_CFLAGS
+ BUILD_CC
+ CPP
+ LT_SYS_LIBRARY_PATH
+@@ -806,7 +807,9 @@ LDFLAGS
+ LIBS
+ CPPFLAGS
+ LT_SYS_LIBRARY_PATH
+-CPP'
++CPP
++BUILD_CC
++BUILD_CFLAGS'
+ 
+ 
+ # Initialize some variables set by options.
+@@ -1456,6 +1459,9 @@ Some influential environment variables:
+   LT_SYS_LIBRARY_PATH
+               User-defined run-time library search path.
+   CPP         C preprocessor
++  BUILD_CC    C compiler for build tools
++  BUILD_CFLAGS
++              C compiler flags for build tools
+ 
+ Use these variables to override the choices made by `configure' or to help
+ it to find libraries and programs with nonstandard names/locations.
+@@ -11957,11 +11963,12 @@ ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ ac_compiler_gnu=$ac_cv_c_compiler_gnu
+ 
+-if test $cross_compiling = no; then
+-  BUILD_CC="$CC"
+ 
+-else
+-  for ac_prog in gcc cc
++if test "${BUILD_CC+set}" != "set"; then
++  if test $cross_compiling = no; then
++    BUILD_CC="$CC"
++  else
++    for ac_prog in gcc cc
+ do
+   # Extract the first word of "$ac_prog", so it can be a program name with args.
+ set dummy $ac_prog; ac_word=$2
+@@ -12003,6 +12010,15 @@ fi
+   test -n "$BUILD_CC" && break
+ done
+ 
++  fi
++fi
++
++if test "${BUILD_CFLAGS+set}" != "set"; then
++  if test $cross_compiling = no; then
++    BUILD_CFLAGS="$CFLAGS"
++  else
++    BUILD_CFLAGS="-g -O2"
++  fi
+ fi
+ 
+ # Check whether --enable-shared was given.
+diff --git a/configure.ac b/configure.ac
+index d44438f..fc286b3 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -9,11 +9,21 @@ AC_PREFIX_DEFAULT(/usr)
+ AC_PROG_LIBTOOL
+ 
+ AC_PROG_CC
+-if test $cross_compiling = no; then
+-  BUILD_CC="$CC"
+-  AC_SUBST(BUILD_CC)
+-else
+-  AC_CHECK_PROGS(BUILD_CC, gcc cc)
++AC_ARG_VAR(BUILD_CC, [C compiler for build tools])
++if test "${BUILD_CC+set}" != "set"; then
++  if test $cross_compiling = no; then
++    BUILD_CC="$CC"
++  else
++    AC_CHECK_PROGS(BUILD_CC, gcc cc)
++  fi
++fi
++AC_ARG_VAR(BUILD_CFLAGS, [C compiler flags for build tools])
++if test "${BUILD_CFLAGS+set}" != "set"; then
++  if test $cross_compiling = no; then
++    BUILD_CFLAGS="$CFLAGS"
++  else
++    BUILD_CFLAGS="-g -O2"
++  fi
+ fi
+ 
+ AC_ARG_ENABLE(shared,
+diff --git a/include/builddefs.in b/include/builddefs.in
+index c2ca4cb..9ca57a6 100644
+--- a/include/builddefs.in
++++ b/include/builddefs.in
+@@ -27,6 +27,7 @@ MALLOCLIB = @malloc_lib@
+ LOADERFLAGS = @LDFLAGS@
+ LTLDFLAGS = @LDFLAGS@
+ CFLAGS = @CFLAGS@
++BUILD_CFLAGS = @BUILD_CFLAGS@
+ 
+ LIBRT = @librt@
+ LIBUUID = @libuuid@
+@@ -150,7 +151,7 @@ PCFLAGS+= -DENABLE_BLKID
+ endif
+ 
+ 
+-GCFLAGS = $(OPTIMIZER) $(DEBUG) \
++GCFLAGS = $(DEBUG) \
+ 	  -DVERSION=\"$(PKG_VERSION)\" -DLOCALEDIR=\"$(PKG_LOCALE_DIR)\"  \
+ 	  -DPACKAGE=\"$(PKG_NAME)\" -I$(TOPDIR)/include -I$(TOPDIR)/libxfs
+ 
+@@ -158,8 +159,9 @@ ifeq ($(ENABLE_GETTEXT),yes)
+ GCFLAGS += -DENABLE_GETTEXT
+ endif
+ 
++BUILD_CFLAGS += $(GCFLAGS) $(PCFLAGS)
+ # First, Global, Platform, Local CFLAGS
+-CFLAGS += $(FCFLAGS) $(GCFLAGS) $(PCFLAGS) $(LCFLAGS)
++CFLAGS += $(FCFLAGS) $(OPTIMIZER) $(GCFLAGS) $(PCFLAGS) $(LCFLAGS)
+ 
+ include $(TOPDIR)/include/buildmacros
+ 
+diff --git a/libxfs/Makefile b/libxfs/Makefile
+index 873d4ec..8d728c0 100644
+--- a/libxfs/Makefile
++++ b/libxfs/Makefile
+@@ -111,7 +111,7 @@ default: crc32selftest ltdepend $(LTLIBRARY)
+ 
+ crc32table.h: gen_crc32table.c
+ 	@echo "    [CC]     gen_crc32table"
+-	$(Q) $(BUILD_CC) $(CFLAGS) -o gen_crc32table $<
++	$(Q) $(BUILD_CC) $(BUILD_CFLAGS) -o gen_crc32table $<
+ 	@echo "    [GENERATE] $@"
+ 	$(Q) ./gen_crc32table > crc32table.h
+ 
+@@ -122,7 +122,7 @@ crc32table.h: gen_crc32table.c
+ # disk.
+ crc32selftest: gen_crc32table.c crc32table.h crc32.c
+ 	@echo "    [TEST]    CRC32"
+-	$(Q) $(BUILD_CC) $(CFLAGS) -D CRC32_SELFTEST=1 crc32.c -o $@
++	$(Q) $(BUILD_CC) $(BUILD_CFLAGS) -D CRC32_SELFTEST=1 crc32.c -o $@
+ 	$(Q) ./$@
+ 
+ # set up include/xfs header directory
+-- 
+2.8.0.rc3.226.g39d4020
+
diff --git a/sys-fs/xfsprogs/xfsprogs-4.5.0.ebuild b/sys-fs/xfsprogs/xfsprogs-4.5.0.ebuild
index e50ebd9..f06bf3e 100644
--- a/sys-fs/xfsprogs/xfsprogs-4.5.0.ebuild
+++ b/sys-fs/xfsprogs/xfsprogs-4.5.0.ebuild
@@ -31,6 +31,7 @@
 
 PATCHES=(
 	"${FILESDIR}"/${PN}-4.3.0-sharedlibs.patch
+	"${FILESDIR}"/${PN}-4.3.0-cross-compile.patch
 	"${FILESDIR}"/${PN}-4.5.0-linguas.patch
 )
 
@@ -71,6 +72,7 @@
 	export DEBUG=-DNDEBUG
 	export OPTIMIZER=${CFLAGS}
 	unset PLATFORM # if set in user env, this breaks configure
+	tc-export_build_env BUILD_CC
 
 	local myconf
 	if use static || use static-libs ; then