Patchwork gcc: Enable OpenMP compiling and library

login
register
mail settings
Submitter mike.looijmans@topic.nl
Date Jan. 19, 2013, 9:31 a.m.
Message ID <1358587906-24240-1-git-send-email-mike.looijmans@topic.nl>
Download mbox | patch
Permalink /patch/42913/
State New
Headers show

Comments

mike.looijmans@topic.nl - Jan. 19, 2013, 9:31 a.m.
From: Mike Looijmans <mike.looijmans@topic.nl>

Multicore embedded systems are getting more and more common.

Remove "--disable-openmp" from the GCC configuration options and
always build libgomp. This only creates a "bigger" compiler but
has no effect on the compiled binaries that don't use openmp.

Tested a clean build on mips32el and arm7a, no problems encountered.

Autoconf will not detect OpenMP after this change, because it will
build and run a target binary on the build system. In order to use
OpenMP, the variable ac_cv_prog_c_openmp=-fopenmp must be set.
---
 meta/recipes-devtools/gcc/gcc-4.7.inc              |    9 +++------
 .../recipes-devtools/gcc/gcc-configure-runtime.inc |    4 +---
 .../recipes-devtools/gcc/gcc-cross-canadian_4.7.bb |    2 +-
 3 files changed, 5 insertions(+), 10 deletions(-)
Richard Purdie - Jan. 20, 2013, 1:22 p.m.
On Sat, 2013-01-19 at 10:31 +0100, mike.looijmans@topic.nl wrote:
> From: Mike Looijmans <mike.looijmans@topic.nl>
> 
> Multicore embedded systems are getting more and more common.
> 
> Remove "--disable-openmp" from the GCC configuration options and
> always build libgomp. This only creates a "bigger" compiler but
> has no effect on the compiled binaries that don't use openmp.
> 
> Tested a clean build on mips32el and arm7a, no problems encountered.
> 
> Autoconf will not detect OpenMP after this change, because it will
> build and run a target binary on the build system. In order to use
> OpenMP, the variable ac_cv_prog_c_openmp=-fopenmp must be set.
> ---
>  meta/recipes-devtools/gcc/gcc-4.7.inc              |    9 +++------
>  .../recipes-devtools/gcc/gcc-configure-runtime.inc |    4 +---
>  .../recipes-devtools/gcc/gcc-cross-canadian_4.7.bb |    2 +-
>  3 files changed, 5 insertions(+), 10 deletions(-)
> 
> diff --git a/meta/recipes-devtools/gcc/gcc-4.7.inc b/meta/recipes-devtools/gcc/gcc-4.7.inc
> index 08a0103..a7aa4a4 100644
> --- a/meta/recipes-devtools/gcc/gcc-4.7.inc
> +++ b/meta/recipes-devtools/gcc/gcc-4.7.inc
> @@ -88,7 +88,6 @@ JAVA = ""
>  EXTRA_OECONF_BASE = " --enable-lto \
>  			--enable-libssp \
>  			--disable-bootstrap \
> -			--disable-libgomp \
>  			--disable-libmudflap \
>  			--with-system-zlib \
>  			--with-linker-hash-style=${LINKER_HASH_STYLE} \
> @@ -99,7 +98,6 @@ EXTRA_OECONF_BASE = " --enable-lto \
>  			--enable-cheaders=c_global "
>  
>  EXTRA_OECONF_INITIAL = "--disable-libmudflap \
> -			--disable-libgomp \
>  			--disable-libssp \
>  			--disable-libquadmath \
>  			--with-system-zlib \
> @@ -108,7 +106,6 @@ EXTRA_OECONF_INITIAL = "--disable-libmudflap \
>  			--enable-decimal-float=no"
>  
>  EXTRA_OECONF_INTERMEDIATE = "--disable-libmudflap \
> -				--disable-libgomp \
>  				--disable-libquadmath \
>  				--with-system-zlib \
>  				--disable-lto \


I nearly took this however you still want this disabled in the
INITIAL/INTERMEDIATE versions, you're just wasting compile time there sa
nothing would use it.




> @@ -117,9 +114,9 @@ EXTRA_OECONF_INTERMEDIATE = "--disable-libmudflap \
>  
>  EXTRA_OECONF_append_libc-uclibc = " --disable-decimal-float "
>  
> -EXTRA_OECONF_PATHS = " \ 
> -                      --with-gxx-include-dir=${STAGING_DIR_TARGET}${target_includedir}/c++ \ 
> -                      --with-sysroot=${STAGING_DIR_TARGET} \ 
> +EXTRA_OECONF_PATHS = " \
> +                      --with-gxx-include-dir=${STAGING_DIR_TARGET}${target_includedir}/c++ \
> +                      --with-sysroot=${STAGING_DIR_TARGET} \


What changed here?

>                        --with-build-sysroot=${STAGING_DIR_TARGET}"
>  
>  do_configure_prepend () {
> diff --git a/meta/recipes-devtools/gcc/gcc-configure-runtime.inc b/meta/recipes-devtools/gcc/gcc-configure-runtime.inc
> index d40383c..1c9155f 100644
> --- a/meta/recipes-devtools/gcc/gcc-configure-runtime.inc
> +++ b/meta/recipes-devtools/gcc/gcc-configure-runtime.inc
> @@ -7,9 +7,7 @@ EXTRA_OECONF_PATHS = " \
>      --with-sysroot=${STAGING_DIR_TARGET} \
>      --with-build-sysroot=${STAGING_DIR_TARGET}"
>  
> -RUNTIMETARGET = "libssp libstdc++-v3"
> -RUNTIMETARGET_append_powerpc = " libgomp"
> -RUNTIMETARGET_append_powerpc64 = " libgomp"
> +RUNTIMETARGET = "libssp libstdc++-v3 libgomp"
>  #  ?
>  # libiberty
>  # libmudflap
> diff --git a/meta/recipes-devtools/gcc/gcc-cross-canadian_4.7.bb b/meta/recipes-devtools/gcc/gcc-cross-canadian_4.7.bb
> index 53c4632..6c048c0 100644
> --- a/meta/recipes-devtools/gcc/gcc-cross-canadian_4.7.bb
> +++ b/meta/recipes-devtools/gcc/gcc-cross-canadian_4.7.bb
> @@ -13,7 +13,7 @@ SYSTEMLIBS = "${target_base_libdir}/"
>  SYSTEMLIBS1 = "${target_libdir}/"
>  
>  EXTRA_OECONF += "--disable-libunwind-exceptions --disable-libssp \
> -		--disable-libgomp --disable-libmudflap \
> +		--disable-libmudflap \


Again, I'm wondering if you mean this here. The library would have been
built as part of the target build? Does the library need gcc support as
well as its presence?

Cheers,

Richard

Patch

diff --git a/meta/recipes-devtools/gcc/gcc-4.7.inc b/meta/recipes-devtools/gcc/gcc-4.7.inc
index 08a0103..a7aa4a4 100644
--- a/meta/recipes-devtools/gcc/gcc-4.7.inc
+++ b/meta/recipes-devtools/gcc/gcc-4.7.inc
@@ -88,7 +88,6 @@  JAVA = ""
 EXTRA_OECONF_BASE = " --enable-lto \
 			--enable-libssp \
 			--disable-bootstrap \
-			--disable-libgomp \
 			--disable-libmudflap \
 			--with-system-zlib \
 			--with-linker-hash-style=${LINKER_HASH_STYLE} \
@@ -99,7 +98,6 @@  EXTRA_OECONF_BASE = " --enable-lto \
 			--enable-cheaders=c_global "
 
 EXTRA_OECONF_INITIAL = "--disable-libmudflap \
-			--disable-libgomp \
 			--disable-libssp \
 			--disable-libquadmath \
 			--with-system-zlib \
@@ -108,7 +106,6 @@  EXTRA_OECONF_INITIAL = "--disable-libmudflap \
 			--enable-decimal-float=no"
 
 EXTRA_OECONF_INTERMEDIATE = "--disable-libmudflap \
-				--disable-libgomp \
 				--disable-libquadmath \
 				--with-system-zlib \
 				--disable-lto \
@@ -117,9 +114,9 @@  EXTRA_OECONF_INTERMEDIATE = "--disable-libmudflap \
 
 EXTRA_OECONF_append_libc-uclibc = " --disable-decimal-float "
 
-EXTRA_OECONF_PATHS = " \ 
-                      --with-gxx-include-dir=${STAGING_DIR_TARGET}${target_includedir}/c++ \ 
-                      --with-sysroot=${STAGING_DIR_TARGET} \ 
+EXTRA_OECONF_PATHS = " \
+                      --with-gxx-include-dir=${STAGING_DIR_TARGET}${target_includedir}/c++ \
+                      --with-sysroot=${STAGING_DIR_TARGET} \
                       --with-build-sysroot=${STAGING_DIR_TARGET}"
 
 do_configure_prepend () {
diff --git a/meta/recipes-devtools/gcc/gcc-configure-runtime.inc b/meta/recipes-devtools/gcc/gcc-configure-runtime.inc
index d40383c..1c9155f 100644
--- a/meta/recipes-devtools/gcc/gcc-configure-runtime.inc
+++ b/meta/recipes-devtools/gcc/gcc-configure-runtime.inc
@@ -7,9 +7,7 @@  EXTRA_OECONF_PATHS = " \
     --with-sysroot=${STAGING_DIR_TARGET} \
     --with-build-sysroot=${STAGING_DIR_TARGET}"
 
-RUNTIMETARGET = "libssp libstdc++-v3"
-RUNTIMETARGET_append_powerpc = " libgomp"
-RUNTIMETARGET_append_powerpc64 = " libgomp"
+RUNTIMETARGET = "libssp libstdc++-v3 libgomp"
 #  ?
 # libiberty
 # libmudflap
diff --git a/meta/recipes-devtools/gcc/gcc-cross-canadian_4.7.bb b/meta/recipes-devtools/gcc/gcc-cross-canadian_4.7.bb
index 53c4632..6c048c0 100644
--- a/meta/recipes-devtools/gcc/gcc-cross-canadian_4.7.bb
+++ b/meta/recipes-devtools/gcc/gcc-cross-canadian_4.7.bb
@@ -13,7 +13,7 @@  SYSTEMLIBS = "${target_base_libdir}/"
 SYSTEMLIBS1 = "${target_libdir}/"
 
 EXTRA_OECONF += "--disable-libunwind-exceptions --disable-libssp \
-		--disable-libgomp --disable-libmudflap \
+		--disable-libmudflap \
 		--with-mpfr=${STAGING_DIR_HOST}${layout_exec_prefix} \
 		--with-mpc=${STAGING_DIR_HOST}${layout_exec_prefix}"