[oe] [PATCH] gcc 4.1.x: patch Makefile.in for cross compile badness

Khem Raj raj.khem at gmail.com
Sun Jul 11 23:48:42 UTC 2010


On Sun, Jul 11, 2010 at 12:32 AM, Frans Meulenbroeks
<fransmeulenbroeks at gmail.com> wrote:
> When compiling gcc target code make passes -I(GMPINC)
> but this one points to the host dir (it is set to HOST_GMPINC
> which in oe points to tmp/sysroots/i686-linux/usr/include)
> This patch breaks the env var $(INCLUDES) in two
> and only uses the TARGET specific part for compiling libgcc
> and the crt stuff.
>
> This has been fully tested with gcc 4.1.2. For 4.1.0 and 4.1.0 it is
> verified that the patch applies properly
>
> Signed-off-by: Frans Meulenbroeks <fransmeulenbroeks at gmail.com>
>

Acked-by: Khem Raj <raj.khem at gmail.com>

Please bump PR too.

> ---
>
> see also  the thread
> [RFC] gcc patch to avoid host include when compiling gcc-cross
> on the oe ML
>
> I'll apply if I get two acks. After that I'll try to find time to
> port it to newer versions too (but if someone else would like to
> give that a stab, be my guest).
> ---
>  recipes/gcc/gcc-4.1.0.inc               |    4 ++-
>  recipes/gcc/gcc-4.1.0/Makefile.in.patch |   47 +++++++++++++++++++++++++++++++
>  recipes/gcc/gcc-4.1.1.inc               |    1 +
>  recipes/gcc/gcc-4.1.1/Makefile.in.patch |   47 +++++++++++++++++++++++++++++++
>  recipes/gcc/gcc-4.1.2.inc               |    1 +
>  recipes/gcc/gcc-4.1.2/Makefile.in.patch |   47 +++++++++++++++++++++++++++++++
>  6 files changed, 146 insertions(+), 1 deletions(-)
>  create mode 100644 recipes/gcc/gcc-4.1.0/Makefile.in.patch
>  create mode 100644 recipes/gcc/gcc-4.1.1/Makefile.in.patch
>  create mode 100644 recipes/gcc/gcc-4.1.2/Makefile.in.patch
>
> diff --git a/recipes/gcc/gcc-4.1.0.inc b/recipes/gcc/gcc-4.1.0.inc
> index bfaf699..34d3502 100644
> --- a/recipes/gcc/gcc-4.1.0.inc
> +++ b/recipes/gcc/gcc-4.1.0.inc
> @@ -11,7 +11,9 @@ SRC_URI = "${GNU_MIRROR}/gcc/gcc-${PV}/gcc-${PV}.tar.bz2;name=archive \
>        file://arm-nolibfloat.patch \
>        file://arm-softfloat.patch \
>        file://zecke-xgcc-cpp.patch \
> -    file://pr34130.patch"
> +       file://pr34130.patch \
> +       file://Makefile.in.patch \
> +        "
>
>  SRC_URI_append_fail-fast = " file://zecke-no-host-includes.patch "
>
> diff --git a/recipes/gcc/gcc-4.1.0/Makefile.in.patch b/recipes/gcc/gcc-4.1.0/Makefile.in.patch
> new file mode 100644
> index 0000000..140116a
> --- /dev/null
> +++ b/recipes/gcc/gcc-4.1.0/Makefile.in.patch
> @@ -0,0 +1,47 @@
> +Index: gcc-4.1.2/gcc/Makefile.in
> +===================================================================
> +--- gcc-4.1.2.orig/gcc/Makefile.in
> ++++ gcc-4.1.2/gcc/Makefile.in
> +@@ -405,7 +405,7 @@ LIMITS_H_TEST = [ -f $(SYSTEM_HEADER_DIR
> + TARGET_SYSTEM_ROOT = @TARGET_SYSTEM_ROOT@
> +
> + xmake_file=@xmake_file@
> +-tmake_file=@tmake_file@
> ++tmake_file=@tmake_file@ /home/frans/oe/tmp_angstrom/work/nios2-linux/gcc-cross-4.1.2-r22.1/temp/t-oe
> + out_file=$(srcdir)/config/@out_file@
> + out_object_file=@out_object_file@
> + md_file=$(srcdir)/config/@md_file@
> +@@ -548,7 +548,7 @@ LIBGCC2_INCLUDES =
> + TARGET_LIBGCC2_CFLAGS =
> +
> + # Options to use when compiling crtbegin/end.
> +-CRTSTUFF_CFLAGS = -O2 $(GCC_CFLAGS) $(INCLUDES) $(MULTILIB_CFLAGS) -g0 \
> ++CRTSTUFF_CFLAGS = -O2 $(GCC_CFLAGS) $(TARGET_INCLUDES) $(MULTILIB_CFLAGS) -g0 \
> +   -finhibit-size-directive -fno-inline-functions -fno-exceptions \
> +   -fno-zero-initialized-in-bss -fno-unit-at-a-time \
> +   $(INHIBIT_LIBC_CFLAGS)
> +@@ -845,9 +845,13 @@ BUILD_VARRAY = build/varray.o
> + # -I$(@D) and -I$(srcdir)/$(@D) cause the subdirectory of the file
> + # currently being compiled, in both source trees, to be examined as well.
> + # libintl.h will be found in ../intl if we are using the included libintl.
> +-INCLUDES = -I. -I$(@D) -I$(srcdir) -I$(srcdir)/$(@D) \
> ++#
> ++# TARGET_INCLUDES is added to avoid that GMPINC (which points to the host
> ++# include dir) is used for compiling libgcc.a
> ++TARGET_INCLUDES = -I. -I$(@D) -I$(srcdir) -I$(srcdir)/$(@D) \
> +          -I$(srcdir)/../include @INCINTL@ \
> +-         $(CPPINC) $(GMPINC)
> ++         $(CPPINC)
> ++INCLUDES = $(TARGET_INCLUDES) $(GMPINC)
> +
> + .c.o:
> +       $(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) $< $(OUTPUT_OPTION)
> +@@ -1379,7 +1383,7 @@ libgcc.a: $(LIBGCC_DEPS)
> +       $(MAKE) \
> +         CFLAGS="$(CFLAGS) $(WARN_CFLAGS)" \
> +         CONFIG_H="$(TCONFIG_H)" TM_H="$(TM_H)" \
> +-        INCLUDES="$(INCLUDES)" \
> ++        INCLUDES="$(TARGET_INCLUDES)" \
> +         MAKEOVERRIDES= \
> +         -f libgcc.mk all
> +
> diff --git a/recipes/gcc/gcc-4.1.1.inc b/recipes/gcc/gcc-4.1.1.inc
> index 3b813b0..19f2423 100644
> --- a/recipes/gcc/gcc-4.1.1.inc
> +++ b/recipes/gcc/gcc-4.1.1.inc
> @@ -32,6 +32,7 @@ SRC_URI = "${GNU_MIRROR}/gcc/gcc-${PV}/gcc-${PV}.tar.bz2;name=archive \
>         file://gcc-4.1.1-e300cx.patch \
>         file://pr34130.patch \
>        file://sed-fixinc-backslash.patch \
> +       file://Makefile.in.patch \
>        "
>
>  SRC_URI_append_sh3  = " file://sh3-installfix-fixheaders.patch "
> diff --git a/recipes/gcc/gcc-4.1.1/Makefile.in.patch b/recipes/gcc/gcc-4.1.1/Makefile.in.patch
> new file mode 100644
> index 0000000..140116a
> --- /dev/null
> +++ b/recipes/gcc/gcc-4.1.1/Makefile.in.patch
> @@ -0,0 +1,47 @@
> +Index: gcc-4.1.2/gcc/Makefile.in
> +===================================================================
> +--- gcc-4.1.2.orig/gcc/Makefile.in
> ++++ gcc-4.1.2/gcc/Makefile.in
> +@@ -405,7 +405,7 @@ LIMITS_H_TEST = [ -f $(SYSTEM_HEADER_DIR
> + TARGET_SYSTEM_ROOT = @TARGET_SYSTEM_ROOT@
> +
> + xmake_file=@xmake_file@
> +-tmake_file=@tmake_file@
> ++tmake_file=@tmake_file@ /home/frans/oe/tmp_angstrom/work/nios2-linux/gcc-cross-4.1.2-r22.1/temp/t-oe
> + out_file=$(srcdir)/config/@out_file@
> + out_object_file=@out_object_file@
> + md_file=$(srcdir)/config/@md_file@
> +@@ -548,7 +548,7 @@ LIBGCC2_INCLUDES =
> + TARGET_LIBGCC2_CFLAGS =
> +
> + # Options to use when compiling crtbegin/end.
> +-CRTSTUFF_CFLAGS = -O2 $(GCC_CFLAGS) $(INCLUDES) $(MULTILIB_CFLAGS) -g0 \
> ++CRTSTUFF_CFLAGS = -O2 $(GCC_CFLAGS) $(TARGET_INCLUDES) $(MULTILIB_CFLAGS) -g0 \
> +   -finhibit-size-directive -fno-inline-functions -fno-exceptions \
> +   -fno-zero-initialized-in-bss -fno-unit-at-a-time \
> +   $(INHIBIT_LIBC_CFLAGS)
> +@@ -845,9 +845,13 @@ BUILD_VARRAY = build/varray.o
> + # -I$(@D) and -I$(srcdir)/$(@D) cause the subdirectory of the file
> + # currently being compiled, in both source trees, to be examined as well.
> + # libintl.h will be found in ../intl if we are using the included libintl.
> +-INCLUDES = -I. -I$(@D) -I$(srcdir) -I$(srcdir)/$(@D) \
> ++#
> ++# TARGET_INCLUDES is added to avoid that GMPINC (which points to the host
> ++# include dir) is used for compiling libgcc.a
> ++TARGET_INCLUDES = -I. -I$(@D) -I$(srcdir) -I$(srcdir)/$(@D) \
> +          -I$(srcdir)/../include @INCINTL@ \
> +-         $(CPPINC) $(GMPINC)
> ++         $(CPPINC)
> ++INCLUDES = $(TARGET_INCLUDES) $(GMPINC)
> +
> + .c.o:
> +       $(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) $< $(OUTPUT_OPTION)
> +@@ -1379,7 +1383,7 @@ libgcc.a: $(LIBGCC_DEPS)
> +       $(MAKE) \
> +         CFLAGS="$(CFLAGS) $(WARN_CFLAGS)" \
> +         CONFIG_H="$(TCONFIG_H)" TM_H="$(TM_H)" \
> +-        INCLUDES="$(INCLUDES)" \
> ++        INCLUDES="$(TARGET_INCLUDES)" \
> +         MAKEOVERRIDES= \
> +         -f libgcc.mk all
> +
> diff --git a/recipes/gcc/gcc-4.1.2.inc b/recipes/gcc/gcc-4.1.2.inc
> index 3b6cf30..8771e18 100644
> --- a/recipes/gcc/gcc-4.1.2.inc
> +++ b/recipes/gcc/gcc-4.1.2.inc
> @@ -29,6 +29,7 @@ SRC_URI = "${GNU_MIRROR}/gcc/gcc-${PV}/gcc-${PV}.tar.bz2;name=archive \
>        file://gfortran.patch \
>         file://gcc-4.0.2-e300c2c3.patch \
>         file://pr34130.patch \
> +       file://Makefile.in.patch \
>        "
>
>  SRC_URI_append_sh3  = " file://sh3-installfix-fixheaders.patch "
> diff --git a/recipes/gcc/gcc-4.1.2/Makefile.in.patch b/recipes/gcc/gcc-4.1.2/Makefile.in.patch
> new file mode 100644
> index 0000000..140116a
> --- /dev/null
> +++ b/recipes/gcc/gcc-4.1.2/Makefile.in.patch
> @@ -0,0 +1,47 @@
> +Index: gcc-4.1.2/gcc/Makefile.in
> +===================================================================
> +--- gcc-4.1.2.orig/gcc/Makefile.in
> ++++ gcc-4.1.2/gcc/Makefile.in
> +@@ -405,7 +405,7 @@ LIMITS_H_TEST = [ -f $(SYSTEM_HEADER_DIR
> + TARGET_SYSTEM_ROOT = @TARGET_SYSTEM_ROOT@
> +
> + xmake_file=@xmake_file@
> +-tmake_file=@tmake_file@
> ++tmake_file=@tmake_file@ /home/frans/oe/tmp_angstrom/work/nios2-linux/gcc-cross-4.1.2-r22.1/temp/t-oe
> + out_file=$(srcdir)/config/@out_file@
> + out_object_file=@out_object_file@
> + md_file=$(srcdir)/config/@md_file@
> +@@ -548,7 +548,7 @@ LIBGCC2_INCLUDES =
> + TARGET_LIBGCC2_CFLAGS =
> +
> + # Options to use when compiling crtbegin/end.
> +-CRTSTUFF_CFLAGS = -O2 $(GCC_CFLAGS) $(INCLUDES) $(MULTILIB_CFLAGS) -g0 \
> ++CRTSTUFF_CFLAGS = -O2 $(GCC_CFLAGS) $(TARGET_INCLUDES) $(MULTILIB_CFLAGS) -g0 \
> +   -finhibit-size-directive -fno-inline-functions -fno-exceptions \
> +   -fno-zero-initialized-in-bss -fno-unit-at-a-time \
> +   $(INHIBIT_LIBC_CFLAGS)
> +@@ -845,9 +845,13 @@ BUILD_VARRAY = build/varray.o
> + # -I$(@D) and -I$(srcdir)/$(@D) cause the subdirectory of the file
> + # currently being compiled, in both source trees, to be examined as well.
> + # libintl.h will be found in ../intl if we are using the included libintl.
> +-INCLUDES = -I. -I$(@D) -I$(srcdir) -I$(srcdir)/$(@D) \
> ++#
> ++# TARGET_INCLUDES is added to avoid that GMPINC (which points to the host
> ++# include dir) is used for compiling libgcc.a
> ++TARGET_INCLUDES = -I. -I$(@D) -I$(srcdir) -I$(srcdir)/$(@D) \
> +          -I$(srcdir)/../include @INCINTL@ \
> +-         $(CPPINC) $(GMPINC)
> ++         $(CPPINC)
> ++INCLUDES = $(TARGET_INCLUDES) $(GMPINC)
> +
> + .c.o:
> +       $(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) $< $(OUTPUT_OPTION)
> +@@ -1379,7 +1383,7 @@ libgcc.a: $(LIBGCC_DEPS)
> +       $(MAKE) \
> +         CFLAGS="$(CFLAGS) $(WARN_CFLAGS)" \
> +         CONFIG_H="$(TCONFIG_H)" TM_H="$(TM_H)" \
> +-        INCLUDES="$(INCLUDES)" \
> ++        INCLUDES="$(TARGET_INCLUDES)" \
> +         MAKEOVERRIDES= \
> +         -f libgcc.mk all
> +
> --
> 1.6.4.2
>
>
> _______________________________________________
> Openembedded-devel mailing list
> Openembedded-devel at lists.openembedded.org
> http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-devel
>




More information about the Openembedded-devel mailing list