* Use static linking for mpfr/gmp instead of the rpath. This avoid the layering
authorHolger Freyther <zecke@selfish.org>
Thu, 17 Jan 2008 14:05:03 +0000 (14:05 +0000)
committerHolger Freyther <zecke@selfish.org>
Thu, 17 Jan 2008 14:05:03 +0000 (14:05 +0000)
  violation and makes sure that gcc-cross-sdk will build as well.
* For gcc4.3 we need to look at the gmp/mpfr again as they will be required for
  everything and not just gfortran
* Apply a patch to gcc_4.2.2 but only if we want to build gcc. We want to be able
  to use arm-angstrom-linux-gnueabi-gfortran and the GF="$(GFORTRAN)" would have set
  the fortran to 'gfortran' and we ended up with a build error. Some more experiments
  with GFORTRAN_FOR_TARGET are needed.

packages/gcc/gcc-4.2.2/fortran-cross-compile-hack.patch [new file with mode: 0644]
packages/gcc/gcc-4.2.2/fortran-static-linking.patch [moved from packages/gcc/gcc-4.2.2/fortran-libs-rpath-to-staging-hack.patch with 84% similarity]
packages/gcc/gcc-cross-sdk_4.2.2.bb
packages/gcc/gcc-cross_4.2.2.bb
packages/gcc/gcc_4.2.2.bb

diff --git a/packages/gcc/gcc-4.2.2/fortran-cross-compile-hack.patch b/packages/gcc/gcc-4.2.2/fortran-cross-compile-hack.patch
new file mode 100644 (file)
index 0000000..b3d38ad
--- /dev/null
@@ -0,0 +1,30 @@
+* Fortran would have searched for arm-angstrom-gnueabi-gfortran but would have used
+  used gfortan. For gcc_4.2.2.bb we want to use the gfortran compiler from our cross
+  directory.
+
+diff --git a/libgfortran/configure b/libgfortran/configure
+index f7d86fb..d0966ec 100755
+--- a/libgfortran/configure
++++ b/libgfortran/configure
+@@ -4475,6 +4475,6 @@ exec 5>>./config.log
+ # We need gfortran to compile parts of the library
+ #AC_PROG_FC(gfortran)
+-FC="$GFORTRAN"
++#FC="$GFORTRAN"
+ ac_ext=${FC_SRCEXT-f}
+ ac_compile='$FC -c $FCFLAGS $FCFLAGS_SRCEXT conftest.$ac_ext >&5'
+\ No newline at end of file
+diff --git a/libgfortran/configure.ac b/libgfortran/configure.ac
+index 4661306..9f83e55 100644
+--- a/libgfortran/configure.ac
++++ b/libgfortran/configure.ac
+@@ -140,7 +140,7 @@ AC_SUBST(enable_static)
+ # We need gfortran to compile parts of the library
+ #AC_PROG_FC(gfortran)
+-FC="$GFORTRAN"
++#FC="$GFORTRAN"
+ AC_PROG_FC(gfortran)
+ # extra LD Flags which are required for targets
@@ -13,7 +13,7 @@ Index: gcc-4.2.2/configure
  
  if test "x$with_mpfr" != x; then
 -  gmplibs="-L$with_mpfr/lib $gmplibs"
-+  gmplibs="-Wl,-rpath,$with_mpfr/lib -L$with_mpfr/lib $gmplibs"
++  gmplibs="-static -L$with_mpfr/lib $gmplibs"
    gmpinc="-I$with_mpfr/include"
  fi
  if test "x$with_mpfr_include" != x; then
@@ -21,7 +21,7 @@ Index: gcc-4.2.2/configure
  fi
  if test "x$with_mpfr_lib" != x; then
 -  gmplibs="-L$with_mpfr_lib $gmplibs"
-+  gmplibs="-Wl,-rpath,$with_mpfr_lib -L$with_mpfr_lib $gmplibs"
++  gmplibs="-static -L$with_mpfr_lib $gmplibs"
  fi
  
  # Specify a location for gmp
@@ -34,7 +34,7 @@ Index: gcc-4.2.2/configure.in
  
  if test "x$with_mpfr" != x; then
 -  gmplibs="-L$with_mpfr/lib $gmplibs"
-+  gmplibs="-Wl,-rpath,$with_mpfr/lib -L$with_mpfr/lib $gmplibs"
++  gmplibs="-static -L$with_mpfr/lib $gmplibs"
    gmpinc="-I$with_mpfr/include"
  fi
  if test "x$with_mpfr_include" != x; then
@@ -42,7 +42,7 @@ Index: gcc-4.2.2/configure.in
  fi
  if test "x$with_mpfr_lib" != x; then
 -  gmplibs="-L$with_mpfr_lib $gmplibs"
-+  gmplibs="-Wl,-rpath,$with_mpfr_lib -L$with_mpfr_lib $gmplibs"
++  gmplibs="-static -L$with_mpfr_lib $gmplibs"
  fi
  
  # Specify a location for gmp
index dea1819..2fdaa7d 100644 (file)
@@ -8,9 +8,14 @@ inherit sdk
 
 FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/gcc-${PV}"
 
-DEPENDS = "virtual/${TARGET_PREFIX}binutils virtual/${TARGET_PREFIX}libc-for-gcc mpfr"
 PACKAGES = "${PN}"
 
 require gcc_${PV}.bb
 require gcc4-build-sdk.inc
 require gcc-package-sdk.inc
+
+DEPENDS = "virtual/${TARGET_PREFIX}binutils virtual/${TARGET_PREFIX}libc-for-gcc gmp-native mpfr-native"
+
+EXTRA_OECONF += "--disable-libunwind-exceptions --disable-libssp \
+               --disable-libgomp --disable-libmudflap \
+               --with-mpfr=${STAGING_DIR_NATIVE}${layout_exec_prefix}"
index fdb6d0e..daf0e65 100644 (file)
@@ -15,7 +15,6 @@ require gcc3-build-cross.inc
 # cross packaging
 require gcc-package-cross.inc
 SRC_URI_append_fail-fast = " file://zecke-no-host-includes.patch;patch=1 "
-SRC_URI_append = " file://fortran-libs-rpath-to-staging-hack.patch;patch=1 "
 # Do not build libssp libmudflap and libgomp
 # We might need them for some beefy targets 
 EXTRA_OECONF += "--disable-libunwind-exceptions --disable-libssp \
index 91f4691..15a25c9 100644 (file)
@@ -41,6 +41,7 @@ SRC_URI = "ftp://ftp.gnu.org/pub/gnu/gcc/gcc-${PV}/gcc-${PV}.tar.bz2 \
         file://gfortran.patch;patch=1 \
         file://gcc-4.0.2-e300c2c3.patch;patch=1 \
         file://pr34130.patch;patch=1 \
+        file://fortran-static-linking.patch;patch=1 \
 "
 
 SRC_URI_append_ep93xx = " \
@@ -72,6 +73,8 @@ SRC_URI_append_sh3  = " file://sh3-installfix-fixheaders.patch;patch=1 "
 FORTRAN = ""
 FORTRAN_linux-gnueabi = ",fortran"
 
+DEPENDS += " gmp mpfr "
+
 #Set the java bits
 JAVA = ""
 JAVA_arm = ""
@@ -83,3 +86,9 @@ ARCH_FLAGS_FOR_TARGET=-isystem${STAGING_INCDIR}
 
 EXTRA_OECONF += " --disable-libssp --disable-bootstrap "
 
+# We know some one is including us, but we only want to apply this fortran hack for the real gcc
+python __anonymous () {
+    import bb
+    if bb.data.getVar('PN', d, True) == "gcc":
+        bb.data.setVar('SRC_URI_append', ' file://fortran-cross-compile-hack.patch;patch=1', d)
+}