From a3b665a80abed4c0659925e1cceb1568af023711 Mon Sep 17 00:00:00 2001 From: Richard Purdie Date: Sun, 22 Sep 2013 10:48:28 +0000 Subject: gcc-target: Fix libatomic dependency tracking issues The --enable-dependency-tracking option was added to workaround build issues in libatomic. This fixes that build problem properly and removes the flag since the dependency tracking code appears to be full of races which are much deeper and harder to fix. As per the automake manual, dependency tracking is only useful and worth the build performance cost if you are doing more than one compile of the same source code which in most cases we are not so this is a good thing anyway. Signed-off-by: Richard Purdie --- meta/recipes-devtools/gcc/gcc-4.8.inc | 1 + .../gcc/gcc-4.8/0046-libatomic-deptracking.patch | 41 ++++++++++++++++++++++ meta/recipes-devtools/gcc/gcc-target.inc | 2 +- 3 files changed, 43 insertions(+), 1 deletion(-) create mode 100644 meta/recipes-devtools/gcc/gcc-4.8/0046-libatomic-deptracking.patch (limited to 'meta/recipes-devtools') diff --git a/meta/recipes-devtools/gcc/gcc-4.8.inc b/meta/recipes-devtools/gcc/gcc-4.8.inc index 0fbbc1d9bc..4af98f8fee 100644 --- a/meta/recipes-devtools/gcc/gcc-4.8.inc +++ b/meta/recipes-devtools/gcc/gcc-4.8.inc @@ -75,6 +75,7 @@ SRC_URI = "${GNU_MIRROR}/gcc/gcc-${PV}/gcc-${PV}.tar.bz2 \ file://0043-cpp.patch \ file://0044-gengtypes.patch \ file://0045-gcc-4.8-PR57717-PowerPC-E500v2.patch \ + file://0046-libatomic-deptracking.patch \ " SRC_URI[md5sum] = "3b2386c114cd74185aa3754b58a79304" SRC_URI[sha256sum] = "545b44be3ad9f2c4e90e6880f5c9d4f0a8f0e5f67e1ffb0d45da9fa01bb05813" diff --git a/meta/recipes-devtools/gcc/gcc-4.8/0046-libatomic-deptracking.patch b/meta/recipes-devtools/gcc/gcc-4.8/0046-libatomic-deptracking.patch new file mode 100644 index 0000000000..6ea4f42765 --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.8/0046-libatomic-deptracking.patch @@ -0,0 +1,41 @@ +gcc 4.8 won't build with --disable-dependency-tracking since the *.Ppo files +don't get created unless --enable-dependency-tracking is true. + +This patch ensures we only use those compiler options when its enabled. + +Upstream-Status: Submitted + +(Problem was already reported upstream, attached this patch there +http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55930) + +RP +2012/09/22 + +Index: gcc-4.8.1/libatomic/Makefile.am +=================================================================== +--- gcc-4.8.1.orig/libatomic/Makefile.am 2013-01-14 18:16:23.000000000 +0000 ++++ gcc-4.8.1/libatomic/Makefile.am 2013-09-22 10:38:18.904064750 +0000 +@@ -100,7 +100,8 @@ + IFUNC_DEF = -DIFUNC_ALT=$(PAT_S) + IFUNC_OPT = $(word $(PAT_S),$(IFUNC_OPTIONS)) + +-M_DEPS = -MT $@ -MD -MP -MF $(DEPDIR)/$(@F).Ppo ++@AMDEP_TRUE@M_DEPS = -MT $@ -MD -MP -MF $(DEPDIR)/$(@F).Ppo ++@AMDEP_FALSE@M_DEPS = + M_SIZE = -DN=$(PAT_N) + M_IFUNC = $(if $(PAT_S),$(IFUNC_DEF) $(IFUNC_OPT)) + M_FILE = $(PAT_BASE)_n.c +Index: gcc-4.8.1/libatomic/Makefile.in +=================================================================== +--- gcc-4.8.1.orig/libatomic/Makefile.in 2013-05-31 09:09:26.000000000 +0000 ++++ gcc-4.8.1/libatomic/Makefile.in 2013-09-22 10:40:42.520059917 +0000 +@@ -298,7 +298,8 @@ + PAT_S = $(word 3,$(PAT_SPLIT)) + IFUNC_DEF = -DIFUNC_ALT=$(PAT_S) + IFUNC_OPT = $(word $(PAT_S),$(IFUNC_OPTIONS)) +-M_DEPS = -MT $@ -MD -MP -MF $(DEPDIR)/$(@F).Ppo ++@AMDEP_TRUE@M_DEPS = -MT $@ -MD -MP -MF $(DEPDIR)/$(@F).Ppo ++@AMDEP_FALSE@M_DEPS = + M_SIZE = -DN=$(PAT_N) + M_IFUNC = $(if $(PAT_S),$(IFUNC_DEF) $(IFUNC_OPT)) + M_FILE = $(PAT_BASE)_n.c diff --git a/meta/recipes-devtools/gcc/gcc-target.inc b/meta/recipes-devtools/gcc/gcc-target.inc index c7e3e164d8..e1179ac292 100644 --- a/meta/recipes-devtools/gcc/gcc-target.inc +++ b/meta/recipes-devtools/gcc/gcc-target.inc @@ -5,7 +5,7 @@ EXTRA_OECONF_PATHS = " \ --with-sysroot=/ \ --with-build-sysroot=${STAGING_DIR_TARGET} \ --with-native-system-header-dir=${STAGING_DIR_TARGET}${target_includedir} \ - --with-gxx-include-dir=${includedir}/c++/ --enable-dependency-tracking" + --with-gxx-include-dir=${includedir}/c++/" ARCH_FLAGS_FOR_TARGET += "-isystem${STAGING_INCDIR} -I${B}/gcc/include/ " -- cgit 1.2.3-korg