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

Frans Meulenbroeks fransmeulenbroeks at gmail.com
Mon Jul 12 06:27:52 UTC 2010


2010/7/12 Khem Raj <raj.khem at gmail.com>:
> 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.

Will do. Thanks for the Ack.
>
>> ---
>>
>> 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
>>
>
> _______________________________________________
> 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