On 12/26/2010 1:38 PM, Frans Meulenbroeks wrote:
Without these gcc would be used which resolves to /usr/bin/gcc
and one gets an intel exe.
This showed up with libparams-validate-perl and libdatetime-perl
The LDFLAGS are added to resolve the GNU_HASH QA error

Signed-off-by: Frans Meulenbroeks<[email protected]>

Why a new dir called poky ?

---
  classes/cpan_build.bbclass     |    1 +
  classes/poky/cpan-base.bbclass |   42 ++++++++++++++++++++++++++++++++++++++++
  classes/poky/cpan.bbclass      |   38 ++++++++++++++++++++++++++++++++++++
  3 files changed, 81 insertions(+), 0 deletions(-)
  create mode 100644 classes/poky/cpan-base.bbclass
  create mode 100644 classes/poky/cpan.bbclass

diff --git a/classes/cpan_build.bbclass b/classes/cpan_build.bbclass
index d1bbc4f..070e061 100644
--- a/classes/cpan_build.bbclass
+++ b/classes/cpan_build.bbclass
@@ -26,6 +26,7 @@ cpan_build_do_configure () {
                # build for target
                . ${STAGING_LIBDIR}/perl/config.sh
                perl Build.PL --installdirs vendor \
+                       --config cc="${CC} ${LDFLAGS}" --config ld="${CCLD} 
${LDFLAGS}" \
                        --destdir ${D} \
                        --install_path lib="${datadir}/perl5" \
                        --install_path arch="${libdir}/perl5" \
diff --git a/classes/poky/cpan-base.bbclass b/classes/poky/cpan-base.bbclass
new file mode 100644
index 0000000..3175248
--- /dev/null
+++ b/classes/poky/cpan-base.bbclass
@@ -0,0 +1,42 @@
+#
+# cpan-base providers various perl related information needed for building
+# cpan modules
+#
+FILES_${PN} += "${libdir}/perl5 ${datadir}/perl5"
+
+DEPENDS  += "$...@["perl", "perl-native"][(bb.data.inherits_class('native', 
d))]}"
+RDEPENDS  += "$...@["perl", ""][(bb.data.inherits_class('native', d))]}"
+
+# Determine the staged version of perl from the perl configuration file
+def get_perl_version(d):
+       import re
+       cfg = bb.data.expand('${STAGING_LIBDIR}/perl/config.sh', d)
+       try:
+               f = open(cfg, 'r')
+       except IOError:
+               return None
+       l = f.readlines();
+       f.close();
+       r = re.compile("^version='(\d*\.\d*\.\d*)'")
+       for s in l:
+               m = r.match(s)
+               if m:
+                       return m.group(1)
+       return None
+
+# Determine where the library directories are
+def perl_get_libdirs(d):
+       libdir = bb.data.getVar('libdir', d, 1)
+       libdirs = libdir + '/*/*/perl5'
+       return libdirs
+
+def is_target(d):
+    if not bb.data.inherits_class('native', d):
+        return "yes"
+    return "no"
+
+PERLLIBDIRS = "$...@perl_get_libdirs(d)}"
+
+FILES_${PN}-dbg += "${PERLLIBDIRS}/auto/*/.debug \
+                    ${PERLLIBDIRS}/auto/*/*/.debug \
+                    ${PERLLIBDIRS}/auto/*/*/*/.debug"
diff --git a/classes/poky/cpan.bbclass b/classes/poky/cpan.bbclass
new file mode 100644
index 0000000..513f0b3
--- /dev/null
+++ b/classes/poky/cpan.bbclass
@@ -0,0 +1,38 @@
+#
+# This is for perl modules that use the old Makefile.PL build system
+#
+inherit cpan-base
+
+EXTRA_CPANFLAGS ?= ""
+
+# Env var which tells perl if it should use host (no) or target (yes) settings
+export PERLCONFIGTARGET = "$...@is_target(d)}"
+
+# Env var which tells perl where the perl include files are
+export PERL_INC = "${STAGING_LIBDIR}/perl/$...@get_perl_version(d)}/CORE"
+export PERL_LIB = "${STAGING_DATADIR}/perl/$...@get_perl_version(d)}"
+export PERL_ARCHLIB = "${STAGING_LIBDIR}/perl/$...@get_perl_version(d)}"
+
+cpan_do_configure () {
+       export PERL5LIB="${PERL_ARCHLIB}"
+       yes '' | perl Makefile.PL ${EXTRA_CPANFLAGS}
+       if [ "${BUILD_SYS}" != "${HOST_SYS}" ]; then
+               . ${STAGING_LIBDIR}/perl/config.sh
+               # Use find since there can be a Makefile generated for each 
Makefile.PL
+               for f in `find -name Makefile.PL`; do
+                       f2=`echo $f | sed -e 's/.PL//'`
+                       sed -i -e "s:\(PERL_ARCHLIB = \).*:\1${PERL_ARCHLIB}:" \
+                       $f2
+               done
+       fi
+}
+
+cpan_do_compile () {
+       oe_runmake PASTHRU_INC="${CFLAGS}" CCFLAGS="${CFLAGS}" LD="${CCLD}"
+}
+
+cpan_do_install () {
+       oe_runmake DESTDIR="${D}" install_vendor
+}
+
+EXPORT_FUNCTIONS do_configure do_compile do_install


_______________________________________________
Openembedded-devel mailing list
[email protected]
http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-devel

Reply via email to