diff options
Diffstat (limited to 'packages/perl')
-rw-r--r-- | packages/perl/perl-5.8.7/config.sh-sh3-linux | 2 | ||||
-rw-r--r-- | packages/perl/perl-5.8.7/config.sh-sh4-linux | 2 | ||||
-rw-r--r-- | packages/perl/perl-5.8.7/makefile-usegcc-to-link.patch | 27 | ||||
-rw-r--r-- | packages/perl/perl-5.8.7/override-generate-sh.patch | 16 | ||||
-rw-r--r-- | packages/perl/perl.inc | 4 | ||||
-rw-r--r-- | packages/perl/perl_5.8.7.bb | 13 |
6 files changed, 55 insertions, 9 deletions
diff --git a/packages/perl/perl-5.8.7/config.sh-sh3-linux b/packages/perl/perl-5.8.7/config.sh-sh3-linux index d3bee1e4ed..fbdff37045 100644 --- a/packages/perl/perl-5.8.7/config.sh-sh3-linux +++ b/packages/perl/perl-5.8.7/config.sh-sh3-linux @@ -971,7 +971,7 @@ useperlio='define' useposix='true' usereentrant='undef' usesfio='false' -useshrplib='false' +useshrplib='true' usesitecustomize='undef' usesocks='undef' usethreads='undef' diff --git a/packages/perl/perl-5.8.7/config.sh-sh4-linux b/packages/perl/perl-5.8.7/config.sh-sh4-linux index bbbb12360b..ddf0ae8fcd 100644 --- a/packages/perl/perl-5.8.7/config.sh-sh4-linux +++ b/packages/perl/perl-5.8.7/config.sh-sh4-linux @@ -971,7 +971,7 @@ useperlio='define' useposix='true' usereentrant='undef' usesfio='false' -useshrplib='false' +useshrplib='true' usesitecustomize='undef' usesocks='undef' usethreads='undef' diff --git a/packages/perl/perl-5.8.7/makefile-usegcc-to-link.patch b/packages/perl/perl-5.8.7/makefile-usegcc-to-link.patch new file mode 100644 index 0000000000..d6be0be153 --- /dev/null +++ b/packages/perl/perl-5.8.7/makefile-usegcc-to-link.patch @@ -0,0 +1,27 @@ +You cannot use LD to link on sh, you must use gcc otherwise shared +libraries will not work since ld doesn't know about the hidden gcc +shared libary requirements. + +--- perl-5.8.7/Cross/Makefile 2006/09/25 05:52:56 1.1 ++++ perl-5.8.7/Cross/Makefile 2006/09/25 05:57:34 +@@ -12,7 +12,7 @@ + + export CC = $(CROSS)gcc + export CXX = $(CROSS)g++ +-export LD = $(CROSS)ld ++export LD = $(CC) + export STRIP = $(CROSS)strip + export AR = $(CROSS)ar + export RANLIB = $(CROSS)ranlib + +--- perl-5.8.7/Makefile.SH.orig 2003-07-10 14:59:04.000000000 -0700 ++++ perl-5.8.7/Makefile.SH 2003-07-10 15:14:08.000000000 -0700 +@@ -494,7 +494,7 @@ + case "$useshrplib" in + true) + $spitshell >>Makefile <<'!NO!SUBS!' +- $(LD) -o $@ $(SHRPLDFLAGS) perl$(OBJ_EXT) $(obj) $(libs) -soname libperl.so.5 ++ $(CC) -o $@ $(SHRPLDFLAGS) perl$(OBJ_EXT) $(obj) $(libs) -Wl,-soname,libperl.so.5 + !NO!SUBS! + case "$osname" in + aix) diff --git a/packages/perl/perl-5.8.7/override-generate-sh.patch b/packages/perl/perl-5.8.7/override-generate-sh.patch new file mode 100644 index 0000000000..4c2b0bd752 --- /dev/null +++ b/packages/perl/perl-5.8.7/override-generate-sh.patch @@ -0,0 +1,16 @@ +Use the ld flags from the supplied configuration file. For sh we need the +flags that specify to build PIC code so that the shared libraries work. + +--- perl-5.8.7/Cross/generate_config_sh~ 2006-09-25 16:34:09.000000000 +1000 ++++ perl-5.8.7/Cross/generate_config_sh 2006-09-25 16:34:09.000000000 +1000 +@@ -19,8 +19,8 @@ + $callbacks->{'ar'} = [\&simple_process, ["AR", "arm-linux-ar"]]; + $callbacks->{'archname'} = [\&simple_process, ["SYS", "armv4l-linux"]]; + $callbacks->{'cc'} = [\&simple_process, ["CC", "arm-linux-gcc"]]; +-$callbacks->{'cccdlflags'} = [\&simple_process, ["CFLAGS", ""]]; +-$callbacks->{'ccdlflags'} = [\&simple_process, ["CFLAGS", ""]]; ++#$callbacks->{'cccdlflags'} = [\&simple_process, ["CFLAGS", ""]]; ++#$callbacks->{'ccdlflags'} = [\&simple_process, ["CFLAGS", ""]]; + $callbacks->{'ccflags'} = [\&simple_process, ["CFLAGS", "-fno-strict-aliasing -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"]]; + $callbacks->{'ccflags_uselargefiles'} = [\&simple_process, ["CFLAGS", "-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"]]; + $callbacks->{'ccname'} = [\&simple_process, ["CC", "arm-linux-gcc"]]; diff --git a/packages/perl/perl.inc b/packages/perl/perl.inc index a9a3d6b655..ad0562d3a4 100644 --- a/packages/perl/perl.inc +++ b/packages/perl/perl.inc @@ -46,9 +46,7 @@ do_compile() { do_install() { oe_runmake install - # Make sure the shared library is configured before trying to move it - grep -q "useshrplib='false'" ${S}/config.sh || - mv ${D}/${libdir}/perl5/${PV}/${TARGET_ARCH}-${TARGET_OS}/CORE/libperl.so ${D}/${libdir}/libperl.so.${PV} + mv ${D}/${libdir}/perl5/${PV}/${TARGET_ARCH}-${TARGET_OS}/CORE/libperl.so ${D}/${libdir}/libperl.so.${PV} ( cd ${D}/usr/bin/; rm perl; ln -s perl${PV} perl ) } diff --git a/packages/perl/perl_5.8.7.bb b/packages/perl/perl_5.8.7.bb index b3cfd1a3bb..834be8fcc9 100644 --- a/packages/perl/perl_5.8.7.bb +++ b/packages/perl/perl_5.8.7.bb @@ -10,9 +10,16 @@ SRC_URI += "file://config.sh-armeb-linux \ file://config.sh-sh3-linux \ file://config.sh-sh4-linux" +# Patches for sh3/sh4, use gcc to link and override generaet.sh to +# use PIC mode for compiling shared library objects. +SRC_URI_append_sh4 += "file://override-generate-sh.patch;patch=1" +SRC_URI_append_sh4 += "file://makefile-usegcc-to-link.patch;patch=1" +SRC_URI_append_sh3 += "file://override-generate-sh.patch;patch=1" +SRC_URI_append_sh3 += "file://makefile-usegcc-to-link.patch;patch=1" + PARALLEL_MAKE = "" -PR = "r17" +PR = "r18" do_configure() { ln -sf ${HOSTPERL} ${STAGING_BINDIR}/hostperl @@ -57,9 +64,7 @@ do_configure() { } do_install_append() { - # Make sure the shared library is configured before trying to symlink it - grep -q "useshrplib='false'" ${S}/config.sh || - ln -s libperl.so.${PV} ${D}/${libdir}/libperl.so.5 + ln -s libperl.so.${PV} ${D}/${libdir}/libperl.so.5 sed -i -e "s,${D},,g" ${D}/${libdir}/perl5/${PV}/${TARGET_ARCH}-${TARGET_OS}/Config_heavy.pl } |