[Buildroot] [PATCH 2/2] host-m4: fix build when -std=gnu99 and inline functions are used

Thomas Petazzoni thomas.petazzoni at free-electrons.com
Thu Feb 25 12:54:36 UTC 2016


Dear Lada Trimasova,

On Thu, 25 Feb 2016 14:37:10 +0300, Lada Trimasova wrote:
> A lot of the glibc header files use extern inline, which causes
> GCC to emit a symbol for each extern inline functions and it causes
> functions multiple definition error when "-std=gnu99" is used.
> To fix this problem it's necessary to use "-fgnu89-inline" option which
> tells GCC to use the traditional GNU semantics for inline functions when
> in C99 mode.

I'm using gcc 5.x on my laptop, which I believe defaults to -std=gnu99,
and host-m4 builds fine for me. Could you describe more precisely in
which cases host-m4 doesn't build for you?

> diff --git a/package/m4/m4.mk b/package/m4/m4.mk
> index 9b5d2d1..2644bb1 100644
> --- a/package/m4/m4.mk
> +++ b/package/m4/m4.mk
> @@ -10,5 +10,6 @@ M4_SITE = $(BR2_GNU_MIRROR)/m4
>  M4_LICENSE = GPLv3+
>  M4_LICENSE_FILES = COPYING
>  HOST_M4_CONF_OPTS = --disable-static
> +HOST_M4_MAKE_OPTS = CFLAGS="-fgnu89-inline"

I think it's cleaner to pass this in the configure script environment,
i.e:

HOST_M4_CONF_ENV = \
	CFLAGS="$(HOST_CFLAGS) -fgnu89-inline"

(Same comments for the host-tar patch).

Thanks,

Thomas
-- 
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com


More information about the buildroot mailing list