summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHolger Freyther <zecke@selfish.org>2008-01-17 14:05:03 +0000
committerHolger Freyther <zecke@selfish.org>2008-01-17 14:05:03 +0000
commit898c5fa4f1a22a909b898dd018b1d19e8f7b3db4 (patch)
tree3897ae110eb636314f15a467ef3bcc80565d1c5d
parente8a60c1e518ddfeb5b5b913c3631b5daa56f6dad (diff)
* Use static linking for mpfr/gmp instead of the rpath. This avoid the layering
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.
-rw-r--r--packages/gcc/gcc-4.2.2/fortran-cross-compile-hack.patch30
-rw-r--r--packages/gcc/gcc-4.2.2/fortran-static-linking.patch (renamed from packages/gcc/gcc-4.2.2/fortran-libs-rpath-to-staging-hack.patch)8
-rw-r--r--packages/gcc/gcc-cross-sdk_4.2.2.bb7
-rw-r--r--packages/gcc/gcc-cross_4.2.2.bb1
-rw-r--r--packages/gcc/gcc_4.2.2.bb9
5 files changed, 49 insertions, 6 deletions
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
index 0000000000..b3d38ad983
--- /dev/null
+++ b/packages/gcc/gcc-4.2.2/fortran-cross-compile-hack.patch
@@ -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
diff --git a/packages/gcc/gcc-4.2.2/fortran-libs-rpath-to-staging-hack.patch b/packages/gcc/gcc-4.2.2/fortran-static-linking.patch
index bf319f8b0a..3dd6321dc3 100644
--- a/packages/gcc/gcc-4.2.2/fortran-libs-rpath-to-staging-hack.patch
+++ b/packages/gcc/gcc-4.2.2/fortran-static-linking.patch
@@ -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
diff --git a/packages/gcc/gcc-cross-sdk_4.2.2.bb b/packages/gcc/gcc-cross-sdk_4.2.2.bb
index dea1819cdb..2fdaa7dc27 100644
--- a/packages/gcc/gcc-cross-sdk_4.2.2.bb
+++ b/packages/gcc/gcc-cross-sdk_4.2.2.bb
@@ -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}"
diff --git a/packages/gcc/gcc-cross_4.2.2.bb b/packages/gcc/gcc-cross_4.2.2.bb
index fdb6d0e30d..daf0e65003 100644
--- a/packages/gcc/gcc-cross_4.2.2.bb
+++ b/packages/gcc/gcc-cross_4.2.2.bb
@@ -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 \
diff --git a/packages/gcc/gcc_4.2.2.bb b/packages/gcc/gcc_4.2.2.bb
index 91f4691208..15a25c9c6a 100644
--- a/packages/gcc/gcc_4.2.2.bb
+++ b/packages/gcc/gcc_4.2.2.bb
@@ -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)
+}