diff options
Diffstat (limited to 'recipes')
115 files changed, 1955 insertions, 4195 deletions
diff --git a/recipes/addons/devshell.bb b/recipes/addons/devshell.bb index 9ac6821e0e..5921125d12 100644 --- a/recipes/addons/devshell.bb +++ b/recipes/addons/devshell.bb @@ -11,9 +11,6 @@ do_configure() { def devshell_emit_env(o, d, all=False, funcwhitelist=None): """Emits all items in the data store in a format such that it can be sourced by a shell.""" - import bb - import bb.data - env = bb.data.keys(d) for e in env: diff --git a/recipes/blackbox/blackbox_0.70.1.bb b/recipes/blackbox/blackbox_0.70.1.bb index 05010f97bb..0376f99980 100644 --- a/recipes/blackbox/blackbox_0.70.1.bb +++ b/recipes/blackbox/blackbox_0.70.1.bb @@ -16,6 +16,7 @@ EXTRA_OECONF = "--disable-i18n --without-imlib --with-xpm --with-gnome-menus" do_install_append() { sed -i s#${STAGING_LIBDIR}#${libdir}#g ${D}/${libdir}/pkgconfig/libbt.pc } -do_stage_append () { + +do_stage () { sed -i s#${STAGING_LIBDIR}#${libdir}#g ${STAGING_LIBDIR}/pkgconfig/libbt.pc } diff --git a/recipes/boost/boost_1.36.0.bb b/recipes/boost/boost_1.36.0.bb index 898d1b1603..f4fad8ced4 100644 --- a/recipes/boost/boost_1.36.0.bb +++ b/recipes/boost/boost_1.36.0.bb @@ -1,12 +1,15 @@ include boost-36.inc -PR = "r7" +PR = "r8" SRC_URI = "${SOURCEFORGE_MIRROR}/boost/${BOOST_P}.tar.bz2 \ file://arm-intrinsics.patch;patch=1 \ file://01-no-serialization-test.patch;patch=1 \ file://02-atomic-count-pthreads-on-arm.patch;patch=1 \ file://03-exception-clone-destructor-fix.patch;patch=1 \ + file://gcc-44.diff;patch=1 \ + file://uclibc.patch;patch=1 \ + file://sscanf.patch;patch=1 \ " BJAM_OPTS = '${BJAM_TOOLS} \ diff --git a/recipes/boost/files/gcc-44.diff b/recipes/boost/files/gcc-44.diff new file mode 100644 index 0000000000..ae072e06d5 --- /dev/null +++ b/recipes/boost/files/gcc-44.diff @@ -0,0 +1,304 @@ +Index: /boost/python/call.hpp
+===================================================================
+--- /boost/python/call.hpp (revision 24055)
++++ /boost/python/call.hpp (revision 48960)
+@@ -39,5 +39,8 @@
+ # endif // CALL_DWA2002411_HPP
+
+-#elif BOOST_PP_ITERATION_DEPTH() == 1
++// For gcc 4.4 compatability, we must include the
++// BOOST_PP_ITERATION_DEPTH test inside an #else clause.
++#else // BOOST_PP_IS_ITERATING
++#if BOOST_PP_ITERATION_DEPTH() == 1
+ # if !(BOOST_WORKAROUND(__MWERKS__, > 0x3100) \
+ && BOOST_WORKAROUND(__MWERKS__, BOOST_TESTED_AT(0x3201)))
+@@ -77,3 +80,4 @@
+ # undef N
+
++#endif // BOOST_PP_ITERATION_DEPTH()
+ #endif
+Index: /boost/python/object/value_holder.hpp
+===================================================================
+--- /boost/python/object/value_holder.hpp (revision 32284)
++++ /boost/python/object/value_holder.hpp (revision 48960)
+@@ -118,5 +118,8 @@
+ // --------------- value_holder ---------------
+
+-#elif BOOST_PP_ITERATION_DEPTH() == 1 && BOOST_PP_ITERATION_FLAGS() == 1
++// For gcc 4.4 compatability, we must include the
++// BOOST_PP_ITERATION_DEPTH test inside an #else clause.
++#else // BOOST_PP_IS_ITERATING
++#if BOOST_PP_ITERATION_DEPTH() == 1 && BOOST_PP_ITERATION_FLAGS() == 1
+ # if !(BOOST_WORKAROUND(__MWERKS__, > 0x3100) \
+ && BOOST_WORKAROUND(__MWERKS__, BOOST_TESTED_AT(0x3201)))
+@@ -164,3 +167,4 @@
+ # undef N
+
++#endif // BOOST_PP_ITERATION_DEPTH()
+ #endif
+Index: /boost/python/object/make_holder.hpp
+===================================================================
+--- /boost/python/object/make_holder.hpp (revision 39191)
++++ /boost/python/object/make_holder.hpp (revision 48960)
+@@ -48,5 +48,8 @@
+ # endif // MAKE_HOLDER_DWA20011215_HPP
+
+-#elif BOOST_PP_ITERATION_DEPTH() == 1
++// For gcc 4.4 compatability, we must include the
++// BOOST_PP_ITERATION_DEPTH test inside an #else clause.
++#else // BOOST_PP_IS_ITERATING
++#if BOOST_PP_ITERATION_DEPTH() == 1
+ # if !(BOOST_WORKAROUND(__MWERKS__, > 0x3100) \
+ && BOOST_WORKAROUND(__MWERKS__, BOOST_TESTED_AT(0x3201)))
+@@ -103,3 +106,4 @@
+ # undef N
+
++#endif // BOOST_PP_ITERATION_DEPTH()
+ #endif
+Index: /boost/python/object/pointer_holder.hpp
+===================================================================
+--- /boost/python/object/pointer_holder.hpp (revision 41521)
++++ /boost/python/object/pointer_holder.hpp (revision 48960)
+@@ -171,5 +171,8 @@
+
+ /* --------------- pointer_holder --------------- */
+-#elif BOOST_PP_ITERATION_DEPTH() == 1 && BOOST_PP_ITERATION_FLAGS() == 1
++// For gcc 4.4 compatability, we must include the
++// BOOST_PP_ITERATION_DEPTH test inside an #else clause.
++#else // BOOST_PP_IS_ITERATING
++#if BOOST_PP_ITERATION_DEPTH() == 1 && BOOST_PP_ITERATION_FLAGS() == 1
+ # if !(BOOST_WORKAROUND(__MWERKS__, > 0x3100) \
+ && BOOST_WORKAROUND(__MWERKS__, BOOST_TESTED_AT(0x3201)))
+@@ -213,3 +216,4 @@
+ # undef N
+
++#endif // BOOST_PP_ITERATION_DEPTH()
+ #endif
+Index: /boost/python/call_method.hpp
+===================================================================
+--- /boost/python/call_method.hpp (revision 24614)
++++ /boost/python/call_method.hpp (revision 48960)
+@@ -38,5 +38,8 @@
+ # endif // CALL_METHOD_DWA2002411_HPP
+
+-#elif BOOST_PP_ITERATION_DEPTH() == 1
++// For gcc 4.4 compatability, we must include the
++// BOOST_PP_ITERATION_DEPTH test inside an #else clause.
++#else // BOOST_PP_IS_ITERATING
++#if BOOST_PP_ITERATION_DEPTH() == 1
+ # if !(BOOST_WORKAROUND(__MWERKS__, > 0x3100) \
+ && BOOST_WORKAROUND(__MWERKS__, BOOST_TESTED_AT(0x3201)))
+@@ -77,3 +80,4 @@
+ # undef N
+
++#endif // BOOST_PP_ITERATION_DEPTH()
+ #endif // BOOST_PP_IS_ITERATING
+Index: /boost/python/detail/target.hpp
+===================================================================
+--- /boost/python/detail/target.hpp (revision 24614)
++++ /boost/python/detail/target.hpp (revision 48960)
+@@ -38,5 +38,8 @@
+
+ /* --------------- function pointers --------------- */
+-#elif BOOST_PP_ITERATION_DEPTH() == 1 && BOOST_PP_ITERATION_FLAGS() == BOOST_PYTHON_FUNCTION_POINTER
++// For gcc 4.4 compatability, we must include the
++// BOOST_PP_ITERATION_DEPTH test inside an #else clause.
++#else // BOOST_PP_IS_ITERATING
++#if BOOST_PP_ITERATION_DEPTH() == 1 && BOOST_PP_ITERATION_FLAGS() == BOOST_PYTHON_FUNCTION_POINTER
+ # if !(BOOST_WORKAROUND(__MWERKS__, > 0x3100) \
+ && BOOST_WORKAROUND(__MWERKS__, BOOST_TESTED_AT(0x3201)))
+@@ -80,3 +83,4 @@
+ # undef Q
+
++#endif // BOOST_PP_ITERATION_DEPTH()
+ #endif
+Index: /boost/python/detail/result.hpp
+===================================================================
+--- /boost/python/detail/result.hpp (revision 43799)
++++ /boost/python/detail/result.hpp (revision 48960)
+@@ -87,5 +87,8 @@
+
+ /* --------------- function pointers --------------- */
+-#elif BOOST_PP_ITERATION_DEPTH() == 1 && BOOST_PP_ITERATION_FLAGS() == BOOST_PYTHON_FUNCTION_POINTER
++// For gcc 4.4 compatability, we must include the
++// BOOST_PP_ITERATION_DEPTH test inside an #else clause.
++#else // BOOST_PP_IS_ITERATING
++#if BOOST_PP_ITERATION_DEPTH() == 1 && BOOST_PP_ITERATION_FLAGS() == BOOST_PYTHON_FUNCTION_POINTER
+ # if !(BOOST_WORKAROUND(__MWERKS__, > 0x3100) \
+ && BOOST_WORKAROUND(__MWERKS__, BOOST_TESTED_AT(0x3201)))
+@@ -129,3 +132,4 @@
+ # undef Q
+
++#endif // BOOST_PP_ITERATION_DEPTH()
+ #endif
+Index: /boost/python/signature.hpp
+===================================================================
+--- /boost/python/signature.hpp (revision 24055)
++++ /boost/python/signature.hpp (revision 48960)
+@@ -114,5 +114,8 @@
+ # endif // SIGNATURE_JDG20020813_HPP
+
+-#elif BOOST_PP_ITERATION_DEPTH() == 1 // defined(BOOST_PP_IS_ITERATING)
++// For gcc 4.4 compatability, we must include the
++// BOOST_PP_ITERATION_DEPTH test inside an #else clause.
++#else // BOOST_PP_IS_ITERATING
++#if BOOST_PP_ITERATION_DEPTH() == 1 // defined(BOOST_PP_IS_ITERATING)
+
+ # define N BOOST_PP_ITERATION()
+@@ -177,3 +180,4 @@
+ # undef N
+
++#endif // BOOST_PP_ITERATION_DEPTH()
+ #endif // !defined(BOOST_PP_IS_ITERATING)
+Index: /boost/mpl/aux_/numeric_op.hpp
+===================================================================
+--- /boost/mpl/aux_/numeric_op.hpp (revision 30670)
++++ /boost/mpl/aux_/numeric_op.hpp (revision 48960)
+@@ -288,5 +288,8 @@
+ ///// iteration, depth == 1
+
+-#elif BOOST_PP_ITERATION_DEPTH() == 1
++// For gcc 4.4 compatability, we must include the
++// BOOST_PP_ITERATION_DEPTH test inside an #else clause.
++#else // BOOST_PP_IS_ITERATING
++#if BOOST_PP_ITERATION_DEPTH() == 1
+
+ # define i_ BOOST_PP_FRAME_ITERATION(1)
+@@ -309,3 +312,4 @@
+ # undef i_
+
++#endif // BOOST_PP_ITERATION_DEPTH()
+ #endif // BOOST_PP_IS_ITERATING
+Index: /boost/mpl/aux_/advance_backward.hpp
+===================================================================
+--- /boost/mpl/aux_/advance_backward.hpp (revision 24874)
++++ /boost/mpl/aux_/advance_backward.hpp (revision 48960)
+@@ -80,5 +80,8 @@
+ ///// iteration, depth == 1
+
+-#elif BOOST_PP_ITERATION_DEPTH() == 1
++// For gcc 4.4 compatability, we must include the
++// BOOST_PP_ITERATION_DEPTH test inside an #else clause.
++#else // BOOST_PP_IS_ITERATING
++#if BOOST_PP_ITERATION_DEPTH() == 1
+ #define i_ BOOST_PP_FRAME_ITERATION(1)
+
+@@ -122,3 +125,4 @@
+ # undef AUX778076_ITER_0
+
++#endif // BOOST_PP_ITERATION_DEPTH()
+ #endif // BOOST_PP_IS_ITERATING
+Index: /boost/mpl/aux_/full_lambda.hpp
+===================================================================
+--- /boost/mpl/aux_/full_lambda.hpp (revision 24896)
++++ /boost/mpl/aux_/full_lambda.hpp (revision 48960)
+@@ -228,5 +228,8 @@
+ ///// iteration, depth == 1
+
+-#elif BOOST_PP_ITERATION_DEPTH() == 1
++// For gcc 4.4 compatability, we must include the
++// BOOST_PP_ITERATION_DEPTH test inside an #else clause.
++#else // BOOST_PP_IS_ITERATING
++#if BOOST_PP_ITERATION_DEPTH() == 1
+ #define i_ BOOST_PP_FRAME_ITERATION(1)
+
+@@ -348,3 +351,4 @@
+
+ #undef i_
++#endif // BOOST_PP_ITERATION_DEPTH()
+ #endif // BOOST_PP_IS_ITERATING
+Index: /boost/mpl/aux_/advance_forward.hpp
+===================================================================
+--- /boost/mpl/aux_/advance_forward.hpp (revision 24874)
++++ /boost/mpl/aux_/advance_forward.hpp (revision 48960)
+@@ -80,5 +80,8 @@
+ ///// iteration, depth == 1
+
+-#elif BOOST_PP_ITERATION_DEPTH() == 1
++// For gcc 4.4 compatability, we must include the
++// BOOST_PP_ITERATION_DEPTH test inside an #else clause.
++#else // BOOST_PP_IS_ITERATING
++#if BOOST_PP_ITERATION_DEPTH() == 1
+ #define i_ BOOST_PP_FRAME_ITERATION(1)
+
+@@ -121,3 +124,4 @@
+ # undef AUX778076_ITER_0
+
++#endif // BOOST_PP_ITERATION_DEPTH()
+ #endif // BOOST_PP_IS_ITERATING
+Index: /boost/mpl/unpack_args.hpp
+===================================================================
+--- /boost/mpl/unpack_args.hpp (revision 24874)
++++ /boost/mpl/unpack_args.hpp (revision 48960)
+@@ -112,5 +112,8 @@
+ ///// iteration, depth == 1
+
+-#elif BOOST_PP_ITERATION_DEPTH() == 1
++// For gcc 4.4 compatability, we must include the
++// BOOST_PP_ITERATION_DEPTH test inside an #else clause.
++#else // BOOST_PP_IS_ITERATING
++#if BOOST_PP_ITERATION_DEPTH() == 1
+
+ # define i_ BOOST_PP_FRAME_ITERATION(1)
+@@ -144,3 +147,4 @@
+ # undef i_
+
++#endif // BOOST_PP_ITERATION_DEPTH()
+ #endif // BOOST_PP_IS_ITERATING
+Index: /boost/mpl/bind.hpp
+===================================================================
+--- /boost/mpl/bind.hpp (revision 25875)
++++ /boost/mpl/bind.hpp (revision 48960)
+@@ -362,5 +362,8 @@
+ ///// iteration, depth == 1
+
+-#elif BOOST_PP_ITERATION_DEPTH() == 1
++// For gcc 4.4 compatability, we must include the
++// BOOST_PP_ITERATION_DEPTH test inside an #else clause.
++#else // BOOST_PP_IS_ITERATING
++#if BOOST_PP_ITERATION_DEPTH() == 1
+
+ # define i_ BOOST_PP_FRAME_ITERATION(1)
+@@ -545,3 +548,4 @@
+ # undef j_
+
++#endif // BOOST_PP_ITERATION_DEPTH()
+ #endif // BOOST_PP_IS_ITERATING
+Index: /boost/mpl/apply.hpp
+===================================================================
+--- /boost/mpl/apply.hpp (revision 24874)
++++ /boost/mpl/apply.hpp (revision 48960)
+@@ -136,5 +136,8 @@
+ ///// iteration, depth == 1
+
+-#elif BOOST_PP_ITERATION_DEPTH() == 1
++// For gcc 4.4 compatability, we must include the
++// BOOST_PP_ITERATION_DEPTH test inside an #else clause.
++#else // BOOST_PP_IS_ITERATING
++#if BOOST_PP_ITERATION_DEPTH() == 1
+
+ # define i_ BOOST_PP_FRAME_ITERATION(1)
+@@ -223,3 +226,4 @@
+ # undef i_
+
++#endif // BOOST_PP_ITERATION_DEPTH()
+ #endif // BOOST_PP_IS_ITERATING
+Index: /boost/mpl/apply_wrap.hpp
+===================================================================
+--- /boost/mpl/apply_wrap.hpp (revision 24892)
++++ /boost/mpl/apply_wrap.hpp (revision 48960)
+@@ -79,5 +79,8 @@
+ ///// iteration, depth == 1
+
+-#elif BOOST_PP_ITERATION_DEPTH() == 1
++// For gcc 4.4 compatability, we must include the
++// BOOST_PP_ITERATION_DEPTH test inside an #else clause.
++#else // BOOST_PP_IS_ITERATING
++#if BOOST_PP_ITERATION_DEPTH() == 1
+
+ # define i_ BOOST_PP_FRAME_ITERATION(1)
+@@ -198,3 +201,4 @@
+ # undef j_
+
++#endif // BOOST_PP_ITERATION_DEPTH()
+ #endif // BOOST_PP_IS_ITERATING
diff --git a/recipes/boost/files/sscanf.patch b/recipes/boost/files/sscanf.patch new file mode 100644 index 0000000000..11d1c96a47 --- /dev/null +++ b/recipes/boost/files/sscanf.patch @@ -0,0 +1,13 @@ +Index: boost_1_36_0/boost/test/impl/debug.ipp +=================================================================== +--- boost_1_36_0.orig/boost/test/impl/debug.ipp 2009-11-11 22:45:05.239343879 +0100 ++++ boost_1_36_0/boost/test/impl/debug.ipp 2009-11-11 22:45:11.981848731 +0100 +@@ -277,7 +277,7 @@ + while( *name_end && *name_end != ')' ) + ++name_end; + +- std::sscanf( name_end+1, "%*s%d", &m_parent_pid ); ++ sscanf( name_end+1, "%*s%d", &m_parent_pid ); + + m_binary_name.assign( name_beg+1, name_end ); + diff --git a/recipes/busybox/busybox_1.14.3.bb b/recipes/busybox/busybox_1.14.3.bb index 1634727854..8d45e1e880 100644 --- a/recipes/busybox/busybox_1.14.3.bb +++ b/recipes/busybox/busybox_1.14.3.bb @@ -4,7 +4,7 @@ PR = "${INC_PR}.0" DEFAULT_PREFERENCE = "-1" SRC_URI = "\ - http://www.busybox.net/downloads/busybox-${PV}.tar.gz \ + http://www.busybox.net/downloads/busybox-${PV}.tar.gz;name=tarball \ \ file://udhcpscript.patch;patch=1 \ file://udhcpc-fix-nfsroot.patch;patch=1 \ @@ -27,6 +27,9 @@ SRC_URI = "\ file://mdev.conf \ " +SRC_URI[tarball.md5sum] = "dfb197b8de260ff284f7222ed23614fe" +SRC_URI[tarball.sha256sum] = "b5a0c76d414cca97fb21622a5d09fa5a58f59890f5c9ce4f8b851c4e8b73a163" + EXTRA_OEMAKE += "V=1 ARCH=${TARGET_ARCH} CROSS_COMPILE=${TARGET_PREFIX}" do_configure_prepend () { diff --git a/recipes/cdparanoia/files/Makefile.in.patch b/recipes/cdparanoia/cdparanoia/Makefile.in.patch index 40cf4ad516..40cf4ad516 100644 --- a/recipes/cdparanoia/files/Makefile.in.patch +++ b/recipes/cdparanoia/cdparanoia/Makefile.in.patch diff --git a/recipes/cdparanoia/files/Makefile.patch b/recipes/cdparanoia/cdparanoia/Makefile.patch index 798ccf9003..798ccf9003 100644 --- a/recipes/cdparanoia/files/Makefile.patch +++ b/recipes/cdparanoia/cdparanoia/Makefile.patch diff --git a/recipes/cdparanoia/cdparanoia/cdparanoia-III-10.2-privatefix.patch b/recipes/cdparanoia/cdparanoia/cdparanoia-III-10.2-privatefix.patch new file mode 100644 index 0000000000..55f39b26da --- /dev/null +++ b/recipes/cdparanoia/cdparanoia/cdparanoia-III-10.2-privatefix.patch @@ -0,0 +1,561 @@ +diff -ru cdparanoia-III-10.2/interface/cdda_interface.h cdparanoia-III-10.2-mod/interface/cdda_interface.h +--- cdparanoia-III-10.2/interface/cdda_interface.h 2008-09-11 11:43:52.000000000 +0100 ++++ cdparanoia-III-10.2-mod/interface/cdda_interface.h 2009-09-08 16:08:37.000000000 +0100 +@@ -84,7 +84,7 @@ + int is_atapi; + int is_mmc; + +- cdda_private_data_t *private; ++ cdda_private_data_t *impl; + void *reserved; + unsigned char inqbytes[4]; + +diff -ru cdparanoia-III-10.2/interface/cooked_interface.c cdparanoia-III-10.2-mod/interface/cooked_interface.c +--- cdparanoia-III-10.2/interface/cooked_interface.c 2008-08-26 10:55:22.000000000 +0100 ++++ cdparanoia-III-10.2-mod/interface/cooked_interface.c 2009-09-08 16:09:35.000000000 +0100 +@@ -13,13 +13,13 @@ + static int timed_ioctl(cdrom_drive *d, int fd, int command, void *arg){ + struct timespec tv1; + struct timespec tv2; +- int ret1=clock_gettime(d->private->clock,&tv1); ++ int ret1=clock_gettime(d->impl->clock,&tv1); + int ret2=ioctl(fd, command,arg); +- int ret3=clock_gettime(d->private->clock,&tv2); ++ int ret3=clock_gettime(d->impl->clock,&tv2); + if(ret1<0 || ret3<0){ +- d->private->last_milliseconds=-1; ++ d->impl->last_milliseconds=-1; + }else{ +- d->private->last_milliseconds = (tv2.tv_sec-tv1.tv_sec)*1000. + (tv2.tv_nsec-tv1.tv_nsec)/1000000.; ++ d->impl->last_milliseconds = (tv2.tv_sec-tv1.tv_sec)*1000. + (tv2.tv_nsec-tv1.tv_nsec)/1000000.; + } + return ret2; + } +diff -ru cdparanoia-III-10.2/interface/interface.c cdparanoia-III-10.2-mod/interface/interface.c +--- cdparanoia-III-10.2/interface/interface.c 2008-09-11 11:43:52.000000000 +0100 ++++ cdparanoia-III-10.2-mod/interface/interface.c 2009-09-08 16:09:50.000000000 +0100 +@@ -39,9 +39,9 @@ + if(d->drive_model)free(d->drive_model); + if(d->cdda_fd!=-1)close(d->cdda_fd); + if(d->ioctl_fd!=-1 && d->ioctl_fd!=d->cdda_fd)close(d->ioctl_fd); +- if(d->private){ +- if(d->private->sg_hd)free(d->private->sg_hd); +- free(d->private); ++ if(d->impl){ ++ if(d->impl->sg_hd)free(d->impl->sg_hd); ++ free(d->impl); + } + + free(d); +@@ -127,7 +127,7 @@ + } + } + } +- if(ms)*ms=d->private->last_milliseconds; ++ if(ms)*ms=d->impl->last_milliseconds; + return(sectors); + } + +diff -ru cdparanoia-III-10.2/interface/scan_devices.c cdparanoia-III-10.2-mod/interface/scan_devices.c +--- cdparanoia-III-10.2/interface/scan_devices.c 2008-08-26 10:55:22.000000000 +0100 ++++ cdparanoia-III-10.2-mod/interface/scan_devices.c 2009-09-08 16:09:17.000000000 +0100 +@@ -264,11 +264,11 @@ + d->interface=COOKED_IOCTL; + d->bigendianp=-1; /* We don't know yet... */ + d->nsectors=-1; +- d->private=calloc(1,sizeof(*d->private)); ++ d->impl=calloc(1,sizeof(*d->impl)); + { + /* goddamnit */ + struct timespec tv; +- d->private->clock=(clock_gettime(CLOCK_MONOTONIC,&tv)<0?CLOCK_REALTIME:CLOCK_MONOTONIC); ++ d->impl->clock=(clock_gettime(CLOCK_MONOTONIC,&tv)<0?CLOCK_REALTIME:CLOCK_MONOTONIC); + } + idmessage(messagedest,messages,"\t\tCDROM sensed: %s\n",description); + return(d); +@@ -674,15 +674,15 @@ + d->bigendianp=-1; /* We don't know yet... */ + d->nsectors=-1; + d->messagedest = messagedest; +- d->private=calloc(1,sizeof(*d->private)); ++ d->impl=calloc(1,sizeof(*d->impl)); + { + /* goddamnit */ + struct timespec tv; +- d->private->clock=(clock_gettime(CLOCK_MONOTONIC,&tv)<0?CLOCK_REALTIME:CLOCK_MONOTONIC); ++ d->impl->clock=(clock_gettime(CLOCK_MONOTONIC,&tv)<0?CLOCK_REALTIME:CLOCK_MONOTONIC); + } + if(use_sgio){ + d->interface=SGIO_SCSI; +- d->private->sg_buffer=(unsigned char *)(d->private->sg_hd=malloc(MAX_BIG_BUFF_SIZE)); ++ d->impl->sg_buffer=(unsigned char *)(d->impl->sg_hd=malloc(MAX_BIG_BUFF_SIZE)); + g_fd=d->cdda_fd=dup(d->ioctl_fd); + }else{ + version=verify_SG_version(d,messagedest,messages); +@@ -696,8 +696,8 @@ + } + + /* malloc our big buffer for scsi commands */ +- d->private->sg_hd=malloc(MAX_BIG_BUFF_SIZE); +- d->private->sg_buffer=((unsigned char *)d->private->sg_hd)+SG_OFF; ++ d->impl->sg_hd=malloc(MAX_BIG_BUFF_SIZE); ++ d->impl->sg_buffer=((unsigned char *)d->impl->sg_hd)+SG_OFF; + } + + { +@@ -772,9 +772,9 @@ + if(i_fd!=-1)close(i_fd); + if(g_fd!=-1)close(g_fd); + if(d){ +- if(d->private){ +- if(d->private->sg_hd)free(d->private->sg_hd); +- free(d->private); ++ if(d->impl){ ++ if(d->impl->sg_hd)free(d->impl->sg_hd); ++ free(d->impl); + } + free(d); + } +@@ -821,7 +821,7 @@ + d->interface=TEST_INTERFACE; + d->bigendianp=-1; /* We don't know yet... */ + d->nsectors=-1; +- d->private=calloc(1,sizeof(*d->private)); ++ d->impl=calloc(1,sizeof(*d->impl)); + d->drive_model=copystring("File based test interface"); + idmessage(messagedest,messages,"\t\tCDROM sensed: %s\n",d->drive_model); + +diff -ru cdparanoia-III-10.2/interface/scsi_interface.c cdparanoia-III-10.2-mod/interface/scsi_interface.c +--- cdparanoia-III-10.2/interface/scsi_interface.c 2008-09-11 21:33:30.000000000 +0100 ++++ cdparanoia-III-10.2-mod/interface/scsi_interface.c 2009-09-08 16:10:30.000000000 +0100 +@@ -15,13 +15,13 @@ + static int timed_ioctl(cdrom_drive *d, int fd, int command, void *arg){ + struct timespec tv1; + struct timespec tv2; +- int ret1=clock_gettime(d->private->clock,&tv1); ++ int ret1=clock_gettime(d->impl->clock,&tv1); + int ret2=ioctl(fd, command,arg); +- int ret3=clock_gettime(d->private->clock,&tv2); ++ int ret3=clock_gettime(d->impl->clock,&tv2); + if(ret1<0 || ret3<0){ +- d->private->last_milliseconds=-1; ++ d->impl->last_milliseconds=-1; + }else{ +- d->private->last_milliseconds = (tv2.tv_sec-tv1.tv_sec)*1000. + (tv2.tv_nsec-tv1.tv_nsec)/1000000.; ++ d->impl->last_milliseconds = (tv2.tv_sec-tv1.tv_sec)*1000. + (tv2.tv_nsec-tv1.tv_nsec)/1000000.; + } + return ret2; + } +@@ -96,7 +96,7 @@ + static void clear_garbage(cdrom_drive *d){ + fd_set fdset; + struct timeval tv; +- struct sg_header *sg_hd=d->private->sg_hd; ++ struct sg_header *sg_hd=d->impl->sg_hd; + int flag=0; + + /* clear out any possibly preexisting garbage */ +@@ -185,7 +185,7 @@ + struct timespec tv2; + int tret1,tret2; + int status = 0; +- struct sg_header *sg_hd=d->private->sg_hd; ++ struct sg_header *sg_hd=d->impl->sg_hd; + long writebytes=SG_OFF+cmd_len+in_size; + + /* generic scsi device services */ +@@ -195,7 +195,7 @@ + + memset(sg_hd,0,sizeof(sg_hd)); + memset(sense_buffer,0,SG_MAX_SENSE); +- memcpy(d->private->sg_buffer,cmd,cmd_len+in_size); ++ memcpy(d->impl->sg_buffer,cmd,cmd_len+in_size); + sg_hd->twelve_byte = cmd_len == 12; + sg_hd->result = 0; + sg_hd->reply_len = SG_OFF + out_size; +@@ -209,7 +209,7 @@ + tell if the command failed. Scared yet? */ + + if(bytecheck && out_size>in_size){ +- memset(d->private->sg_buffer+cmd_len+in_size,bytefill,out_size-in_size); ++ memset(d->impl->sg_buffer+cmd_len+in_size,bytefill,out_size-in_size); + /* the size does not remove cmd_len due to the way the kernel + driver copies buffers */ + writebytes+=(out_size-in_size); +@@ -243,7 +243,7 @@ + } + + sigprocmask (SIG_BLOCK, &(d->sigset), NULL ); +- tret1=clock_gettime(d->private->clock,&tv1); ++ tret1=clock_gettime(d->impl->clock,&tv1); + errno=0; + status = write(d->cdda_fd, sg_hd, writebytes ); + +@@ -289,7 +289,7 @@ + } + } + +- tret2=clock_gettime(d->private->clock,&tv2); ++ tret2=clock_gettime(d->impl->clock,&tv2); + errno=0; + status = read(d->cdda_fd, sg_hd, SG_OFF + out_size); + sigprocmask ( SIG_UNBLOCK, &(d->sigset), NULL ); +@@ -313,7 +313,7 @@ + if(bytecheck && in_size+cmd_len<out_size){ + long i,flag=0; + for(i=in_size;i<out_size;i++) +- if(d->private->sg_buffer[i]!=bytefill){ ++ if(d->impl->sg_buffer[i]!=bytefill){ + flag=1; + break; + } +@@ -326,9 +326,9 @@ + + errno=0; + if(tret1<0 || tret2<0){ +- d->private->last_milliseconds=-1; ++ d->impl->last_milliseconds=-1; + }else{ +- d->private->last_milliseconds = (tv2.tv_sec-tv1.tv_sec)*1000 + (tv2.tv_nsec-tv1.tv_nsec)/1000000; ++ d->impl->last_milliseconds = (tv2.tv_sec-tv1.tv_sec)*1000 + (tv2.tv_nsec-tv1.tv_nsec)/1000000; + } + return(0); + } +@@ -347,7 +347,7 @@ + + memset(&hdr,0,sizeof(hdr)); + memset(sense,0,sizeof(sense)); +- memcpy(d->private->sg_buffer,cmd+cmd_len,in_size); ++ memcpy(d->impl->sg_buffer,cmd+cmd_len,in_size); + + hdr.cmdp = cmd; + hdr.cmd_len = cmd_len; +@@ -355,7 +355,7 @@ + hdr.mx_sb_len = SG_MAX_SENSE; + hdr.timeout = 50000; + hdr.interface_id = 'S'; +- hdr.dxferp = d->private->sg_buffer; ++ hdr.dxferp = d->impl->sg_buffer; + hdr.flags = SG_FLAG_DIRECT_IO; /* direct IO if we can get it */ + + /* scary buffer fill hack */ +@@ -400,7 +400,7 @@ + if(bytecheck && in_size<out_size){ + long i,flag=0; + for(i=in_size;i<out_size;i++) +- if(d->private->sg_buffer[i]!=bytefill){ ++ if(d->impl->sg_buffer[i]!=bytefill){ + flag=1; + break; + } +@@ -412,7 +412,7 @@ + } + + /* Can't rely on .duration because we can't be certain kernel has HZ set to something useful */ +- /* d->private->last_milliseconds = hdr.duration; */ ++ /* d->impl->last_milliseconds = hdr.duration; */ + + errno = 0; + return 0; +@@ -445,9 +445,9 @@ + + handle_scsi_cmd(d, cmd, 6, 0, 56, 0,0, sense); + +- key = d->private->sg_buffer[2] & 0xf; +- ASC = d->private->sg_buffer[12]; +- ASCQ = d->private->sg_buffer[13]; ++ key = d->impl->sg_buffer[2] & 0xf; ++ ASC = d->impl->sg_buffer[12]; ++ ASCQ = d->impl->sg_buffer[13]; + + if(key == 2 && ASC == 4 && ASCQ == 1) return 0; + return 1; +@@ -492,7 +492,7 @@ + if (handle_scsi_cmd (d, cmd, 10, 0, size+4,'\377',1,sense)) return(1); + + { +- unsigned char *b=d->private->sg_buffer; ++ unsigned char *b=d->impl->sg_buffer; + if(b[0])return(1); /* Handles only up to 256 bytes */ + if(b[6])return(1); /* Handles only up to 256 bytes */ + +@@ -604,8 +604,8 @@ + static unsigned int get_orig_sectorsize(cdrom_drive *d){ + if(mode_sense(d,12,0x01))return(-1); + +- d->orgdens = d->private->sg_buffer[4]; +- return(d->orgsize = ((int)(d->private->sg_buffer[10])<<8)+d->private->sg_buffer[11]); ++ d->orgdens = d->impl->sg_buffer[4]; ++ return(d->orgsize = ((int)(d->impl->sg_buffer[10])<<8)+d->impl->sg_buffer[11]); + } + + /* switch CDROM scsi drives to given sector size */ +@@ -664,8 +664,8 @@ + return(-4); + } + +- first=d->private->sg_buffer[2]; +- last=d->private->sg_buffer[3]; ++ first=d->impl->sg_buffer[2]; ++ last=d->impl->sg_buffer[3]; + tracks=last-first+1; + + if (last > MAXTRK || first > MAXTRK || last<0 || first<0) { +@@ -683,7 +683,7 @@ + return(-5); + } + { +- scsi_TOC *toc=(scsi_TOC *)(d->private->sg_buffer+4); ++ scsi_TOC *toc=(scsi_TOC *)(d->impl->sg_buffer+4); + + d->disc_toc[i-first].bFlags=toc->bFlags; + d->disc_toc[i-first].bTrack=i; +@@ -704,7 +704,7 @@ + return(-2); + } + { +- scsi_TOC *toc=(scsi_TOC *)(d->private->sg_buffer+4); ++ scsi_TOC *toc=(scsi_TOC *)(d->impl->sg_buffer+4); + + d->disc_toc[i-first].bFlags=toc->bFlags; + d->disc_toc[i-first].bTrack=0xAA; +@@ -738,7 +738,7 @@ + } + + /* copy to our structure and convert start sector */ +- tracks = d->private->sg_buffer[1]; ++ tracks = d->impl->sg_buffer[1]; + if (tracks > MAXTRK) { + cderror(d,"003: CDROM reporting illegal number of tracks\n"); + return(-3); +@@ -754,33 +754,33 @@ + return(-5); + } + +- d->disc_toc[i].bFlags = d->private->sg_buffer[10]; ++ d->disc_toc[i].bFlags = d->impl->sg_buffer[10]; + d->disc_toc[i].bTrack = i + 1; + + d->disc_toc[i].dwStartSector= d->adjust_ssize * +- (((signed char)(d->private->sg_buffer[2])<<24) | +- (d->private->sg_buffer[3]<<16)| +- (d->private->sg_buffer[4]<<8)| +- (d->private->sg_buffer[5])); ++ (((signed char)(d->impl->sg_buffer[2])<<24) | ++ (d->impl->sg_buffer[3]<<16)| ++ (d->impl->sg_buffer[4]<<8)| ++ (d->impl->sg_buffer[5])); + } + + d->disc_toc[i].bFlags = 0; + d->disc_toc[i].bTrack = i + 1; +- memcpy (&foo, d->private->sg_buffer+2, 4); +- memcpy (&bar, d->private->sg_buffer+6, 4); ++ memcpy (&foo, d->impl->sg_buffer+2, 4); ++ memcpy (&bar, d->impl->sg_buffer+6, 4); + d->disc_toc[i].dwStartSector = d->adjust_ssize * (be32_to_cpu(foo) + + be32_to_cpu(bar)); + + d->disc_toc[i].dwStartSector= d->adjust_ssize * +- ((((signed char)(d->private->sg_buffer[2])<<24) | +- (d->private->sg_buffer[3]<<16)| +- (d->private->sg_buffer[4]<<8)| +- (d->private->sg_buffer[5]))+ ++ ((((signed char)(d->impl->sg_buffer[2])<<24) | ++ (d->impl->sg_buffer[3]<<16)| ++ (d->impl->sg_buffer[4]<<8)| ++ (d->impl->sg_buffer[5]))+ + +- ((((signed char)(d->private->sg_buffer[6])<<24) | +- (d->private->sg_buffer[7]<<16)| +- (d->private->sg_buffer[8]<<8)| +- (d->private->sg_buffer[9])))); ++ ((((signed char)(d->impl->sg_buffer[6])<<24) | ++ (d->impl->sg_buffer[7]<<16)| ++ (d->impl->sg_buffer[8]<<8)| ++ (d->impl->sg_buffer[9])))); + + + d->cd_extra = FixupTOC(d,tracks+1); +@@ -817,7 +817,7 @@ + cmd[8] = sectors; + if((ret=handle_scsi_cmd(d,cmd,10,0,sectors * CD_FRAMESIZE_RAW,'\177',1,sense))) + return(ret); +- if(p)memcpy(p,d->private->sg_buffer,sectors*CD_FRAMESIZE_RAW); ++ if(p)memcpy(p,d->impl->sg_buffer,sectors*CD_FRAMESIZE_RAW); + return(0); + } + +@@ -836,7 +836,7 @@ + cmd[9] = sectors; + if((ret=handle_scsi_cmd(d,cmd,12,0,sectors * CD_FRAMESIZE_RAW,'\177',1,sense))) + return(ret); +- if(p)memcpy(p,d->private->sg_buffer,sectors*CD_FRAMESIZE_RAW); ++ if(p)memcpy(p,d->impl->sg_buffer,sectors*CD_FRAMESIZE_RAW); + return(0); + } + +@@ -854,7 +854,7 @@ + cmd[8] = sectors; + if((ret=handle_scsi_cmd(d,cmd,10,0,sectors * CD_FRAMESIZE_RAW,'\177',1,sense))) + return(ret); +- if(p)memcpy(p,d->private->sg_buffer,sectors*CD_FRAMESIZE_RAW); ++ if(p)memcpy(p,d->impl->sg_buffer,sectors*CD_FRAMESIZE_RAW); + return(0); + } + +@@ -872,7 +872,7 @@ + cmd[9] = sectors; + if((ret=handle_scsi_cmd(d,cmd,12,0,sectors * CD_FRAMESIZE_RAW,'\177',1,sense))) + return(ret); +- if(p)memcpy(p,d->private->sg_buffer,sectors*CD_FRAMESIZE_RAW); ++ if(p)memcpy(p,d->impl->sg_buffer,sectors*CD_FRAMESIZE_RAW); + return(0); + } + +@@ -890,7 +890,7 @@ + cmd[8] = sectors; + if((ret=handle_scsi_cmd(d,cmd,10,0,sectors * CD_FRAMESIZE_RAW,'\177',1,sense))) + return(ret); +- if(p)memcpy(p,d->private->sg_buffer,sectors*CD_FRAMESIZE_RAW); ++ if(p)memcpy(p,d->impl->sg_buffer,sectors*CD_FRAMESIZE_RAW); + return(0); + } + +@@ -908,7 +908,7 @@ + cmd[9] = sectors; + if((ret=handle_scsi_cmd(d,cmd,12,0,sectors * CD_FRAMESIZE_RAW,'\177',1,sense))) + return(ret); +- if(p)memcpy(p,d->private->sg_buffer,sectors*CD_FRAMESIZE_RAW); ++ if(p)memcpy(p,d->impl->sg_buffer,sectors*CD_FRAMESIZE_RAW); + return(0); + } + +@@ -922,7 +922,7 @@ + cmd[8] = sectors; + if((ret=handle_scsi_cmd(d,cmd,12,0,sectors * CD_FRAMESIZE_RAW,'\177',1,sense))) + return(ret); +- if(p)memcpy(p,d->private->sg_buffer,sectors*CD_FRAMESIZE_RAW); ++ if(p)memcpy(p,d->impl->sg_buffer,sectors*CD_FRAMESIZE_RAW); + return(0); + } + +@@ -936,7 +936,7 @@ + cmd[8] = sectors; + if((ret=handle_scsi_cmd(d,cmd,12,0,sectors * CD_FRAMESIZE_RAW,'\177',1,sense))) + return(ret); +- if(p)memcpy(p,d->private->sg_buffer,sectors*CD_FRAMESIZE_RAW); ++ if(p)memcpy(p,d->impl->sg_buffer,sectors*CD_FRAMESIZE_RAW); + return(0); + } + +@@ -950,7 +950,7 @@ + cmd[8] = sectors; + if((ret=handle_scsi_cmd(d,cmd,12,0,sectors * CD_FRAMESIZE_RAW,'\177',1,sense))) + return(ret); +- if(p)memcpy(p,d->private->sg_buffer,sectors*CD_FRAMESIZE_RAW); ++ if(p)memcpy(p,d->impl->sg_buffer,sectors*CD_FRAMESIZE_RAW); + return(0); + } + +@@ -964,7 +964,7 @@ + cmd[8] = sectors; + if((ret=handle_scsi_cmd(d,cmd,12,0,sectors * CD_FRAMESIZE_RAW,'\177',1,sense))) + return(ret); +- if(p)memcpy(p,d->private->sg_buffer,sectors*CD_FRAMESIZE_RAW); ++ if(p)memcpy(p,d->impl->sg_buffer,sectors*CD_FRAMESIZE_RAW); + return(0); + } + +@@ -978,7 +978,7 @@ + cmd[8] = sectors; + if((ret=handle_scsi_cmd(d,cmd,12,0,sectors * CD_FRAMESIZE_RAW,'\177',1,sense))) + return(ret); +- if(p)memcpy(p,d->private->sg_buffer,sectors*CD_FRAMESIZE_RAW); ++ if(p)memcpy(p,d->impl->sg_buffer,sectors*CD_FRAMESIZE_RAW); + return(0); + } + +@@ -992,7 +992,7 @@ + cmd[8] = sectors; + if((ret=handle_scsi_cmd(d,cmd,12,0,sectors * CD_FRAMESIZE_RAW,'\177',1,sense))) + return(ret); +- if(p)memcpy(p,d->private->sg_buffer,sectors*CD_FRAMESIZE_RAW); ++ if(p)memcpy(p,d->impl->sg_buffer,sectors*CD_FRAMESIZE_RAW); + return(0); + } + +@@ -1026,7 +1026,7 @@ + + if((ret=handle_scsi_cmd(d,cmd,12,0,sectors * CD_FRAMESIZE_RAW,'\177',1,sense))) + return(ret); +- if(p)memcpy(p,d->private->sg_buffer,sectors*CD_FRAMESIZE_RAW); ++ if(p)memcpy(p,d->impl->sg_buffer,sectors*CD_FRAMESIZE_RAW); + return(0); + } + +@@ -1039,7 +1039,7 @@ + + if((ret=handle_scsi_cmd(d,cmd,12,0,sectors * CD_FRAMESIZE_RAW,'\177',1,sense))) + return(ret); +- if(p)memcpy(p,d->private->sg_buffer,sectors*CD_FRAMESIZE_RAW); ++ if(p)memcpy(p,d->impl->sg_buffer,sectors*CD_FRAMESIZE_RAW); + return(0); + } + +@@ -1052,7 +1052,7 @@ + + if((ret=handle_scsi_cmd(d,cmd,12,0,sectors * CD_FRAMESIZE_RAW,'\177',1,sense))) + return(ret); +- if(p)memcpy(p,d->private->sg_buffer,sectors*CD_FRAMESIZE_RAW); ++ if(p)memcpy(p,d->impl->sg_buffer,sectors*CD_FRAMESIZE_RAW); + return(0); + } + +@@ -1275,7 +1275,7 @@ + static int count_2352_bytes(cdrom_drive *d){ + long i; + for(i=2351;i>=0;i--) +- if(d->private->sg_buffer[i]!=(unsigned char)'\177') ++ if(d->impl->sg_buffer[i]!=(unsigned char)'\177') + return(((i+3)>>2)<<2); + + return(0); +@@ -1284,7 +1284,7 @@ + static int verify_nonzero(cdrom_drive *d){ + long i,flag=0; + for(i=0;i<2352;i++) +- if(d->private->sg_buffer[i]!=0){ ++ if(d->impl->sg_buffer[i]!=0){ + flag=1; + break; + } +@@ -1625,7 +1625,7 @@ + d->is_mmc=0; + if(mode_sense(d,22,0x2A)==0){ + +- b=d->private->sg_buffer; ++ b=d->impl->sg_buffer; + b+=b[3]+4; + + if((b[0]&0x3F)==0x2A){ +@@ -1673,7 +1673,7 @@ + cderror(d,"008: Unable to identify CDROM model\n"); + return(NULL); + } +- return (d->private->sg_buffer); ++ return (d->impl->sg_buffer); + } + + int scsi_init_drive(cdrom_drive *d){ +@@ -1742,8 +1742,8 @@ + check_cache(d); + + d->error_retry=1; +- d->private->sg_hd=realloc(d->private->sg_hd,d->nsectors*CD_FRAMESIZE_RAW + SG_OFF + 128); +- d->private->sg_buffer=((unsigned char *)d->private->sg_hd)+SG_OFF; ++ d->impl->sg_hd=realloc(d->impl->sg_hd,d->nsectors*CD_FRAMESIZE_RAW + SG_OFF + 128); ++ d->impl->sg_buffer=((unsigned char *)d->impl->sg_hd)+SG_OFF; + d->report_all=1; + return(0); + } diff --git a/recipes/cdparanoia/files/fixes.patch b/recipes/cdparanoia/cdparanoia/fixes.patch index 6ffc8a6af9..6ffc8a6af9 100644 --- a/recipes/cdparanoia/files/fixes.patch +++ b/recipes/cdparanoia/cdparanoia/fixes.patch diff --git a/recipes/cdparanoia/files/fixes10.patch b/recipes/cdparanoia/cdparanoia/fixes10.patch index 414ff3944d..414ff3944d 100644 --- a/recipes/cdparanoia/files/fixes10.patch +++ b/recipes/cdparanoia/cdparanoia/fixes10.patch diff --git a/recipes/cdparanoia/files/interface_Makefile.in.patch b/recipes/cdparanoia/cdparanoia/interface_Makefile.in.patch index 4dbd2bb19a..4dbd2bb19a 100644 --- a/recipes/cdparanoia/files/interface_Makefile.in.patch +++ b/recipes/cdparanoia/cdparanoia/interface_Makefile.in.patch diff --git a/recipes/cdparanoia/files/paranoia_Makefile.in.patch b/recipes/cdparanoia/cdparanoia/paranoia_Makefile.in.patch index 962a43a634..962a43a634 100644 --- a/recipes/cdparanoia/files/paranoia_Makefile.in.patch +++ b/recipes/cdparanoia/cdparanoia/paranoia_Makefile.in.patch diff --git a/recipes/cdparanoia/cdparanoia_10.2.bb b/recipes/cdparanoia/cdparanoia_10.2.bb index 2a220336fd..9ae4b7ed02 100644 --- a/recipes/cdparanoia/cdparanoia_10.2.bb +++ b/recipes/cdparanoia/cdparanoia_10.2.bb @@ -1,33 +1,31 @@ # cdparanoia OE build file # Copyright (C) 2005, Advanced Micro Devices, Inc. All Rights Reserved # Released under the MIT license (see packages/COPYING) +LICENSE = "GPL" -PR ="r0" -LICENSE="GPL" +SRC_URI = "http://downloads.xiph.org/releases/cdparanoia/cdparanoia-III-10.2.src.tgz \ + file://fixes10.patch;patch=1 \ + file://Makefile.in.patch;patch=1 \ + file://interface_Makefile.in.patch;patch=1 \ + file://paranoia_Makefile.in.patch;patch=1 \ + file://cdparanoia-III-10.2-privatefix.patch;patch=1 " -SRC_URI="http://downloads.xiph.org/releases/cdparanoia/cdparanoia-III-10.2.src.tgz \ - file://fixes10.patch;patch=1 \ - file://Makefile.in.patch;patch=1 \ - file://interface_Makefile.in.patch;patch=1 \ - file://paranoia_Makefile.in.patch;patch=1 " +S = "${WORKDIR}/cdparanoia-III-10.2" -S="${WORKDIR}/cdparanoia-III-10.2" +inherit autotools PARALLEL_MAKE = "" -inherit autotools - do_install() { - oe_runmake BINDIR="${D}/usr/bin" MANDIR="${D}/usr/share/man/" \ - INCLUDEDIR="${D}/usr/include/" LIBDIR="${D}/usr/lib" install + oe_runmake BINDIR="${D}/usr/bin" MANDIR="${D}/usr/share/man/" \ + INCLUDEDIR="${D}/usr/include/" LIBDIR="${D}/usr/lib" install } do_stage() { - install -d ${STAGING_INCDIR} ${STAGING_LIBDIR} - - install -m 0644 paranoia/cdda_paranoia.h ${STAGING_INCDIR} - install -m 0644 interface/cdda_interface.h ${STAGING_INCDIR} - - oe_libinstall -C interface libcdda_interface ${STAGING_LIBDIR} - oe_libinstall -C paranoia libcdda_paranoia ${STAGING_LIBDIR} + install -d ${STAGING_INCDIR} ${STAGING_LIBDIR} + install -m 0644 paranoia/cdda_paranoia.h ${STAGING_INCDIR} + install -m 0644 interface/cdda_interface.h ${STAGING_INCDIR} + oe_libinstall -C interface libcdda_interface ${STAGING_LIBDIR} + oe_libinstall -C paranoia libcdda_paranoia ${STAGING_LIBDIR} } + diff --git a/recipes/cdparanoia/cdparanoia_9.8alpha.bb b/recipes/cdparanoia/cdparanoia_9.8alpha.bb index 8c1bbd446f..2305ec7d83 100644 --- a/recipes/cdparanoia/cdparanoia_9.8alpha.bb +++ b/recipes/cdparanoia/cdparanoia_9.8alpha.bb @@ -1,31 +1,29 @@ # cdparanoia OE build file # Copyright (C) 2005, Advanced Micro Devices, Inc. All Rights Reserved # Released under the MIT license (see packages/COPYING) +LICENSE = "GPL" -PR ="r2" -LICENSE="GPL" +PR = "r3" -SRC_URI="http://downloads.xiph.org/releases/cdparanoia/cdparanoia-III-alpha9.8.src.tgz \ - file://fixes.patch;patch=1 \ - file://Makefile.patch;patch=1" +SRC_URI = "http://downloads.xiph.org/releases/cdparanoia/cdparanoia-III-alpha9.8.src.tgz \ + file://fixes.patch;patch=1 \ + file://Makefile.patch;patch=1" -S="${WORKDIR}/cdparanoia-III-alpha9.8" - -PARALLEL_MAKE = "" +S = "${WORKDIR}/cdparanoia-III-alpha9.8" inherit autotools +PARALLEL_MAKE = "" + do_install() { - oe_runmake BINDIR="${D}/usr/bin" MANDIR="${D}/usr/share/man/" \ - INCLUDEDIR="${D}/usr/include/" LIBDIR="${D}/usr/lib" install + oe_runmake BINDIR="${D}/usr/bin" MANDIR="${D}/usr/share/man/" \ + INCLUDEDIR="${D}/usr/include/" LIBDIR="${D}/usr/lib" install } - do_stage() { - install -d ${STAGING_INCDIR} ${STAGING_LIBDIR} - - install -m 0644 paranoia/cdda_paranoia.h ${STAGING_INCDIR} - install -m 0644 interface/cdda_interface.h ${STAGING_INCDIR} - - oe_libinstall -C interface libcdda_interface ${STAGING_LIBDIR} - oe_libinstall -C paranoia libcdda_paranoia ${STAGING_LIBDIR} + install -d ${STAGING_INCDIR} ${STAGING_LIBDIR} + install -m 0644 paranoia/cdda_paranoia.h ${STAGING_INCDIR} + install -m 0644 interface/cdda_interface.h ${STAGING_INCDIR} + oe_libinstall -C interface libcdda_interface ${STAGING_LIBDIR} + oe_libinstall -C paranoia libcdda_paranoia ${STAGING_LIBDIR} } + diff --git a/recipes/curl/curl-common.inc b/recipes/curl/curl-common.inc index 29af47ee8d..41c5d919c5 100644 --- a/recipes/curl/curl-common.inc +++ b/recipes/curl/curl-common.inc @@ -6,7 +6,7 @@ SRC_URI = "http://curl.haxx.se/download/curl-${PV}.tar.bz2 \ file://pkgconfig_fix.patch;patch=1" S = "${WORKDIR}/curl-${PV}" -INC_PR = "r2" +INC_PR = "r3" CURL_FEATURES ?= "zlib,gnutls,cookies,crypto-auth,dict,file,ftp,http,telnet,tftp" # other allowed features: ipv6, ares, openssl @@ -23,6 +23,11 @@ python __anonymous() { f = bb.data.getVar("CURL_FEATURES", d, True).split(",") oeconf = bb.data.getVar("EXTRA_OECONF", d, False) deps = bb.data.getVar("DEPENDS", d, False).split() + pn = bb.data.getVar("PN", d, True) + if "native" in pn: + native = "-native" + else: + native = "" for x in [ 'cookies', 'crypto-auth', 'dict', 'file', 'ftp', 'http', 'telnet', 'tftp', 'ipv6' ]: if x in f: oeconf += " --enable-%s" % x @@ -30,22 +35,22 @@ python __anonymous() { oeconf += " --disable-%s" % x if 'zlib' in f: oeconf += " --with-zlib=${STAGING_LIBDIR}/../" - deps.append("zlib") + deps.append("zlib" + native) else: oeconf += " --without-zlib" if 'gnutls' in f: oeconf += " --with-gnutls=${STAGING_BINDIR_CROSS}" - deps.append("gnutls") + deps.append("gnutls" + native) else: oeconf += " --without-gnutls" if 'openssl' in f: oeconf += " --with-ssl=${STAGING_LIBDIR}/../" - deps.append("openssl") + deps.append("openssl" + native) else: oeconf += " --without-ssl" if 'ares' in f: oeconf += " --enable-ares" - deps.append("c-ares") + deps.append("c-ares" + native) else: oeconf += " --disable-ares" bb.data.setVar('EXTRA_OECONF', oeconf, d) @@ -57,7 +62,5 @@ do_configure_prepend() { } do_stage () { - install -d ${STAGING_INCDIR}/curl - install -m 0644 ${S}/include/curl/*.h ${STAGING_INCDIR}/curl/ - oe_libinstall -so -a -C lib libcurl ${STAGING_LIBDIR} + autotools_stage_all } diff --git a/recipes/curl/curl-native_7.18.2.bb b/recipes/curl/curl-native_7.18.2.bb index d395021512..1eef23b29c 100644 --- a/recipes/curl/curl-native_7.18.2.bb +++ b/recipes/curl/curl-native_7.18.2.bb @@ -2,11 +2,3 @@ require curl-common.inc inherit native DEPENDS = "zlib-native" PR = "${INC_PR}.1" - -do_stage () { - autotools_stage_all -} - -do_install() { - : -} diff --git a/recipes/curl/curl-native_7.19.6.bb b/recipes/curl/curl-native_7.19.6.bb index b201530cf6..392476b745 100644 --- a/recipes/curl/curl-native_7.19.6.bb +++ b/recipes/curl/curl-native_7.19.6.bb @@ -4,11 +4,3 @@ DEPENDS = "zlib-native" PR = "${INC_PR}.2" CURL_FEATURES = "zlib,cookies,crypto-auth,dict,file,ftp,http,telnet,tftp" - -do_stage () { - autotools_stage_all -} - -do_install() { - : -} diff --git a/recipes/curl/curl-sdk_7.18.2.bb b/recipes/curl/curl-sdk_7.18.2.bb index 8eed3d664a..f1fd34ff2c 100644 --- a/recipes/curl/curl-sdk_7.18.2.bb +++ b/recipes/curl/curl-sdk_7.18.2.bb @@ -2,13 +2,3 @@ require curl-common.inc inherit sdk DEPENDS = "zlib-sdk" PR = "${INC_PR}.1" - -do_stage () { - install -d ${STAGING_INCDIR}/curl - install -m 0644 ${S}/include/curl/*.h ${STAGING_INCDIR}/curl/ - oe_libinstall -so -a -C lib libcurl ${STAGING_LIBDIR} -} - -do_install() { - : -} diff --git a/recipes/dbus/dbus-1.2.1/fix-install-daemon.patch b/recipes/dbus/dbus-1.2.1/fix-install-daemon.patch index c31786357d..8d3bfd07e1 100644 --- a/recipes/dbus/dbus-1.2.1/fix-install-daemon.patch +++ b/recipes/dbus/dbus-1.2.1/fix-install-daemon.patch @@ -1,13 +1,37 @@ -Index: dbus-0.94/bus/Makefile.am +Index: dbus-1.2.1/bus/Makefile.am =================================================================== ---- dbus-0.94.orig/bus/Makefile.am 2006-10-01 17:36:18.000000000 +0200 -+++ dbus-0.94/bus/Makefile.am 2006-10-14 21:40:05.000000000 +0200 -@@ -110,7 +110,7 @@ - $(mkinstalldirs) $(DESTDIR)$(DBUS_DAEMONDIR); \ - chmod 755 $(DESTDIR)$(DBUS_DAEMONDIR); \ - fi +--- dbus-1.2.1.orig/bus/Makefile.am 2008-04-04 16:24:08.000000000 +0100 ++++ dbus-1.2.1/bus/Makefile.am 2009-11-13 09:30:57.000000000 +0000 +@@ -149,7 +149,7 @@ + + ## we use noinst_PROGRAMS not check_PROGRAMS so that we build + ## even when not doing "make check" +-noinst_PROGRAMS=$(TESTS) dbus-daemon dbus-daemon-launch-helper-test dbus-daemon-launch-helper ++noinst_PROGRAMS=$(TESTS) dbus-daemon-launch-helper-test dbus-daemon-launch-helper + + bus_test_system_SOURCES= \ + $(XML_SOURCES) \ +@@ -171,20 +171,17 @@ + bus_test_LDADD=$(top_builddir)/dbus/libdbus-convenience.la $(DBUS_BUS_LIBS) + bus_test_LDFLAGS=@R_DYNAMIC_LDFLAG@ + ++dbusdaemondir = $(DBUS_DAEMONDIR) ++dbusdaemon_PROGRAMS = dbus-daemon ++ + ## mop up the gcov files + clean-local: + /bin/rm *.bb *.bbg *.da *.gcov || true + + uninstall-hook: +- rm -f $(DESTDIR)$(DBUS_DAEMONDIR)/dbus-daemon + rm -f $(DESTDIR)$(libexecdir)/dbus-daemon-launch-helper + + install-data-hook: +- if test '!' -d $(DESTDIR)$(DBUS_DAEMONDIR); then \ +- $(mkinstalldirs) $(DESTDIR)$(DBUS_DAEMONDIR); \ +- chmod 755 $(DESTDIR)$(DBUS_DAEMONDIR); \ +- fi - $(INSTALL_PROGRAM) dbus-daemon $(DESTDIR)$(DBUS_DAEMONDIR) -+ $(INSTALL_PROGRAM) .libs/dbus-daemon $(DESTDIR)$(DBUS_DAEMONDIR) $(mkinstalldirs) $(DESTDIR)$(localstatedir)/run/dbus $(mkinstalldirs) $(DESTDIR)$(configdir)/system.d - $(mkinstalldirs) $(DESTDIR)$(datadir)/dbus-1/services + $(mkinstalldirs) $(DESTDIR)$(configdir)/session.d diff --git a/recipes/dbus/dbus-native_1.0.3.bb b/recipes/dbus/dbus-native_1.0.3.bb index 6ec0fc870d..98b389e4e6 100644 --- a/recipes/dbus/dbus-native_1.0.3.bb +++ b/recipes/dbus/dbus-native_1.0.3.bb @@ -5,6 +5,8 @@ DEFAULT_PREFERENCE = "-1" inherit native +EXTRA_OECONF_X = "--without-x" + DEPENDS = "glib-2.0-native libxml2-native expat-native" FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/dbus-${PV}" diff --git a/recipes/dbus/dbus-native_1.2.1.bb b/recipes/dbus/dbus-native_1.2.1.bb index 2b1610ee49..f9f87dc440 100644 --- a/recipes/dbus/dbus-native_1.2.1.bb +++ b/recipes/dbus/dbus-native_1.2.1.bb @@ -1,9 +1,11 @@ require dbus.inc -PR = "${INC_PR}.0" +PR = "${INC_PR}.2" RRECOMMENDS_${PN} = "" RDEPENDS_${PN} = "" inherit native +EXTRA_OECONF_X = "--without-x" + DEPENDS = "glib-2.0-native libxml2-native expat-native" FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/dbus-${PV}" @@ -11,6 +13,7 @@ SRC_URI = "\ http://dbus.freedesktop.org/releases/dbus/dbus-${PV}.tar.gz \ file://cross.patch;patch=1 \ file://tmpdir.patch;patch=1 \ + file://fix-install-daemon.patch;patch=1 \ file://dbus-1.init \ " diff --git a/recipes/dbus/dbus.inc b/recipes/dbus/dbus.inc index 202aec432d..0477a27474 100644 --- a/recipes/dbus/dbus.inc +++ b/recipes/dbus/dbus.inc @@ -4,7 +4,7 @@ SECTION = "base" LICENSE = "GPL" DEPENDS = "expat glib-2.0 virtual/libintl libsm libice virtual/libx11" -INC_PR = "r16" +INC_PR = "r17" SRC_URI = "\ http://dbus.freedesktop.org/releases/dbus/dbus-${PV}.tar.gz \ @@ -19,6 +19,8 @@ S = "${WORKDIR}/dbus-${PV}" inherit autotools pkgconfig update-rc.d gettext +EXTRA_OECONF_X = "--with-x" + EXTRA_OECONF = "\ --disable-qt \ --disable-qt3 \ @@ -27,9 +29,10 @@ EXTRA_OECONF = "\ --disable-checks \ --disable-xml-docs \ --disable-doxygen-docs \ + --disable-libaudit \ --with-xml=expat \ - --with-x \ --with-dbus-default-reply-timeout=200000 \ + ${EXTRA_OECONF_X} \ " do_compile_prepend_mipsel() { diff --git a/recipes/dbus/dbus_1.2.1.bb b/recipes/dbus/dbus_1.2.1.bb index 72db1daa9c..d4e5811451 100644 --- a/recipes/dbus/dbus_1.2.1.bb +++ b/recipes/dbus/dbus_1.2.1.bb @@ -1,3 +1,3 @@ include dbus.inc -PR = "${INC_PR}.0" +PR = "${INC_PR}.1" diff --git a/recipes/eglibc/eglibc-initial_2.11.bb b/recipes/eglibc/eglibc-initial_2.11.bb new file mode 100644 index 0000000000..787c762609 --- /dev/null +++ b/recipes/eglibc/eglibc-initial_2.11.bb @@ -0,0 +1,6 @@ +require eglibc_${PV}.bb +require eglibc-initial.inc + +do_configure_prepend () { + unset CFLAGS +} diff --git a/recipes/eglibc/eglibc_2.10.bb b/recipes/eglibc/eglibc_2.10.bb index 2a62fe3828..38faaf81b6 100644 --- a/recipes/eglibc/eglibc_2.10.bb +++ b/recipes/eglibc/eglibc_2.10.bb @@ -6,7 +6,7 @@ PV = "2.10" PR = "${INC_PR}.5" SVN_REV="9124" EGLIBC_BRANCH="eglibc-2_10" -SRC_URI = "svn://svn.eglibc.org/branches;module=eglibc-2_10;rev=${SVN_REV};proto=svn \ +SRC_URI = "svn://svn.eglibc.org/branches;module=${EGLIBC_BRANCH};rev=${SVN_REV};proto=svn \ file://eglibc-svn-arm-lowlevellock-include-tls.patch;patch=1 \ file://armv4t-interworking.patch;patch=1 \ file://IO-acquire-lock-fix.patch;patch=1 \ diff --git a/recipes/eglibc/eglibc_2.11.bb b/recipes/eglibc/eglibc_2.11.bb new file mode 100644 index 0000000000..8c7901c3e2 --- /dev/null +++ b/recipes/eglibc/eglibc_2.11.bb @@ -0,0 +1,100 @@ +require eglibc.inc + +DEFAULT_PREFERENCE = "-1" +DEPENDS += "gperf-native" +FILESPATHPKG =. "eglibc-svn:" +PV = "2.11" +PR = "${INC_PR}.0" +SVN_REV="9235" +EGLIBC_BRANCH="eglibc-2_11" +SRC_URI = "svn://svn.eglibc.org/branches;module=${EGLIBC_BRANCH};rev=${SVN_REV};proto=svn \ + file://eglibc-svn-arm-lowlevellock-include-tls.patch;patch=1 \ + file://IO-acquire-lock-fix.patch;patch=1 \ + file://etc/ld.so.conf \ + file://generate-supported.mk" +S = "${WORKDIR}/${EGLIBC_BRANCH}/libc" +B = "${WORKDIR}/build-${TARGET_SYS}" + +PACKAGES_DYNAMIC = "libc6*" +RPROVIDES_${PN}-dev = "libc6-dev virtual-libc-dev" +PROVIDES_${PN}-dbg = "glibc-dbg" + +# the -isystem in bitbake.conf screws up glibc do_stage +BUILD_CPPFLAGS = "-I${STAGING_INCDIR_NATIVE}" +TARGET_CPPFLAGS = "-I${STAGING_DIR_TARGET}${layout_includedir}" + +GLIBC_ADDONS ?= "ports,nptl,libidn" + +GLIBC_BROKEN_LOCALES = " _ER _ET so_ET yn_ER sid_ET tr_TR mn_MN gez_ET gez_ER bn_BD te_IN" + +# +# For now, we will skip building of a gcc package if it is a uclibc one +# and our build is not a uclibc one, and we skip a glibc one if our build +# is a uclibc build. +# +# See the note in gcc/gcc_3.4.0.oe +# + +python __anonymous () { + import bb, re + uc_os = (re.match('.*uclibc$', bb.data.getVar('TARGET_OS', d, 1)) != None) + if uc_os: + raise bb.parse.SkipPackage("incompatible with target %s" % + bb.data.getVar('TARGET_OS', d, 1)) +} + +EXTRA_OECONF = "--enable-kernel=${OLDEST_KERNEL} \ + --without-cvs --disable-profile --disable-debug --without-gd \ + --enable-clocale=gnu \ + --enable-add-ons=${GLIBC_ADDONS},ports \ + --with-headers=${STAGING_INCDIR} \ + --without-selinux \ + ${GLIBC_EXTRA_OECONF}" + +EXTRA_OECONF += "${@get_eglibc_fpu_setting(bb, d)}" + +do_unpack_append() { + bb.build.exec_func('do_move_ports', d) +} + +do_move_ports() { + if test -d ${WORKDIR}/${EGLIBC_BRANCH}/ports ; then + rm -rf ${S}/ports + mv ${WORKDIR}/${EGLIBC_BRANCH}/ports ${S}/ + fi +} + +do_configure () { +# override this function to avoid the autoconf/automake/aclocal/autoheader +# calls for now +# don't pass CPPFLAGS into configure, since it upsets the kernel-headers +# version check and doesn't really help with anything + if [ -z "`which rpcgen`" ]; then + echo "rpcgen not found. Install glibc-devel." + exit 1 + fi + (cd ${S} && gnu-configize) || die "failure in running gnu-configize" + find ${S} -name "configure" | xargs touch + CPPFLAGS="" oe_runconf +} + +rpcsvc = "bootparam_prot.x nlm_prot.x rstat.x \ + yppasswd.x klm_prot.x rex.x sm_inter.x mount.x \ + rusers.x spray.x nfs_prot.x rquota.x key_prot.x" + +do_compile () { + # -Wl,-rpath-link <staging>/lib in LDFLAGS can cause breakage if another glibc is in staging + unset LDFLAGS + base_do_compile + ( + cd ${S}/sunrpc/rpcsvc + for r in ${rpcsvc}; do + h=`echo $r|sed -e's,\.x$,.h,'` + rpcgen -h $r -o $h || oewarn "unable to generate header for $r" + done + ) +} + +require eglibc-stage.inc + +require eglibc-package.bbclass diff --git a/recipes/eglibc/eglibc_2.9.bb b/recipes/eglibc/eglibc_2.9.bb index 7a8262783e..792ca83726 100644 --- a/recipes/eglibc/eglibc_2.9.bb +++ b/recipes/eglibc/eglibc_2.9.bb @@ -6,7 +6,7 @@ PV = "2.9" PR = "${INC_PR}.6" SVN_REV="8690" EGLIBC_BRANCH="eglibc-2_9" -SRC_URI = "svn://svn.eglibc.org/branches;module=eglibc-2_9;rev=${SVN_REV};proto=svn \ +SRC_URI = "svn://svn.eglibc.org/branches;module=${EGLIBC_BRANCH};rev=${SVN_REV};proto=svn \ file://eglibc-svn-arm-lowlevellock-include-tls.patch;patch=1 \ file://armv4t-interworking.patch;patch=1 \ file://IO-acquire-lock-fix.patch;patch=1 \ diff --git a/recipes/eglibc/eglibc_svn.bb b/recipes/eglibc/eglibc_svn.bb index 08f280a8bf..460af5a335 100644 --- a/recipes/eglibc/eglibc_svn.bb +++ b/recipes/eglibc/eglibc_svn.bb @@ -1,15 +1,14 @@ require eglibc.inc DEPENDS += "gperf-native" -SRCREV = "9191" +SRCREV = "9241" DEFAULT_PREFERENCE = "-1" FILESPATHPKG =. "eglibc-svn:" -PV = "2.10+svnr${SRCREV}" -PR = "${INC_PR}.2" +PV = "2.11+svnr${SRCREV}" +PR = "${INC_PR}.3" EGLIBC_BRANCH="trunk" -SRC_URI = "svn://svn.eglibc.org;module=trunk \ +SRC_URI = "svn://svn.eglibc.org;module=${EGLIBC_BRANCH} \ file://eglibc-svn-arm-lowlevellock-include-tls.patch;patch=1 \ - file://armv4t-interworking.patch;patch=1 \ file://IO-acquire-lock-fix.patch;patch=1 \ file://etc/ld.so.conf \ file://generate-supported.mk" diff --git a/recipes/freesmartphone/fso-term_git.bb b/recipes/freesmartphone/fso-term_git.bb index e3f674d7cb..acb20cdb05 100644 --- a/recipes/freesmartphone/fso-term_git.bb +++ b/recipes/freesmartphone/fso-term_git.bb @@ -12,6 +12,10 @@ SRC_URI = "\ " S = "${WORKDIR}/git" +do_stage() { + : +} + inherit autotools vala FILES_${PN} += "${datadir}" diff --git a/recipes/freesmartphone/fsogsmd_git.bb b/recipes/freesmartphone/fsogsmd_git.bb index d5067145d2..c96dc1cedc 100644 --- a/recipes/freesmartphone/fsogsmd_git.bb +++ b/recipes/freesmartphone/fsogsmd_git.bb @@ -1,6 +1,6 @@ require cornucopia.inc inherit fso-plugin PR = "${INC_PR}.0" -PV = "0.1.0+gitr${SRCREV}" +PV = "0.2.0+gitr${SRCREV}" -DEPENDS += "libfsoresource libgsm0710mux" +DEPENDS += "libfsoresource libgsm0710mux libxml2 mobile-broadband-provider-info" diff --git a/recipes/gcc/mingw-gcc-build.inc b/recipes/gcc/mingw-gcc-build.inc index 4d7440f6d5..b79aab4a6a 100644 --- a/recipes/gcc/mingw-gcc-build.inc +++ b/recipes/gcc/mingw-gcc-build.inc @@ -34,7 +34,7 @@ do_configure () { oe_runconf } -do_stage_append () { +do_stage () { # Fixup various .la files sed -i -e "s|installed=yes|installed=no|" -e "s|dependency_libs\s*=\s*.*|dependency_libs='-L${STAGING_DIR_HOST}${layout_libdir} ${LIBGCCS_VAR} -lc -lm '|" ${STAGING_DIR_HOST}${layout_libdir}/libsupc++.la || true sed -i -e "s|installed=yes|installed=no|" -e "s|dependency_libs\s*=\s*.*|dependency_libs='-L${STAGING_DIR_HOST}${layout_libdir} ${LIBGCCS_VAR} -lc -lm '|" ${STAGING_DIR_HOST}${layout_libdir}/libstdc++.la || true diff --git a/recipes/glibc/glibc-2.10.1/glibc-2.9-enable-binutils-2.2.patch b/recipes/glibc/glibc-2.10.1/glibc-2.9-enable-binutils-2.2.patch new file mode 100644 index 0000000000..09200dd43b --- /dev/null +++ b/recipes/glibc/glibc-2.10.1/glibc-2.9-enable-binutils-2.2.patch @@ -0,0 +1,35 @@ +--- glibc-2.9.orig/configure.in 2009-10-22 15:38:13.000000000 +0200 ++++ glibc-2.9/configure.in 2009-10-22 15:37:33.000000000 +0200 +@@ -844,10 +844,10 @@ + # Accept binutils 2.13 or newer. + AC_CHECK_PROG_VER(AS, $AS, --version, + [GNU assembler.* \([0-9]*\.[0-9.]*\)], +- [2.1[3-9]*], AS=: critic_missing="$critic_missing as") ++ [2.1[3-9]* | 2.2* ], AS=: critic_missing="$critic_missing as") + AC_CHECK_PROG_VER(LD, $LD, --version, + [GNU ld.* \([0-9][0-9]*\.[0-9.]*\)], +- [2.1[3-9]*], LD=: critic_missing="$critic_missing ld") ++ [2.1[3-9]* | 2.2* ], LD=: critic_missing="$critic_missing ld") + + # We need the physical current working directory. We cannot use the + # "pwd -P" shell builtin since that's not portable. Instead we try to +--- glibc-2.9.orig/configure 2009-02-26 22:28:17.000000000 +0100 ++++ glibc-2.9/configure 2009-10-22 15:43:11.000000000 +0200 +@@ -4531,7 +4531,7 @@ + ac_prog_version=`$AS --version 2>&1 | sed -n 's/^.*GNU assembler.* \([0-9]*\.[0-9.]*\).*$/\1/p'` + case $ac_prog_version in + '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;; +- 2.1[3-9]*) ++ 2.1[3-9]* | 2.2*) + ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;; + *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;; + +@@ -4594,7 +4594,7 @@ + ac_prog_version=`$LD --version 2>&1 | sed -n 's/^.*GNU ld.* \([0-9][0-9]*\.[0-9.]*\).*$/\1/p'` + case $ac_prog_version in + '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;; +- 2.1[3-9]*) ++ 2.1[3-9]* | 2.2*) + ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;; + *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;; + diff --git a/recipes/glibc/glibc-initial_2.10.1.bb b/recipes/glibc/glibc-initial_2.10.1.bb new file mode 100644 index 0000000000..d66297090f --- /dev/null +++ b/recipes/glibc/glibc-initial_2.10.1.bb @@ -0,0 +1,6 @@ +require glibc_${PV}.bb +require glibc-initial.inc + +do_configure_prepend () { + unset CFLAGS +} diff --git a/recipes/glibc/glibc_2.10.1.bb b/recipes/glibc/glibc_2.10.1.bb new file mode 100644 index 0000000000..27fbef5222 --- /dev/null +++ b/recipes/glibc/glibc_2.10.1.bb @@ -0,0 +1,151 @@ +require glibc.inc + +ARM_INSTRUCTION_SET = "arm" + +PACKAGES_DYNAMIC = "libc6*" +RPROVIDES_${PN}-dev = "libc6-dev virtual-libc-dev" + +# the -isystem in bitbake.conf screws up glibc do_stage +BUILD_CPPFLAGS = "-I${STAGING_INCDIR_NATIVE}" +TARGET_CPPFLAGS = "-I${STAGING_DIR_TARGET}${layout_includedir}" + + +FILESPATHPKG =. "glibc-2.4:" + +GLIBC_ADDONS ?= "ports,nptl,libidn" + +GLIBC_BROKEN_LOCALES = " _ER _ET so_ET yn_ER sid_ET tr_TR mn_MN gez_ET gez_ER bn_BD te_IN" + +# +# For now, we will skip building of a gcc package if it is a uclibc one +# and our build is not a uclibc one, and we skip a glibc one if our build +# is a uclibc build. +# +# See the note in gcc/gcc_3.4.0.oe +# + +python __anonymous () { + import bb, re + uc_os = (re.match('.*uclibc$', bb.data.getVar('TARGET_OS', d, 1)) != None) + if uc_os: + raise bb.parse.SkipPackage("incompatible with target %s" % + bb.data.getVar('TARGET_OS', d, 1)) +} + +RDEPENDS_${PN}-dev = "linux-libc-headers-dev" + +SRC_URI = "ftp://ftp.gnu.org/pub/gnu/glibc/glibc-${PV}.tar.bz2 \ + ftp://ftp.gnu.org/pub/gnu/glibc/glibc-ports-${PV}.tar.bz2 \ + ftp://ftp.gnu.org/pub/gnu/glibc/glibc-libidn-${PV}.tar.bz2 \ + file://nscd-init.patch;patch=1;pnum=0 \ + file://arm-memcpy.patch;patch=1 \ + file://arm-longlong.patch;patch=1 \ + file://fhs-linux-paths.patch;patch=1 \ + file://dl-cache-libcmp.patch;patch=1 \ + file://ldsocache-varrun.patch;patch=1 \ + file://nptl-crosscompile.patch;patch=1 \ + file://glibc-check_pf.patch;patch=1;pnum=0 \ + file://ldd-unbash.patch;patch=1 \ + file://glibc-arm-IO-acquire-lock-fix.diff;patch=1 \ + file://generic-bits_select.h \ + file://generic-bits_types.h \ + file://generic-bits_typesizes.h \ + file://generic-bits_time.h \ + file://etc/ld.so.conf \ + file://generate-supported.mk \ + file://march-i686.patch;patch=1;pnum=0 \ + file://arm-lowlevellock-include-tls.patch;patch=1 \ + file://glibc-2.9-enable-binutils-2.2.patch;patch=1 \ + file://armv4t-interworking.patch;patch=1 \ + " + +# Build fails on sh3 and sh4 without additional patches +SRC_URI_append_sh3 = " file://no-z-defs.patch;patch=1" +SRC_URI_append_sh4 = " file://no-z-defs.patch;patch=1" + +#powerpc patches to add support for soft-float +SRC_URI_append_powerpc= " file://powerpc-sqrt-hack.diff;patch=1" + +S = "${WORKDIR}/glibc-${PV}" +B = "${WORKDIR}/build-${TARGET_SYS}" + +EXTRA_OECONF = "--enable-kernel=${OLDEST_KERNEL} \ + --without-cvs --disable-profile --disable-debug --without-gd \ + --enable-clocale=gnu \ + --enable-add-ons=${GLIBC_ADDONS} \ + --with-headers=${STAGING_INCDIR} \ + --without-selinux \ + ${GLIBC_EXTRA_OECONF}" + +EXTRA_OECONF += "${@get_glibc_fpu_setting(bb, d)}" + +do_munge() { + # Integrate ports and libidn into tree + mv ${WORKDIR}/glibc-ports-${PV} ${S}/ports + mv ${WORKDIR}/glibc-libidn-${PV} ${S}/libidn + + # Ports isn't really working... Fix it + # Some of this is rather dirty, but it seems to be the only + # quick way to get this cruft to compile + rm -rf ${S}/ports/sysdeps/unix/sysv/linux/arm/linuxthreads + ln -s nptl ${S}/ports/sysdeps/unix/sysv/linux/arm/linuxthreads + cp ${S}/nptl/sysdeps/pthread/bits/sigthread.h ${S}/ports/sysdeps/unix/sysv/linux/arm/bits/ + cp ${S}/sysdeps/unix/sysv/linux/i386/bits/wchar.h ${S}/ports/sysdeps/unix/sysv/linux/arm/bits/ + cp ${S}/sysdeps/wordsize-32/bits/wordsize.h ${S}/ports/sysdeps/unix/sysv/linux/arm/bits/ + cp ${WORKDIR}/generic-bits_select.h ${S}/ports/sysdeps/unix/sysv/linux/arm/bits/select.h + cp ${WORKDIR}/generic-bits_types.h ${S}/ports/sysdeps/unix/sysv/linux/arm/bits/types.h + cp ${WORKDIR}/generic-bits_typesizes.h ${S}/ports/sysdeps/unix/sysv/linux/arm/bits/typesizes.h + cp ${WORKDIR}/generic-bits_time.h ${S}/ports/sysdeps/unix/sysv/linux/arm/bits/time.h + # Copy in generic stuff for not yet implemented headers + for i in ${S}/bits/*.h; do + F=`basename $i` + [ "$F" = "local_lim.h" ] && continue + [ "$F" = "errno.h" ] && continue + test -e ${S}/ports/sysdeps/unix/sysv/linux/arm/bits/$F || test -e ${S}/ports/sysdeps/arm/bits/$F || test -e ${S}/sysdeps/unix/sysv/linux/bits/$F || test -e ${S}/sysdeps/ieee754/bits/$F || cp $i ${S}/ports/sysdeps/unix/sysv/linux/arm/bits/ + done + # This is harmful; we need to get the one from nptl/sysdeps/pthreads + rm -f ${S}/ports/sysdeps/unix/sysv/linux/arm/bits/libc-lock.h + # Obsoleted by sysdeps/arm/{fpu,eabi}/bits/fenv.h + rm -f ${S}/ports/sysdeps/unix/sysv/linux/arm/bits/fenv.h + # Obsoleted by sysdeps/gnu/bits/utmp.h + rm -f ${S}/ports/sysdeps/unix/sysv/linux/arm/bits/utmp.h +} + +addtask munge before do_patch after do_unpack + + +do_configure () { +# /var/db was not included to FHS + sed -i s:/var/db/nscd:/var/run/nscd: ${S}/nscd/nscd.h +# override this function to avoid the autoconf/automake/aclocal/autoheader +# calls for now +# don't pass CPPFLAGS into configure, since it upsets the kernel-headers +# version check and doesn't really help with anything + if [ -z "`which rpcgen`" ]; then + echo "rpcgen not found. Install glibc-devel." + exit 1 + fi + (cd ${S} && gnu-configize) || die "failure in running gnu-configize" + CPPFLAGS="" oe_runconf +} + +rpcsvc = "bootparam_prot.x nlm_prot.x rstat.x \ + yppasswd.x klm_prot.x rex.x sm_inter.x mount.x \ + rusers.x spray.x nfs_prot.x rquota.x key_prot.x" + +do_compile () { + # -Wl,-rpath-link <staging>/lib in LDFLAGS can cause breakage if another glibc is in staging + unset LDFLAGS + base_do_compile + ( + cd ${S}/sunrpc/rpcsvc + for r in ${rpcsvc}; do + h=`echo $r|sed -e's,\.x$,.h,'` + rpcgen -h $r -o $h || oewarn "unable to generate header for $r" + done + ) +} + +require glibc-stage.inc + +require glibc-package.bbclass diff --git a/recipes/gnutls/gnutls-native_2.4.2.bb b/recipes/gnutls/gnutls-native_2.4.2.bb new file mode 100644 index 0000000000..fb896cdb1b --- /dev/null +++ b/recipes/gnutls/gnutls-native_2.4.2.bb @@ -0,0 +1,4 @@ +require gnutls_${PV}.bb + +inherit native + diff --git a/recipes/gob2/gob2_2.0.14.bb b/recipes/gob2/gob2_2.0.14.bb index eca8d13795..86f2f0979e 100644 --- a/recipes/gob2/gob2_2.0.14.bb +++ b/recipes/gob2/gob2_2.0.14.bb @@ -12,6 +12,6 @@ do_compile_prepend() { find ${S} -name Makefile | xargs sed -i 's~-I$(includedir)~-I${STAGING_INCDIR}~g' } -do_stage_append() { +do_stage() { install -m 0644 ${S}/gob2.m4 ${STAGING_DATADIR}/aclocal } diff --git a/recipes/gstreamer/gst-plugins-good_0.10.15.bb b/recipes/gstreamer/gst-plugins-good_0.10.15.bb index 5913a447e7..ae7566143e 100644 --- a/recipes/gstreamer/gst-plugins-good_0.10.15.bb +++ b/recipes/gstreamer/gst-plugins-good_0.10.15.bb @@ -1,13 +1,13 @@ require gst-plugins.inc -PR = "r4" +PR = "r5" SRC_URI += "file://fix-unit-scale-asseration.patch;patch=1" OE_ALLOW_INSECURE_DOWNLOADS = "1" inherit gconf -DEPENDS += "gst-plugins-base openssl popt esound" +DEPENDS += "flac gst-plugins-base openssl popt esound" PACKAGES =+ "gst-plugin-gconfelements" FILES_gst-plugin-gconfelements += "${sysconfdir}/gconf" diff --git a/recipes/icu/icu_3.6.bb b/recipes/icu/icu_3.6.bb index 3eccfb53d9..56a70a2f1d 100644 --- a/recipes/icu/icu_3.6.bb +++ b/recipes/icu/icu_3.6.bb @@ -37,9 +37,11 @@ do_stage() { autotools_stage_all } -# We need to append this so it runs *after* binconfig.do_stage -do_stage_append() { - sed -i -e s:^prefix=:prefix=\"${STAGING_DIR_TARGET}/usr\": ${STAGING_BINDIR_CROSS}/icu-config +SYSROOT_PREPROCESS_FUNCS += "icu_sysroot_preprocess" + +# We need to append this so it runs *after* binconfig's preprocess function +icu_sysroot_preprocess () { + sed -i -e s:^prefix=:prefix=\"${STAGING_DIR_TARGET}/usr\": ${SYSROOT_DESTDIR}${STAGING_BINDIR_CROSS}/icu-config } diff --git a/recipes/klibc/klibc-1.5.15/signal-cleanup.patch b/recipes/klibc/klibc-1.5.15/signal-cleanup.patch index fd41f4d7b7..c64cd5bbb6 100644 --- a/recipes/klibc/klibc-1.5.15/signal-cleanup.patch +++ b/recipes/klibc/klibc-1.5.15/signal-cleanup.patch @@ -1,21 +1,27 @@ Description: Cope with header changes in kernel commit 63b852a6b67d0820d388b0ecd0da83ccb4048b8d. -diff -Nur -x '*.orig' -x '*~' klibc-1.5.15/usr/include/arch/i386/klibc/archsignal.h klibc-1.5.15.new/usr/include/arch/i386/klibc/archsignal.h ---- klibc-1.5.15/usr/include/arch/i386/klibc/archsignal.h 2009-10-04 23:10:17.000000000 +0100 -+++ klibc-1.5.15.new/usr/include/arch/i386/klibc/archsignal.h 2009-10-05 09:35:14.000000000 +0100 -@@ -96,7 +96,7 @@ +Index: klibc-1.5.15/usr/include/arch/i386/klibc/archsignal.h +=================================================================== +--- klibc-1.5.15.orig/usr/include/arch/i386/klibc/archsignal.h 2009-01-04 11:28:03.000000000 -0800 ++++ klibc-1.5.15/usr/include/arch/i386/klibc/archsignal.h 2009-11-11 14:21:10.000000000 -0800 +@@ -96,7 +96,12 @@ typedef struct { #define MINSIGSTKSZ 2048 #define SIGSTKSZ 8192 --#include <asm-generic/signal.h> ++#include <linux/version.h> ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,31) +#include <asm-generic/signal-defs.h> ++#else + #include <asm-generic/signal.h> ++#endif /* This uses gcc anonymous union support... */ struct siginfo; -diff -Nur -x '*.orig' -x '*~' klibc-1.5.15/usr/include/arch/sparc/klibc/archsignal.h klibc-1.5.15.new/usr/include/arch/sparc/klibc/archsignal.h ---- klibc-1.5.15/usr/include/arch/sparc/klibc/archsignal.h 2009-01-04 19:28:03.000000000 +0000 -+++ klibc-1.5.15.new/usr/include/arch/sparc/klibc/archsignal.h 2009-10-05 09:37:31.000000000 +0100 +Index: klibc-1.5.15/usr/include/arch/sparc/klibc/archsignal.h +=================================================================== +--- klibc-1.5.15.orig/usr/include/arch/sparc/klibc/archsignal.h 2009-01-04 11:28:03.000000000 -0800 ++++ klibc-1.5.15/usr/include/arch/sparc/klibc/archsignal.h 2009-11-09 15:06:29.000000000 -0800 @@ -11,13 +11,6 @@ #define __WANT_POSIX1B_SIGNALS__ #include <asm/signal.h> diff --git a/recipes/klibc/klibc_1.5.15.bb b/recipes/klibc/klibc_1.5.15.bb index 31c4fbca3d..777dcd2c3c 100644 --- a/recipes/klibc/klibc_1.5.15.bb +++ b/recipes/klibc/klibc_1.5.15.bb @@ -1,4 +1,4 @@ require klibc_1.5.15.inc -PR = "r3" +PR = "r4" KLIBC_FETCHDIR = "Testing" diff --git a/recipes/libdiscid/libdiscid.inc b/recipes/libdiscid/libdiscid.inc new file mode 100644 index 0000000000..a8ebfafe8a --- /dev/null +++ b/recipes/libdiscid/libdiscid.inc @@ -0,0 +1,14 @@ +DESCRIPTION = "The MusicBrainz client is a library which can be built into other programs. \ +It allows you to access the data held on the MusicBrainz server." + +HOMEPAGE = "http://musicbrainz.org" +LICENSE = "LGPL" + +SRC_URI = "http://users.musicbrainz.org/~matt/libdiscid-${PV}.tar.gz" + +inherit cmake pkgconfig + +do_stage() { + autotools_stage_all +} + diff --git a/recipes/libdiscid/libdiscid_0.2.2.bb b/recipes/libdiscid/libdiscid_0.2.2.bb new file mode 100644 index 0000000000..bd54419686 --- /dev/null +++ b/recipes/libdiscid/libdiscid_0.2.2.bb @@ -0,0 +1 @@ +require ${PN}.inc diff --git a/recipes/libsdl/libsdl-mixer_1.2.10.bb b/recipes/libsdl/libsdl-mixer_1.2.10.bb new file mode 100644 index 0000000000..1a9e808c52 --- /dev/null +++ b/recipes/libsdl/libsdl-mixer_1.2.10.bb @@ -0,0 +1,25 @@ +DESCRIPTION = "Simple DirectMedia Layer mixer library." +SECTION = "libs" +PRIORITY = "optional" +DEPENDS = "virtual/libsdl libmikmod libvorbis" +LICENSE = "LGPL" + +DEFAULT_PREFERENCE = "-1" + +SRC_URI = "http://www.libsdl.org/projects/SDL_mixer/release/SDL_mixer-${PV}.tar.gz" +S = "${WORKDIR}/SDL_mixer-${PV}" + +export SDL_CONFIG = "${STAGING_BINDIR_CROSS}/sdl-config" + +inherit autotools_stage + +EXTRA_OECONF = "--disable-music-mp3" +# although we build smpeg... need to find out how +# to deal with optional dependencies + +do_compile() { + # Override SDL_LIBS to include a linker rpath so the linker + # can find the correct libdl.so when it links playwave to + # libSDL_mixer.so. + oe_runmake SDL_LIBS="$(pkg-config sdl --libs) -Wl,-rpath-link,${STAGING_LIBDIR}" +} diff --git a/recipes/meta/meta-toolchain-qte.bb b/recipes/meta/meta-toolchain-qte.bb index c27e7cc88c..789b99a032 100644 --- a/recipes/meta/meta-toolchain-qte.bb +++ b/recipes/meta/meta-toolchain-qte.bb @@ -10,21 +10,21 @@ SDK_SUFFIX = "toolchain-qte" QT_DIR_NAME = "qtopia" do_populate_sdk_append() { - script = "${SDK_OUTPUT}/${prefix}/environment-setup" + script = "${SDK_OUTPUT}/${SDKPATH}/environment-setup" touch $script echo 'export OE_QMAKE_CC=${TARGET_SYS}-gcc' >> $script echo 'export OE_QMAKE_CXX=${TARGET_SYS}-g++' >> $script echo 'export OE_QMAKE_LINK=${TARGET_SYS}-g++' >> $script - echo 'export OE_QMAKE_LIBDIR_QT=${prefix}/${TARGET_SYS}/${layout_libdir}' >> $script - echo 'export OE_QMAKE_INCDIR_QT=${prefix}/${TARGET_SYS}/${layout_includedir}/${QT_DIR_NAME}' >> $script - echo 'export OE_QMAKE_MOC=${prefix}/bin/moc4' >> $script - echo 'export OE_QMAKE_UIC=${prefix}/bin/uic4' >> $script - echo 'export OE_QMAKE_UIC3=${prefix}/bin/uic34' >> $script - echo 'export OE_QMAKE_RCC=${prefix}/bin/rcc4' >> $script - echo 'export OE_QMAKE_QDBUSCPP2XML=${prefix}/bin/qdbuscpp2xml4' >> $script - echo 'export OE_QMAKE_QDBUSXML2CPP=${prefix}/bin/qdbusxml2cpp4' >> $script - echo 'export OE_QMAKE_QT_CONFIG=${prefix}/${TARGET_SYS}/${layout_datadir}/${QT_DIR_NAME}/mkspecs/qconfig.pri' >> $script - echo 'export QMAKESPEC=${prefix}/${TARGET_SYS}/${layout_datadir}/${QT_DIR_NAME}/mkspecs/linux-g++' >> $script + echo 'export OE_QMAKE_LIBDIR_QT=${SDKPATH}/${TARGET_SYS}/${libdir}' >> $script + echo 'export OE_QMAKE_INCDIR_QT=${SDKPATH}/${TARGET_SYS}/${includedir}/${QT_DIR_NAME}' >> $script + echo 'export OE_QMAKE_MOC=${SDKPATH}/bin/moc4' >> $script + echo 'export OE_QMAKE_UIC=${SDKPATH}/bin/uic4' >> $script + echo 'export OE_QMAKE_UIC3=${SDKPATH}/bin/uic34' >> $script + echo 'export OE_QMAKE_RCC=${SDKPATH}/bin/rcc4' >> $script + echo 'export OE_QMAKE_QDBUSCPP2XML=${SDKPATH}/bin/qdbuscpp2xml4' >> $script + echo 'export OE_QMAKE_QDBUSXML2CPP=${SDKPATH}/bin/qdbusxml2cpp4' >> $script + echo 'export OE_QMAKE_QT_CONFIG=${SDKPATH}/${TARGET_SYS}/${datadir}/${QT_DIR_NAME}/mkspecs/qconfig.pri' >> $script + echo 'export QMAKESPEC=${SDKPATH}/${TARGET_SYS}/${datadir}/${QT_DIR_NAME}/mkspecs/linux-g++' >> $script # Repack SDK with new environment-setup cd ${SDK_OUTPUT} diff --git a/recipes/meta/meta-toolchain.bb b/recipes/meta/meta-toolchain.bb index 2e83b1d02f..e09778f82c 100644 --- a/recipes/meta/meta-toolchain.bb +++ b/recipes/meta/meta-toolchain.bb @@ -2,21 +2,7 @@ DESCRIPTION = "Meta package for building a installable toolchain" LICENSE = "MIT" DEPENDS = "opkg-native ipkg-utils-native fakeroot-native sed-native" -# NOTE: We need to save and restore PACKAGE_ARCHS, because sdk.bbclass -# will change HOST_ARCH, which can result in SITEINFO_ENDIANESS (which -# is computed in siteinfo.bbclass) in changing if the original HOST_ARCH -# endianess differs from the new HOST_ARCH endianess. SITEINFO_ENDIANNESS -# is used in a number of places, including the construction of the -# PACKAGE_EXTRA_ARCHS list for machines that are capable of running in -# either endianess. There may be better ways to fix this. - -# Save value of PACKAGE_ARCHS (note the ":=" syntax to force immediate eval) -REAL_PACKAGE_ARCHS := "${PACKAGE_ARCHS}" - -inherit sdk meta - -# Restore PACKAGE_ARCHS (sdk.bbclass may have caused it to change) -PACKAGE_ARCHS := "${REAL_PACKAGE_ARCHS}" +inherit meta SDK_DIR = "${WORKDIR}/sdk" SDK_OUTPUT = "${SDK_DIR}/image" @@ -24,7 +10,7 @@ SDK_OUTPUT2 = "${SDK_DIR}/image-extras" SDK_DEPLOY = "${DEPLOY_DIR}/sdk" IPKG_HOST = "opkg-cl -f ${IPKGCONF_SDK} -o ${SDK_OUTPUT}" -IPKG_TARGET = "opkg-cl -f ${IPKGCONF_TARGET} -o ${SDK_OUTPUT}/${SDK_PATH}/${TARGET_SYS}" +IPKG_TARGET = "opkg-cl -f ${IPKGCONF_TARGET} -o ${SDK_OUTPUT}/${SDKPATH}/${TARGET_SYS}" TOOLCHAIN_HOST_TASK ?= "task-sdk-host" TOOLCHAIN_TARGET_TASK ?= "task-sdk-bare" @@ -37,12 +23,12 @@ RDEPENDS = "${TOOLCHAIN_TARGET_TASK} ${TOOLCHAIN_HOST_TASK}" TOOLCHAIN_FEED_URI ?= "${DISTRO_FEED_URI}" modify_opkg_conf () { - OUTPUT_OPKGCONF_TARGET="${SDK_OUTPUT}/${prefix}/${TARGET_SYS}/${layout_sysconfdir}/opkg.conf" - OUTPUT_OPKGCONF_HOST="${SDK_OUTPUT}/${prefix}/${TARGET_SYS}/${layout_sysconfdir}/opkg-sdk.conf" + OUTPUT_OPKGCONF_TARGET="${SDK_OUTPUT}/${SDKPATH}/${TARGET_SYS}/${sysconfdir}/opkg.conf" + OUTPUT_OPKGCONF_HOST="${SDK_OUTPUT}/${SDKPATH}/${TARGET_SYS}/${sysconfdir}/opkg-sdk.conf" OUTPUT_OPKGCONF_SDK="${SDK_OUTPUT}/${sysconfdir}/opkg-sdk.conf" - rm ${OUTPUT_OPKGCONF_TARGET} - rm ${OUTPUT_OPKGCONF_HOST} - rm ${OUTPUT_OPKGCONF_SDK} + rm -f ${OUTPUT_OPKGCONF_TARGET} + rm -f ${OUTPUT_OPKGCONF_HOST} + rm -f ${OUTPUT_OPKGCONF_SDK} opkgarchs="${PACKAGE_ARCHS}" priority=1 for arch in ${opkgarchs}; do @@ -55,6 +41,8 @@ modify_opkg_conf () { do_populate_sdk() { rm -rf ${SDK_OUTPUT} mkdir -p ${SDK_OUTPUT} + mkdir -p ${SDK_OUTPUT}${libdir}/opkg/ + mkdir -p ${SDK_OUTPUT}/${SDKPATH}/${TARGET_SYS}${libdir}/opkg/ package_generate_ipkg_conf @@ -62,48 +50,45 @@ do_populate_sdk() { revipkgarchs="$arch $revipkgarchs" done - mkdir -p ${SDK_OUTPUT}/${layout_libdir}/opkg ${IPKG_HOST} update ${IPKG_HOST} -force-depends install ${TOOLCHAIN_HOST_TASK} - mkdir -p ${SDK_OUTPUT}/${prefix}/${TARGET_SYS}/${layout_libdir}/opkg ${IPKG_TARGET} update ${IPKG_TARGET} install ${TOOLCHAIN_TARGET_TASK} - install -d ${SDK_OUTPUT}/${prefix}/${layout_libdir}/opkg - mv ${SDK_OUTPUT}/${layout_libdir}/opkg/* \ - ${SDK_OUTPUT}/${prefix}/${layout_libdir}/opkg/ - rm -Rf ${SDK_OUTPUT}/${layout_libdir} + install -d ${SDK_OUTPUT}/${SDKPATH}/usr/lib/opkg + mv ${SDK_OUTPUT}/usr/lib/opkg/* ${SDK_OUTPUT}/${SDKPATH}/usr/lib/opkg/ + rm -Rf ${SDK_OUTPUT}/usr/lib - install -d ${SDK_OUTPUT}/${prefix}/${TARGET_SYS}/${layout_sysconfdir} - install -m 0644 ${IPKGCONF_TARGET} ${IPKGCONF_SDK} ${SDK_OUTPUT}/${prefix}/${TARGET_SYS}/${layout_sysconfdir}/ + install -d ${SDK_OUTPUT}/${SDKPATH}/${TARGET_SYS}/${sysconfdir} + install -m 0644 ${IPKGCONF_TARGET} ${IPKGCONF_SDK} ${SDK_OUTPUT}/${SDKPATH}/${TARGET_SYS}/${sysconfdir}/ - install -d ${SDK_OUTPUT}/${sysconfdir} - install -m 0644 ${IPKGCONF_SDK} ${SDK_OUTPUT}/${sysconfdir}/ + install -d ${SDK_OUTPUT}/${SDKPATH}/${sysconfdir} + install -m 0644 ${IPKGCONF_SDK} ${SDK_OUTPUT}/${SDKPATH}/${sysconfdir}/ # extract and store ipks, pkgdata and shlibs data - target_pkgs=`cat ${SDK_OUTPUT}/${prefix}/package-status | grep Package: | cut -f 2 -d ' '` - mkdir -p ${SDK_OUTPUT2}/${prefix}/ipk/ - mkdir -p ${SDK_OUTPUT2}/${prefix}/pkgdata/runtime/ - mkdir -p ${SDK_OUTPUT2}/${prefix}/${TARGET_SYS}/shlibs/ + target_pkgs=`cat ${SDK_OUTPUT}/${SDKPATH}/${TARGET_SYS}/usr/lib/opkg/status | grep Package: | cut -f 2 -d ' '` + mkdir -p ${SDK_OUTPUT2}/${SDKPATH}/ipk/ + mkdir -p ${SDK_OUTPUT2}/${SDKPATH}/pkgdata/runtime/ + mkdir -p ${SDK_OUTPUT2}/${SDKPATH}/${TARGET_SYS}/shlibs/ for pkg in $target_pkgs ; do for arch in $revipkgarchs; do pkgnames=${DEPLOY_DIR_IPK}/$arch/${pkg}_*_$arch.ipk if [ -e $pkgnames ]; then oenote "Found $pkgnames" - cp $pkgnames ${SDK_OUTPUT2}/${prefix}/ipk/ + cp $pkgnames ${SDK_OUTPUT2}/${SDKPATH}/ipk/ orig_pkg=`ipkg-list-fields $pkgnames | grep OE: | cut -d ' ' -f2` pkg_subdir=$arch${TARGET_VENDOR}${@['-' + bb.data.getVar('TARGET_OS', d, 1), ''][bb.data.getVar('TARGET_OS', d, 1) == ('' or 'custom')]} - mkdir -p ${SDK_OUTPUT2}/${prefix}/pkgdata/$pkg_subdir/runtime - cp ${STAGING_DIR}/pkgdata/$pkg_subdir/$orig_pkg ${SDK_OUTPUT2}/${prefix}/pkgdata/$pkg_subdir/ - subpkgs=`cat ${STAGING_DIR}/pkgdata/$pkg_subdir/$orig_pkg | grep PACKAGES: | cut -b 10-` + mkdir -p ${SDK_OUTPUT2}/${SDKPATH}/pkgdata/$pkg_subdir/runtime + cp ${TMPDIR}/pkgdata/$pkg_subdir/$orig_pkg ${SDK_OUTPUT2}/${SDKPATH}/pkgdata/$pkg_subdir/ + subpkgs=`cat ${TMPDIR}/pkgdata/$pkg_subdir/$orig_pkg | grep PACKAGES: | cut -b 10-` for subpkg in $subpkgs; do - cp ${STAGING_DIR}/pkgdata/$pkg_subdir/runtime/$subpkg ${SDK_OUTPUT2}/${prefix}/pkgdata/$pkg_subdir/runtime/ - if [ -e ${STAGING_DIR}/pkgdata/$pkg_subdir/runtime/$subpkg.packaged ];then - cp ${STAGING_DIR}/pkgdata/$pkg_subdir/runtime/$subpkg.packaged ${SDK_OUTPUT2}/${prefix}/pkgdata/$pkg_subdir/runtime/ + cp ${TMPDIR}/pkgdata/$pkg_subdir/runtime/$subpkg ${SDK_OUTPUT2}/${SDKPATH}/pkgdata/$pkg_subdir/runtime/ + if [ -e ${TMPDIR}/pkgdata/$pkg_subdir/runtime/$subpkg.packaged ];then + cp ${TMPDIR}/pkgdata/$pkg_subdir/runtime/$subpkg.packaged ${SDK_OUTPUT2}/${SDKPATH}/pkgdata/$pkg_subdir/runtime/ fi if [ -e ${STAGING_DIR_TARGET}/shlibs/$subpkg.list ]; then - cp ${STAGING_DIR_TARGET}/shlibs/$subpkg.* ${SDK_OUTPUT2}/${prefix}/${TARGET_SYS}/shlibs/ + cp ${STAGING_DIR_TARGET}/shlibs/$subpkg.* ${SDK_OUTPUT2}/${SDKPATH}/${TARGET_SYS}/shlibs/ fi done break @@ -115,44 +100,44 @@ do_populate_sdk() { # libgcc-dev should be responsible for that, but it's not getting built # RP: it gets smashed up depending on the order that gcc, gcc-cross and # gcc-cross-sdk get built :( (30/11/07) - ln -sf libgcc_s.so.1 ${SDK_OUTPUT}/${prefix}/${TARGET_SYS}/lib/libgcc_s.so + ln -sf libgcc_s.so.1 ${SDK_OUTPUT}/${SDKPATH}/${TARGET_SYS}/lib/libgcc_s.so # With sysroot support, gcc expects the default C++ headers to be # in a specific place. - install -d ${SDK_OUTPUT}/${prefix}/${TARGET_SYS}/include - mv ${SDK_OUTPUT}/${prefix}/${TARGET_SYS}/usr/include/c++ \ - ${SDK_OUTPUT}/${prefix}/${TARGET_SYS}/include/ + install -d ${SDK_OUTPUT}/${SDKPATH}/${TARGET_SYS}/include + mv ${SDK_OUTPUT}/${SDKPATH}/${TARGET_SYS}/usr/include/c++ \ + ${SDK_OUTPUT}/${SDKPATH}/${TARGET_SYS}/include/ # Fix or remove broken .la files - for i in `find ${SDK_OUTPUT}/${prefix}/${TARGET_SYS} -name \*.la`; do - sed -i -e "/^dependency_libs=/s,\([[:space:]']\)${layout_base_libdir},\1${prefix}/${TARGET_SYS}${layout_base_libdir},g" \ - -e "/^dependency_libs=/s,\([[:space:]']\)${layout_libdir},\1${prefix}/${TARGET_SYS}${layout_libdir},g" \ - -e "/^dependency_libs=/s,\-\([LR]\)${layout_base_libdir},-\1${prefix}/${TARGET_SYS}${layout_base_libdir},g" \ - -e "/^dependency_libs=/s,\-\([LR]\)${layout_libdir},-\1${prefix}/${TARGET_SYS}${layout_libdir},g" \ + for i in `find ${SDK_OUTPUT}/${SDKPATH}/${TARGET_SYS} -name \*.la`; do + sed -i -e "/^dependency_libs=/s,\([[:space:]']\)${base_libdir},\1${SDKPATH}/${TARGET_SYS}${base_libdir},g" \ + -e "/^dependency_libs=/s,\([[:space:]']\)${libdir},\1${SDKPATH}/${TARGET_SYS}${libdir},g" \ + -e "/^dependency_libs=/s,\-\([LR]\)${base_libdir},-\1${SDKPATH}/${TARGET_SYS}${base_libdir},g" \ + -e "/^dependency_libs=/s,\-\([LR]\)${libdir},-\1${SDKPATH}/${TARGET_SYS}${libdir},g" \ -e 's/^installed=yes$/installed=no/' $i done - rm -f ${SDK_OUTPUT}/${prefix}/lib/*.la + rm -f ${SDK_OUTPUT}/${SDKPATH}/lib/*.la # Setup site file for external use - siteconfig=${SDK_OUTPUT}/${prefix}/site-config + siteconfig=${SDK_OUTPUT}/${SDKPATH}/site-config touch $siteconfig for sitefile in ${CONFIG_SITE} ; do cat $sitefile >> $siteconfig done # Create environment setup script - script=${SDK_OUTPUT}/${prefix}/environment-setup + script=${SDK_OUTPUT}/${SDKPATH}/environment-setup touch $script - echo 'export PATH=${prefix}/bin:$PATH' >> $script + echo 'export PATH=${SDKPATH}/bin:$PATH' >> $script echo 'export LIBTOOL_SYSROOT_PATH=${prefix}/${TARGET_SYS}' >> $script - echo 'export PKG_CONFIG_SYSROOT_DIR=${prefix}/${TARGET_SYS}' >> $script - echo 'export PKG_CONFIG_PATH=${prefix}/${TARGET_SYS}${layout_libdir}/pkgconfig' >> $script - echo 'export CONFIG_SITE=${prefix}/site-config' >> $script - echo "alias opkg='LD_LIBRARY_PATH=${prefix}/lib ${prefix}/bin/opkg-cl -f ${sysconfdir}/opkg-sdk.conf -o ${prefix}'" >> $script - echo "alias opkg-target='LD_LIBRARY_PATH=${prefix}/lib ${prefix}/bin/opkg-cl -f ${prefix}/${TARGET_SYS}${layout_sysconfdir}/opkg.conf -o ${prefix}/${TARGET_SYS}'" >> $script + echo 'export PKG_CONFIG_SYSROOT_DIR=${SDKPATH}/${TARGET_SYS}' >> $script + echo 'export PKG_CONFIG_PATH=${SDKPATH}/${TARGET_SYS}${libdir}/pkgconfig' >> $script + echo 'export CONFIG_SITE=${SDKPATH}/site-config' >> $script + echo "alias opkg='LD_LIBRARY_PATH=${SDKPATH}/lib ${SDKPATH}/bin/opkg-cl -f ${SDKPATH}/${sysconfdir}/opkg-sdk.conf -o ${SDKPATH}'" >> $script + echo "alias opkg-target='LD_LIBRARY_PATH=${SDKPATH}/lib ${SDKPATH}/bin/opkg-cl -f ${SDKPATH}/${TARGET_SYS}${sysconfdir}/opkg.conf -o ${SDKPATH}/${TARGET_SYS}'" >> $script # Add version information - versionfile=${SDK_OUTPUT}/${prefix}/version + versionfile=${SDK_OUTPUT}/${SDKPATH}/version touch $versionfile echo 'Distro: ${DISTRO}' >> $versionfile echo 'Distro Version: ${DISTRO_VERSION}' >> $versionfile diff --git a/recipes/mobile-broadband-provider-info/mobile-broadband-provider-info_git.bb b/recipes/mobile-broadband-provider-info/mobile-broadband-provider-info_git.bb new file mode 100644 index 0000000000..65fab979b1 --- /dev/null +++ b/recipes/mobile-broadband-provider-info/mobile-broadband-provider-info_git.bb @@ -0,0 +1,10 @@ +DESCRIPTION = "Mobile Broadband Service Provider Database" +SECTION = "network" +LICENSE = "CCPD" +PV = "gitr${SRCREV}" +PR = "r0" + +SRC_URI = "git://git.gnome.org/mobile-broadband-provider-info;protocol=git" +S = "${WORKDIR}/git" + +inherit autotools_stage diff --git a/recipes/module-init-tools/module-init-tools-cross_3.2.2.bb b/recipes/module-init-tools/module-init-tools-cross_3.2.2.bb index eb2027b384..c8a35c766b 100644 --- a/recipes/module-init-tools/module-init-tools-cross_3.2.2.bb +++ b/recipes/module-init-tools/module-init-tools-cross_3.2.2.bb @@ -1,5 +1,5 @@ -LICENSE = "GPL" -require module-init-tools_${PV}.bb + +require module-init-tools.inc inherit cross DEFAULT_PREFERENCE = "0" PROVIDES += "virtual/${TARGET_PREFIX}depmod virtual/${TARGET_PREFIX}depmod-2.6" diff --git a/recipes/module-init-tools/module-init-tools.inc b/recipes/module-init-tools/module-init-tools.inc new file mode 100644 index 0000000000..59e93d4533 --- /dev/null +++ b/recipes/module-init-tools/module-init-tools.inc @@ -0,0 +1,25 @@ +DESCRIPTION = "This package contains a set of programs for loading, inserting, and \ +removing kernel modules for Linux (versions 2.5.48 and above). It serves \ +the same function that the modutils package serves for Linux 2.4." +LICENSE = "GPL" +SECTION = "base" +PR = "r5" + +PACKAGES =+ "module-init-tools-insmod-static module-init-tools-depmod" +RDEPENDS_${PN} += "module-init-tools-depmod" + +FILES_module-init-tools-depmod = "${sbindir}/depmod.26" +FILES_module-init-tools-insmod-static = "${sbindir}/insmod.static" + +SRC_URI = "${KERNELORG_MIRROR}/pub/linux/utils/kernel/module-init-tools/module-init-tools-${PV}.tar.bz2 \ + file://ignore_arch_directory;patch=1 \ + file://modutils_extension;patch=1 \ + file://no_man_rebuild;patch=1 \ + file://manpagesopt;patch=1 \ + file://module-init-tools-remove-index.patch;patch=1 " +S = "${WORKDIR}/module-init-tools-${PV}" + +EXTRA_OECONF = "--disable-manpages" + + +inherit autotools diff --git a/recipes/module-init-tools/module-init-tools_3.2.1.bb b/recipes/module-init-tools/module-init-tools_3.2.1.bb index 91c0efcd64..6481913ca7 100644 --- a/recipes/module-init-tools/module-init-tools_3.2.1.bb +++ b/recipes/module-init-tools/module-init-tools_3.2.1.bb @@ -1,30 +1,14 @@ -DESCRIPTION = "This package contains a set of programs for loading, inserting, and \ -removing kernel modules for Linux (versions 2.5.48 and above). It serves \ -the same function that the modutils package serves for Linux 2.4." -LICENSE = "GPL" -SECTION = "base" -PR = "r1" - -PACKAGES =+ "module-init-tools-insmod-static module-init-tools-depmod" -RDEPENDS_${PN} += "module-init-tools-depmod" - -FILES_module-init-tools-depmod = "${sbindir}/depmod.26" -FILES_module-init-tools-insmod-static = "${sbindir}/insmod.static" +require module-init-tools.inc SRC_URI = "${KERNELORG_MIRROR}/pub/linux/utils/kernel/module-init-tools/module-init-tools-${PV}.tar.bz2 \ file://ignore_arch_directory;patch=1 \ file://modutils_extension;patch=1 \ file://no_man_rebuild;patch=1 \ file://manpagesopt;patch=1 " -S = "${WORKDIR}/module-init-tools-${PV}" - -EXTRA_OECONF = "--disable-manpages" bindir = "/bin" sbindir = "/sbin" -inherit autotools - do_install() { autotools_do_install for f in bin/lsmod sbin/insmod sbin/rmmod sbin/modprobe sbin/modinfo sbin/depmod; do diff --git a/recipes/module-init-tools/module-init-tools_3.2.2.bb b/recipes/module-init-tools/module-init-tools_3.2.2.bb index a56bac7a82..4e2cba8d6f 100644 --- a/recipes/module-init-tools/module-init-tools_3.2.2.bb +++ b/recipes/module-init-tools/module-init-tools_3.2.2.bb @@ -1,31 +1,8 @@ -DESCRIPTION = "This package contains a set of programs for loading, inserting, and \ -removing kernel modules for Linux (versions 2.5.48 and above). It serves \ -the same function that the modutils package serves for Linux 2.4." -LICENSE = "GPL" -SECTION = "base" -PR = "r5" - -PACKAGES =+ "module-init-tools-insmod-static module-init-tools-depmod" -RDEPENDS_${PN} += "module-init-tools-depmod" - -FILES_module-init-tools-depmod = "${sbindir}/depmod.26" -FILES_module-init-tools-insmod-static = "${sbindir}/insmod.static" - -SRC_URI = "${KERNELORG_MIRROR}/pub/linux/utils/kernel/module-init-tools/module-init-tools-${PV}.tar.bz2 \ - file://ignore_arch_directory;patch=1 \ - file://modutils_extension;patch=1 \ - file://no_man_rebuild;patch=1 \ - file://manpagesopt;patch=1 \ - file://module-init-tools-remove-index.patch;patch=1 " -S = "${WORKDIR}/module-init-tools-${PV}" - -EXTRA_OECONF = "--disable-manpages" +require module-init-tools.inc bindir = "/bin" sbindir = "/sbin" -inherit autotools - do_install() { autotools_do_install for f in bin/lsmod sbin/insmod sbin/rmmod sbin/modprobe sbin/modinfo sbin/depmod; do diff --git a/recipes/module-init-tools/module-init-tools_3.4.bb b/recipes/module-init-tools/module-init-tools_3.4.bb index caea00d194..0b94c3b317 100644 --- a/recipes/module-init-tools/module-init-tools_3.4.bb +++ b/recipes/module-init-tools/module-init-tools_3.4.bb @@ -1,29 +1,12 @@ -DESCRIPTION = "This package contains a set of programs for loading, inserting, and \ -removing kernel modules for Linux (versions 2.5.48 and above). It serves \ -the same function that the modutils package serves for Linux 2.4." -LICENSE = "GPL" -SECTION = "base" - -PR = "r1" - -PACKAGES =+ "module-init-tools-insmod-static module-init-tools-depmod" -RDEPENDS_${PN} += "module-init-tools-depmod" - -FILES_module-init-tools-depmod = "${sbindir}/depmod.26" -FILES_module-init-tools-insmod-static = "${sbindir}/insmod.static" +require module-init-tools.inc SRC_URI = "${KERNELORG_MIRROR}/pub/linux/utils/kernel/module-init-tools/module-init-tools-${PV}.tar.bz2 \ file://modutils_extension;patch=1 \ " -S = "${WORKDIR}/module-init-tools-${PV}" - -EXTRA_OECONF = "--disable-manpages" bindir = "/bin" sbindir = "/sbin" -inherit autotools - do_configure_prepend() { sed -i -e /MAN5\ =/d -e /MAN8\ =/d Makefile.am } diff --git a/recipes/mplayer/files/disable-executable-stack-test.patch b/recipes/mplayer/files/disable-executable-stack-test.patch index dc8871b6ae..466e62cc8d 100644 --- a/recipes/mplayer/files/disable-executable-stack-test.patch +++ b/recipes/mplayer/files/disable-executable-stack-test.patch @@ -19,12 +19,12 @@ at runtime. -int main(void) { return 0; } -EOF -if cc_check -Wl,-z,noexecstack ; then -- _ld_extra="-Wl,-z,noexecstack $_ld_extra" +- extra_ldflags="-Wl,-z,noexecstack $extra_ldflags" - echores "yes" -else - echores "no" -fi +echores "no" - echocheck "ftello()" - # if we don't have ftello use the osdep/ compatibility module + # Dynamic linking flags + # (FIXME: 'echocheck "dynamic linking"' above and modify here accordingly) diff --git a/recipes/mplayer/files/mplayer-arm-pld.patch b/recipes/mplayer/files/mplayer-arm-pld.patch new file mode 100644 index 0000000000..b10117e4b3 --- /dev/null +++ b/recipes/mplayer/files/mplayer-arm-pld.patch @@ -0,0 +1,18 @@ +Index: trunk/libmpeg2/motion_comp_arm_s.S +=================================================================== +--- trunk.orig/libmpeg2/motion_comp_arm_s.S 2009-11-11 20:49:15.376079099 +0300 ++++ trunk/libmpeg2/motion_comp_arm_s.S 2009-11-11 20:51:46.468064654 +0300 +@@ -18,6 +18,13 @@ + @ along with mpeg2dec; if not, write to the Free Software + @ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + ++#include "../config.h" ++ ++#if !HAVE_PLD ++.macro pld reg ++.endm ++#endif ++ + + .text + diff --git a/recipes/mplayer/files/mplayer-lavc-arm.patch b/recipes/mplayer/files/mplayer-lavc-arm.patch new file mode 100644 index 0000000000..8c2c832ab3 --- /dev/null +++ b/recipes/mplayer/files/mplayer-lavc-arm.patch @@ -0,0 +1,17 @@ +Index: trunk/libavcodec/arm/dsputil_arm.S +=================================================================== +--- trunk.orig/libavcodec/arm/dsputil_arm.S 2009-11-11 22:16:37.216062301 +0300 ++++ trunk/libavcodec/arm/dsputil_arm.S 2009-11-11 22:22:00.908058155 +0300 +@@ -29,6 +29,12 @@ + .endm + #endif + ++#ifndef __THUMB_INTERWORK__ ++.macro bx reg ++ mov pc, \reg ++.endm ++#endif ++ + #if HAVE_ARMV5TE + function ff_prefetch_arm, export=1 + subs r2, r2, #1 diff --git a/recipes/mplayer/mplayer_svn.bb b/recipes/mplayer/mplayer_svn.bb index 7d2f27aa3a..f9bad67a43 100644 --- a/recipes/mplayer/mplayer_svn.bb +++ b/recipes/mplayer/mplayer_svn.bb @@ -9,6 +9,8 @@ RDEPENDS = "mplayer-common" LICENSE = "GPL" SRC_URI = "svn://svn.mplayerhq.hu/mplayer;module=trunk \ file://makefile-nostrip-svn.patch;patch=1 \ + file://mplayer-arm-pld.patch;patch=1 \ + file://mplayer-lavc-arm.patch;patch=1 \ " SRCREV = "29789" diff --git a/recipes/musicbrainz/libmusicbrainz.inc b/recipes/musicbrainz/libmusicbrainz.inc index 64a7f50794..dfd96fabbb 100644 --- a/recipes/musicbrainz/libmusicbrainz.inc +++ b/recipes/musicbrainz/libmusicbrainz.inc @@ -1,10 +1,9 @@ -DEFAULT_PREFERENCE = "-1" - DESCRIPTION = "The MusicBrainz client is a library which can be built into other programs. \ It allows you to access the data held on the MusicBrainz server." HOMEPAGE = "http://musicbrainz.org" LICENSE = "LGPL" -DEPENDS = "expat neon" + +DEPENDS = "expat neon libdiscid" SRC_URI = "ftp://ftp.musicbrainz.org/pub/musicbrainz/libmusicbrainz-${PV}.tar.gz" diff --git a/recipes/mysql/mysql5_5.1.40.inc b/recipes/mysql/mysql5_5.1.40.inc index aa69831397..28716747e6 100644 --- a/recipes/mysql/mysql5_5.1.40.inc +++ b/recipes/mysql/mysql5_5.1.40.inc @@ -41,7 +41,10 @@ do_stage() { oe_libinstall -a -C libmysqld libmysqld ${STAGING_LIBDIR} } -do_stage_append() { +SYSROOT_PREPROCESS_FUNCS += "mysql5_sysroot_preprocess" + +# We need to append this so it runs *after* binconfig's preprocess function +mysql5_sysroot_preprocess () { sed -i -es,^pkgincludedir=\'/usr/include/mysql\',pkgincludedir=\'${STAGING_INCDIR}\', ${STAGING_BINDIR_CROSS}/mysql_config sed -i -es,^pkglibdir=\'/usr/lib/mysql\',pkglibdir=\'${STAGING_LIBDIR}\', ${STAGING_BINDIR_CROSS}/mysql_config } diff --git a/recipes/mysql/mysql_4.1.22.bb b/recipes/mysql/mysql_4.1.22.bb index 9e5ff885f9..1dacff6781 100644 --- a/recipes/mysql/mysql_4.1.22.bb +++ b/recipes/mysql/mysql_4.1.22.bb @@ -38,9 +38,11 @@ do_stage() { oe_libinstall -a -C libmysqld libmysqld ${STAGING_LIBDIR} } -do_stage_append() { - sed -i -es,^pkgincludedir=\'/usr/include/mysql\',pkgincludedir=\'${STAGING_INCDIR}\', ${STAGING_BINDIR_CROSS}/mysql_config - sed -i -es,^pkglibdir=\'/usr/lib/mysql\',pkglibdir=\'${STAGING_LIBDIR}\', ${STAGING_BINDIR_CROSS}/mysql_config +SYSROOT_PREPROCESS_FUNCS += "mysqlmangle" + +mysqlmangle() { + sed -i -es,^pkgincludedir=\'/usr/include/mysql\',pkgincludedir=\'${STAGING_INCDIR}\', ${SYSROOT_DESTDIR}${STAGING_BINDIR_CROSS}/mysql_config + sed -i -es,^pkglibdir=\'/usr/lib/mysql\',pkglibdir=\'${STAGING_LIBDIR}\', ${SYSROOT_DESTDIR}${STAGING_BINDIR_CROSS}/mysql_config } do_install() { diff --git a/recipes/perl/libfile-slurp-perl_9999.13.bb b/recipes/perl/libfile-slurp-perl_9999.13.bb index c4c967d90c..5854761696 100644 --- a/recipes/perl/libfile-slurp-perl_9999.13.bb +++ b/recipes/perl/libfile-slurp-perl_9999.13.bb @@ -1,13 +1,11 @@ SECTION = "libs" LICENSE = "Artistic|GPL" HOMEPAGE = "http://search.cpan.org/~uri/" -PR = "r0" +PR = "r1" SRC_URI = "http://search.cpan.org/CPAN/authors/id/D/DR/DROLSKY/File-Slurp-${PV}.tar.gz" S = "${WORKDIR}/File-Slurp-${PV}" -EXTRA_CPANFLAGS = "EXPATLIBPATH=${STAGING_LIBDIR} EXPATINCPATH=${STAGING_INCDIR}" - inherit cpan diff --git a/recipes/perl/libhtml-mason-perl_1.35.bb b/recipes/perl/libhtml-mason-perl_1.35.bb index 71e96005e8..dfc6f3cc87 100644 --- a/recipes/perl/libhtml-mason-perl_1.35.bb +++ b/recipes/perl/libhtml-mason-perl_1.35.bb @@ -16,6 +16,10 @@ SRC_URI = "http://search.cpan.org/CPAN/authors/id/D/DR/DROLSKY/HTML-Mason-${PV}. S = "${WORKDIR}/HTML-Mason-${PV}" +do_stage() { + : +} + inherit cpan_build do_install_append () { diff --git a/recipes/perl/libhtml-parser-perl-native_3.64.bb b/recipes/perl/libhtml-parser-perl-native_3.64.bb new file mode 100644 index 0000000000..3760a422fa --- /dev/null +++ b/recipes/perl/libhtml-parser-perl-native_3.64.bb @@ -0,0 +1,6 @@ +SECTION = "libs" + +require libhtml-parser-perl_${PV}.bb + +inherit native + diff --git a/recipes/perl/libhtml-parser-perl_3.64.bb b/recipes/perl/libhtml-parser-perl_3.64.bb new file mode 100644 index 0000000000..122fba2dc2 --- /dev/null +++ b/recipes/perl/libhtml-parser-perl_3.64.bb @@ -0,0 +1,15 @@ +DESCRIPTION = "HTML Parser bits." +SECTION = "libs" +LICENSE = "Artistic|GPL" +PR = "r0" + +RDEPENDS = "perl-module-test-more \ + perl-module-xsloader \ + perl-module-test-simple \ + libhtml-tagset-perl" + +SRC_URI = "http://search.cpan.org/CPAN/authors/id/G/GA/GAAS/HTML-Parser-${PV}.tar.gz" + +S = "${WORKDIR}/HTML-Parser-${PV}" + +inherit cpan diff --git a/recipes/perl/liblog-dispatch-perl_2.13.bb b/recipes/perl/liblog-dispatch-perl_2.13.bb index ee4a2198c1..643deda664 100644 --- a/recipes/perl/liblog-dispatch-perl_2.13.bb +++ b/recipes/perl/liblog-dispatch-perl_2.13.bb @@ -7,4 +7,8 @@ SRC_URI = "http://search.cpan.org/CPAN/authors/id/D/DR/DROLSKY/Log-Dispatch-${PV S = "${WORKDIR}/Log-Dispatch-${PV}" +do_stage() { + : +} + inherit cpan_build diff --git a/recipes/perl/libmodule-build-perl_0.2805.bb b/recipes/perl/libmodule-build-perl_0.2805.bb index 8a7ce9fa04..b7819fdebc 100644 --- a/recipes/perl/libmodule-build-perl_0.2805.bb +++ b/recipes/perl/libmodule-build-perl_0.2805.bb @@ -12,4 +12,8 @@ PR = "r5" S = "${WORKDIR}/Module-Build-${PV}" +do_stage() { + : +} + inherit cpan_build diff --git a/recipes/perl/libtermreadkey-perl_2.30.bb b/recipes/perl/libtermreadkey-perl_2.30.bb index 3296aef4d8..4f2f26f471 100644 --- a/recipes/perl/libtermreadkey-perl_2.30.bb +++ b/recipes/perl/libtermreadkey-perl_2.30.bb @@ -1,13 +1,11 @@ SECTION = "libs" LICENSE = "Artistic|GPL" HOMEPAGE = "http://search.cpan.org/~jstowe/TermReadKey-2.30/" -PR = "r0" +PR = "r1" SRC_URI = "http://search.cpan.org/CPAN/authors/id/J/JS/JSTOWE/TermReadKey-${PV}.tar.gz" S = "${WORKDIR}/TermReadKey-${PV}" -EXTRA_CPANFLAGS = "EXPATLIBPATH=${STAGING_LIBDIR} EXPATINCPATH=${STAGING_INCDIR}" - inherit cpan diff --git a/recipes/perl/libwww-mechanize-perl-native_1.60.bb b/recipes/perl/libwww-mechanize-perl-native_1.60.bb new file mode 100644 index 0000000000..8718cd268e --- /dev/null +++ b/recipes/perl/libwww-mechanize-perl-native_1.60.bb @@ -0,0 +1,6 @@ +SECTION = "libs" + +require libwww-mechanize-perl_${PV}.bb + +inherit native + diff --git a/recipes/perl/libwww-mechanize-perl_1.60.bb b/recipes/perl/libwww-mechanize-perl_1.60.bb new file mode 100644 index 0000000000..e82cc498c1 --- /dev/null +++ b/recipes/perl/libwww-mechanize-perl_1.60.bb @@ -0,0 +1,10 @@ +DESCRIPTION = "WWW::Mechanize Handy web browsing in a Perl object" +SECTION = "libs" +LICENSE = "Perl" +PR = "r0" + +SRC_URI = "http://search.cpan.org/CPAN/authors/id/P/PE/PETDANCE/WWW-Mechanize-${PV}.tar.gz" + +S = "${WORKDIR}/WWW-Mechanize-${PV}" + +inherit cpan diff --git a/recipes/perl/libxml-parser-perl-native_2.36.bb b/recipes/perl/libxml-parser-perl-native_2.36.bb new file mode 100644 index 0000000000..64758ad5f2 --- /dev/null +++ b/recipes/perl/libxml-parser-perl-native_2.36.bb @@ -0,0 +1,6 @@ +SECTION = "libs" + +require libxml-parser-perl_${PV}.bb + +inherit native + diff --git a/recipes/perl/libxml-twig-perl_3.33.bb b/recipes/perl/libxml-twig-perl_3.33.bb index d828a63166..d688d2c372 100644 --- a/recipes/perl/libxml-twig-perl_3.33.bb +++ b/recipes/perl/libxml-twig-perl_3.33.bb @@ -2,13 +2,11 @@ SECTION = "libs" LICENSE = "Artistic|GPL" HOMEPAGE = "http://www.xmltwig.com/" DEPENDS += "libxml-parser-perl" -PR = "r1" +PR = "r2" SRC_URI = "http://www.angstrom-distribution.org/unstable/sources/XML-Twig-${PV}-upstream-keeps-changing-this-tarball-so-we-mirror-our-own.tar.gz" S = "${WORKDIR}/XML-Twig-${PV}" -EXTRA_CPANFLAGS = "EXPATLIBPATH=${STAGING_LIBDIR} EXPATINCPATH=${STAGING_INCDIR}" - inherit cpan diff --git a/recipes/perl/libxml-writer-perl_0.606.bb b/recipes/perl/libxml-writer-perl_0.606.bb index 863e8e792c..776d338f0b 100644 --- a/recipes/perl/libxml-writer-perl_0.606.bb +++ b/recipes/perl/libxml-writer-perl_0.606.bb @@ -1,13 +1,11 @@ SECTION = "libs" LICENSE = "Artistic|GPL" HOMEPAGE = "http://search.cpan.org/dist/XML-Writer/" -PR = "r1" +PR = "r2" SRC_URI = "http://search.cpan.org/CPAN/authors/id/J/JO/JOSEPHW/XML-Writer-${PV}.tar.gz" S = "${WORKDIR}/XML-Writer-${PV}" -EXTRA_CPANFLAGS = "EXPATLIBPATH=${STAGING_LIBDIR} EXPATINCPATH=${STAGING_INCDIR}" - inherit cpan diff --git a/recipes/perl/perl-native_5.8.4.bb b/recipes/perl/perl-native_5.8.4.bb index 69555e0fac..d3ecb67863 100644 --- a/recipes/perl/perl-native_5.8.4.bb +++ b/recipes/perl/perl-native_5.8.4.bb @@ -1,7 +1,7 @@ DESCRIPTION = "Perl is a popular scripting language." HOMEPAGE = "http://www.perl.org/" LICENSE = "Artistic|GPL" -PR = "r3" +PR = "r4" SECTION = "libs" inherit native diff --git a/recipes/perl/perl-native_5.8.7.bb b/recipes/perl/perl-native_5.8.7.bb index ebb10e5580..d8ccd0c33d 100644 --- a/recipes/perl/perl-native_5.8.7.bb +++ b/recipes/perl/perl-native_5.8.7.bb @@ -1,7 +1,7 @@ DESCRIPTION = "Perl is a popular scripting language." HOMEPAGE = "http://www.perl.org/" LICENSE = "Artistic|GPL" -PR = "r5" +PR = "r6" SECTION = "libs" inherit native diff --git a/recipes/perl/perl-native_5.8.8.bb b/recipes/perl/perl-native_5.8.8.bb index ba05406eb0..60a5cf5b0f 100644 --- a/recipes/perl/perl-native_5.8.8.bb +++ b/recipes/perl/perl-native_5.8.8.bb @@ -3,7 +3,7 @@ HOMEPAGE = "http://www.perl.org/" SECTION = "libs" LICENSE = "Artistic|GPL" DEPENDS = "virtual/db-native gdbm-native" -PR = "r14" +PR = "r15" FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/perl-${PV}" @@ -66,10 +66,9 @@ do_stage_append() { # We need a hostperl link for building perl ln -sf ${STAGING_BINDIR_NATIVE}/perl${PV} ${STAGING_BINDIR_NATIVE}/hostperl # Store native config in non-versioned directory - install -d ${STAGING_DIR}/${HOST_SYS}/perl \ - ${STAGING_LIBDIR_NATIVE}/perl/${PV}/CORE \ + install -d ${STAGING_LIBDIR_NATIVE}/perl/${PV}/CORE \ ${STAGING_DATADIR_NATIVE}/perl/${PV}/ExtUtils - install config.sh ${STAGING_DIR}/${HOST_SYS}/perl + install config.sh ${STAGING_LIBDIR}/perl # target configuration install lib/Config.pm ${STAGING_LIBDIR_NATIVE}/perl/${PV}/ install lib/ExtUtils/typemap ${STAGING_DATADIR_NATIVE}/perl/${PV}/ExtUtils/ @@ -88,7 +87,7 @@ do_stage_append() { } do_stage_append_nylon() { # get rid of definitions not supported by the gcc version we use for nylon... - for i in ${STAGING_LIBDIR_NATIVE}/perl/${PV}/Config_heavy.pl ${STAGING_DIR}/${HOST_SYS}/perl/config.sh; do + for i in ${STAGING_LIBDIR_NATIVE}/perl/${PV}/Config_heavy.pl ${STAGING_LIBDIR}/perl/config.sh; do perl -pi -e 's/-Wdeclaration-after-statement //g' ${i} done } diff --git a/recipes/perl/perl.inc b/recipes/perl/perl.inc index 9e20ae63e6..15ae55cf17 100644 --- a/recipes/perl/perl.inc +++ b/recipes/perl/perl.inc @@ -36,8 +36,8 @@ do_install() { } do_stage() { - install -d ${STAGING_DIR}/${HOST_SYS}/perl/ - install config.sh ${STAGING_DIR}/${HOST_SYS}/perl/ + install -d ${STAGING_LIBDIR}/perl/ + install config.sh ${STAGING_LIBDIR}/perl/ } PACKAGES_DYNAMIC = "perl-module-*" diff --git a/recipes/perl/perl_5.8.4.bb b/recipes/perl/perl_5.8.4.bb index 10a871c8dd..881a2acee5 100644 --- a/recipes/perl/perl_5.8.4.bb +++ b/recipes/perl/perl_5.8.4.bb @@ -1,6 +1,6 @@ require perl.inc -PR = "r5" +PR = "r6" SRC_URI += "file://uclibc.patch;patch=1 \ file://config.sh-mipsel-linux \ diff --git a/recipes/perl/perl_5.8.7.bb b/recipes/perl/perl_5.8.7.bb index 6589180ff2..5891670394 100644 --- a/recipes/perl/perl_5.8.7.bb +++ b/recipes/perl/perl_5.8.7.bb @@ -26,7 +26,7 @@ SRC_URI_append_powerpc += " ${GCCLINK_SRC}" PARALLEL_MAKE = "" -PR = "r22" +PR = "r23" do_configure() { ln -sf ${HOSTPERL} ${STAGING_BINDIR_NATIVE}/hostperl diff --git a/recipes/perl/perl_5.8.8.bb b/recipes/perl/perl_5.8.8.bb index 35fcc83ccc..13e44556be 100644 --- a/recipes/perl/perl_5.8.8.bb +++ b/recipes/perl/perl_5.8.8.bb @@ -5,7 +5,7 @@ LICENSE = "Artistic|GPL" PRIORITY = "optional" # We need gnugrep (for -I) DEPENDS = "virtual/db perl-native grep-native" -PR = "r29" +PR = "r30" # Major part of version PVM = "5.8" @@ -141,12 +141,11 @@ do_install() { fi } do_stage() { - install -d ${STAGING_DIR}/${HOST_SYS}/perl \ - ${STAGING_LIBDIR_NATIVE}/perl/${PV} \ + install -d ${STAGING_LIBDIR_NATIVE}/perl/${PV} \ ${STAGING_LIBDIR}/perl/${PV}/CORE \ ${STAGING_DATADIR}/perl/${PV}/ExtUtils # target config, used by cpan.bbclass to extract version information - install config.sh ${STAGING_DIR}/${HOST_SYS}/perl/ + install config.sh ${STAGING_LIBDIR}/perl/ # target configuration, used by native perl when cross-compiling install lib/Config_heavy.pl ${STAGING_LIBDIR_NATIVE}/perl/${PV}/Config_heavy-target.pl # target configuration diff --git a/recipes/pingus/files/boost.patch b/recipes/pingus/files/boost.patch new file mode 100644 index 0000000000..cdf2425575 --- /dev/null +++ b/recipes/pingus/files/boost.patch @@ -0,0 +1,13 @@ +Index: pingus-0.7.2/SConstruct +=================================================================== +--- pingus-0.7.2.orig/SConstruct 2009-11-13 01:58:16.445278586 +0100 ++++ pingus-0.7.2/SConstruct 2009-11-13 01:58:25.944023225 +0100 +@@ -476,7 +476,7 @@ + env['optional_sources'] += ['src/input/xinput_driver.cpp', + 'src/input/xinput_device.cpp'] + +- if not config.CheckLibWithHeader('boost_signals', 'boost/signals.hpp', 'c++'): ++ if not config.CheckLibWithHeader('boost_signals-mt', 'boost/signals.hpp', 'c++'): + fatal_error += " * library 'boost_signals' not found\n" + + if not config.CheckLibWithHeader('png', 'png.h', 'c++'): diff --git a/recipes/pingus/files/cheader.patch b/recipes/pingus/files/cheader.patch new file mode 100644 index 0000000000..dee22409a7 --- /dev/null +++ b/recipes/pingus/files/cheader.patch @@ -0,0 +1,27 @@ +Index: pingus-0.7.2/src/input/evdev_device.cpp +=================================================================== +--- pingus-0.7.2.orig/src/input/evdev_device.cpp 2009-11-13 02:02:22.730671880 +0100 ++++ pingus-0.7.2/src/input/evdev_device.cpp 2009-11-13 02:05:02.494404553 +0100 +@@ -25,6 +25,8 @@ + #include <stdexcept> + #include <iostream> + #include <errno.h> ++#include <cstring> ++#include <cstdio> + + #include "evdev_device.hpp" + +Index: pingus-0.7.2/src/tinygettext/po_file_reader.cpp +=================================================================== +--- pingus-0.7.2.orig/src/tinygettext/po_file_reader.cpp 2009-11-13 01:59:35.807355200 +0100 ++++ pingus-0.7.2/src/tinygettext/po_file_reader.cpp 2009-11-13 02:02:13.407754735 +0100 +@@ -23,7 +23,8 @@ + #include <errno.h> + #include <sstream> + #include <stdexcept> +-#include <string.h> ++#include <cstring> ++#include <cstdio> + #include "iconv.hpp" + #include "po_file_reader.hpp" + diff --git a/recipes/pingus/pingus_0.7.2.bb b/recipes/pingus/pingus_0.7.2.bb index a10131fa51..10f99bae0e 100644 --- a/recipes/pingus/pingus_0.7.2.bb +++ b/recipes/pingus/pingus_0.7.2.bb @@ -1,9 +1,9 @@ DESCRIPTION = "Pingus is a free Lemmings clone." -DEPENDS = "virtual/libsdl libsdl-image libsdl-mixer boost libpng" +DEPENDS = "virtual/libiconv virtual/libsdl libsdl-image libsdl-mixer boost libpng" LICENSE = "GPL" HOMEPAGE = "http://pingus.seul.org/" SECTION = "x11/games" -PR = "r1" +PR = "r2" ARM_INSTRUCTION_SET = "arm" @@ -12,6 +12,8 @@ inherit scons SRC_URI = "\ http://pingus.seul.org/files/pingus-0.7.2.tar.bz2 \ file://sconstruct.diff;patch=1 \ + file://boost.patch;patch=1 \ + file://cheader.patch;patch=1 \ file://pingus.desktop \ file://pingus.png \ file://pingus-gta012.sh \ @@ -36,6 +38,10 @@ do_install() { fi } +do_stage() { + : +} + # Account for 1337 script in do_install PACKAGE_ARCH_om-gta01 = "${MACHINE_ARCH}" PACKAGE_ARCH_om-gta02 = "${MACHINE_ARCH}" diff --git a/recipes/pkgconfig/pkgconfig.inc b/recipes/pkgconfig/pkgconfig.inc index 495403eaf5..cb6bd0256e 100644 --- a/recipes/pkgconfig/pkgconfig.inc +++ b/recipes/pkgconfig/pkgconfig.inc @@ -21,6 +21,6 @@ do_configure_prepend () { install -m 0644 ${WORKDIR}/glibconfig-sysdefs.h glib-1.2.*/ } -do_stage_prepend() { +do_stage() { install -d -m 0755 ${STAGING_LIBDIR}/pkgconfig } diff --git a/recipes/povray/povray-3.6.1+3.7.0-beta25b/boost.patch b/recipes/povray/povray-3.6.1+3.7.0-beta25b/boost.patch new file mode 100644 index 0000000000..bd2ba46d2f --- /dev/null +++ b/recipes/povray/povray-3.6.1+3.7.0-beta25b/boost.patch @@ -0,0 +1,82 @@ +Index: povray-3.7.0.beta.25b/source/backend/support/taskqueue.h +=================================================================== +--- povray-3.7.0.beta.25b.orig/source/backend/support/taskqueue.h 2009-11-11 21:18:50.066527987 +0100 ++++ povray-3.7.0.beta.25b/source/backend/support/taskqueue.h 2009-11-11 21:20:14.249441749 +0100 +@@ -98,6 +98,7 @@ + + #include <boost/thread.hpp> + #include <boost/shared_ptr.hpp> ++#include <boost/thread/condition.hpp> + + #include "base/povmscpp.h" + #include "backend/support/task.h" +Index: povray-3.7.0.beta.25b/source/backend/support/task.cpp +=================================================================== +--- povray-3.7.0.beta.25b.orig/source/backend/support/task.cpp 2009-11-11 21:21:32.645269202 +0100 ++++ povray-3.7.0.beta.25b/source/backend/support/task.cpp 2009-11-11 21:22:52.322759257 +0100 +@@ -241,7 +241,7 @@ + FatalErrorHandler(e); + failed = e.code(kUncategorizedError); + } +- catch(exception& e) ++ catch(std::exception& e) + { + FatalErrorHandler(POV_EXCEPTION_STRING(e.what())); + failed = kUncategorizedError; +@@ -266,7 +266,7 @@ + FatalErrorHandler(e); + failed = e.code(kUncategorizedError); + } +- catch(exception& e) ++ catch(std::exception& e) + { + FatalErrorHandler(POV_EXCEPTION_STRING(e.what())); + failed = kUncategorizedError; +@@ -291,7 +291,7 @@ + { + FatalErrorHandler(e); + } +- catch(exception& e) ++ catch(std::exception& e) + { + FatalErrorHandler(POV_EXCEPTION_STRING(e.what())); + } +Index: povray-3.7.0.beta.25b/vfe/vfesession.h +=================================================================== +--- povray-3.7.0.beta.25b.orig/vfe/vfesession.h 2009-11-11 21:24:05.381913997 +0100 ++++ povray-3.7.0.beta.25b/vfe/vfesession.h 2009-11-11 21:27:19.715316358 +0100 +@@ -94,6 +94,8 @@ + #ifndef __VFESESSION_H__ + #define __VFESESSION_H__ + ++#include <boost/thread/condition.hpp> ++ + namespace vfe + { + using namespace pov_frontend; +Index: povray-3.7.0.beta.25b/vfe/vfecontrol.cpp +=================================================================== +--- povray-3.7.0.beta.25b.orig/vfe/vfecontrol.cpp 2009-11-11 21:27:33.098560840 +0100 ++++ povray-3.7.0.beta.25b/vfe/vfecontrol.cpp 2009-11-11 21:28:18.396060074 +0100 +@@ -430,7 +430,7 @@ + if (!m_Frontend->Start (m_RenderOptions.m_Options)) + return (m_LastError = vfeFailedToSendRenderStart) ; + } +- catch (exception& e) ++ catch (std::exception& e) + { + if (dynamic_cast<pov_base::Exception *> (&e) != NULL) + m_RenderErrorCode = dynamic_cast<pov_base::Exception *> (&e)->code() ; +Index: povray-3.7.0.beta.25b/vfe/vfesession.cpp +=================================================================== +--- povray-3.7.0.beta.25b.orig/vfe/vfesession.cpp 2009-11-11 21:29:12.798555641 +0100 ++++ povray-3.7.0.beta.25b/vfe/vfesession.cpp 2009-11-11 21:30:29.119796942 +0100 +@@ -695,7 +695,7 @@ + m_Failed = true; + m_LastError = vfeCaughtException; + } +- catch (exception&) ++ catch (std::exception&) + { + m_Failed = true; + m_LastError = vfeCaughtException; diff --git a/recipes/povray/povray_3.6.1+3.7.0-beta25b.bb b/recipes/povray/povray_3.6.1+3.7.0-beta25b.bb index 5ca797cef6..82eacaee7c 100644 --- a/recipes/povray/povray_3.6.1+3.7.0-beta25b.bb +++ b/recipes/povray/povray_3.6.1+3.7.0-beta25b.bb @@ -4,12 +4,13 @@ SECTION = "console/graphics" LICENSE = "povray" DEPENDS = "virtual/libx11 boost zlib jpeg libpng tiff" -PR = "r1" +PR = "r2" #We apply a patch that subverts the checks for jpeg, zlib, png and tiff because we know OE has the required versions, but it is still a hack. SRC_URI = "http://www.povray.org/redirect/www.povray.org/beta/source/povray-src-3.7.0.beta.25b.tar.bz2 \ file://configure-cross-hack.patch;patch=1 \ file://gcc43.diff;patch=1 \ + file://boost.patch;patch=1 \ " S = "${WORKDIR}/povray-3.7.0.beta.25b" diff --git a/recipes/ptpd/ptpd_1.0.0.bb b/recipes/ptpd/ptpd_1.0.0.bb new file mode 100644 index 0000000000..a5263a07ef --- /dev/null +++ b/recipes/ptpd/ptpd_1.0.0.bb @@ -0,0 +1,14 @@ +DESCRIPTION = "Precision Time Protocol (PTP) as defined by the IEEE 1588 standard" +HOMEPAGE = "http://sourceforge.net/projects/ptpd" +LICENSE = "BSD" +SECTION = "network" +PR = "r0" + +SRC_URI = "http://downloads.sourceforge.net/project/ptpd/ptpd/${PV}/ptpd-${PV}.tar.gz" +S = "${WORKDIR}/ptpd-${PV}/src" + +do_install() { + install -d ${D}${bindir} ${D}${mandir}/man8 + install -m 4555 ptpd ${D}${bindir} + install -m 644 ptpd.8 ${D}${mandir}/man8 +} diff --git a/recipes/qt4/qt4-embedded_4.4.3.bb b/recipes/qt4/qt4-embedded_4.4.3.bb index fce2e657ee..075aafd936 100644 --- a/recipes/qt4/qt4-embedded_4.4.3.bb +++ b/recipes/qt4/qt4-embedded_4.4.3.bb @@ -1,3 +1,3 @@ require qt4-embedded.inc -PR = "${INC_PR}.1" +PR = "${INC_PR}.2" diff --git a/recipes/qt4/qt4-x11-free_4.5.2.bb b/recipes/qt4/qt4-x11-free_4.5.2.bb index 09f63363f0..7aebd68320 100644 --- a/recipes/qt4/qt4-x11-free_4.5.2.bb +++ b/recipes/qt4/qt4-x11-free_4.5.2.bb @@ -1,5 +1,5 @@ require qt4-x11-free.inc LICENSE = "LGPLv2.1 GPLv3" -PR = "${INC_PR}.2" +PR = "${INC_PR}.3" SRC_URI += "file://hack-out-pg_config.patch;patch=1" diff --git a/recipes/shr/ophonekitd_git.bb b/recipes/shr/ophonekitd_git.bb deleted file mode 100644 index ed561c7c75..0000000000 --- a/recipes/shr/ophonekitd_git.bb +++ /dev/null @@ -1,24 +0,0 @@ -DESCRIPTION = "Ophonekitd daemon" -HOMEPAGE = "http://shr-project.org/" -LICENSE = "GPL" -SECTION = "x11/applications" -DEPENDS += " dbus-glib libframeworkd-glib libframeworkd-phonegui sqlite3" -PV = "0.0.2+gitr${SRCREV}" -PR = "r18" - -SRC_URI = "git://git.shr-project.org/repo/shr.git;protocol=http;branch=master" -S = "${WORKDIR}/git/${PN}" - -inherit autotools - -do_install_append() { - install -d ${D}${sysconfdir}/X11/Xsession.d/ - install -d ${D}${sysconfdir}/dbus-1/system.d/ - install -d ${D}${datadir}/ophonekitd/ - install -d ${D}${localstatedir}/db - install -m 0755 ${S}/data/80ophonekitd ${D}${sysconfdir}/X11/Xsession.d/ - install -m 0755 ${S}/data/ophonekitd.conf ${D}${sysconfdir}/dbus-1/system.d/ -} - -FILES_${PN} += "${datadir} ${sysconfdir}" - diff --git a/recipes/tcltk/files/tcl-add-soname.patch b/recipes/tcltk/files/tcl-add-soname.patch index 951244327b..38762644cd 100644 --- a/recipes/tcltk/files/tcl-add-soname.patch +++ b/recipes/tcltk/files/tcl-add-soname.patch @@ -1,14 +1,19 @@ -Patch by Chris Waters removes -rpath from search flags and adds -soname -to library build options. - ---- tcl8.4-8.4.19.orig/unix/configure -+++ tcl8.4-8.4.19/unix/configure -@@ -3072,12 +3072,15 @@ +--- clean/tcl8.4.19/unix/configure 2008-04-17 21:29:49.000000000 +0100 ++++ tcl8.4.19/unix/configure 2009-11-13 11:46:36.000000000 +0000 +@@ -3065,6 +3065,7 @@ + SHLIB_CFLAGS="-fPIC" + SHLIB_LD_LIBS='${LIBS}' + SHLIB_SUFFIX=".so" ++ SHARED_LIB_SUFFIX='${VERSION}\$\{DBGX\}.so.0' + + CFLAGS_OPTIMIZE=-O2 + # egcs-2.91.66 on Redhat Linux 6.0 generates lots of warnings +@@ -3072,12 +3073,15 @@ # get rid of the warnings. #CFLAGS_OPTIMIZE="${CFLAGS_OPTIMIZE} -D__NO_STRING_INLINES -D__NO_MATH_INLINES" + # following line added by CW for Debian GNU/Linux -+ TCL_SHLIB_LD_EXTRAS="-Wl,-soname,\${TCL_LIB_FILE}.0" ++ TCL_SHLIB_LD_EXTRAS="-Wl,-soname,\${TCL_LIB_FILE}" + if test "$have_dl" = yes; then SHLIB_LD='${CC} -shared ${CFLAGS} ${LDFLAGS}' @@ -20,9 +25,26 @@ to library build options. LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS} else ac_safe=`echo "dld.h" | sed 'y%./+-%__p_%'` ---- tcl8.4-8.4.19.orig/unix/tcl.m4 -+++ tcl8.4-8.4.19/unix/tcl.m4 -@@ -1346,12 +1346,15 @@ +@@ -4299,7 +4303,7 @@ + + if test "${SHARED_BUILD}" = "1" && test "${SHLIB_SUFFIX}" != "" ; then + LIB_SUFFIX=${SHARED_LIB_SUFFIX} +- MAKE_LIB='${SHLIB_LD} -o $@ ${OBJS} ${SHLIB_LD_LIBS} ${TCL_SHLIB_LD_EXTRAS} ${TK_SHLIB_LD_EXTRAS} ${LD_SEARCH_FLAGS}' ++ MAKE_LIB='${SHLIB_LD} -o $@ ${OBJS} ${SHLIB_LD_LIBS} ${TCL_SHLIB_LD_EXTRAS} ${TK_SHLIB_LD_EXTRAS} ${LD_SEARCH_FLAGS} ; ln -s $(LIB_FILE) `basename $(LIB_FILE) .so.0`\${SHLIB_SUFFIX}' + INSTALL_LIB='$(INSTALL_LIBRARY) $(LIB_FILE) $(LIB_INSTALL_DIR)/$(LIB_FILE)' + else + LIB_SUFFIX=${UNSHARED_LIB_SUFFIX} +--- clean/tcl8.4.19/unix/tcl.m4 2008-04-17 21:29:49.000000000 +0100 ++++ tcl8.4.19/unix/tcl.m4 2009-11-13 11:53:57.000000000 +0000 +@@ -1337,6 +1337,7 @@ + SHLIB_CFLAGS="-fPIC" + SHLIB_LD_LIBS='${LIBS}' + SHLIB_SUFFIX=".so" ++ SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.so.0' + + CFLAGS_OPTIMIZE=-O2 + # egcs-2.91.66 on Redhat Linux 6.0 generates lots of warnings +@@ -1344,12 +1345,15 @@ # get rid of the warnings. #CFLAGS_OPTIMIZE="${CFLAGS_OPTIMIZE} -D__NO_STRING_INLINES -D__NO_MATH_INLINES" @@ -39,3 +61,12 @@ to library build options. LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS} else AC_CHECK_HEADER(dld.h, [ +@@ -2117,7 +2121,7 @@ + + if test "${SHARED_BUILD}" = "1" && test "${SHLIB_SUFFIX}" != "" ; then + LIB_SUFFIX=${SHARED_LIB_SUFFIX} +- MAKE_LIB='${SHLIB_LD} -o [$]@ ${OBJS} ${SHLIB_LD_LIBS} ${TCL_SHLIB_LD_EXTRAS} ${TK_SHLIB_LD_EXTRAS} ${LD_SEARCH_FLAGS}' ++ MAKE_LIB='${SHLIB_LD} -o $@ ${OBJS} ${SHLIB_LD_LIBS} ${TCL_SHLIB_LD_EXTRAS} ${TK_SHLIB_LD_EXTRAS} ${LD_SEARCH_FLAGS} ; ln -s $(LIB_FILE) `basename $(LIB_FILE) .so.0`\${SHLIB_SUFFIX}' + INSTALL_LIB='$(INSTALL_LIBRARY) $(LIB_FILE) $(LIB_INSTALL_DIR)/$(LIB_FILE)' + else + LIB_SUFFIX=${UNSHARED_LIB_SUFFIX} diff --git a/recipes/tcltk/tcl-native_8.4.19.bb b/recipes/tcltk/tcl-native_8.4.19.bb index a2d5efae42..ca8ab612fd 100644 --- a/recipes/tcltk/tcl-native_8.4.19.bb +++ b/recipes/tcltk/tcl-native_8.4.19.bb @@ -9,7 +9,7 @@ do_stage() { install -d ${STAGING_BINDIR}/ install -m 0755 tclConfig.sh ${STAGING_BINDIR} install -m 0755 tclsh ${STAGING_BINDIR}/tclsh8.4 - ln -s tclsh8.4 ${STAGING_BINDIR}/tclsh + ln -s -f tclsh8.4 ${STAGING_BINDIR}/tclsh cd .. for dir in compat generic unix do diff --git a/recipes/tcltk/tcl_8.4.19.bb b/recipes/tcltk/tcl_8.4.19.bb index e70a2c861c..dc71db9c72 100644 --- a/recipes/tcltk/tcl_8.4.19.bb +++ b/recipes/tcltk/tcl_8.4.19.bb @@ -2,7 +2,7 @@ DESCRIPTION = "Tool Command Language" LICENSE = "tcl" SECTION = "devel/tcltk" HOMEPAGE = "http://tcl.sourceforge.net" -PR = "r2" +PR = "r3" SRC_URI = "\ ${SOURCEFORGE_MIRROR}/tcl/tcl${PV}-src.tar.gz \ @@ -44,8 +44,6 @@ do_stage() { do_install() { autotools_do_install - mv libtcl8.4.so libtcl8.4.so.0 - oe_libinstall -so libtcl8.4 ${D}${libdir} ln -sf ./tclsh8.4 ${D}${bindir}/tclsh } diff --git a/recipes/udev/udev_141.bb b/recipes/udev/udev_141.bb index a0e0381549..b54b059516 100644 --- a/recipes/udev/udev_141.bb +++ b/recipes/udev/udev_141.bb @@ -6,7 +6,7 @@ LICENSE = "GPL" # Untested DEFAULT_PREFERENCE = "-1" -PR = "r13" +PR = "r15" # needed for init.d script RDEPENDS_${PN} += "udev-utils" @@ -104,4 +104,12 @@ do_stage_append() { install -m 0644 ${S}/extras/volume_id/lib/libvolume_id.h ${STAGING_INCDIR} oe_libinstall -C extras/volume_id/lib -so libvolume_id ${STAGING_LIBDIR} oe_libinstall -C udev/lib -so libudev ${STAGING_LIBDIR} + # Since we change exec_prefix above, autotools_stage_all will not see the .pc files + # When we upgrade to 145 with the path bugs fixed we can drop all this (see poky) + install -d ${STAGING_DIR_TARGET}${prefix}${libdir}/pkgconfig/ + install ${S}/extras/volume_id/lib/libvolume_id.pc ${STAGING_DIR_TARGET}${prefix}${libdir}/pkgconfig/ + install ${S}/udev/lib/libudev.pc ${STAGING_DIR_TARGET}${prefix}${libdir}/pkgconfig/ + install -d ${STAGING_DIR_TARGET}${prefix}${includedir}/ + install ${S}/extras/volume_id/lib/libvolume_id.h ${STAGING_DIR_TARGET}${prefix}${includedir}/ + install ${S}/udev/lib/libudev.h ${STAGING_DIR_TARGET}${prefix}${includedir}/ } diff --git a/recipes/vala/vala-native_git.bb b/recipes/vala/vala-native_git.bb deleted file mode 100644 index 698ad4a301..0000000000 --- a/recipes/vala/vala-native_git.bb +++ /dev/null @@ -1,11 +0,0 @@ -require vala.inc -inherit native - -DEPENDS = "glib-2.0-native" -# vala from git always needs the latest released version to compile itself -PV = "0.7.0-fso1-gitr${SRCREV}" - -SRC_URI = "\ - ${FREESMARTPHONE_GIT}/vala-lang;protocol=git;branch=pending-upstream-move \ -" -S = "${WORKDIR}/git" diff --git a/recipes/wt/wt3-3.0.0/noqt.patch b/recipes/wt/wt3-3.0.0/noqt.patch new file mode 100644 index 0000000000..48231246d3 --- /dev/null +++ b/recipes/wt/wt3-3.0.0/noqt.patch @@ -0,0 +1,19 @@ +Index: wt-3.0.0/CMakeLists.txt +=================================================================== +--- wt-3.0.0.orig/CMakeLists.txt 2009-11-12 18:50:12.087842114 +0100 ++++ wt-3.0.0/CMakeLists.txt 2009-11-12 18:50:42.023261611 +0100 +@@ -111,10 +111,10 @@ + INCLUDE(cmake/WtFindSsl.txt) + INCLUDE(cmake/WtFindMysqlpp.txt) + +-FIND_PACKAGE(Qt4) +-IF(QT_FOUND) +- INCLUDE(${QT_USE_FILE}) +-ENDIF(QT_FOUND) ++#FIND_PACKAGE(Qt4) ++#IF(QT_FOUND) ++# INCLUDE(${QT_USE_FILE}) ++#ENDIF(QT_FOUND) + + # Boost is used nearly everywhere, so we can put these here + INCLUDE_DIRECTORIES(${BOOST_INCLUDE_DIRS}) diff --git a/recipes/wt/wt3-3.0.0/wgooglemap.patch b/recipes/wt/wt3-3.0.0/wgooglemap.patch new file mode 100644 index 0000000000..6827afbbe7 --- /dev/null +++ b/recipes/wt/wt3-3.0.0/wgooglemap.patch @@ -0,0 +1,17 @@ +Index: wt-3.0.0/src/Wt/WGoogleMap.C +=================================================================== +--- wt-3.0.0.orig/src/Wt/WGoogleMap.C 2009-09-01 17:46:54.000000000 +0200 ++++ wt-3.0.0/src/Wt/WGoogleMap.C 2009-11-12 16:23:39.614976154 +0100 +@@ -26,6 +26,12 @@ + using std::min; + using std::max; + ++#if not defined(_GLIBCXX_HAVE__SINL) && not defined(acosl) ++#define cosl cos ++#define acosl acos ++#define sinl sin ++#endif ++ + #ifndef M_PI + #define M_PI 3.14159265358979323846 + #endif diff --git a/recipes/wt/wt3.inc b/recipes/wt/wt3.inc new file mode 100644 index 0000000000..1734212f63 --- /dev/null +++ b/recipes/wt/wt3.inc @@ -0,0 +1,29 @@ +DESCRIPTION = "A C++ Web Toolkit" +PRIORITY = "optional" +SECTION = "devel" +LICENSE = "GPL" +HOMEPAGE = "http://www.webtoolkit.eu/wt" +DEPENDS = "boost zlib openssl" + +INC_PR = "r0" + +# package wt3 is for wt 2.99 and wt 3.* +# the api of these versions is incompatible with 2.* + +SRC_URI = "${SOURCEFORGE_MIRROR}/witty/wt-${PV}.tar.gz \ + file://ext.patch;patch=1 \ + file://wgooglemap.patch;patch=1" + +CXXFLAGS += "-Dsinl=sin -Dcosl=cos -Dasinl=asin" + +FILES_${PN} += "${datadir}/Wt" +FILES_${PN}-dev += "${datadir}/cmake-2.*" + +S = "${WORKDIR}/wt-${PV}" + +inherit cmake + +EXTRA_OECMAKE = "-DBOOST_DIR=${STAGING_DIR_HOST}${prefix} \ + -DUseQt4=0 \ + " + diff --git a/recipes/wt/wt3/cheader.patch b/recipes/wt/wt3/cheader.patch new file mode 100644 index 0000000000..6f45b1a27d --- /dev/null +++ b/recipes/wt/wt3/cheader.patch @@ -0,0 +1,24 @@ +Index: wt-2.99.0/src/Wt/Ext/Widget.C +=================================================================== +--- wt-2.99.0.orig/src/Wt/Ext/Widget.C 2009-11-12 16:13:54.337530490 +0100 ++++ wt-2.99.0/src/Wt/Ext/Widget.C 2009-11-12 16:14:35.268780586 +0100 +@@ -16,6 +16,7 @@ + #include <iostream> + #include <sstream> + #include <cstring> ++#include <cstdio> + + namespace Wt { + +Index: wt-2.99.0/src/Wt/WAbstractItemModel.C +=================================================================== +--- wt-2.99.0.orig/src/Wt/WAbstractItemModel.C 2009-11-12 16:01:30.927610427 +0100 ++++ wt-2.99.0/src/Wt/WAbstractItemModel.C 2009-11-12 16:03:33.458430052 +0100 +@@ -6,6 +6,7 @@ + + #include <boost/lexical_cast.hpp> + #include <boost/algorithm/string/predicate.hpp> ++#include <cstdio> + + #include "Wt/WModelIndex" + #include "Wt/WAbstractItemModel" diff --git a/recipes/wt/wt3-2.99.0/ext.patch b/recipes/wt/wt3/ext.patch index 89246ebbf6..89246ebbf6 100644 --- a/recipes/wt/wt3-2.99.0/ext.patch +++ b/recipes/wt/wt3/ext.patch diff --git a/recipes/wt/wt3_2.99.0.bb b/recipes/wt/wt3_2.99.0.bb index fea28494ca..ccfbc31dd8 100644 --- a/recipes/wt/wt3_2.99.0.bb +++ b/recipes/wt/wt3_2.99.0.bb @@ -1,41 +1,10 @@ -DESCRIPTION = "A C++ Web Toolkit" -PRIORITY = "optional" -SECTION = "devel" -LICENSE = "GPL" -HOMEPAGE = "http://www.webtoolkit.eu/wt" -DEPENDS = "boost zlib openssl" -PR = "r0" +require wt3.inc -# package wt3 is for wt 2.99 and wt 3.* -# the api of these versions is incompatible with 2.* +PR = "${INC_PR}.1" -SRC_URI = "${SOURCEFORGE_MIRROR}/witty/wt-${PV}.tar.gz \ - file://src.patch;patch=1 \ - file://ext.patch;patch=1 \ - file://wgooglemap.patch;patch=1" - -CXXFLAGS += "-Dsinl=sin -Dcosl=cos -Dasinl=asin" - -FILES_${PN} += "${datadir}/Wt" -FILES_${PN}-dev += "${datadir}/cmake-2.*" - -S = "${WORKDIR}/wt-${PV}" - -inherit cmake - -STAGE_TEMP = "${WORKDIR}/temp-staging" +SRC_URI += "file://src.patch;patch=1 \ + " do_configure_append() { - ${BUILD_CXX} ${BUILD_CXXFLAGS} -o src/filetostring src/web/skeleton/FileToString.C -} - -do_stage() { - rm -rf ${STAGE_TEMP} - mkdir -p ${STAGE_TEMP} - oe_runmake DESTDIR="${STAGE_TEMP}" install - cp -pPR ${STAGE_TEMP}/${includedir}/* ${STAGING_INCDIR} - cp -pPR ${STAGE_TEMP}/${libdir}/* ${STAGING_LIBDIR} - cp -pPR ${STAGE_TEMP}/${datadir}/cmake-2.* ${STAGING_DATADIR} - rm -rf ${STAGE_TEMP} + ${BUILD_CXX} ${BUILD_CXXFLAGS} -o src/filetostring src/web/skeleton/FileToString.C } - diff --git a/recipes/wt/wt3_3.0.0.bb b/recipes/wt/wt3_3.0.0.bb new file mode 100644 index 0000000000..665590a7d4 --- /dev/null +++ b/recipes/wt/wt3_3.0.0.bb @@ -0,0 +1,6 @@ +require wt3.inc + +PR = "${INC_PR}.1" + +SRC_URI += "file://noqt.patch;patch=1" + diff --git a/recipes/xmltv/files/Makefile.PL.patch b/recipes/xmltv/files/Makefile.PL.patch new file mode 100644 index 0000000000..7acc2cbf8c --- /dev/null +++ b/recipes/xmltv/files/Makefile.PL.patch @@ -0,0 +1,14 @@ +Index: xmltv-0.5.56/Makefile.PL +=================================================================== +--- xmltv-0.5.56.orig/Makefile.PL ++++ xmltv-0.5.56/Makefile.PL +@@ -777,8 +777,7 @@ END + die; + } + +- $info->{install} = +- ask(0, $msg, not $missing); ++ $info->{install} = not $missing; + } + } + } diff --git a/recipes/xmltv/xmltv_0.5.56.bb b/recipes/xmltv/xmltv_0.5.56.bb index 70005d70f4..842ef5fbd1 100644 --- a/recipes/xmltv/xmltv_0.5.56.bb +++ b/recipes/xmltv/xmltv_0.5.56.bb @@ -1,14 +1,35 @@ DESCRIPTION="prerequisites for xmltv" PARALLEL_MAKE = "" -SRC_URI="http://downloads.sourceforge.net/xmltv/xmltv-${PV}.tar.bz2" +SRC_URI="http://downloads.sourceforge.net/xmltv/xmltv-${PV}.tar.bz2 \ + file://Makefile.PL.patch;patch=1" +RDEPENDS = "perl libxml-parser-perl libwww-perl libdate-manip-perl \ + libxml-twig-perl libxml-writer-perl libfile-slurp-perl \ + libtermreadkey-perl libarchive-zip-perl libio-zlib-perl \ + libdate-manip-perl \ + libhtml-treebuilder-perl libwww-mechanize-perl" DEPENDS = "perl libxml-parser-perl-native libwww-perl-native libdate-manip-perl-native \ libxml-twig-perl-native libxml-writer-perl-native libfile-slurp-perl-native \ - libtermreadkey-perl-native" + libtermreadkey-perl-native libarchive-zip-perl-native libio-zlib-perl-native \ + libdate-manip-perl-native \ + libhtml-treebuilder-perl-native libwww-mechanize-perl-native" -PR = "r0" +PR = "r1" -EXTRA_CPANFLAGS = "EXPATLIBPATH=${STAGING_LIBDIR} EXPATINCPATH=${STAGING_INCDIR}" +# cpan does not work, it installs things in the perl work dir iso the xmltv work dir +# root cause are bad definitions in perl/config.sh, but I don't know what they should be +# so for now commented out the cpan stuff and do the work myself. +#EXTRA_CPANFLAGS = "EXPATLIBPATH=${STAGING_LIBDIR} EXPATINCPATH=${STAGING_INCDIR}" -inherit cpan +#inherit cpan + +FILES_${PN} += "${libdir}" + +do_configure() { + perl Makefile.PL PREFIX=/usr +} + +do_install() { + oe_runmake install DESTDIR=${D} +} diff --git a/recipes/xorg-app/xterm_207.bb b/recipes/xorg-app/xterm_207.bb index f8ed913117..0f31f41de3 100644 --- a/recipes/xorg-app/xterm_207.bb +++ b/recipes/xorg-app/xterm_207.bb @@ -10,12 +10,12 @@ inherit autotools pkgconfig FILES_${PN} += " /usr/lib/X11" -#EXTRA_OERECONF = " -I${S}/xterm.m4" -EXTRA_OECONF = " --x-includes=${STAGING_INCDIR} --x-libraries=${STAGING_LIBDIR} FREETYPE_CONFIG=${STAGING_BINDIR_CROSS}/freetype-config --disable-imake" +EXTRA_OECONF = " --x-includes=${STAGING_INCDIR} \ + --x-libraries=${STAGING_LIBDIR} \ + FREETYPE_CONFIG=${STAGING_BINDIR_CROSS}/freetype-config \ + --disable-imake \ + --disable-setuid" -#do_configure_prepend () { -# mv ${S}/aclocal.m4 ${S}/xterm.m4 -#} do_configure() { sed -e "s%/usr/contrib/X11R6%${STAGING_LIBDIR}%g" -i configure diff --git a/recipes/xorg-app/xterm_251.bb b/recipes/xorg-app/xterm_251.bb new file mode 100644 index 0000000000..004679e3b7 --- /dev/null +++ b/recipes/xorg-app/xterm_251.bb @@ -0,0 +1,28 @@ +DESCRIPTION = "xterm is the standard terminal emulator for the X Window System." +SECTION = "x11/applications" +LICENSE = "MIT-X" + +DEPENDS = "libxaw xproto virtual/libx11 xextproto xext xau libxpm ncurses" + +SRC_URI = "ftp://invisible-island.net/xterm/${PN}-${PV}.tgz" + +inherit autotools pkgconfig + +FILES_${PN} += " /usr/lib/X11" + +EXTRA_OECONF = " --x-includes=${STAGING_INCDIR} \ + --x-libraries=${STAGING_LIBDIR} \ + FREETYPE_CONFIG=${STAGING_BINDIR_CROSS}/freetype-config \ + --disable-imake \ + --disable-setuid" + +do_configure() { + + sed -e "s%/usr/contrib/X11R6%${STAGING_LIBDIR}%g" -i configure + + oe_runconf +} + +do_stage() { + autotools_stage_all +} diff --git a/recipes/xorg-lib/pixman/0001-ARM-Removal-of-unused-broken-NEON-code.patch b/recipes/xorg-lib/pixman/0001-ARM-Removal-of-unused-broken-NEON-code.patch deleted file mode 100644 index 227b95e87d..0000000000 --- a/recipes/xorg-lib/pixman/0001-ARM-Removal-of-unused-broken-NEON-code.patch +++ /dev/null @@ -1,830 +0,0 @@ -From 2761591638f8c56732398b1fc6cf4bc7ca5005fd Mon Sep 17 00:00:00 2001 -From: Siarhei Siamashka <siarhei.siamashka@nokia.com> -Date: Mon, 27 Jul 2009 01:21:26 +0300 -Subject: [PATCH 1/7] ARM: Removal of unused/broken NEON code - ---- - pixman/pixman-arm-neon.c | 786 ---------------------------------------------- - 1 files changed, 0 insertions(+), 786 deletions(-) - -diff --git a/pixman/pixman-arm-neon.c b/pixman/pixman-arm-neon.c -index 0a29e50..9caef61 100644 ---- a/pixman/pixman-arm-neon.c -+++ b/pixman/pixman-arm-neon.c -@@ -1901,710 +1901,6 @@ pixman_fill_neon (uint32_t *bits, - #endif - } - --/* TODO: is there a more generic way of doing this being introduced? */ --#define NEON_SCANLINE_BUFFER_PIXELS (1024) -- --static inline void --neon_quadword_copy (void * dst, -- void * src, -- uint32_t count, /* of quadwords */ -- uint32_t trailer_count /* of bytes */) --{ -- uint8_t *t_dst = dst, *t_src = src; -- -- /* Uses aligned multi-register loads to maximise read bandwidth -- * on uncached memory such as framebuffers -- * The accesses do not have the aligned qualifiers, so that the copy -- * may convert between aligned-uncached and unaligned-cached memory. -- * It is assumed that the CPU can infer alignedness from the address. -- */ -- --#ifdef USE_GCC_INLINE_ASM -- -- asm volatile ( -- " cmp %[count], #8 \n" -- " blt 1f @ skip oversized fragments \n" -- "0: @ start with eight quadwords at a time \n" -- " sub %[count], %[count], #8 \n" -- " vld1.8 {d16, d17, d18, d19}, [%[src]]! \n" -- " vld1.8 {d20, d21, d22, d23}, [%[src]]! \n" -- " vld1.8 {d24, d25, d26, d27}, [%[src]]! \n" -- " vld1.8 {d28, d29, d30, d31}, [%[src]]! \n" -- " cmp %[count], #8 \n" -- " vst1.8 {d16, d17, d18, d19}, [%[dst]]! \n" -- " vst1.8 {d20, d21, d22, d23}, [%[dst]]! \n" -- " vst1.8 {d24, d25, d26, d27}, [%[dst]]! \n" -- " vst1.8 {d28, d29, d30, d31}, [%[dst]]! \n" -- " bge 0b \n" -- "1: @ four quadwords \n" -- " tst %[count], #4 \n" -- " beq 2f @ skip oversized fragment \n" -- " vld1.8 {d16, d17, d18, d19}, [%[src]]! \n" -- " vld1.8 {d20, d21, d22, d23}, [%[src]]! \n" -- " vst1.8 {d16, d17, d18, d19}, [%[dst]]! \n" -- " vst1.8 {d20, d21, d22, d23}, [%[dst]]! \n" -- "2: @ two quadwords \n" -- " tst %[count], #2 \n" -- " beq 3f @ skip oversized fragment \n" -- " vld1.8 {d16, d17, d18, d19}, [%[src]]! \n" -- " vst1.8 {d16, d17, d18, d19}, [%[dst]]! \n" -- "3: @ one quadword \n" -- " tst %[count], #1 \n" -- " beq 4f @ skip oversized fragment \n" -- " vld1.8 {d16, d17}, [%[src]]! \n" -- " vst1.8 {d16, d17}, [%[dst]]! \n" -- "4: @ end \n" -- -- /* Clobbered input registers marked as input/outputs */ -- : [dst] "+r" (t_dst), [src] "+r" (t_src), [count] "+r" (count) -- -- /* No unclobbered inputs */ -- : -- -- /* Clobbered vector registers */ -- : "d16", "d17", "d18", "d19", "d20", "d21", "d22", "d23", "d24", "d25", -- "d26", "d27", "d28", "d29", "d30", "d31", "cc", "memory"); -- --#else -- -- while (count >= 8) -- { -- uint8x16x4_t t1 = vld4q_u8 (t_src); -- uint8x16x4_t t2 = vld4q_u8 (t_src + sizeof(uint8x16x4_t)); -- -- t_src += sizeof(uint8x16x4_t) * 2; -- vst4q_u8 (t_dst, t1); -- vst4q_u8 (t_dst + sizeof(uint8x16x4_t), t2); -- t_dst += sizeof(uint8x16x4_t) * 2; -- count -= 8; -- } -- -- if (count & 4) -- { -- uint8x16x4_t t1 = vld4q_u8 (t_src); -- -- t_src += sizeof(uint8x16x4_t); -- vst4q_u8 (t_dst, t1); -- t_dst += sizeof(uint8x16x4_t); -- } -- -- if (count & 2) -- { -- uint8x8x4_t t1 = vld4_u8 (t_src); -- -- t_src += sizeof(uint8x8x4_t); -- vst4_u8 (t_dst, t1); -- t_dst += sizeof(uint8x8x4_t); -- } -- -- if (count & 1) -- { -- uint8x16_t t1 = vld1q_u8 (t_src); -- -- t_src += sizeof(uint8x16_t); -- vst1q_u8 (t_dst, t1); -- t_dst += sizeof(uint8x16_t); -- } -- --#endif /* !USE_GCC_INLINE_ASM */ -- -- if (trailer_count) -- { -- if (trailer_count & 8) -- { -- uint8x8_t t1 = vld1_u8 (t_src); -- -- t_src += sizeof(uint8x8_t); -- vst1_u8 (t_dst, t1); -- t_dst += sizeof(uint8x8_t); -- } -- -- if (trailer_count & 4) -- { -- *((uint32_t*) t_dst) = *((uint32_t*) t_src); -- -- t_dst += 4; -- t_src += 4; -- } -- -- if (trailer_count & 2) -- { -- *((uint16_t*) t_dst) = *((uint16_t*) t_src); -- -- t_dst += 2; -- t_src += 2; -- } -- -- if (trailer_count & 1) -- { -- *t_dst++ = *t_src++; -- } -- } --} -- --static inline void --solid_over_565_8_pix_neon (uint32_t glyph_colour, -- uint16_t *dest, -- uint8_t * in_mask, -- uint32_t dest_stride, /* bytes, not elements */ -- uint32_t mask_stride, -- uint32_t count /* 8-pixel groups */) --{ -- /* Inner loop of glyph blitter (solid colour, alpha mask) */ -- --#ifdef USE_GCC_INLINE_ASM -- -- asm volatile ( -- " vld4.8 {d20[], d21[], d22[], d23[]}, [%[glyph_colour]] @ splat solid colour components \n" -- "0: @ loop \n" -- " vld1.16 {d0, d1}, [%[dest]] @ load first pixels from framebuffer \n" -- " vld1.8 {d17}, [%[in_mask]] @ load alpha mask of glyph \n" -- " vmull.u8 q9, d17, d23 @ apply glyph colour alpha to mask \n" -- " vshrn.u16 d17, q9, #8 @ reformat it to match original mask \n" -- " vmvn d18, d17 @ we need the inverse mask for the background \n" -- " vsli.u16 q3, q0, #5 @ duplicate framebuffer blue bits \n" -- " vshrn.u16 d2, q0, #8 @ unpack red from framebuffer pixels \n" -- " vshrn.u16 d4, q0, #3 @ unpack green \n" -- " vsri.u8 d2, d2, #5 @ duplicate red bits (extend 5 to 8) \n" -- " vshrn.u16 d6, q3, #2 @ unpack extended blue (truncate 10 to 8) \n" -- " vsri.u8 d4, d4, #6 @ duplicate green bits (extend 6 to 8) \n" -- " vmull.u8 q1, d2, d18 @ apply inverse mask to background red... \n" -- " vmull.u8 q2, d4, d18 @ ...green... \n" -- " vmull.u8 q3, d6, d18 @ ...blue \n" -- " subs %[count], %[count], #1 @ decrement/test loop counter \n" -- " vmlal.u8 q1, d17, d22 @ add masked foreground red... \n" -- " vmlal.u8 q2, d17, d21 @ ...green... \n" -- " vmlal.u8 q3, d17, d20 @ ...blue \n" -- " add %[in_mask], %[in_mask], %[mask_stride] @ advance mask pointer, while we wait \n" -- " vsri.16 q1, q2, #5 @ pack green behind red \n" -- " vsri.16 q1, q3, #11 @ pack blue into pixels \n" -- " vst1.16 {d2, d3}, [%[dest]] @ store composited pixels \n" -- " add %[dest], %[dest], %[dest_stride] @ advance framebuffer pointer \n" -- " bne 0b @ next please \n" -- -- /* Clobbered registers marked as input/outputs */ -- : [dest] "+r" (dest), [in_mask] "+r" (in_mask), [count] "+r" (count) -- -- /* Inputs */ -- : [dest_stride] "r" (dest_stride), [mask_stride] "r" (mask_stride), [glyph_colour] "r" (&glyph_colour) -- -- /* Clobbers, including the inputs we modify, and potentially lots of memory */ -- : "d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7", "d17", "d18", "d19", -- "d20", "d21", "d22", "d23", "d24", "d25", "cc", "memory" -- ); -- --#else -- -- uint8x8x4_t solid_colour = vld4_dup_u8 ((uint8_t*) &glyph_colour); -- -- while (count--) -- { -- uint16x8_t pixels = vld1q_u16 (dest); -- uint8x8_t mask = vshrn_n_u16 (vmull_u8 (solid_colour.val[3], vld1_u8 (in_mask)), 8); -- uint8x8_t mask_image = vmvn_u8 (mask); -- -- uint8x8_t t_red = vshrn_n_u16 (pixels, 8); -- uint8x8_t t_green = vshrn_n_u16 (pixels, 3); -- uint8x8_t t_blue = vshrn_n_u16 (vsli_n_u8 (pixels, pixels, 5), 2); -- -- uint16x8_t s_red = vmull_u8 (vsri_n_u8 (t_red, t_red, 5), mask_image); -- uint16x8_t s_green = vmull_u8 (vsri_n_u8 (t_green, t_green, 6), mask_image); -- uint16x8_t s_blue = vmull_u8 (t_blue, mask_image); -- -- s_red = vmlal (s_red, mask, solid_colour.val[2]); -- s_green = vmlal (s_green, mask, solid_colour.val[1]); -- s_blue = vmlal (s_blue, mask, solid_colour.val[0]); -- -- pixels = vsri_n_u16 (s_red, s_green, 5); -- pixels = vsri_n_u16 (pixels, s_blue, 11); -- vst1q_u16 (dest, pixels); -- -- dest += dest_stride; -- mask += mask_stride; -- } -- --#endif --} -- --#if 0 /* this is broken currently */ --static void --neon_composite_over_n_8_0565 (pixman_implementation_t * impl, -- pixman_op_t op, -- pixman_image_t * src_image, -- pixman_image_t * mask_image, -- pixman_image_t * dst_image, -- int32_t src_x, -- int32_t src_y, -- int32_t mask_x, -- int32_t mask_y, -- int32_t dest_x, -- int32_t dest_y, -- int32_t width, -- int32_t height) --{ -- uint32_t src, srca; -- uint16_t *dst_line, *aligned_line; -- uint8_t *mask_line; -- uint32_t dst_stride, mask_stride; -- uint32_t kernel_count, copy_count, copy_tail; -- uint8_t kernel_offset, copy_offset; -- -- src = _pixman_image_get_solid (src_image, dst_image->bits.format); -- -- /* bail out if fully transparent or degenerate */ -- srca = src >> 24; -- if (src == 0) -- return; -- -- if (width == 0 || height == 0) -- return; -- -- if (width > NEON_SCANLINE_BUFFER_PIXELS) -- { -- /* split the blit, so we can use a fixed-size scanline buffer -- * TODO: there must be a more elegant way of doing this. -- */ -- int x; -- for (x = 0; x < width; x += NEON_SCANLINE_BUFFER_PIXELS) -- { -- neon_composite_over_n_8_0565 ( -- impl, op, -- src_image, mask_image, dst_image, -- src_x + x, src_y, mask_x + x, mask_y, dest_x + x, dest_y, -- (x + NEON_SCANLINE_BUFFER_PIXELS > width) ? width - x : NEON_SCANLINE_BUFFER_PIXELS, height); -- } -- -- return; -- } -- -- PIXMAN_IMAGE_GET_LINE (dst_image, dest_x, dest_y, uint16_t, dst_stride, dst_line, 1); -- PIXMAN_IMAGE_GET_LINE (mask_image, mask_x, mask_y, uint8_t, mask_stride, mask_line, 1); -- -- /* keep within minimum number of aligned quadwords on width -- * while also keeping the minimum number of columns to process -- */ -- { -- unsigned long aligned_left = (unsigned long)(dst_line) & ~0xF; -- unsigned long aligned_right = (((unsigned long)(dst_line + width)) + 0xF) & ~0xF; -- unsigned long ceiling_length = (((unsigned long) width) * sizeof(*dst_line) + 0xF) & ~0xF; -- -- /* the fast copy should be quadword aligned */ -- copy_offset = dst_line - ((uint16_t*) aligned_left); -- aligned_line = dst_line - copy_offset; -- copy_count = (uint32_t) ((aligned_right - aligned_left) >> 4); -- copy_tail = 0; -- -- if (aligned_right - aligned_left > ceiling_length) -- { -- /* unaligned routine is tightest */ -- kernel_count = (uint32_t) (ceiling_length >> 4); -- kernel_offset = copy_offset; -- } -- else -- { -- /* aligned routine is equally tight, so it is safer to align */ -- kernel_count = copy_count; -- kernel_offset = 0; -- } -- -- /* We should avoid reading beyond scanline ends for safety */ -- if (aligned_line < (dst_line - dest_x) || -- (aligned_line + (copy_count * 16 / sizeof(*dst_line))) > ((dst_line - dest_x) + dst_image->bits.width)) -- { -- /* switch to precise read */ -- copy_offset = kernel_offset = 0; -- aligned_line = dst_line; -- kernel_count = (uint32_t) (ceiling_length >> 4); -- copy_count = (width * sizeof(*dst_line)) >> 4; -- copy_tail = (width * sizeof(*dst_line)) & 0xF; -- } -- } -- -- { -- uint16_t scan_line[NEON_SCANLINE_BUFFER_PIXELS + 8]; /* deliberately not initialised */ -- uint8_t glyph_line[NEON_SCANLINE_BUFFER_PIXELS + 8]; -- int y = height; -- -- /* row-major order */ -- /* left edge, middle block, right edge */ -- for ( ; y--; mask_line += mask_stride, aligned_line += dst_stride, dst_line += dst_stride) -- { -- /* We don't want to overrun the edges of the glyph, -- * so realign the edge data into known buffers -- */ -- neon_quadword_copy (glyph_line + copy_offset, mask_line, width >> 4, width & 0xF); -- -- /* Uncached framebuffer access is really, really slow -- * if we do it piecemeal. It should be much faster if we -- * grab it all at once. One scanline should easily fit in -- * L1 cache, so this should not waste RAM bandwidth. -- */ -- neon_quadword_copy (scan_line, aligned_line, copy_count, copy_tail); -- -- /* Apply the actual filter */ -- solid_over_565_8_pix_neon ( -- src, scan_line + kernel_offset, -- glyph_line + kernel_offset, 8 * sizeof(*dst_line), -- 8, kernel_count); -- -- /* Copy the modified scanline back */ -- neon_quadword_copy (dst_line, scan_line + copy_offset, -- width >> 3, (width & 7) * 2); -- } -- } --} --#endif -- --#ifdef USE_GCC_INLINE_ASM -- --static inline void --plain_over_565_8_pix_neon (uint32_t colour, -- uint16_t *dest, -- uint32_t dest_stride, /* bytes, not elements */ -- uint32_t count /* 8-pixel groups */) --{ -- /* Inner loop for plain translucent rects -- * (solid colour without alpha mask) -- */ -- asm volatile ( -- " vld4.8 {d20[], d21[], d22[], d23[]}, [%[colour]] @ solid colour load/splat \n" -- " vmull.u8 q12, d23, d22 @ premultiply alpha red \n" -- " vmull.u8 q13, d23, d21 @ premultiply alpha green \n" -- " vmull.u8 q14, d23, d20 @ premultiply alpha blue \n" -- " vmvn d18, d23 @ inverse alpha for background \n" -- "0: @ loop\n" -- " vld1.16 {d0, d1}, [%[dest]] @ load first pixels from framebuffer \n" -- " vshrn.u16 d2, q0, #8 @ unpack red from framebuffer pixels \n" -- " vshrn.u16 d4, q0, #3 @ unpack green \n" -- " vsli.u16 q3, q0, #5 @ duplicate framebuffer blue bits \n" -- " vsri.u8 d2, d2, #5 @ duplicate red bits (extend 5 to 8) \n" -- " vsri.u8 d4, d4, #6 @ duplicate green bits (extend 6 to 8) \n" -- " vshrn.u16 d6, q3, #2 @ unpack extended blue (truncate 10 to 8) \n" -- " vmov q0, q12 @ retrieve foreground red \n" -- " vmlal.u8 q0, d2, d18 @ blend red - my kingdom for a four-operand MLA \n" -- " vmov q1, q13 @ retrieve foreground green \n" -- " vmlal.u8 q1, d4, d18 @ blend green \n" -- " vmov q2, q14 @ retrieve foreground blue \n" -- " vmlal.u8 q2, d6, d18 @ blend blue \n" -- " subs %[count], %[count], #1 @ decrement/test loop counter \n" -- " vsri.16 q0, q1, #5 @ pack green behind red \n" -- " vsri.16 q0, q2, #11 @ pack blue into pixels \n" -- " vst1.16 {d0, d1}, [%[dest]] @ store composited pixels \n" -- " add %[dest], %[dest], %[dest_stride] @ advance framebuffer pointer \n" -- " bne 0b @ next please \n" -- -- /* Clobbered registers marked as input/outputs */ -- : [dest] "+r" (dest), [count] "+r" (count) -- -- /* Inputs */ -- : [dest_stride] "r" (dest_stride), [colour] "r" (&colour) -- -- /* Clobbers, including the inputs we modify, and -- * potentially lots of memory -- */ -- : "d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7", "d18", "d19", -- "d20", "d21", "d22", "d23", "d24", "d25", "d26", "d27", "d28", "d29", -- "cc", "memory" -- ); --} -- --static void --neon_composite_over_n_0565 (pixman_implementation_t * impl, -- pixman_op_t op, -- pixman_image_t * src_image, -- pixman_image_t * mask_image, -- pixman_image_t * dst_image, -- int32_t src_x, -- int32_t src_y, -- int32_t mask_x, -- int32_t mask_y, -- int32_t dest_x, -- int32_t dest_y, -- int32_t width, -- int32_t height) --{ -- uint32_t src, srca; -- uint16_t *dst_line, *aligned_line; -- uint32_t dst_stride; -- uint32_t kernel_count, copy_count, copy_tail; -- uint8_t kernel_offset, copy_offset; -- -- src = _pixman_image_get_solid (src_image, dst_image->bits.format); -- -- /* bail out if fully transparent */ -- srca = src >> 24; -- if (src == 0) -- return; -- -- if (width == 0 || height == 0) -- return; -- -- if (width > NEON_SCANLINE_BUFFER_PIXELS) -- { -- /* split the blit, so we can use a fixed-size scanline buffer * -- * TODO: there must be a more elegant way of doing this. -- */ -- int x; -- -- for (x = 0; x < width; x += NEON_SCANLINE_BUFFER_PIXELS) -- { -- neon_composite_over_n_0565 ( -- impl, op, -- src_image, mask_image, dst_image, -- src_x + x, src_y, mask_x + x, mask_y, dest_x + x, dest_y, -- (x + NEON_SCANLINE_BUFFER_PIXELS > width) ? width - x : NEON_SCANLINE_BUFFER_PIXELS, height); -- } -- return; -- } -- -- PIXMAN_IMAGE_GET_LINE (dst_image, dest_x, dest_y, uint16_t, dst_stride, dst_line, 1); -- -- /* keep within minimum number of aligned quadwords on width -- * while also keeping the minimum number of columns to process -- */ -- { -- unsigned long aligned_left = (unsigned long)(dst_line) & ~0xF; -- unsigned long aligned_right = (((unsigned long)(dst_line + width)) + 0xF) & ~0xF; -- unsigned long ceiling_length = (((unsigned long) width) * sizeof(*dst_line) + 0xF) & ~0xF; -- -- /* the fast copy should be quadword aligned */ -- copy_offset = dst_line - ((uint16_t*) aligned_left); -- aligned_line = dst_line - copy_offset; -- copy_count = (uint32_t) ((aligned_right - aligned_left) >> 4); -- copy_tail = 0; -- -- if (aligned_right - aligned_left > ceiling_length) -- { -- /* unaligned routine is tightest */ -- kernel_count = (uint32_t) (ceiling_length >> 4); -- kernel_offset = copy_offset; -- } -- else -- { -- /* aligned routine is equally tight, so it is safer to align */ -- kernel_count = copy_count; -- kernel_offset = 0; -- } -- -- /* We should avoid reading beyond scanline ends for safety */ -- if (aligned_line < (dst_line - dest_x) || -- (aligned_line + (copy_count * 16 / sizeof(*dst_line))) > ((dst_line - dest_x) + dst_image->bits.width)) -- { -- /* switch to precise read */ -- copy_offset = kernel_offset = 0; -- aligned_line = dst_line; -- kernel_count = (uint32_t) (ceiling_length >> 4); -- copy_count = (width * sizeof(*dst_line)) >> 4; -- copy_tail = (width * sizeof(*dst_line)) & 0xF; -- } -- } -- -- { -- uint16_t scan_line[NEON_SCANLINE_BUFFER_PIXELS + 8]; /* deliberately not initialised */ -- -- /* row-major order */ -- /* left edge, middle block, right edge */ -- for ( ; height--; aligned_line += dst_stride, dst_line += dst_stride) -- { -- /* Uncached framebuffer access is really, really slow if we do it piecemeal. -- * It should be much faster if we grab it all at once. -- * One scanline should easily fit in L1 cache, so this should -- * not waste RAM bandwidth. -- */ -- neon_quadword_copy (scan_line, aligned_line, copy_count, copy_tail); -- -- /* Apply the actual filter */ -- plain_over_565_8_pix_neon ( -- src, scan_line + kernel_offset, 8 * sizeof(*dst_line), kernel_count); -- -- /* Copy the modified scanline back */ -- neon_quadword_copy ( -- dst_line, scan_line + copy_offset, width >> 3, (width & 7) * 2); -- } -- } --} -- --static inline void --ARGB8_over_565_8_pix_neon (uint32_t *src, -- uint16_t *dest, -- uint32_t src_stride, /* bytes, not elements */ -- uint32_t count /* 8-pixel groups */) --{ -- asm volatile ( -- "0: @ loop\n" -- " pld [%[src], %[src_stride]] @ preload from next scanline \n" -- " vld1.16 {d0, d1}, [%[dest]] @ load pixels from framebuffer \n" -- " vld4.8 {d20, d21, d22, d23},[%[src]]! @ load source image pixels \n" -- " vsli.u16 q3, q0, #5 @ duplicate framebuffer blue bits \n" -- " vshrn.u16 d2, q0, #8 @ unpack red from framebuffer pixels \n" -- " vshrn.u16 d4, q0, #3 @ unpack green \n" -- " vmvn d18, d23 @ we need the inverse alpha for the background \n" -- " vsri.u8 d2, d2, #5 @ duplicate red bits (extend 5 to 8) \n" -- " vshrn.u16 d6, q3, #2 @ unpack extended blue (truncate 10 to 8) \n" -- " vsri.u8 d4, d4, #6 @ duplicate green bits (extend 6 to 8) \n" -- " vmull.u8 q1, d2, d18 @ apply inverse alpha to background red... \n" -- " vmull.u8 q2, d4, d18 @ ...green... \n" -- " vmull.u8 q3, d6, d18 @ ...blue \n" -- " subs %[count], %[count], #1 @ decrement/test loop counter \n" -- " vmlal.u8 q1, d23, d22 @ add blended foreground red... \n" -- " vmlal.u8 q2, d23, d21 @ ...green... \n" -- " vmlal.u8 q3, d23, d20 @ ...blue \n" -- " vsri.16 q1, q2, #5 @ pack green behind red \n" -- " vsri.16 q1, q3, #11 @ pack blue into pixels \n" -- " vst1.16 {d2, d3}, [%[dest]]! @ store composited pixels \n" -- " bne 0b @ next please \n" -- -- /* Clobbered registers marked as input/outputs */ -- : [dest] "+r" (dest), [src] "+r" (src), [count] "+r" (count) -- -- /* Inputs */ -- : [src_stride] "r" (src_stride) -- -- /* Clobbers, including the inputs we modify, and potentially lots of memory */ -- : "d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7", "d17", "d18", "d20", -- "d21", "d22", "d23", "cc", "memory" -- ); --} -- --static void --neon_composite_over_8888_0565 (pixman_implementation_t * impl, -- pixman_op_t op, -- pixman_image_t * src_image, -- pixman_image_t * mask_image, -- pixman_image_t * dst_image, -- int32_t src_x, -- int32_t src_y, -- int32_t mask_x, -- int32_t mask_y, -- int32_t dest_x, -- int32_t dest_y, -- int32_t width, -- int32_t height) --{ -- uint32_t *src_line; -- uint16_t *dst_line, *aligned_line; -- uint32_t dst_stride, src_stride; -- uint32_t kernel_count, copy_count, copy_tail; -- uint8_t kernel_offset, copy_offset; -- -- /* we assume mask is opaque -- * so the only alpha to deal with is embedded in src -- */ -- if (width > NEON_SCANLINE_BUFFER_PIXELS) -- { -- /* split the blit, so we can use a fixed-size scanline buffer */ -- int x; -- for (x = 0; x < width; x += NEON_SCANLINE_BUFFER_PIXELS) -- { -- neon_composite_over_8888_0565 ( -- impl, op, -- src_image, mask_image, dst_image, -- src_x + x, src_y, mask_x + x, mask_y, dest_x + x, dest_y, -- (x + NEON_SCANLINE_BUFFER_PIXELS > width) ? width - x : NEON_SCANLINE_BUFFER_PIXELS, height); -- } -- return; -- } -- -- PIXMAN_IMAGE_GET_LINE (dst_image, dest_x, dest_y, uint16_t, dst_stride, dst_line, 1); -- PIXMAN_IMAGE_GET_LINE (src_image, src_x, src_y, uint32_t, src_stride, src_line, 1); -- -- /* keep within minimum number of aligned quadwords on width -- * while also keeping the minimum number of columns to process -- */ -- { -- unsigned long aligned_left = (unsigned long)(dst_line) & ~0xF; -- unsigned long aligned_right = (((unsigned long)(dst_line + width)) + 0xF) & ~0xF; -- unsigned long ceiling_length = (((unsigned long) width) * sizeof(*dst_line) + 0xF) & ~0xF; -- -- /* the fast copy should be quadword aligned */ -- copy_offset = dst_line - ((uint16_t*) aligned_left); -- aligned_line = dst_line - copy_offset; -- copy_count = (uint32_t) ((aligned_right - aligned_left) >> 4); -- copy_tail = 0; -- -- if (aligned_right - aligned_left > ceiling_length) -- { -- /* unaligned routine is tightest */ -- kernel_count = (uint32_t) (ceiling_length >> 4); -- kernel_offset = copy_offset; -- } -- else -- { -- /* aligned routine is equally tight, so it is safer to align */ -- kernel_count = copy_count; -- kernel_offset = 0; -- } -- -- /* We should avoid reading beyond scanline ends for safety */ -- if (aligned_line < (dst_line - dest_x) || -- (aligned_line + (copy_count * 16 / sizeof(*dst_line))) > ((dst_line - dest_x) + dst_image->bits.width)) -- { -- /* switch to precise read */ -- copy_offset = kernel_offset = 0; -- aligned_line = dst_line; -- kernel_count = (uint32_t) (ceiling_length >> 4); -- copy_count = (width * sizeof(*dst_line)) >> 4; -- copy_tail = (width * sizeof(*dst_line)) & 0xF; -- } -- } -- -- /* Preload the first input scanline */ -- { -- uint8_t *src_ptr = (uint8_t*) src_line; -- uint32_t count = (width + 15) / 16; -- --#ifdef USE_GCC_INLINE_ASM -- asm volatile ( -- "0: @ loop \n" -- " subs %[count], %[count], #1 \n" -- " pld [%[src]] \n" -- " add %[src], %[src], #64 \n" -- " bgt 0b \n" -- -- /* Clobbered input registers marked as input/outputs */ -- : [src] "+r" (src_ptr), [count] "+r" (count) -- : /* no unclobbered inputs */ -- : "cc" -- ); --#else -- do -- { -- __pld (src_ptr); -- src_ptr += 64; -- } -- while (--count); --#endif -- } -- -- { -- uint16_t scan_line[NEON_SCANLINE_BUFFER_PIXELS + 8]; /* deliberately not initialised */ -- -- /* row-major order */ -- /* left edge, middle block, right edge */ -- for ( ; height--; src_line += src_stride, aligned_line += dst_stride) -- { -- /* Uncached framebuffer access is really, really slow if we do -- * it piecemeal. It should be much faster if we grab it all at -- * once. One scanline should easily fit in L1 cache, so this -- * should not waste RAM bandwidth. -- */ -- neon_quadword_copy (scan_line, aligned_line, copy_count, copy_tail); -- -- /* Apply the actual filter */ -- ARGB8_over_565_8_pix_neon ( -- src_line, scan_line + kernel_offset, -- src_stride * sizeof(*src_line), kernel_count); -- -- /* Copy the modified scanline back */ -- neon_quadword_copy (dst_line, -- scan_line + copy_offset, -- width >> 3, (width & 7) * 2); -- } -- } --} -- --#endif /* USE_GCC_INLINE_ASM */ -- - static const pixman_fast_path_t arm_neon_fast_path_array[] = - { - { PIXMAN_OP_ADD, PIXMAN_solid, PIXMAN_a8, PIXMAN_a8, neon_composite_add_n_8_8, 0 }, -@@ -2618,12 +1914,6 @@ static const pixman_fast_path_t arm_neon_fast_path_array[] = - #ifdef USE_GCC_INLINE_ASM - { PIXMAN_OP_SRC, PIXMAN_r5g6b5, PIXMAN_null, PIXMAN_r5g6b5, neon_composite_src_16_16, 0 }, - { PIXMAN_OP_SRC, PIXMAN_b5g6r5, PIXMAN_null, PIXMAN_b5g6r5, neon_composite_src_16_16, 0 }, --#if 0 /* this code has some bugs */ -- { PIXMAN_OP_OVER, PIXMAN_solid, PIXMAN_null, PIXMAN_r5g6b5, neon_composite_over_n_0565, 0 }, -- { PIXMAN_OP_OVER, PIXMAN_solid, PIXMAN_null, PIXMAN_b5g6r5, neon_composite_over_n_0565, 0 }, -- { PIXMAN_OP_OVER, PIXMAN_a8r8g8b8, PIXMAN_null, PIXMAN_r5g6b5, neon_composite_over_8888_0565, 0 }, -- { PIXMAN_OP_OVER, PIXMAN_a8b8g8r8, PIXMAN_null, PIXMAN_b5g6r5, neon_composite_over_8888_0565, 0 }, --#endif - #endif - { PIXMAN_OP_OVER, PIXMAN_a8r8g8b8, PIXMAN_null, PIXMAN_a8r8g8b8, neon_composite_over_8888_8888, 0 }, - { PIXMAN_OP_OVER, PIXMAN_a8r8g8b8, PIXMAN_null, PIXMAN_x8r8g8b8, neon_composite_over_8888_8888, 0 }, -@@ -2674,79 +1964,6 @@ arm_neon_composite (pixman_implementation_t *imp, - } - - static pixman_bool_t --pixman_blt_neon (void *src_bits, -- void *dst_bits, -- int src_stride, -- int dst_stride, -- int src_bpp, -- int dst_bpp, -- int src_x, -- int src_y, -- int dst_x, -- int dst_y, -- int width, -- int height) --{ -- if (!width || !height) -- return TRUE; -- -- /* accelerate only straight copies involving complete bytes */ -- if (src_bpp != dst_bpp || (src_bpp & 7)) -- return FALSE; -- -- { -- uint32_t bytes_per_pixel = src_bpp >> 3; -- uint32_t byte_width = width * bytes_per_pixel; -- /* parameter is in words for some reason */ -- int32_t src_stride_bytes = src_stride * 4; -- int32_t dst_stride_bytes = dst_stride * 4; -- uint8_t *src_bytes = ((uint8_t*) src_bits) + -- src_y * src_stride_bytes + src_x * bytes_per_pixel; -- uint8_t *dst_bytes = ((uint8_t*) dst_bits) + -- dst_y * dst_stride_bytes + dst_x * bytes_per_pixel; -- uint32_t quadword_count = byte_width / 16; -- uint32_t offset = byte_width % 16; -- -- while (height--) -- { -- neon_quadword_copy (dst_bytes, src_bytes, quadword_count, offset); -- src_bytes += src_stride_bytes; -- dst_bytes += dst_stride_bytes; -- } -- } -- -- return TRUE; --} -- --static pixman_bool_t --arm_neon_blt (pixman_implementation_t *imp, -- uint32_t * src_bits, -- uint32_t * dst_bits, -- int src_stride, -- int dst_stride, -- int src_bpp, -- int dst_bpp, -- int src_x, -- int src_y, -- int dst_x, -- int dst_y, -- int width, -- int height) --{ -- if (pixman_blt_neon ( -- src_bits, dst_bits, src_stride, dst_stride, src_bpp, dst_bpp, -- src_x, src_y, dst_x, dst_y, width, height)) -- { -- return TRUE; -- } -- -- return _pixman_implementation_blt ( -- imp->delegate, -- src_bits, dst_bits, src_stride, dst_stride, src_bpp, dst_bpp, -- src_x, src_y, dst_x, dst_y, width, height); --} -- --static pixman_bool_t - arm_neon_fill (pixman_implementation_t *imp, - uint32_t * bits, - int stride, -@@ -2771,9 +1988,6 @@ _pixman_implementation_create_arm_neon (void) - pixman_implementation_t *imp = _pixman_implementation_create (general); - - imp->composite = arm_neon_composite; --#if 0 /* this code has some bugs */ -- imp->blt = arm_neon_blt; --#endif - imp->fill = arm_neon_fill; - - return imp; --- -1.6.2.4 - diff --git a/recipes/xorg-lib/pixman/0002-ARM-Introduction-of-the-new-framework-for-NEON-fast.patch b/recipes/xorg-lib/pixman/0002-ARM-Introduction-of-the-new-framework-for-NEON-fast.patch deleted file mode 100644 index af0a8aa7a0..0000000000 --- a/recipes/xorg-lib/pixman/0002-ARM-Introduction-of-the-new-framework-for-NEON-fast.patch +++ /dev/null @@ -1,1061 +0,0 @@ -From d9d9173581331a3bf7e5d123db32025588b7f044 Mon Sep 17 00:00:00 2001 -From: Siarhei Siamashka <siarhei.siamashka@nokia.com> -Date: Sat, 10 Oct 2009 00:20:51 +0300 -Subject: [PATCH 2/7] ARM: Introduction of the new framework for NEON fast path optimizations - -GNU assembler and its macro preprocessor is now used to generate -NEON optimized functions from a common template. This automatically -takes care of nuisances like ensuring optimal alignment, dealing with -leading/trailing pixels, doing prefetch, etc. - -As the first use for this framework, this commit also includes an -implementation of pixman_composite_over_8888_0565_asm_neon function. ---- - configure.ac | 1 + - pixman/Makefile.am | 4 +- - pixman/pixman-arm-neon-asm.S | 309 +++++++++++++++++++++ - pixman/pixman-arm-neon-asm.h | 620 ++++++++++++++++++++++++++++++++++++++++++ - pixman/pixman-arm-neon.c | 55 ++++ - 5 files changed, 988 insertions(+), 1 deletions(-) - create mode 100644 pixman/pixman-arm-neon-asm.S - create mode 100644 pixman/pixman-arm-neon-asm.h - -diff --git a/configure.ac b/configure.ac -index c548174..522af15 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -71,6 +71,7 @@ AC_CANONICAL_HOST - test_CFLAGS=${CFLAGS+set} # We may override autoconf default CFLAGS. - - AC_PROG_CC -+AM_PROG_AS - AC_PROG_LIBTOOL - AC_CHECK_FUNCS([getisax]) - AC_C_BIGENDIAN -diff --git a/pixman/Makefile.am b/pixman/Makefile.am -index 6020623..2543c6a 100644 ---- a/pixman/Makefile.am -+++ b/pixman/Makefile.am -@@ -109,7 +109,9 @@ endif - if USE_ARM_NEON - noinst_LTLIBRARIES += libpixman-arm-neon.la - libpixman_arm_neon_la_SOURCES = \ -- pixman-arm-neon.c -+ pixman-arm-neon.c \ -+ pixman-arm-neon-asm.S \ -+ pixman-arm-neon-asm.h - libpixman_arm_neon_la_CFLAGS = $(DEP_CFLAGS) $(ARM_NEON_CFLAGS) - libpixman_arm_neon_la_LIBADD = $(DEP_LIBS) - libpixman_1_la_LIBADD += libpixman-arm-neon.la -diff --git a/pixman/pixman-arm-neon-asm.S b/pixman/pixman-arm-neon-asm.S -new file mode 100644 -index 0000000..843899f ---- /dev/null -+++ b/pixman/pixman-arm-neon-asm.S -@@ -0,0 +1,309 @@ -+/* -+ * Copyright © 2009 Nokia Corporation -+ * -+ * Permission to use, copy, modify, distribute, and sell this software and its -+ * documentation for any purpose is hereby granted without fee, provided that -+ * the above copyright notice appear in all copies and that both that -+ * copyright notice and this permission notice appear in supporting -+ * documentation, and that the name of Nokia Corporation not be used in -+ * advertising or publicity pertaining to distribution of the software without -+ * specific, written prior permission. Nokia Corporation makes no -+ * representations about the suitability of this software for any purpose. -+ * It is provided "as is" without express or implied warranty. -+ * -+ * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS -+ * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND -+ * FITNESS, IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY -+ * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN -+ * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING -+ * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS -+ * SOFTWARE. -+ * -+ * Author: Siarhei Siamashka (siarhei.siamashka@nokia.com) -+ */ -+ -+/* Prevent the stack from becoming executable for no reason... */ -+#if defined(__linux__) && defined(__ELF__) -+.section .note.GNU-stack,"",%progbits -+#endif -+ -+ .text -+ .fpu neon -+ .altmacro -+ -+#include "pixman-arm-neon-asm.h" -+ -+/* -+ * This file contains implementations of NEON optimized pixel processing -+ * functions functions. There is no full and detailed tutorial, but some -+ * functions (those which are exposing some new or interesting features) -+ * are extensively commented and can be used as examples. -+ * -+ * You may want to have a look at the following functions: -+ * - pixman_composite_over_8888_0565_asm_neon -+ */ -+ -+/* -+ * Implementation of pixman_composite_over_8888_0565_asm_neon -+ * -+ * This function takes a8r8g8b8 source buffer, r5g6b5 destination buffer and -+ * performs OVER compositing operation. Function fast_composite_over_8888_0565 -+ * from pixman-fast-path.c does the same in C and can be used as a reference. -+ * -+ * First we need to have some NEON assembly code which can do the actual -+ * operation on the pixels and provide it to the template macro -+ * -+ * Template macro quite conveniently takes care of all the necessary code for -+ * memory reading and writing (including quite tricky cases of handling -+ * unaligned leading/trailing pixels), so we only need to deal with the data -+ * in NEON registers. -+ * -+ * NEON registers allocation in general is recommented to be the following: -+ * d0, d1, d2, d3 - contain loaded source pixel data -+ * d4, d5, d6, d7 - contain loaded destination pixels (if they are needed) -+ * d24, d25, d26, d27 - contain loading mask pixel data (if mask is used) -+ * d28, d29, d30, d31 - place for storing the result (destination pixels) -+ * -+ * As can be seen above, four 64-bit NEON registers are used for keeping -+ * intermediate pixel data and up to 8 pixels can be processed in one step -+ * for 32bpp formats (16 pixels for 16bpp, 32 pixels for 8bpp). -+ * -+ * This particular function uses the following allocation: -+ * d0, d1, d2, d3 - contain loaded source pixel data -+ * d4, d5 - contain loaded destination pixels (they are needed) -+ * d28, d29 - place for storing the result (destination pixels) -+ */ -+ -+/* -+ * Step one. We need to have some code to do some arithmetics on pixel data. -+ * This is implemented as a pair of macros: '*_head' and '*_tail'. When used -+ * back-to-back, they take pixel data from {d0, d1, d2, d3} and {d4, d5}, -+ * perform all the needed calculations and write the result to {d28, d29}. -+ * The rationale for having two macros and not just one will be explained -+ * later. In practice, any single monolitic function which does the work can -+ * be split into two parts in any arbitrary way without affecting correctness. -+ * -+ * There is one special trick here too. Common template macro already makes -+ * our life a bit easier by doing R, G, B, A color components deinterleaving -+ * for 32bpp pixel formats. So it means that instead of having 8 packed -+ * pixels in {d0, d1, d2, d3} registers, we actually use d0 register for -+ * blue channel (a vector of eight 8-bit values), d1 register for green, -+ * d2 for red and d3 for alpha. There is no magic and simple conversion -+ * can be done with a few NEON instructions. -+ * -+ * Packed to planar conversion: -+ * vuzp.8 d0, d1 -+ * vuzp.8 d2, d3 -+ * vuzp.8 d1, d3 -+ * vuzp.8 d0, d2 -+ * -+ * Planar to packed conversion: -+ * vzip.8 d0, d2 -+ * vzip.8 d1, d3 -+ * vzip.8 d2, d3 -+ * vzip.8 d0, d1 -+ * -+ * Pixel can be loaded directly in planar format using VLD4.8 NEON -+ * instruction. But it is 1 cycle slower than VLD1.32 and sometimes -+ * code can be scheduled so that four extra VUZP.8 after VLD1.32 may -+ * be dual-issued with the other instructions resulting in overal -+ * 1 cycle improvement. -+ * -+ * But anyway, here is the code: -+ */ -+.macro pixman_composite_over_8888_0565_process_pixblock_head -+ /* convert 8 r5g6b5 pixel data from {d4, d5} to planar 8-bit format -+ and put data into d6 - red, d7 - green, d30 - blue */ -+ vshrn.u16 d6, q2, #8 -+ vshrn.u16 d7, q2, #3 -+ vsli.u16 q2, q2, #5 -+ vsri.u8 d6, d6, #5 -+ vmvn.8 d3, d3 /* invert source alpha */ -+ vsri.u8 d7, d7, #6 -+ vshrn.u16 d30, q2, #2 -+ /* now do alpha blending, storing results in 8-bit planar format -+ into d16 - red, d19 - green, d18 - blue */ -+ vmull.u8 q10, d3, d6 -+ vmull.u8 q11, d3, d7 -+ vmull.u8 q12, d3, d30 -+ vrshr.u16 q13, q10, #8 -+ vrshr.u16 q3, q11, #8 -+ vrshr.u16 q15, q12, #8 -+ vraddhn.u16 d20, q10, q13 -+ vraddhn.u16 d23, q11, q3 -+ vraddhn.u16 d22, q12, q15 -+.endm -+ -+.macro pixman_composite_over_8888_0565_process_pixblock_tail -+ /* ... continue alpha blending */ -+ vqadd.u8 d16, d2, d20 -+ vqadd.u8 q9, q0, q11 -+ /* convert the result to r5g6b5 and store it into {d28, d29} */ -+ vshll.u8 q14, d16, #8 -+ vshll.u8 q8, d19, #8 -+ vshll.u8 q9, d18, #8 -+ vsri.u16 q14, q8, #5 -+ vsri.u16 q14, q9, #11 -+.endm -+ -+/* -+ * OK, now we got almost everything that we need. Using the above two -+ * macros, the work can be done right. But now we want to optimize -+ * it a bit. ARM Cortex-A8 is an in-order core, and benefits really -+ * a lot from good code scheduling and software pipelining. -+ * -+ * Let's construct some code, which will run in the core main loop. -+ * Some pseudo-code of the main loop will look like this: -+ * head -+ * while (...) { -+ * tail -+ * head -+ * } -+ * tail -+ * -+ * It may look a bit weird, but this setup allows to hide instruction -+ * latencies better and also utilize dual-issue capability more efficiently. -+ * -+ * So what we need now is a '*_tail_head' macro, which will be used -+ * in the core main loop. A trivial straightforward implementation -+ * of this macro would look like this: -+ * -+ * pixman_composite_over_8888_0565_process_pixblock_tail -+ * vst1.16 {d28, d29}, [DST_W, :128]! -+ * vld1.16 {d4, d5}, [DST_R, :128]! -+ * vld4.32 {d0, d1, d2, d3}, [SRC]! -+ * pixman_composite_over_8888_0565_process_pixblock_head -+ * cache_preload 8, 8 -+ * -+ * Now it also got some VLD/VST instructions. We simply can't move from -+ * processing one block of pixels to the other one with just arithmetics. -+ * The previously processed data needs to be written to memory and new -+ * data needs to be fetched. Fortunately, this main loop does not deal -+ * with partial leading/trailing pixels and can load/store a full block -+ * of pixels in a bulk. Additionally, destination buffer is 16 bytes -+ * aligned here (which is good for performance). -+ * -+ * New things here are DST_R, DST_W, SRC and MASK identifiers. These -+ * are the aliases for ARM registers which are used as pointers for -+ * accessing data. We maintain separate pointers for reading and writing -+ * destination buffer. -+ * -+ * Another new thing is 'cache_preload' macro. It is used for prefetching -+ * data into CPU cache and improve performance when dealing with large -+ * images which are far larger than cache size. It uses one argument -+ * (actually two, but they need to be the same here) - number of pixels -+ * in a block. Looking into 'pixman-arm-neon-asm.h' can provide some -+ * details about this macro. Moreover, if good performance is needed -+ * the code from this macro needs to be copied into '*_tail_head' macro -+ * and mixed with the rest of code for optimal instructions scheduling. -+ * We are actually doing it below. -+ * -+ * Now after all the explanations, here is the optimized code. -+ * Different instruction streams (originaling from '*_head', '*_tail' -+ * and 'cache_preload' macro) use different indentation levels for -+ * better readability. Actually taking the code from one of these -+ * indentation levels and ignoring a few VLD/VST instructions would -+ * result in exactly the code from '*_head', '*_tail' or 'cache_preload' -+ * macro! -+ */ -+ -+#if 1 -+ -+.macro pixman_composite_over_8888_0565_process_pixblock_tail_head -+ vqadd.u8 d16, d2, d20 -+ vld1.16 {d4, d5}, [DST_R, :128]! -+ vqadd.u8 q9, q0, q11 -+ vshrn.u16 d6, q2, #8 -+ vld4.8 {d0, d1, d2, d3}, [SRC]! -+ vshrn.u16 d7, q2, #3 -+ vsli.u16 q2, q2, #5 -+ vshll.u8 q14, d16, #8 -+ add PF_X, PF_X, #8 -+ vshll.u8 q8, d19, #8 -+ tst PF_CTL, #0xF -+ vsri.u8 d6, d6, #5 -+ addne PF_X, PF_X, #8 -+ vmvn.8 d3, d3 -+ subne PF_CTL, PF_CTL, #1 -+ vsri.u8 d7, d7, #6 -+ vshrn.u16 d30, q2, #2 -+ vmull.u8 q10, d3, d6 -+ pld [PF_SRC, PF_X, lsl #src_bpp_shift] -+ vmull.u8 q11, d3, d7 -+ vmull.u8 q12, d3, d30 -+ pld [PF_DST, PF_X, lsl #dst_bpp_shift] -+ vsri.u16 q14, q8, #5 -+ cmp PF_X, ORIG_W -+ vshll.u8 q9, d18, #8 -+ vrshr.u16 q13, q10, #8 -+ subge PF_X, PF_X, ORIG_W -+ vrshr.u16 q3, q11, #8 -+ vrshr.u16 q15, q12, #8 -+ subges PF_CTL, PF_CTL, #0x10 -+ vsri.u16 q14, q9, #11 -+ ldrgeb DUMMY, [PF_SRC, SRC_STRIDE, lsl #src_bpp_shift]! -+ vraddhn.u16 d20, q10, q13 -+ vraddhn.u16 d23, q11, q3 -+ ldrgeb DUMMY, [PF_DST, DST_STRIDE, lsl #dst_bpp_shift]! -+ vraddhn.u16 d22, q12, q15 -+ vst1.16 {d28, d29}, [DST_W, :128]! -+.endm -+ -+#else -+ -+/* If we did not care much about the performance, we would just use this... */ -+.macro pixman_composite_over_8888_0565_process_pixblock_tail_head -+ pixman_composite_over_8888_0565_process_pixblock_tail -+ vst1.16 {d28, d29}, [DST_W, :128]! -+ vld1.16 {d4, d5}, [DST_R, :128]! -+ vld4.32 {d0, d1, d2, d3}, [SRC]! -+ pixman_composite_over_8888_0565_process_pixblock_head -+ cache_preload 8, 8 -+.endm -+ -+#endif -+ -+/* -+ * And now the final part. We are using 'generate_composite_function' macro -+ * to put all the stuff together. We are specifying the name of the function -+ * which we want to get, number of bits per pixel for the source, mask and -+ * destination (0 if unused, like mask in this case). Next come some bit -+ * flags: -+ * FLAG_DST_READWRITE - tells that the destination buffer is both read -+ * and written, for write-only buffer we would use -+ * FLAG_DST_WRITEONLY flag instead -+ * FLAG_DEINTERLEAVE_32BPP - tells that we prefer to work with planar data -+ * and separate color channels for 32bpp format. -+ * The next things are: -+ * - the number of pixels processed per iteration (8 in this case, because -+ * that' the maximum what can fit into four 64-bit NEON registers). -+ * - prefetch distance, measured in pixel blocks. In this case it is 5 times -+ * by 8 pixels. That would be 40 pixels, or up to 160 bytes. Optimal -+ * prefetch distance can be selected by running some benchmarks. -+ * -+ * After that we specify some macros, these are 'default_init', -+ * 'default_cleanup' (it is possible to have custom init/cleanup to be -+ * able to save/restore some extra NEON registers like d8-d15 or do -+ * anything else) followed by -+ * 'pixman_composite_over_8888_0565_process_pixblock_head', -+ * 'pixman_composite_over_8888_0565_process_pixblock_tail' and -+ * 'pixman_composite_over_8888_0565_process_pixblock_tail_head' -+ * which we got implemented above. -+ * -+ * The last part is the NEON registers allocation scheme. -+ */ -+generate_composite_function \ -+ pixman_composite_over_8888_0565_asm_neon, 32, 0, 16, \ -+ FLAG_DST_READWRITE | FLAG_DEINTERLEAVE_32BPP, \ -+ 8, /* number of pixels, processed in a single block */ \ -+ 5, /* prefetch distance */ \ -+ default_init, \ -+ default_cleanup, \ -+ pixman_composite_over_8888_0565_process_pixblock_head, \ -+ pixman_composite_over_8888_0565_process_pixblock_tail, \ -+ pixman_composite_over_8888_0565_process_pixblock_tail_head, \ -+ 28, /* dst_w_basereg */ \ -+ 4, /* dst_r_basereg */ \ -+ 0, /* src_basereg */ \ -+ 24 /* mask_basereg */ -diff --git a/pixman/pixman-arm-neon-asm.h b/pixman/pixman-arm-neon-asm.h -new file mode 100644 -index 0000000..d276ab9 ---- /dev/null -+++ b/pixman/pixman-arm-neon-asm.h -@@ -0,0 +1,620 @@ -+/* -+ * Copyright © 2009 Nokia Corporation -+ * -+ * Permission to use, copy, modify, distribute, and sell this software and its -+ * documentation for any purpose is hereby granted without fee, provided that -+ * the above copyright notice appear in all copies and that both that -+ * copyright notice and this permission notice appear in supporting -+ * documentation, and that the name of Nokia Corporation not be used in -+ * advertising or publicity pertaining to distribution of the software without -+ * specific, written prior permission. Nokia Corporation makes no -+ * representations about the suitability of this software for any purpose. -+ * It is provided "as is" without express or implied warranty. -+ * -+ * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS -+ * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND -+ * FITNESS, IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY -+ * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN -+ * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING -+ * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS -+ * SOFTWARE. -+ * -+ * Author: Siarhei Siamashka (siarhei.siamashka@nokia.com) -+ */ -+ -+/* -+ * This file contains a macro ('generate_composite_function') which can -+ * construct 2D image processing functions, based on a common template. -+ * Any combinations of source, destination and mask images with 8bpp, -+ * 16bpp, 32bpp color formats are supported. -+ * -+ * This macro takes care of: -+ * - handling of leading and trailing unaligned pixels -+ * - doing most of the work related to L2 cache preload -+ * - encourages the use of software pipelining for better instructions -+ * scheduling -+ * -+ * The user of this macro has to provide some configuration parameters -+ * (bit depths for the images, prefetch distance, etc.) and a set of -+ * macros, which should implement basic code chunks responsible for -+ * pixels processing. See 'pixman-arm-neon-asm.S' file for the usage -+ * examples. -+ * -+ * TODO: -+ * - support for 24bpp formats -+ * - try overlapped pixel method (from Ian Rickards) when processing -+ * exactly two blocks of pixels -+ */ -+ -+.set FLAG_DST_WRITEONLY, 0 -+.set FLAG_DST_READWRITE, 1 -+.set FLAG_DEINTERLEAVE_32BPP, 2 -+ -+/* -+ * It is possible to set this to 0 and improve performance a bit if unaligned -+ * memory accesses are supported -+ */ -+#define RESPECT_STRICT_ALIGNMENT 1 -+ -+/* -+ * Definitions of supplementary pixld/pixst macros (for partial load/store of -+ * pixel data) -+ */ -+ -+.macro pixldst1 op, elem_size, reg1, mem_operand, abits -+.if abits > 0 -+ op&.&elem_size {d®1}, [&mem_operand&, :&abits&]! -+.else -+ op&.&elem_size {d®1}, [&mem_operand&]! -+.endif -+.endm -+ -+.macro pixldst2 op, elem_size, reg1, reg2, mem_operand, abits -+.if abits > 0 -+ op&.&elem_size {d®1, d®2}, [&mem_operand&, :&abits&]! -+.else -+ op&.&elem_size {d®1, d®2}, [&mem_operand&]! -+.endif -+.endm -+ -+.macro pixldst4 op, elem_size, reg1, reg2, reg3, reg4, mem_operand, abits -+.if abits > 0 -+ op&.&elem_size {d®1, d®2, d®3, d®4}, [&mem_operand&, :&abits&]! -+.else -+ op&.&elem_size {d®1, d®2, d®3, d®4}, [&mem_operand&]! -+.endif -+.endm -+ -+.macro pixldst0 op, elem_size, reg1, idx, mem_operand, abits -+ op&.&elem_size {d®1[idx]}, [&mem_operand&]! -+.endm -+ -+.macro pixldst numbytes, op, elem_size, basereg, mem_operand, abits -+.if numbytes == 32 -+ pixldst4 op, elem_size, %(basereg+4), %(basereg+5), \ -+ %(basereg+6), %(basereg+7), mem_operand, abits -+.elseif numbytes == 16 -+ pixldst2 op, elem_size, %(basereg+2), %(basereg+3), mem_operand, abits -+.elseif numbytes == 8 -+ pixldst1 op, elem_size, %(basereg+1), mem_operand, abits -+.elseif numbytes == 4 -+ .if !RESPECT_STRICT_ALIGNMENT || (elem_size == 32) -+ pixldst0 op, 32, %(basereg+0), 1, mem_operand, abits -+ .elseif elem_size == 16 -+ pixldst0 op, 16, %(basereg+0), 2, mem_operand, abits -+ pixldst0 op, 16, %(basereg+0), 3, mem_operand, abits -+ .else -+ pixldst0 op, 8, %(basereg+0), 4, mem_operand, abits -+ pixldst0 op, 8, %(basereg+0), 5, mem_operand, abits -+ pixldst0 op, 8, %(basereg+0), 6, mem_operand, abits -+ pixldst0 op, 8, %(basereg+0), 7, mem_operand, abits -+ .endif -+.elseif numbytes == 2 -+ .if !RESPECT_STRICT_ALIGNMENT || (elem_size == 16) -+ pixldst0 op, 16, %(basereg+0), 1, mem_operand, abits -+ .else -+ pixldst0 op, 8, %(basereg+0), 2, mem_operand, abits -+ pixldst0 op, 8, %(basereg+0), 3, mem_operand, abits -+ .endif -+.elseif numbytes == 1 -+ pixldst0 op, 8, %(basereg+0), 1, mem_operand, abits -+.else -+ .error "unsupported size: numbytes" -+.endif -+.endm -+ -+.macro pixld numpix, bpp, basereg, mem_operand, abits=0 -+.if bpp > 0 -+.if (bpp == 32) && (numpix == 8) && (DEINTERLEAVE_32BPP_ENABLED != 0) -+ pixldst4 vld4, 8, %(basereg+4), %(basereg+5), \ -+ %(basereg+6), %(basereg+7), mem_operand, abits -+.else -+ pixldst %(numpix * bpp / 8), vld1, %(bpp), basereg, mem_operand, abits -+.endif -+.endif -+.endm -+ -+.macro pixst numpix, bpp, basereg, mem_operand, abits=0 -+.if bpp > 0 -+.if (bpp == 32) && (numpix == 8) && (DEINTERLEAVE_32BPP_ENABLED != 0) -+ pixldst4 vst4, 8, %(basereg+4), %(basereg+5), \ -+ %(basereg+6), %(basereg+7), mem_operand, abits -+.else -+ pixldst %(numpix * bpp / 8), vst1, %(bpp), basereg, mem_operand, abits -+.endif -+.endif -+.endm -+ -+.macro pixld_a numpix, bpp, basereg, mem_operand -+.if (bpp * numpix) <= 128 -+ pixld numpix, bpp, basereg, mem_operand, %(bpp * numpix) -+.else -+ pixld numpix, bpp, basereg, mem_operand, 128 -+.endif -+.endm -+ -+.macro pixst_a numpix, bpp, basereg, mem_operand -+.if (bpp * numpix) <= 128 -+ pixst numpix, bpp, basereg, mem_operand, %(bpp * numpix) -+.else -+ pixst numpix, bpp, basereg, mem_operand, 128 -+.endif -+.endm -+ -+.macro vuzp8 reg1, reg2 -+ vuzp.8 d®1, d®2 -+.endm -+ -+.macro vzip8 reg1, reg2 -+ vzip.8 d®1, d®2 -+.endm -+ -+/* deinterleave B, G, R, A channels for eight 32bpp pixels in 4 registers */ -+.macro pixdeinterleave bpp, basereg -+.if (bpp == 32) && (DEINTERLEAVE_32BPP_ENABLED != 0) -+ vuzp8 %(basereg+0), %(basereg+1) -+ vuzp8 %(basereg+2), %(basereg+3) -+ vuzp8 %(basereg+1), %(basereg+3) -+ vuzp8 %(basereg+0), %(basereg+2) -+.endif -+.endm -+ -+/* interleave B, G, R, A channels for eight 32bpp pixels in 4 registers */ -+.macro pixinterleave bpp, basereg -+.if (bpp == 32) && (DEINTERLEAVE_32BPP_ENABLED != 0) -+ vzip8 %(basereg+0), %(basereg+2) -+ vzip8 %(basereg+1), %(basereg+3) -+ vzip8 %(basereg+2), %(basereg+3) -+ vzip8 %(basereg+0), %(basereg+1) -+.endif -+.endm -+ -+/* -+ * This is a macro for implementing cache preload. The main idea is that -+ * cache preload logic is mostly independent from the rest of pixels -+ * processing code. It starts at the top left pixel and moves forward -+ * across pixels and can jump across lines. Prefetch distance is handled -+ * in an 'incremental' way: it starts from 0 and advances to the optimal -+ * distance over time. After reaching optimal prefetch distance, it is -+ * kept constant. There are some checks which prevent prefetching -+ * unneeded pixel lines below the image (but it still prefetch a bit -+ * more data on the right side of the image - not a big issue and may -+ * be actually helpful when rendering text glyphs). Additional trick is -+ * the use of LDR instruction for prefetch instead of PLD when moving to -+ * the next line, the point is that we have a high chance of getting TLB -+ * miss in this case, and PLD would be useless. -+ * -+ * This sounds like it may introduce a noticeable overhead (when working with -+ * fully cached data). But in reality, due to having a separate pipeline and -+ * instruction queue for NEON unit in ARM Cortex-A8, normal ARM code can -+ * execute simultaneously with NEON and be completely shadowed by it. Thus -+ * we get no performance overhead at all (*). This looks like a very nice -+ * feature of Cortex-A8, if used wisely. We don't have a hardware hardware -+ * prefetcher, but still can implement some rather advanced prefetch logic -+ * in sofware for almost zero cost! -+ * -+ * (*) The overhead of the prefetcher is visible when running some trivial -+ * pixels processing like simple copy. Anyway, having prefetch is a must -+ * when working with graphics data. -+ */ -+.macro cache_preload std_increment, boost_increment -+.if (src_bpp_shift >= 0) || (dst_r_bpp != 0) || (mask_bpp_shift >= 0) -+.if regs_shortage -+ ldr ORIG_W, [sp] /* If we are short on regs, ORIG_W is kept on stack */ -+.endif -+.if std_increment != 0 -+ add PF_X, PF_X, #std_increment -+.endif -+ tst PF_CTL, #0xF -+ addne PF_X, PF_X, #boost_increment -+ subne PF_CTL, PF_CTL, #1 -+ cmp PF_X, ORIG_W -+.if src_bpp_shift >= 0 -+ pld [PF_SRC, PF_X, lsl #src_bpp_shift] -+.endif -+.if dst_r_bpp != 0 -+ pld [PF_DST, PF_X, lsl #dst_bpp_shift] -+.endif -+.if mask_bpp_shift >= 0 -+ pld [PF_MASK, PF_X, lsl #mask_bpp_shift] -+.endif -+ subge PF_X, PF_X, ORIG_W -+ subges PF_CTL, PF_CTL, #0x10 -+.if src_bpp_shift >= 0 -+ ldrgeb DUMMY, [PF_SRC, SRC_STRIDE, lsl #src_bpp_shift]! -+.endif -+.if dst_r_bpp != 0 -+ ldrgeb DUMMY, [PF_DST, DST_STRIDE, lsl #dst_bpp_shift]! -+.endif -+.if mask_bpp_shift >= 0 -+ ldrgeb DUMMY, [PF_MASK, MASK_STRIDE, lsl #mask_bpp_shift]! -+.endif -+.endif -+.endm -+ -+/* -+ * Registers are allocated in the following way by default: -+ * d0, d1, d2, d3 - reserved for loading source pixel data -+ * d4, d5, d6, d7 - reserved for loading destination pixel data -+ * d24, d25, d26, d27 - reserved for loading mask pixel data -+ * d28, d29, d30, d31 - final destination pixel data for writeback to memory -+ */ -+.macro generate_composite_function fname, \ -+ src_bpp, \ -+ mask_bpp, \ -+ dst_w_bpp, \ -+ flags, \ -+ pixblock_size, \ -+ prefetch_distance, \ -+ init, \ -+ cleanup, \ -+ process_pixblock_head, \ -+ process_pixblock_tail, \ -+ process_pixblock_tail_head, \ -+ dst_w_basereg = 28, \ -+ dst_r_basereg = 4, \ -+ src_basereg = 0, \ -+ mask_basereg = 24 -+ -+ .global fname -+fname: -+ -+ W .req r0 /* width (is updated during processing) */ -+ H .req r1 /* height (is updated during processing) */ -+ DST_W .req r2 /* destination buffer pointer for writes */ -+ DST_STRIDE .req r3 /* destination image stride */ -+ SRC .req r4 /* source buffer pointer */ -+ SRC_STRIDE .req r5 /* source image stride */ -+ DST_R .req r6 /* destination buffer pointer for reads */ -+ -+ MASK .req r7 /* mask pointer */ -+ MASK_STRIDE .req r8 /* mask stride */ -+ -+ PF_CTL .req r9 -+ PF_X .req r10 -+ PF_SRC .req r11 -+ PF_DST .req r12 -+ PF_MASK .req r14 -+ -+.if mask_bpp == 0 -+ ORIG_W .req r7 /* saved original width */ -+ DUMMY .req r8 /* temporary register */ -+ .set regs_shortage, 0 -+.elseif src_bpp == 0 -+ ORIG_W .req r4 /* saved original width */ -+ DUMMY .req r5 /* temporary register */ -+ .set regs_shortage, 0 -+.else -+ ORIG_W .req r1 /* saved original width */ -+ DUMMY .req r1 /* temporary register */ -+ .set regs_shortage, 1 -+.endif -+ -+ push {r4-r12, lr} -+ -+ .set mask_bpp_shift, -1 -+ -+.if src_bpp == 32 -+ .set src_bpp_shift, 2 -+.elseif src_bpp == 16 -+ .set src_bpp_shift, 1 -+.elseif src_bpp == 8 -+ .set src_bpp_shift, 0 -+.elseif src_bpp == 0 -+ .set src_bpp_shift, -1 -+.else -+ .error "requested src bpp (src_bpp) is not supported" -+.endif -+.if mask_bpp == 32 -+ .set mask_bpp_shift, 2 -+.elseif mask_bpp == 8 -+ .set mask_bpp_shift, 0 -+.elseif mask_bpp == 0 -+ .set mask_bpp_shift, -1 -+.else -+ .error "requested mask bpp (mask_bpp) is not supported" -+.endif -+.if dst_w_bpp == 32 -+ .set dst_bpp_shift, 2 -+.elseif dst_w_bpp == 16 -+ .set dst_bpp_shift, 1 -+.elseif dst_w_bpp == 8 -+ .set dst_bpp_shift, 0 -+.else -+ .error "requested dst bpp (dst_w_bpp) is not supported" -+.endif -+ -+.if (((flags) & FLAG_DST_READWRITE) != 0) -+ .set dst_r_bpp, dst_w_bpp -+.else -+ .set dst_r_bpp, 0 -+.endif -+.if (((flags) & FLAG_DEINTERLEAVE_32BPP) != 0) -+ .set DEINTERLEAVE_32BPP_ENABLED, 1 -+.else -+ .set DEINTERLEAVE_32BPP_ENABLED, 0 -+.endif -+ -+.if prefetch_distance < 0 || prefetch_distance > 15 -+ .error "invalid prefetch distance (prefetch_distance)" -+.endif -+ -+.if src_bpp > 0 -+ ldr SRC, [sp, #40] -+.endif -+.if mask_bpp > 0 -+ ldr MASK, [sp, #48] -+.endif -+ mov PF_X, #0 -+.if src_bpp > 0 -+ ldr SRC_STRIDE, [sp, #44] -+.endif -+.if mask_bpp > 0 -+ ldr MASK_STRIDE, [sp, #52] -+.endif -+ mov DST_R, DST_W -+ mov PF_SRC, SRC -+ mov PF_DST, DST_R -+ mov PF_MASK, MASK -+ mov PF_CTL, H, lsl #4 -+ /* pf_ctl = 10 | ((h - 1) << 4) */ -+ add PF_CTL, #(prefetch_distance - 0x10) -+ -+ init -+.if regs_shortage -+ push {r0, r1} -+.endif -+ subs H, H, #1 -+.if regs_shortage -+ str H, [sp, #4] /* save updated height to stack */ -+.else -+ mov ORIG_W, W -+.endif -+ blt 9f -+ cmp W, #(pixblock_size * 2) -+ blt 8f -+0: -+ /* ensure 16 byte alignment of the destination buffer */ -+ tst DST_R, #0xF -+ beq 2f -+ -+.irp lowbit, 1, 2, 4, 8, 16 -+.if (dst_w_bpp <= (lowbit * 8)) && ((lowbit * 8) < (pixblock_size * dst_w_bpp)) -+.if lowbit < 16 /* we don't need more than 16-byte alignment */ -+ tst DST_R, #lowbit -+ beq 1f -+.endif -+ pixld (lowbit * 8 / dst_w_bpp), src_bpp, src_basereg, SRC -+ pixld (lowbit * 8 / dst_w_bpp), mask_bpp, mask_basereg, MASK -+.if dst_r_bpp > 0 -+ pixld_a (lowbit * 8 / dst_r_bpp), dst_r_bpp, dst_r_basereg, DST_R -+.else -+ add DST_R, DST_R, #lowbit -+.endif -+ add PF_X, PF_X, #(lowbit * 8 / dst_w_bpp) -+ sub W, W, #(lowbit * 8 / dst_w_bpp) -+1: -+.endif -+.endr -+ pixdeinterleave src_bpp, src_basereg -+ pixdeinterleave mask_bpp, mask_basereg -+ pixdeinterleave dst_r_bpp, dst_r_basereg -+ -+ process_pixblock_head -+ cache_preload 0, pixblock_size -+ process_pixblock_tail -+ -+ pixinterleave dst_w_bpp, dst_w_basereg -+.irp lowbit, 1, 2, 4, 8, 16 -+.if (dst_w_bpp <= (lowbit * 8)) && ((lowbit * 8) < (pixblock_size * dst_w_bpp)) -+.if lowbit < 16 /* we don't need more than 16-byte alignment */ -+ tst DST_W, #lowbit -+ beq 1f -+.endif -+ pixst_a (lowbit * 8 / dst_w_bpp), dst_w_bpp, dst_w_basereg, DST_W -+1: -+.endif -+.endr -+2: -+ -+ pixld_a pixblock_size, dst_r_bpp, \ -+ (dst_r_basereg - pixblock_size * dst_r_bpp / 64), DST_R -+ pixld pixblock_size, src_bpp, \ -+ (src_basereg - pixblock_size * src_bpp / 64), SRC -+ pixld pixblock_size, mask_bpp, \ -+ (mask_basereg - pixblock_size * mask_bpp / 64), MASK -+ add PF_X, PF_X, #pixblock_size -+ process_pixblock_head -+ cache_preload 0, pixblock_size -+ subs W, W, #(pixblock_size * 2) -+ blt 2f -+1: /* innermost pipelined loop */ -+ process_pixblock_tail_head -+ subs W, W, #pixblock_size -+ bge 1b -+2: -+ process_pixblock_tail -+ pixst_a pixblock_size, dst_w_bpp, \ -+ (dst_w_basereg - pixblock_size * dst_w_bpp / 64), DST_W -+ -+ /* process up to (pixblock_size - 1) remaining pixels */ -+ tst W, #(pixblock_size - 1) -+ beq 2f -+.irp chunk_size, 16, 8, 4, 2, 1 -+.if pixblock_size > chunk_size -+ tst W, #chunk_size -+ beq 1f -+ pixld chunk_size, src_bpp, src_basereg, SRC -+ pixld chunk_size, mask_bpp, mask_basereg, MASK -+ pixld_a chunk_size, dst_r_bpp, dst_r_basereg, DST_R -+ add PF_X, PF_X, #chunk_size -+1: -+.endif -+.endr -+ pixdeinterleave src_bpp, src_basereg -+ pixdeinterleave mask_bpp, mask_basereg -+ pixdeinterleave dst_r_bpp, dst_r_basereg -+ -+ process_pixblock_head -+ cache_preload 0, pixblock_size -+ process_pixblock_tail -+ -+ pixinterleave dst_w_bpp, dst_w_basereg -+.irp chunk_size, 16, 8, 4, 2, 1 -+.if pixblock_size > chunk_size -+ tst W, #chunk_size -+ beq 1f -+ pixst_a chunk_size, dst_w_bpp, dst_w_basereg, DST_W -+1: -+.endif -+.endr -+2: -+ -+.if regs_shortage -+ ldrd W, [sp] /* load W and H (width and height) from stack */ -+.else -+ mov W, ORIG_W -+.endif -+ add DST_W, DST_W, DST_STRIDE, lsl #dst_bpp_shift -+.if src_bpp != 0 -+ add SRC, SRC, SRC_STRIDE, lsl #src_bpp_shift -+.endif -+.if mask_bpp != 0 -+ add MASK, MASK, MASK_STRIDE, lsl #mask_bpp_shift -+.endif -+ sub DST_W, DST_W, W, lsl #dst_bpp_shift -+.if src_bpp != 0 -+ sub SRC, SRC, W, lsl #src_bpp_shift -+.endif -+.if mask_bpp != 0 -+ sub MASK, MASK, W, lsl #mask_bpp_shift -+.endif -+ subs H, H, #1 -+ mov DST_R, DST_W -+.if regs_shortage -+ str H, [sp, #4] /* save updated height to stack */ -+.endif -+ bge 0b -+.if regs_shortage -+ pop {r0, r1} -+.endif -+ cleanup -+ pop {r4-r12, pc} /* exit */ -+ -+8: /* handle small rectangle, width up to 15 pixels */ -+ tst W, #pixblock_size -+ beq 1f -+ pixld pixblock_size, dst_r_bpp, \ -+ (dst_r_basereg - pixblock_size * dst_r_bpp / 64), DST_R -+ pixld pixblock_size, src_bpp, \ -+ (src_basereg - pixblock_size * src_bpp / 64), SRC -+ pixld pixblock_size, mask_bpp, \ -+ (mask_basereg - pixblock_size * mask_bpp / 64), MASK -+ process_pixblock_head -+ process_pixblock_tail -+ pixst pixblock_size, dst_w_bpp, \ -+ (dst_w_basereg - pixblock_size * dst_w_bpp / 64), DST_W -+1: /* process the remaining pixels, which do not fully fill one block */ -+ tst W, #(pixblock_size - 1) -+ beq 2f -+.irp chunk_size, 16, 8, 4, 2, 1 -+.if pixblock_size > chunk_size -+ tst W, #chunk_size -+ beq 1f -+ pixld chunk_size, src_bpp, src_basereg, SRC -+ pixld chunk_size, mask_bpp, mask_basereg, MASK -+ pixld chunk_size, dst_r_bpp, dst_r_basereg, DST_R -+1: -+.endif -+.endr -+ pixdeinterleave src_bpp, src_basereg -+ pixdeinterleave mask_bpp, mask_basereg -+ pixdeinterleave dst_r_bpp, dst_r_basereg -+ process_pixblock_head -+ process_pixblock_tail -+ pixinterleave dst_w_bpp, dst_w_basereg -+.irp chunk_size, 16, 8, 4, 2, 1 -+.if pixblock_size > chunk_size -+ tst W, #chunk_size -+ beq 1f -+ pixst chunk_size, dst_w_bpp, dst_w_basereg, DST_W -+1: -+.endif -+.endr -+2: -+.if regs_shortage -+ ldrd W, [sp] /* load W and H (width and height) from stack */ -+.else -+ mov W, ORIG_W -+.endif -+ add DST_W, DST_W, DST_STRIDE, lsl #dst_bpp_shift -+.if src_bpp != 0 -+ add SRC, SRC, SRC_STRIDE, lsl #src_bpp_shift -+.endif -+.if mask_bpp != 0 -+ add MASK, MASK, MASK_STRIDE, lsl #mask_bpp_shift -+.endif -+ sub DST_W, DST_W, W, lsl #dst_bpp_shift -+.if src_bpp != 0 -+ sub SRC, SRC, W, lsl #src_bpp_shift -+.endif -+.if mask_bpp != 0 -+ sub MASK, MASK, W, lsl #mask_bpp_shift -+.endif -+ subs H, H, #1 -+ mov DST_R, DST_W -+.if regs_shortage -+ str H, [sp, #4] /* save updated height to stack */ -+.endif -+ bge 8b -+9: -+.if regs_shortage -+ pop {r0, r1} -+.endif -+ cleanup -+ pop {r4-r12, pc} /* exit */ -+ -+ .unreq SRC -+ .unreq MASK -+ .unreq DST_R -+ .unreq DST_W -+ .unreq ORIG_W -+ .unreq W -+ .unreq H -+ .unreq SRC_STRIDE -+ .unreq DST_STRIDE -+ .unreq MASK_STRIDE -+ .unreq PF_CTL -+ .unreq PF_X -+ .unreq PF_SRC -+ .unreq PF_DST -+ .unreq PF_MASK -+ .unreq DUMMY -+.endm -+ -+.macro default_init -+.endm -+ -+.macro default_cleanup -+.endm -diff --git a/pixman/pixman-arm-neon.c b/pixman/pixman-arm-neon.c -index 9caef61..fe57daa 100644 ---- a/pixman/pixman-arm-neon.c -+++ b/pixman/pixman-arm-neon.c -@@ -1901,8 +1901,63 @@ pixman_fill_neon (uint32_t *bits, - #endif - } - -+/* -+ * Use GNU assembler optimizations only if we are completely sure that -+ * the target system has compatible ABI and calling conventions. This -+ * check can be updated/extended if more systems turn out to be actually -+ * compatible. -+ */ -+#if defined(__linux__) && defined(__ARM_EABI__) && defined(USE_GCC_INLINE_ASM) -+#define USE_GNU_ASSEMBLER_ASM -+#endif -+ -+#ifdef USE_GNU_ASSEMBLER_ASM -+ -+void -+pixman_composite_over_8888_0565_asm_neon (int32_t w, -+ int32_t h, -+ uint16_t *dst, -+ int32_t dst_stride, -+ uint32_t *src, -+ int32_t src_stride); -+ -+static void -+neon_composite_over_8888_0565 (pixman_implementation_t *imp, -+ pixman_op_t op, -+ pixman_image_t * src_image, -+ pixman_image_t * mask_image, -+ pixman_image_t * dst_image, -+ int32_t src_x, -+ int32_t src_y, -+ int32_t mask_x, -+ int32_t mask_y, -+ int32_t dest_x, -+ int32_t dest_y, -+ int32_t width, -+ int32_t height) -+{ -+ uint16_t *dst_line; -+ uint32_t *src_line; -+ int32_t dst_stride, src_stride; -+ -+ PIXMAN_IMAGE_GET_LINE (src_image, src_x, src_y, uint32_t, -+ src_stride, src_line, 1); -+ PIXMAN_IMAGE_GET_LINE (dst_image, dest_x, dest_y, uint16_t, -+ dst_stride, dst_line, 1); -+ -+ pixman_composite_over_8888_0565_asm_neon (width, height, -+ dst_line, dst_stride, -+ src_line, src_stride); -+} -+ -+#endif -+ - static const pixman_fast_path_t arm_neon_fast_path_array[] = - { -+#ifdef USE_GNU_ASSEMBLER_ASM -+ { PIXMAN_OP_OVER, PIXMAN_a8r8g8b8, PIXMAN_null, PIXMAN_r5g6b5, neon_composite_over_8888_0565, 0 }, -+ { PIXMAN_OP_OVER, PIXMAN_a8b8g8r8, PIXMAN_null, PIXMAN_b5g6r5, neon_composite_over_8888_0565, 0 }, -+#endif - { PIXMAN_OP_ADD, PIXMAN_solid, PIXMAN_a8, PIXMAN_a8, neon_composite_add_n_8_8, 0 }, - { PIXMAN_OP_ADD, PIXMAN_a8, PIXMAN_null, PIXMAN_a8, neon_composite_add_8000_8000, 0 }, - { PIXMAN_OP_OVER, PIXMAN_solid, PIXMAN_a8, PIXMAN_r5g6b5, neon_composite_over_n_8_0565, 0 }, --- -1.6.2.4 - diff --git a/recipes/xorg-lib/pixman/0003-ARM-Added-pixman_composite_src_8888_0565_asm_neon-f.patch b/recipes/xorg-lib/pixman/0003-ARM-Added-pixman_composite_src_8888_0565_asm_neon-f.patch deleted file mode 100644 index 00b682e34d..0000000000 --- a/recipes/xorg-lib/pixman/0003-ARM-Added-pixman_composite_src_8888_0565_asm_neon-f.patch +++ /dev/null @@ -1,63 +0,0 @@ -From b17297cf15122e5b38c082c9fe6f1ff708b7efa4 Mon Sep 17 00:00:00 2001 -From: Siarhei Siamashka <siarhei.siamashka@nokia.com> -Date: Mon, 12 Oct 2009 21:50:37 +0300 -Subject: [PATCH 3/7] ARM: Added pixman_composite_src_8888_0565_asm_neon function - ---- - pixman/pixman-arm-neon-asm.S | 43 ++++++++++++++++++++++++++++++++++++++++++ - 1 files changed, 43 insertions(+), 0 deletions(-) - -diff --git a/pixman/pixman-arm-neon-asm.S b/pixman/pixman-arm-neon-asm.S -index 843899f..20d2587 100644 ---- a/pixman/pixman-arm-neon-asm.S -+++ b/pixman/pixman-arm-neon-asm.S -@@ -307,3 +307,46 @@ generate_composite_function \ - 4, /* dst_r_basereg */ \ - 0, /* src_basereg */ \ - 24 /* mask_basereg */ -+ -+/******************************************************************************/ -+ -+.macro pixman_composite_src_8888_0565_process_pixblock_head -+ vshll.u8 q8, d1, #8 -+ vshll.u8 q14, d2, #8 -+ vshll.u8 q9, d0, #8 -+.endm -+ -+.macro pixman_composite_src_8888_0565_process_pixblock_tail -+ vsri.u16 q14, q8, #5 -+ vsri.u16 q14, q9, #11 -+.endm -+ -+.macro pixman_composite_src_8888_0565_process_pixblock_tail_head -+ vsri.u16 q14, q8, #5 -+ add PF_X, PF_X, #8 -+ tst PF_CTL, #0xF -+ vld4.8 {d0, d1, d2, d3}, [SRC]! -+ addne PF_X, PF_X, #8 -+ subne PF_CTL, PF_CTL, #1 -+ vsri.u16 q14, q9, #11 -+ cmp PF_X, ORIG_W -+ pld [PF_SRC, PF_X, lsl #src_bpp_shift] -+ vshll.u8 q8, d1, #8 -+ vst1.16 {d28, d29}, [DST_W, :128]! -+ subge PF_X, PF_X, ORIG_W -+ subges PF_CTL, PF_CTL, #0x10 -+ vshll.u8 q14, d2, #8 -+ ldrgeb DUMMY, [PF_SRC, SRC_STRIDE, lsl #src_bpp_shift]! -+ vshll.u8 q9, d0, #8 -+.endm -+ -+generate_composite_function \ -+ pixman_composite_src_8888_0565_asm_neon, 32, 0, 16, \ -+ FLAG_DST_WRITEONLY | FLAG_DEINTERLEAVE_32BPP, \ -+ 8, /* number of pixels, processed in a single block */ \ -+ 10, /* prefetch distance */ \ -+ default_init, \ -+ default_cleanup, \ -+ pixman_composite_src_8888_0565_process_pixblock_head, \ -+ pixman_composite_src_8888_0565_process_pixblock_tail, \ -+ pixman_composite_src_8888_0565_process_pixblock_tail_head --- -1.6.2.4 - diff --git a/recipes/xorg-lib/pixman/0004-ARM-Added-pixman_composite_add_8000_8000_asm_neon-f.patch b/recipes/xorg-lib/pixman/0004-ARM-Added-pixman_composite_add_8000_8000_asm_neon-f.patch deleted file mode 100644 index 445697a84f..0000000000 --- a/recipes/xorg-lib/pixman/0004-ARM-Added-pixman_composite_add_8000_8000_asm_neon-f.patch +++ /dev/null @@ -1,60 +0,0 @@ -From 9cfedd684bdeabe9e97303e6f432c3ffb440426c Mon Sep 17 00:00:00 2001 -From: Siarhei Siamashka <siarhei.siamashka@nokia.com> -Date: Mon, 12 Oct 2009 21:51:54 +0300 -Subject: [PATCH 4/7] ARM: Added pixman_composite_add_8000_8000_asm_neon function - ---- - pixman/pixman-arm-neon-asm.S | 40 ++++++++++++++++++++++++++++++++++++++++ - 1 files changed, 40 insertions(+), 0 deletions(-) - -diff --git a/pixman/pixman-arm-neon-asm.S b/pixman/pixman-arm-neon-asm.S -index 20d2587..373cbd0 100644 ---- a/pixman/pixman-arm-neon-asm.S -+++ b/pixman/pixman-arm-neon-asm.S -@@ -350,3 +350,43 @@ generate_composite_function \ - pixman_composite_src_8888_0565_process_pixblock_head, \ - pixman_composite_src_8888_0565_process_pixblock_tail, \ - pixman_composite_src_8888_0565_process_pixblock_tail_head -+ -+/******************************************************************************/ -+ -+.macro pixman_composite_add_8000_8000_process_pixblock_head -+ vqadd.u8 q14, q0, q2 -+ vqadd.u8 q15, q1, q3 -+.endm -+ -+.macro pixman_composite_add_8000_8000_process_pixblock_tail -+.endm -+ -+.macro pixman_composite_add_8000_8000_process_pixblock_tail_head -+ vld1.8 {d0, d1, d2, d3}, [SRC]! -+ add PF_X, PF_X, #32 -+ tst PF_CTL, #0xF -+ vld1.8 {d4, d5, d6, d7}, [DST_R, :128]! -+ addne PF_X, PF_X, #32 -+ subne PF_CTL, PF_CTL, #1 -+ vst1.8 {d28, d29, d30, d31}, [DST_W, :128]! -+ cmp PF_X, ORIG_W -+ pld [PF_SRC, PF_X, lsl #src_bpp_shift] -+ pld [PF_DST, PF_X, lsl #dst_bpp_shift] -+ subge PF_X, PF_X, ORIG_W -+ subges PF_CTL, PF_CTL, #0x10 -+ vqadd.u8 q14, q0, q2 -+ ldrgeb DUMMY, [PF_SRC, SRC_STRIDE, lsl #src_bpp_shift]! -+ ldrgeb DUMMY, [PF_DST, DST_STRIDE, lsl #dst_bpp_shift]! -+ vqadd.u8 q15, q1, q3 -+.endm -+ -+generate_composite_function \ -+ pixman_composite_add_8000_8000_asm_neon, 8, 0, 8, \ -+ FLAG_DST_READWRITE, \ -+ 32, /* number of pixels, processed in a single block */ \ -+ 10, /* prefetch distance */ \ -+ default_init, \ -+ default_cleanup, \ -+ pixman_composite_add_8000_8000_process_pixblock_head, \ -+ pixman_composite_add_8000_8000_process_pixblock_tail, \ -+ pixman_composite_add_8000_8000_process_pixblock_tail_head --- -1.6.2.4 - diff --git a/recipes/xorg-lib/pixman/0005-ARM-Added-pixman_composite_over_8888_8888_asm_neon.patch b/recipes/xorg-lib/pixman/0005-ARM-Added-pixman_composite_over_8888_8888_asm_neon.patch deleted file mode 100644 index e4c8936c84..0000000000 --- a/recipes/xorg-lib/pixman/0005-ARM-Added-pixman_composite_over_8888_8888_asm_neon.patch +++ /dev/null @@ -1,87 +0,0 @@ -From 9eb4ecf68cf5609240222d10f1a4c9dfebdb3498 Mon Sep 17 00:00:00 2001 -From: Siarhei Siamashka <siarhei.siamashka@nokia.com> -Date: Mon, 12 Oct 2009 21:52:49 +0300 -Subject: [PATCH 5/7] ARM: Added pixman_composite_over_8888_8888_asm_neon function - ---- - pixman/pixman-arm-neon-asm.S | 67 ++++++++++++++++++++++++++++++++++++++++++ - 1 files changed, 67 insertions(+), 0 deletions(-) - -diff --git a/pixman/pixman-arm-neon-asm.S b/pixman/pixman-arm-neon-asm.S -index 373cbd0..b11a9a7 100644 ---- a/pixman/pixman-arm-neon-asm.S -+++ b/pixman/pixman-arm-neon-asm.S -@@ -390,3 +390,70 @@ generate_composite_function \ - pixman_composite_add_8000_8000_process_pixblock_head, \ - pixman_composite_add_8000_8000_process_pixblock_tail, \ - pixman_composite_add_8000_8000_process_pixblock_tail_head -+ -+/******************************************************************************/ -+ -+.macro pixman_composite_over_8888_8888_process_pixblock_head -+ vmvn.8 d24, d3 /* get inverted alpha */ -+ /* do alpha blending */ -+ vmull.u8 q8, d24, d4 -+ vmull.u8 q9, d24, d5 -+ vmull.u8 q10, d24, d6 -+ vmull.u8 q11, d24, d7 -+.endm -+ -+.macro pixman_composite_over_8888_8888_process_pixblock_tail -+ vrshr.u16 q14, q8, #8 -+ vrshr.u16 q15, q9, #8 -+ vrshr.u16 q12, q10, #8 -+ vrshr.u16 q13, q11, #8 -+ vraddhn.u16 d28, q14, q8 -+ vraddhn.u16 d29, q15, q9 -+ vraddhn.u16 d30, q12, q10 -+ vraddhn.u16 d31, q13, q11 -+ vqadd.u8 q14, q0, q14 -+ vqadd.u8 q15, q1, q15 -+.endm -+ -+.macro pixman_composite_over_8888_8888_process_pixblock_tail_head -+ vld4.8 {d4, d5, d6, d7}, [DST_R, :128]! -+ vrshr.u16 q14, q8, #8 -+ add PF_X, PF_X, #8 -+ tst PF_CTL, #0xF -+ vrshr.u16 q15, q9, #8 -+ vrshr.u16 q12, q10, #8 -+ vrshr.u16 q13, q11, #8 -+ addne PF_X, PF_X, #8 -+ subne PF_CTL, PF_CTL, #1 -+ vraddhn.u16 d28, q14, q8 -+ vraddhn.u16 d29, q15, q9 -+ cmp PF_X, ORIG_W -+ vraddhn.u16 d30, q12, q10 -+ vraddhn.u16 d31, q13, q11 -+ vqadd.u8 q14, q0, q14 -+ vqadd.u8 q15, q1, q15 -+ vld4.8 {d0, d1, d2, d3}, [SRC]! -+ pld [PF_SRC, PF_X, lsl #src_bpp_shift] -+ vmvn.8 d22, d3 -+ pld [PF_DST, PF_X, lsl #dst_bpp_shift] -+ vst4.8 {d28, d29, d30, d31}, [DST_W, :128]! -+ subge PF_X, PF_X, ORIG_W -+ vmull.u8 q8, d22, d4 -+ subges PF_CTL, PF_CTL, #0x10 -+ vmull.u8 q9, d22, d5 -+ ldrgeb DUMMY, [PF_SRC, SRC_STRIDE, lsl #src_bpp_shift]! -+ vmull.u8 q10, d22, d6 -+ ldrgeb DUMMY, [PF_DST, DST_STRIDE, lsl #dst_bpp_shift]! -+ vmull.u8 q11, d22, d7 -+.endm -+ -+generate_composite_function \ -+ pixman_composite_over_8888_8888_asm_neon, 32, 0, 32, \ -+ FLAG_DST_READWRITE | FLAG_DEINTERLEAVE_32BPP, \ -+ 8, /* number of pixels, processed in a single block */ \ -+ 5, /* prefetch distance */ \ -+ default_init, \ -+ default_cleanup, \ -+ pixman_composite_over_8888_8888_process_pixblock_head, \ -+ pixman_composite_over_8888_8888_process_pixblock_tail, \ -+ pixman_composite_over_8888_8888_process_pixblock_tail_head --- -1.6.2.4 - diff --git a/recipes/xorg-lib/pixman/0006-ARM-Added-a-set-of-NEON-functions-not-fully-optimi.patch b/recipes/xorg-lib/pixman/0006-ARM-Added-a-set-of-NEON-functions-not-fully-optimi.patch deleted file mode 100644 index 0f89c88fef..0000000000 --- a/recipes/xorg-lib/pixman/0006-ARM-Added-a-set-of-NEON-functions-not-fully-optimi.patch +++ /dev/null @@ -1,540 +0,0 @@ -From 606a73203318e44af4362684368bc24d2aed841d Mon Sep 17 00:00:00 2001 -From: Siarhei Siamashka <siarhei.siamashka@nokia.com> -Date: Mon, 12 Oct 2009 21:57:17 +0300 -Subject: [PATCH 6/7] ARM: Added a set of NEON functions (not fully optimized) - ---- - pixman/pixman-arm-neon-asm.S | 520 ++++++++++++++++++++++++++++++++++++++++++ - 1 files changed, 520 insertions(+), 0 deletions(-) - -diff --git a/pixman/pixman-arm-neon-asm.S b/pixman/pixman-arm-neon-asm.S -index b11a9a7..bca499a 100644 ---- a/pixman/pixman-arm-neon-asm.S -+++ b/pixman/pixman-arm-neon-asm.S -@@ -457,3 +457,523 @@ generate_composite_function \ - pixman_composite_over_8888_8888_process_pixblock_head, \ - pixman_composite_over_8888_8888_process_pixblock_tail, \ - pixman_composite_over_8888_8888_process_pixblock_tail_head -+ -+/******************************************************************************/ -+ -+.macro pixman_composite_over_n_8_0565_process_pixblock_head -+ /* in */ -+ vmull.u8 q0, d24, d8 -+ vmull.u8 q1, d24, d9 -+ vmull.u8 q6, d24, d10 -+ vmull.u8 q7, d24, d11 -+ vrshr.u16 q10, q0, #8 -+ vrshr.u16 q11, q1, #8 -+ vrshr.u16 q12, q6, #8 -+ vrshr.u16 q13, q7, #8 -+ vraddhn.u16 d0, q0, q10 -+ vraddhn.u16 d1, q1, q11 -+ vraddhn.u16 d2, q6, q12 -+ vraddhn.u16 d3, q7, q13 -+ -+ vshrn.u16 d6, q2, #8 -+ vshrn.u16 d7, q2, #3 -+ vsli.u16 q2, q2, #5 -+ vsri.u8 d6, d6, #5 -+ vmvn.8 d3, d3 -+ vsri.u8 d7, d7, #6 -+ vshrn.u16 d30, q2, #2 -+ /* now do alpha blending */ -+ vmull.u8 q10, d3, d6 -+ vmull.u8 q11, d3, d7 -+ vmull.u8 q12, d3, d30 -+ vrshr.u16 q13, q10, #8 -+ vrshr.u16 q3, q11, #8 -+ vrshr.u16 q15, q12, #8 -+ vraddhn.u16 d20, q10, q13 -+ vraddhn.u16 d23, q11, q3 -+ vraddhn.u16 d22, q12, q15 -+.endm -+ -+.macro pixman_composite_over_n_8_0565_process_pixblock_tail -+ vqadd.u8 d16, d2, d20 -+ vqadd.u8 q9, q0, q11 -+ /* convert to r5g6b5 */ -+ vshll.u8 q14, d16, #8 -+ vshll.u8 q8, d19, #8 -+ vshll.u8 q9, d18, #8 -+ vsri.u16 q14, q8, #5 -+ vsri.u16 q14, q9, #11 -+.endm -+ -+/* TODO: expand macros and do better instructions scheduling */ -+.macro pixman_composite_over_n_8_0565_process_pixblock_tail_head -+ pixman_composite_over_n_8_0565_process_pixblock_tail -+ vst1.16 {d28, d29}, [DST_W, :128]! -+ vld1.16 {d4, d5}, [DST_R, :128]! -+ vld1.8 {d24}, [MASK]! -+ cache_preload 8, 8 -+ pixman_composite_over_n_8_0565_process_pixblock_head -+.endm -+ -+.macro pixman_composite_over_n_8_0565_init -+ add DUMMY, sp, #40 -+ vpush {d8-d15} -+ vld1.32 {d11[0]}, [DUMMY] -+ vdup.8 d8, d11[0] -+ vdup.8 d9, d11[1] -+ vdup.8 d10, d11[2] -+ vdup.8 d11, d11[3] -+.endm -+ -+.macro pixman_composite_over_n_8_0565_cleanup -+ vpop {d8-d15} -+.endm -+ -+generate_composite_function \ -+ pixman_composite_over_n_8_0565_asm_neon, 0, 8, 16, \ -+ FLAG_DST_READWRITE, \ -+ 8, /* number of pixels, processed in a single block */ \ -+ 5, /* prefetch distance */ \ -+ pixman_composite_over_n_8_0565_init, \ -+ pixman_composite_over_n_8_0565_cleanup, \ -+ pixman_composite_over_n_8_0565_process_pixblock_head, \ -+ pixman_composite_over_n_8_0565_process_pixblock_tail, \ -+ pixman_composite_over_n_8_0565_process_pixblock_tail_head -+ -+/******************************************************************************/ -+ -+.macro pixman_composite_src_0565_0565_process_pixblock_head -+.endm -+ -+.macro pixman_composite_src_0565_0565_process_pixblock_tail -+.endm -+ -+.macro pixman_composite_src_0565_0565_process_pixblock_tail_head -+ vst1.16 {d0, d1, d2, d3}, [DST_W, :128]! -+ vld1.16 {d0, d1, d2, d3}, [SRC]! -+ cache_preload 16, 16 -+.endm -+ -+generate_composite_function \ -+ pixman_composite_src_0565_0565_asm_neon, 16, 0, 16, \ -+ FLAG_DST_WRITEONLY, \ -+ 16, /* number of pixels, processed in a single block */ \ -+ 10, /* prefetch distance */ \ -+ default_init, \ -+ default_cleanup, \ -+ pixman_composite_src_0565_0565_process_pixblock_head, \ -+ pixman_composite_src_0565_0565_process_pixblock_tail, \ -+ pixman_composite_src_0565_0565_process_pixblock_tail_head, \ -+ 0, /* dst_w_basereg */ \ -+ 0, /* dst_r_basereg */ \ -+ 0, /* src_basereg */ \ -+ 0 /* mask_basereg */ -+ -+/******************************************************************************/ -+ -+.macro pixman_composite_src_n_8_process_pixblock_head -+.endm -+ -+.macro pixman_composite_src_n_8_process_pixblock_tail -+.endm -+ -+.macro pixman_composite_src_n_8_process_pixblock_tail_head -+ vst1.8 {d0, d1, d2, d3}, [DST_W, :128]! -+.endm -+ -+.macro pixman_composite_src_n_8_init -+ add DUMMY, sp, #40 -+ vld1.32 {d0[0]}, [DUMMY] -+ vsli.u64 d0, d0, #8 -+ vsli.u64 d0, d0, #16 -+ vsli.u64 d0, d0, #32 -+ vmov d1, d0 -+ vmov q1, q0 -+.endm -+ -+.macro pixman_composite_src_n_8_cleanup -+.endm -+ -+generate_composite_function \ -+ pixman_composite_src_n_8_asm_neon, 0, 0, 8, \ -+ FLAG_DST_WRITEONLY, \ -+ 32, /* number of pixels, processed in a single block */ \ -+ 0, /* prefetch distance */ \ -+ pixman_composite_src_n_8_init, \ -+ pixman_composite_src_n_8_cleanup, \ -+ pixman_composite_src_n_8_process_pixblock_head, \ -+ pixman_composite_src_n_8_process_pixblock_tail, \ -+ pixman_composite_src_n_8_process_pixblock_tail_head, \ -+ 0, /* dst_w_basereg */ \ -+ 0, /* dst_r_basereg */ \ -+ 0, /* src_basereg */ \ -+ 0 /* mask_basereg */ -+ -+/******************************************************************************/ -+ -+.macro pixman_composite_src_n_0565_process_pixblock_head -+.endm -+ -+.macro pixman_composite_src_n_0565_process_pixblock_tail -+.endm -+ -+.macro pixman_composite_src_n_0565_process_pixblock_tail_head -+ vst1.16 {d0, d1, d2, d3}, [DST_W, :128]! -+.endm -+ -+.macro pixman_composite_src_n_0565_init -+ add DUMMY, sp, #40 -+ vld1.32 {d0[0]}, [DUMMY] -+ vsli.u64 d0, d0, #16 -+ vsli.u64 d0, d0, #32 -+ vmov d1, d0 -+ vmov q1, q0 -+.endm -+ -+.macro pixman_composite_src_n_0565_cleanup -+.endm -+ -+generate_composite_function \ -+ pixman_composite_src_n_0565_asm_neon, 0, 0, 16, \ -+ FLAG_DST_WRITEONLY, \ -+ 16, /* number of pixels, processed in a single block */ \ -+ 0, /* prefetch distance */ \ -+ pixman_composite_src_n_0565_init, \ -+ pixman_composite_src_n_0565_cleanup, \ -+ pixman_composite_src_n_0565_process_pixblock_head, \ -+ pixman_composite_src_n_0565_process_pixblock_tail, \ -+ pixman_composite_src_n_0565_process_pixblock_tail_head, \ -+ 0, /* dst_w_basereg */ \ -+ 0, /* dst_r_basereg */ \ -+ 0, /* src_basereg */ \ -+ 0 /* mask_basereg */ -+ -+/******************************************************************************/ -+ -+.macro pixman_composite_src_n_8888_process_pixblock_head -+.endm -+ -+.macro pixman_composite_src_n_8888_process_pixblock_tail -+.endm -+ -+.macro pixman_composite_src_n_8888_process_pixblock_tail_head -+ vst1.32 {d0, d1, d2, d3}, [DST_W, :128]! -+.endm -+ -+.macro pixman_composite_src_n_8888_init -+ add DUMMY, sp, #40 -+ vld1.32 {d0[0]}, [DUMMY] -+ vsli.u64 d0, d0, #32 -+ vmov d1, d0 -+ vmov q1, q0 -+.endm -+ -+.macro pixman_composite_src_n_8888_cleanup -+.endm -+ -+generate_composite_function \ -+ pixman_composite_src_n_8888_asm_neon, 0, 0, 32, \ -+ FLAG_DST_WRITEONLY, \ -+ 8, /* number of pixels, processed in a single block */ \ -+ 0, /* prefetch distance */ \ -+ pixman_composite_src_n_8888_init, \ -+ pixman_composite_src_n_8888_cleanup, \ -+ pixman_composite_src_n_8888_process_pixblock_head, \ -+ pixman_composite_src_n_8888_process_pixblock_tail, \ -+ pixman_composite_src_n_8888_process_pixblock_tail_head, \ -+ 0, /* dst_w_basereg */ \ -+ 0, /* dst_r_basereg */ \ -+ 0, /* src_basereg */ \ -+ 0 /* mask_basereg */ -+ -+/******************************************************************************/ -+ -+.macro pixman_composite_src_8888_8888_process_pixblock_head -+.endm -+ -+.macro pixman_composite_src_8888_8888_process_pixblock_tail -+.endm -+ -+.macro pixman_composite_src_8888_8888_process_pixblock_tail_head -+ vst1.32 {d0, d1, d2, d3}, [DST_W, :128]! -+ vld1.32 {d0, d1, d2, d3}, [SRC]! -+ cache_preload 8, 8 -+.endm -+ -+generate_composite_function \ -+ pixman_composite_src_8888_8888_asm_neon, 32, 0, 32, \ -+ FLAG_DST_WRITEONLY, \ -+ 8, /* number of pixels, processed in a single block */ \ -+ 10, /* prefetch distance */ \ -+ default_init, \ -+ default_cleanup, \ -+ pixman_composite_src_8888_8888_process_pixblock_head, \ -+ pixman_composite_src_8888_8888_process_pixblock_tail, \ -+ pixman_composite_src_8888_8888_process_pixblock_tail_head, \ -+ 0, /* dst_w_basereg */ \ -+ 0, /* dst_r_basereg */ \ -+ 0, /* src_basereg */ \ -+ 0 /* mask_basereg */ -+ -+/******************************************************************************/ -+ -+.macro pixman_composite_over_n_8_8888_process_pixblock_head -+ /* expecting deinterleaved source data in {d8, d9, d10, d11} */ -+ /* d8 - blue, d9 - green, d10 - red, d11 - alpha */ -+ /* and destination data in {d4, d5, d6, d7} */ -+ /* mask is in d24 (d25, d26, d27 are unused) */ -+ -+ /* in */ -+ vmull.u8 q0, d24, d8 -+ vmull.u8 q1, d24, d9 -+ vmull.u8 q6, d24, d10 -+ vmull.u8 q7, d24, d11 -+ vrshr.u16 q10, q0, #8 -+ vrshr.u16 q11, q1, #8 -+ vrshr.u16 q12, q6, #8 -+ vrshr.u16 q13, q7, #8 -+ vraddhn.u16 d0, q0, q10 -+ vraddhn.u16 d1, q1, q11 -+ vraddhn.u16 d2, q6, q12 -+ vraddhn.u16 d3, q7, q13 -+ vmvn.8 d24, d3 /* get inverted alpha */ -+ /* source: d0 - blue, d1 - green, d2 - red, d3 - alpha */ -+ /* destination: d4 - blue, d5 - green, d6 - red, d7 - alpha */ -+ /* now do alpha blending */ -+ vmull.u8 q8, d24, d4 -+ vmull.u8 q9, d24, d5 -+ vmull.u8 q10, d24, d6 -+ vmull.u8 q11, d24, d7 -+.endm -+ -+.macro pixman_composite_over_n_8_8888_process_pixblock_tail -+ vrshr.u16 q14, q8, #8 -+ vrshr.u16 q15, q9, #8 -+ vrshr.u16 q12, q10, #8 -+ vrshr.u16 q13, q11, #8 -+ vraddhn.u16 d28, q14, q8 -+ vraddhn.u16 d29, q15, q9 -+ vraddhn.u16 d30, q12, q10 -+ vraddhn.u16 d31, q13, q11 -+ vqadd.u8 q14, q0, q14 -+ vqadd.u8 q15, q1, q15 -+.endm -+ -+/* TODO: expand macros and do better instructions scheduling */ -+.macro pixman_composite_over_n_8_8888_process_pixblock_tail_head -+ pixman_composite_over_n_8_8888_process_pixblock_tail -+ vst4.8 {d28, d29, d30, d31}, [DST_W, :128]! -+ vld4.8 {d4, d5, d6, d7}, [DST_R, :128]! -+ vld1.8 {d24}, [MASK]! -+ cache_preload 8, 8 -+ pixman_composite_over_n_8_8888_process_pixblock_head -+.endm -+ -+.macro pixman_composite_over_n_8_8888_init -+ add DUMMY, sp, #40 -+ vpush {d8-d15} -+ vld1.32 {d11[0]}, [DUMMY] -+ vdup.8 d8, d11[0] -+ vdup.8 d9, d11[1] -+ vdup.8 d10, d11[2] -+ vdup.8 d11, d11[3] -+.endm -+ -+.macro pixman_composite_over_n_8_8888_cleanup -+ vpop {d8-d15} -+.endm -+ -+generate_composite_function \ -+ pixman_composite_over_n_8_8888_asm_neon, 0, 8, 32, \ -+ FLAG_DST_READWRITE | FLAG_DEINTERLEAVE_32BPP, \ -+ 8, /* number of pixels, processed in a single block */ \ -+ 5, /* prefetch distance */ \ -+ pixman_composite_over_n_8_8888_init, \ -+ pixman_composite_over_n_8_8888_cleanup, \ -+ pixman_composite_over_n_8_8888_process_pixblock_head, \ -+ pixman_composite_over_n_8_8888_process_pixblock_tail, \ -+ pixman_composite_over_n_8_8888_process_pixblock_tail_head -+ -+/******************************************************************************/ -+ -+.macro pixman_composite_add_n_8_8_process_pixblock_head -+ /* expecting source data in {d8, d9, d10, d11} */ -+ /* d8 - blue, d9 - green, d10 - red, d11 - alpha */ -+ /* and destination data in {d4, d5, d6, d7} */ -+ /* mask is in d24, d25, d26, d27 */ -+ vmull.u8 q0, d24, d11 -+ vmull.u8 q1, d25, d11 -+ vmull.u8 q6, d26, d11 -+ vmull.u8 q7, d27, d11 -+ vrshr.u16 q10, q0, #8 -+ vrshr.u16 q11, q1, #8 -+ vrshr.u16 q12, q6, #8 -+ vrshr.u16 q13, q7, #8 -+ vraddhn.u16 d0, q0, q10 -+ vraddhn.u16 d1, q1, q11 -+ vraddhn.u16 d2, q6, q12 -+ vraddhn.u16 d3, q7, q13 -+ vqadd.u8 q14, q0, q2 -+ vqadd.u8 q15, q1, q3 -+.endm -+ -+.macro pixman_composite_add_n_8_8_process_pixblock_tail -+.endm -+ -+/* TODO: expand macros and do better instructions scheduling */ -+.macro pixman_composite_add_n_8_8_process_pixblock_tail_head -+ pixman_composite_add_n_8_8_process_pixblock_tail -+ vst1.8 {d28, d29, d30, d31}, [DST_W, :128]! -+ vld1.8 {d4, d5, d6, d7}, [DST_R, :128]! -+ vld1.8 {d24, d25, d26, d27}, [MASK]! -+ cache_preload 32, 32 -+ pixman_composite_add_n_8_8_process_pixblock_head -+.endm -+ -+.macro pixman_composite_add_n_8_8_init -+ add DUMMY, sp, #40 -+ vpush {d8-d15} -+ vld1.32 {d11[0]}, [DUMMY] -+ vdup.8 d11, d11[3] -+.endm -+ -+.macro pixman_composite_add_n_8_8_cleanup -+ vpop {d8-d15} -+.endm -+ -+generate_composite_function \ -+ pixman_composite_add_n_8_8_asm_neon, 0, 8, 8, \ -+ FLAG_DST_READWRITE, \ -+ 32, /* number of pixels, processed in a single block */ \ -+ 5, /* prefetch distance */ \ -+ pixman_composite_add_n_8_8_init, \ -+ pixman_composite_add_n_8_8_cleanup, \ -+ pixman_composite_add_n_8_8_process_pixblock_head, \ -+ pixman_composite_add_n_8_8_process_pixblock_tail, \ -+ pixman_composite_add_n_8_8_process_pixblock_tail_head -+ -+/******************************************************************************/ -+ -+.macro pixman_composite_add_8_8_8_process_pixblock_head -+ /* expecting source data in {d0, d1, d2, d3} */ -+ /* destination data in {d4, d5, d6, d7} */ -+ /* mask in {d24, d25, d26, d27} */ -+ vmull.u8 q8, d24, d0 -+ vmull.u8 q9, d25, d1 -+ vmull.u8 q10, d26, d2 -+ vmull.u8 q11, d27, d3 -+ vrshr.u16 q0, q8, #8 -+ vrshr.u16 q1, q9, #8 -+ vrshr.u16 q12, q10, #8 -+ vrshr.u16 q13, q11, #8 -+ vraddhn.u16 d0, q0, q8 -+ vraddhn.u16 d1, q1, q9 -+ vraddhn.u16 d2, q12, q10 -+ vraddhn.u16 d3, q13, q11 -+ vqadd.u8 q14, q0, q2 -+ vqadd.u8 q15, q1, q3 -+.endm -+ -+.macro pixman_composite_add_8_8_8_process_pixblock_tail -+.endm -+ -+/* TODO: expand macros and do better instructions scheduling */ -+.macro pixman_composite_add_8_8_8_process_pixblock_tail_head -+ pixman_composite_add_8_8_8_process_pixblock_tail -+ vst1.8 {d28, d29, d30, d31}, [DST_W, :128]! -+ vld1.8 {d4, d5, d6, d7}, [DST_R, :128]! -+ vld1.8 {d24, d25, d26, d27}, [MASK]! -+ vld1.8 {d0, d1, d2, d3}, [SRC]! -+ cache_preload 32, 32 -+ pixman_composite_add_8_8_8_process_pixblock_head -+.endm -+ -+.macro pixman_composite_add_8_8_8_init -+.endm -+ -+.macro pixman_composite_add_8_8_8_cleanup -+.endm -+ -+generate_composite_function \ -+ pixman_composite_add_8_8_8_asm_neon, 8, 8, 8, \ -+ FLAG_DST_READWRITE, \ -+ 32, /* number of pixels, processed in a single block */ \ -+ 5, /* prefetch distance */ \ -+ pixman_composite_add_8_8_8_init, \ -+ pixman_composite_add_8_8_8_cleanup, \ -+ pixman_composite_add_8_8_8_process_pixblock_head, \ -+ pixman_composite_add_8_8_8_process_pixblock_tail, \ -+ pixman_composite_add_8_8_8_process_pixblock_tail_head -+ -+/******************************************************************************/ -+ -+.macro pixman_composite_over_8888_n_8888_process_pixblock_head -+ /* expecting source data in {d0, d1, d2, d3} */ -+ /* destination data in {d4, d5, d6, d7} */ -+ /* solid mask is in d15 */ -+ -+ /* 'in' */ -+ vmull.u8 q8, d15, d3 -+ vmull.u8 q6, d15, d2 -+ vmull.u8 q5, d15, d1 -+ vmull.u8 q4, d15, d0 -+ vrshr.u16 q13, q8, #8 -+ vrshr.u16 q12, q6, #8 -+ vrshr.u16 q11, q5, #8 -+ vrshr.u16 q10, q4, #8 -+ vraddhn.u16 d3, q8, q13 -+ vraddhn.u16 d2, q6, q12 -+ vraddhn.u16 d1, q5, q11 -+ vraddhn.u16 d0, q4, q10 -+ vmvn.8 d24, d3 /* get inverted alpha */ -+ /* now do alpha blending */ -+ vmull.u8 q8, d24, d4 -+ vmull.u8 q9, d24, d5 -+ vmull.u8 q10, d24, d6 -+ vmull.u8 q11, d24, d7 -+.endm -+ -+.macro pixman_composite_over_8888_n_8888_process_pixblock_tail -+ vrshr.u16 q14, q8, #8 -+ vrshr.u16 q15, q9, #8 -+ vrshr.u16 q12, q10, #8 -+ vrshr.u16 q13, q11, #8 -+ vraddhn.u16 d28, q14, q8 -+ vraddhn.u16 d29, q15, q9 -+ vraddhn.u16 d30, q12, q10 -+ vraddhn.u16 d31, q13, q11 -+ vqadd.u8 q14, q0, q14 -+ vqadd.u8 q15, q1, q15 -+.endm -+ -+/* TODO: expand macros and do better instructions scheduling */ -+.macro pixman_composite_over_8888_n_8888_process_pixblock_tail_head -+ vld4.8 {d4, d5, d6, d7}, [DST_R, :128]! -+ pixman_composite_over_8888_n_8888_process_pixblock_tail -+ vld4.8 {d0, d1, d2, d3}, [SRC]! -+ cache_preload 8, 8 -+ pixman_composite_over_8888_n_8888_process_pixblock_head -+ vst4.8 {d28, d29, d30, d31}, [DST_W, :128]! -+.endm -+ -+.macro pixman_composite_over_8888_n_8888_init -+ add DUMMY, sp, #48 -+ vpush {d8-d15} -+ vld1.32 {d15[0]}, [DUMMY] -+ vdup.8 d15, d15[3] -+.endm -+ -+.macro pixman_composite_over_8888_n_8888_cleanup -+ vpop {d8-d15} -+.endm -+ -+generate_composite_function \ -+ pixman_composite_over_8888_n_8888_asm_neon, 32, 0, 32, \ -+ FLAG_DST_READWRITE | FLAG_DEINTERLEAVE_32BPP, \ -+ 8, /* number of pixels, processed in a single block */ \ -+ 5, /* prefetch distance */ \ -+ pixman_composite_over_8888_n_8888_init, \ -+ pixman_composite_over_8888_n_8888_cleanup, \ -+ pixman_composite_over_8888_n_8888_process_pixblock_head, \ -+ pixman_composite_over_8888_n_8888_process_pixblock_tail, \ -+ pixman_composite_over_8888_n_8888_process_pixblock_tail_head --- -1.6.2.4 - diff --git a/recipes/xorg-lib/pixman/0007-ARM-Enabled-new-NEON-optimizations.patch b/recipes/xorg-lib/pixman/0007-ARM-Enabled-new-NEON-optimizations.patch deleted file mode 100644 index c14bac153c..0000000000 --- a/recipes/xorg-lib/pixman/0007-ARM-Enabled-new-NEON-optimizations.patch +++ /dev/null @@ -1,592 +0,0 @@ -From 98d458dea913d7d76c48c48de9ef3aee85cced3a Mon Sep 17 00:00:00 2001 -From: Siarhei Siamashka <siarhei.siamashka@nokia.com> -Date: Mon, 12 Oct 2009 22:25:38 +0300 -Subject: [PATCH 7/7] ARM: Enabled new NEON optimizations - ---- - pixman/pixman-arm-neon.c | 535 ++++++++++++++++++++++++++++++++++++++++++++-- - 1 files changed, 520 insertions(+), 15 deletions(-) - -diff --git a/pixman/pixman-arm-neon.c b/pixman/pixman-arm-neon.c -index fe57daa..2811099 100644 ---- a/pixman/pixman-arm-neon.c -+++ b/pixman/pixman-arm-neon.c -@@ -34,6 +34,18 @@ - #include <string.h> - #include "pixman-private.h" - -+/* -+ * Use GNU assembler optimizations only if we are completely sure that -+ * the target system has compatible ABI and calling conventions. This -+ * check can be updated/extended if more systems turn out to be actually -+ * compatible. -+ */ -+#if defined(__linux__) && defined(__ARM_EABI__) && defined(USE_GCC_INLINE_ASM) -+#define USE_GNU_ASSEMBLER_ARM_NEON -+#endif -+ -+#ifndef USE_GNU_ASSEMBLER_ARM_NEON -+ - /* Deal with an intrinsic that is defined differently in GCC */ - #if !defined(__ARMCC_VERSION) && !defined(__pld) - #define __pld(_x) __builtin_prefetch (_x) -@@ -1901,17 +1913,7 @@ pixman_fill_neon (uint32_t *bits, - #endif - } - --/* -- * Use GNU assembler optimizations only if we are completely sure that -- * the target system has compatible ABI and calling conventions. This -- * check can be updated/extended if more systems turn out to be actually -- * compatible. -- */ --#if defined(__linux__) && defined(__ARM_EABI__) && defined(USE_GCC_INLINE_ASM) --#define USE_GNU_ASSEMBLER_ASM --#endif -- --#ifdef USE_GNU_ASSEMBLER_ASM -+#else /* USE_GNU_ASSEMBLER_ARM_NEON */ - - void - pixman_composite_over_8888_0565_asm_neon (int32_t w, -@@ -1941,23 +1943,525 @@ neon_composite_over_8888_0565 (pixman_implementation_t *imp, - int32_t dst_stride, src_stride; - - PIXMAN_IMAGE_GET_LINE (src_image, src_x, src_y, uint32_t, -- src_stride, src_line, 1); -+ src_stride, src_line, 1); - PIXMAN_IMAGE_GET_LINE (dst_image, dest_x, dest_y, uint16_t, -- dst_stride, dst_line, 1); -+ dst_stride, dst_line, 1); - - pixman_composite_over_8888_0565_asm_neon (width, height, - dst_line, dst_stride, - src_line, src_stride); - } - -+void -+pixman_composite_src_8888_0565_asm_neon (int32_t w, -+ int32_t h, -+ uint16_t *dst, -+ int32_t dst_stride, -+ uint32_t *src, -+ int32_t src_stride); -+ -+static void -+neon_composite_src_8888_0565 (pixman_implementation_t *imp, -+ pixman_op_t op, -+ pixman_image_t * src_image, -+ pixman_image_t * mask_image, -+ pixman_image_t * dst_image, -+ int32_t src_x, -+ int32_t src_y, -+ int32_t mask_x, -+ int32_t mask_y, -+ int32_t dest_x, -+ int32_t dest_y, -+ int32_t width, -+ int32_t height) -+{ -+ uint16_t *dst_line; -+ uint32_t *src_line; -+ int32_t dst_stride, src_stride; -+ -+ PIXMAN_IMAGE_GET_LINE (src_image, src_x, src_y, uint32_t, -+ src_stride, src_line, 1); -+ PIXMAN_IMAGE_GET_LINE (dst_image, dest_x, dest_y, uint16_t, -+ dst_stride, dst_line, 1); -+ -+ pixman_composite_src_8888_0565_asm_neon (width, height, -+ dst_line, dst_stride, -+ src_line, src_stride); -+} -+ -+void -+pixman_composite_src_0565_0565_asm_neon (int32_t w, -+ int32_t h, -+ uint16_t *dst, -+ int32_t dst_stride, -+ uint16_t *src, -+ int32_t src_stride); -+ -+static void -+neon_composite_src_0565_0565 (pixman_implementation_t *imp, -+ pixman_op_t op, -+ pixman_image_t * src_image, -+ pixman_image_t * mask_image, -+ pixman_image_t * dst_image, -+ int32_t src_x, -+ int32_t src_y, -+ int32_t mask_x, -+ int32_t mask_y, -+ int32_t dest_x, -+ int32_t dest_y, -+ int32_t width, -+ int32_t height) -+{ -+ uint16_t *dst_line; -+ uint16_t *src_line; -+ int32_t dst_stride, src_stride; -+ -+ PIXMAN_IMAGE_GET_LINE (src_image, src_x, src_y, uint16_t, -+ src_stride, src_line, 1); -+ PIXMAN_IMAGE_GET_LINE (dst_image, dest_x, dest_y, uint16_t, -+ dst_stride, dst_line, 1); -+ -+ pixman_composite_src_0565_0565_asm_neon (width, height, -+ dst_line, dst_stride, -+ src_line, src_stride); -+} -+ -+ -+void -+pixman_composite_src_8888_8888_asm_neon (int32_t w, -+ int32_t h, -+ uint32_t *dst, -+ int32_t dst_stride, -+ uint32_t *src, -+ int32_t src_stride); -+ -+static void -+neon_composite_src_8888_8888 (pixman_implementation_t *imp, -+ pixman_op_t op, -+ pixman_image_t * src_image, -+ pixman_image_t * mask_image, -+ pixman_image_t * dst_image, -+ int32_t src_x, -+ int32_t src_y, -+ int32_t mask_x, -+ int32_t mask_y, -+ int32_t dest_x, -+ int32_t dest_y, -+ int32_t width, -+ int32_t height) -+{ -+ uint32_t *dst_line; -+ uint32_t *src_line; -+ int32_t dst_stride, src_stride; -+ -+ PIXMAN_IMAGE_GET_LINE (src_image, src_x, src_y, uint32_t, -+ src_stride, src_line, 1); -+ PIXMAN_IMAGE_GET_LINE (dst_image, dest_x, dest_y, uint32_t, -+ dst_stride, dst_line, 1); -+ -+ pixman_composite_src_8888_8888_asm_neon (width, height, -+ dst_line, dst_stride, -+ src_line, src_stride); -+} -+ -+void -+pixman_composite_over_8888_8888_asm_neon (int32_t w, -+ int32_t h, -+ uint32_t *dst, -+ int32_t dst_stride, -+ uint32_t *src, -+ int32_t src_stride); -+ -+static void -+neon_composite_over_8888_8888 (pixman_implementation_t *imp, -+ pixman_op_t op, -+ pixman_image_t * src_image, -+ pixman_image_t * mask_image, -+ pixman_image_t * dst_image, -+ int32_t src_x, -+ int32_t src_y, -+ int32_t mask_x, -+ int32_t mask_y, -+ int32_t dest_x, -+ int32_t dest_y, -+ int32_t width, -+ int32_t height) -+{ -+ uint32_t *dst_line; -+ uint32_t *src_line; -+ int32_t dst_stride, src_stride; -+ -+ PIXMAN_IMAGE_GET_LINE (src_image, src_x, src_y, uint32_t, -+ src_stride, src_line, 1); -+ PIXMAN_IMAGE_GET_LINE (dst_image, dest_x, dest_y, uint32_t, -+ dst_stride, dst_line, 1); -+ -+ pixman_composite_over_8888_8888_asm_neon (width, height, -+ dst_line, dst_stride, -+ src_line, src_stride); -+} -+ -+void -+pixman_composite_add_8000_8000_asm_neon (int32_t w, -+ int32_t h, -+ uint8_t *dst, -+ int32_t dst_stride, -+ uint8_t *src, -+ int32_t src_stride); -+ -+static void -+neon_composite_add_8000_8000 (pixman_implementation_t *imp, -+ pixman_op_t op, -+ pixman_image_t * src_image, -+ pixman_image_t * mask_image, -+ pixman_image_t * dst_image, -+ int32_t src_x, -+ int32_t src_y, -+ int32_t mask_x, -+ int32_t mask_y, -+ int32_t dest_x, -+ int32_t dest_y, -+ int32_t width, -+ int32_t height) -+{ -+ uint8_t *dst_line; -+ uint8_t *src_line; -+ int32_t dst_stride, src_stride; -+ -+ PIXMAN_IMAGE_GET_LINE (src_image, src_x, src_y, uint8_t, -+ src_stride, src_line, 1); -+ PIXMAN_IMAGE_GET_LINE (dst_image, dest_x, dest_y, uint8_t, -+ dst_stride, dst_line, 1); -+ -+ pixman_composite_add_8000_8000_asm_neon (width, height, -+ dst_line, dst_stride, -+ src_line, src_stride); -+} -+ -+void -+pixman_composite_over_n_8_0565_asm_neon (int32_t w, -+ int32_t h, -+ uint16_t *dst, -+ int32_t dst_stride, -+ uint32_t src, -+ int32_t unused, -+ uint8_t *mask, -+ int32_t mask_stride); -+ -+static void -+neon_composite_over_n_8_0565 (pixman_implementation_t *imp, -+ pixman_op_t op, -+ pixman_image_t * src_image, -+ pixman_image_t * mask_image, -+ pixman_image_t * dst_image, -+ int32_t src_x, -+ int32_t src_y, -+ int32_t mask_x, -+ int32_t mask_y, -+ int32_t dest_x, -+ int32_t dest_y, -+ int32_t width, -+ int32_t height) -+{ -+ uint16_t *dst_line; -+ uint8_t *mask_line; -+ int32_t dst_stride, mask_stride; -+ uint32_t src; -+ -+ src = _pixman_image_get_solid (src_image, dst_image->bits.format); -+ -+ if (src == 0) -+ return; -+ -+ PIXMAN_IMAGE_GET_LINE (dst_image, dest_x, dest_y, uint16_t, -+ dst_stride, dst_line, 1); -+ PIXMAN_IMAGE_GET_LINE (mask_image, mask_x, mask_y, uint8_t, -+ mask_stride, mask_line, 1); -+ -+ pixman_composite_over_n_8_0565_asm_neon (width, height, -+ dst_line, dst_stride, -+ src, 0, -+ mask_line, mask_stride); -+} -+ -+void -+pixman_composite_over_n_8_8888_asm_neon (int32_t w, -+ int32_t h, -+ uint32_t *dst, -+ int32_t dst_stride, -+ uint32_t src, -+ int32_t unused, -+ uint8_t *mask, -+ int32_t mask_stride); -+ -+static void -+neon_composite_over_n_8_8888 (pixman_implementation_t *imp, -+ pixman_op_t op, -+ pixman_image_t * src_image, -+ pixman_image_t * mask_image, -+ pixman_image_t * dst_image, -+ int32_t src_x, -+ int32_t src_y, -+ int32_t mask_x, -+ int32_t mask_y, -+ int32_t dest_x, -+ int32_t dest_y, -+ int32_t width, -+ int32_t height) -+{ -+ uint32_t *dst_line; -+ uint8_t *mask_line; -+ int32_t dst_stride, mask_stride; -+ uint32_t src; -+ -+ src = _pixman_image_get_solid (src_image, dst_image->bits.format); -+ -+ if (src == 0) -+ return; -+ -+ PIXMAN_IMAGE_GET_LINE (dst_image, dest_x, dest_y, uint32_t, -+ dst_stride, dst_line, 1); -+ PIXMAN_IMAGE_GET_LINE (mask_image, mask_x, mask_y, uint8_t, -+ mask_stride, mask_line, 1); -+ -+ pixman_composite_over_n_8_8888_asm_neon (width, height, -+ dst_line, dst_stride, -+ src, 0, -+ mask_line, mask_stride); -+} -+ -+void -+pixman_composite_add_8_8_8_asm_neon (int32_t w, -+ int32_t h, -+ uint8_t *dst, -+ int32_t dst_stride, -+ uint8_t *src, -+ int32_t src_stride, -+ uint8_t *mask, -+ int32_t mask_stride); -+ -+static void -+neon_composite_add_8_8_8 (pixman_implementation_t *imp, -+ pixman_op_t op, -+ pixman_image_t * src_image, -+ pixman_image_t * mask_image, -+ pixman_image_t * dst_image, -+ int32_t src_x, -+ int32_t src_y, -+ int32_t mask_x, -+ int32_t mask_y, -+ int32_t dest_x, -+ int32_t dest_y, -+ int32_t width, -+ int32_t height) -+{ -+ uint8_t *src_line; -+ uint8_t *dst_line; -+ uint8_t *mask_line; -+ int32_t src_stride, dst_stride, mask_stride; -+ -+ PIXMAN_IMAGE_GET_LINE (src_image, src_x, src_y, uint8_t, -+ src_stride, src_line, 1); -+ PIXMAN_IMAGE_GET_LINE (dst_image, dest_x, dest_y, uint8_t, -+ dst_stride, dst_line, 1); -+ PIXMAN_IMAGE_GET_LINE (mask_image, mask_x, mask_y, uint8_t, -+ mask_stride, mask_line, 1); -+ -+ pixman_composite_add_8_8_8_asm_neon (width, height, -+ dst_line, dst_stride, -+ src_line, src_stride, -+ mask_line, mask_stride); -+} -+ -+void -+pixman_composite_add_n_8_8_asm_neon (int32_t w, -+ int32_t h, -+ uint8_t *dst, -+ int32_t dst_stride, -+ uint32_t src, -+ int32_t unused, -+ uint8_t *mask, -+ int32_t mask_stride); -+ -+static void -+neon_composite_add_n_8_8 (pixman_implementation_t *imp, -+ pixman_op_t op, -+ pixman_image_t * src_image, -+ pixman_image_t * mask_image, -+ pixman_image_t * dst_image, -+ int32_t src_x, -+ int32_t src_y, -+ int32_t mask_x, -+ int32_t mask_y, -+ int32_t dest_x, -+ int32_t dest_y, -+ int32_t width, -+ int32_t height) -+{ -+ uint8_t *dst_line; -+ uint8_t *mask_line; -+ int32_t dst_stride, mask_stride; -+ uint32_t src; -+ -+ src = _pixman_image_get_solid (src_image, dst_image->bits.format); -+ -+ if (src == 0) -+ return; -+ -+ PIXMAN_IMAGE_GET_LINE (dst_image, dest_x, dest_y, uint8_t, -+ dst_stride, dst_line, 1); -+ PIXMAN_IMAGE_GET_LINE (mask_image, mask_x, mask_y, uint8_t, -+ mask_stride, mask_line, 1); -+ -+ pixman_composite_add_n_8_8_asm_neon (width, height, -+ dst_line, dst_stride, -+ src, 0, -+ mask_line, mask_stride); -+} -+ -+void -+pixman_composite_over_8888_n_8888_asm_neon (int32_t w, -+ int32_t h, -+ uint32_t *dst, -+ int32_t dst_stride, -+ uint32_t *src, -+ int32_t src_stride, -+ uint32_t mask); -+ -+static void -+neon_composite_over_8888_n_8888 (pixman_implementation_t *imp, -+ pixman_op_t op, -+ pixman_image_t * src_image, -+ pixman_image_t * mask_image, -+ pixman_image_t * dst_image, -+ int32_t src_x, -+ int32_t src_y, -+ int32_t mask_x, -+ int32_t mask_y, -+ int32_t dest_x, -+ int32_t dest_y, -+ int32_t width, -+ int32_t height) -+{ -+ uint32_t *dst_line; -+ uint32_t *src_line; -+ int32_t dst_stride, src_stride; -+ uint32_t mask; -+ -+ mask = _pixman_image_get_solid (mask_image, dst_image->bits.format); -+ -+ if (mask == 0) -+ return; -+ -+ PIXMAN_IMAGE_GET_LINE (src_image, src_x, src_y, uint32_t, -+ src_stride, src_line, 1); -+ PIXMAN_IMAGE_GET_LINE (dst_image, dest_x, dest_y, uint32_t, -+ dst_stride, dst_line, 1); -+ -+ pixman_composite_over_8888_n_8888_asm_neon (width, height, -+ dst_line, dst_stride, -+ src_line, src_stride, -+ mask); -+} -+ -+void -+pixman_composite_src_n_8_asm_neon (int32_t w, -+ int32_t h, -+ uint8_t *dst, -+ int32_t dst_stride, -+ uint8_t src); -+ -+void -+pixman_composite_src_n_0565_asm_neon (int32_t w, -+ int32_t h, -+ uint16_t *dst, -+ int32_t dst_stride, -+ uint16_t src); -+ -+void -+pixman_composite_src_n_8888_asm_neon (int32_t w, -+ int32_t h, -+ uint32_t *dst, -+ int32_t dst_stride, -+ uint32_t src); -+ -+static pixman_bool_t -+pixman_fill_neon (uint32_t *bits, -+ int stride, -+ int bpp, -+ int x, -+ int y, -+ int width, -+ int height, -+ uint32_t _xor) -+{ -+ /* stride is always multiple of 32bit units in pixman */ -+ uint32_t byte_stride = stride * sizeof(uint32_t); -+ -+ switch (bpp) -+ { -+ case 8: -+ pixman_composite_src_n_8_asm_neon ( -+ width, -+ height, -+ (uint8_t *)(((char *) bits) + y * byte_stride + x), -+ byte_stride, -+ _xor & 0xff); -+ return TRUE; -+ case 16: -+ pixman_composite_src_n_0565_asm_neon ( -+ width, -+ height, -+ (uint16_t *)(((char *) bits) + y * byte_stride + x * 2), -+ byte_stride / 2, -+ _xor & 0xffff); -+ return TRUE; -+ case 32: -+ pixman_composite_src_n_8888_asm_neon ( -+ width, -+ height, -+ (uint32_t *)(((char *) bits) + y * byte_stride + x * 4), -+ byte_stride / 4, -+ _xor); -+ return TRUE; -+ default: -+ return FALSE; -+ } -+} -+ - #endif - - static const pixman_fast_path_t arm_neon_fast_path_array[] = - { --#ifdef USE_GNU_ASSEMBLER_ASM -+#ifdef USE_GNU_ASSEMBLER_ARM_NEON -+ { PIXMAN_OP_OVER, PIXMAN_solid, PIXMAN_a8, PIXMAN_r5g6b5, neon_composite_over_n_8_0565, 0 }, -+ { PIXMAN_OP_SRC, PIXMAN_r5g6b5, PIXMAN_null, PIXMAN_r5g6b5, neon_composite_src_0565_0565, 0 }, -+ { PIXMAN_OP_SRC, PIXMAN_a8r8g8b8, PIXMAN_null, PIXMAN_r5g6b5, neon_composite_src_8888_0565, 0 }, -+ { PIXMAN_OP_SRC, PIXMAN_x8r8g8b8, PIXMAN_null, PIXMAN_r5g6b5, neon_composite_src_8888_0565, 0 }, -+ { PIXMAN_OP_ADD, PIXMAN_a8, PIXMAN_a8, PIXMAN_a8, neon_composite_add_8_8_8, 0 }, -+ { PIXMAN_OP_ADD, PIXMAN_solid, PIXMAN_a8, PIXMAN_a8, neon_composite_add_n_8_8, 0 }, -+ { PIXMAN_OP_ADD, PIXMAN_a8, PIXMAN_null, PIXMAN_a8, neon_composite_add_8000_8000, 0 }, -+ { PIXMAN_OP_OVER, PIXMAN_solid, PIXMAN_a8, PIXMAN_b5g6r5, neon_composite_over_n_8_0565, 0 }, -+ { PIXMAN_OP_SRC, PIXMAN_a8b8g8r8, PIXMAN_null, PIXMAN_b5g6r5, neon_composite_src_8888_0565, 0 }, -+ { PIXMAN_OP_SRC, PIXMAN_x8b8g8r8, PIXMAN_null, PIXMAN_b5g6r5, neon_composite_src_8888_0565, 0 }, -+ { PIXMAN_OP_SRC, PIXMAN_a8r8g8b8, PIXMAN_null, PIXMAN_x8r8g8b8, neon_composite_src_8888_8888, 0 }, -+ { PIXMAN_OP_SRC, PIXMAN_x8r8g8b8, PIXMAN_null, PIXMAN_x8r8g8b8, neon_composite_src_8888_8888, 0 }, -+ { PIXMAN_OP_SRC, PIXMAN_a8b8g8r8, PIXMAN_null, PIXMAN_x8b8g8r8, neon_composite_src_8888_8888, 0 }, -+ { PIXMAN_OP_SRC, PIXMAN_x8b8g8r8, PIXMAN_null, PIXMAN_x8b8g8r8, neon_composite_src_8888_8888, 0 }, -+ { PIXMAN_OP_SRC, PIXMAN_b5g6r5, PIXMAN_null, PIXMAN_b5g6r5, neon_composite_src_0565_0565, 0 }, - { PIXMAN_OP_OVER, PIXMAN_a8r8g8b8, PIXMAN_null, PIXMAN_r5g6b5, neon_composite_over_8888_0565, 0 }, - { PIXMAN_OP_OVER, PIXMAN_a8b8g8r8, PIXMAN_null, PIXMAN_b5g6r5, neon_composite_over_8888_0565, 0 }, --#endif -+ { PIXMAN_OP_OVER, PIXMAN_a8r8g8b8, PIXMAN_null, PIXMAN_a8r8g8b8, neon_composite_over_8888_8888, 0 }, -+ { PIXMAN_OP_OVER, PIXMAN_a8r8g8b8, PIXMAN_null, PIXMAN_x8r8g8b8, neon_composite_over_8888_8888, 0 }, -+ { PIXMAN_OP_OVER, PIXMAN_a8b8g8r8, PIXMAN_null, PIXMAN_a8b8g8r8, neon_composite_over_8888_8888, 0 }, -+ { PIXMAN_OP_OVER, PIXMAN_a8b8g8r8, PIXMAN_null, PIXMAN_x8b8g8r8, neon_composite_over_8888_8888, 0 }, -+ { PIXMAN_OP_OVER, PIXMAN_a8r8g8b8, PIXMAN_a8, PIXMAN_a8r8g8b8, neon_composite_over_8888_n_8888, NEED_SOLID_MASK }, -+ { PIXMAN_OP_OVER, PIXMAN_a8r8g8b8, PIXMAN_a8, PIXMAN_x8r8g8b8, neon_composite_over_8888_n_8888, NEED_SOLID_MASK }, -+ { PIXMAN_OP_OVER, PIXMAN_solid, PIXMAN_a8, PIXMAN_a8r8g8b8, neon_composite_over_n_8_8888, 0 }, -+ { PIXMAN_OP_OVER, PIXMAN_solid, PIXMAN_a8, PIXMAN_x8r8g8b8, neon_composite_over_n_8_8888, 0 }, -+ { PIXMAN_OP_OVER, PIXMAN_solid, PIXMAN_a8, PIXMAN_a8b8g8r8, neon_composite_over_n_8_8888, 0 }, -+ { PIXMAN_OP_OVER, PIXMAN_solid, PIXMAN_a8, PIXMAN_x8b8g8r8, neon_composite_over_n_8_8888, 0 }, -+#else - { PIXMAN_OP_ADD, PIXMAN_solid, PIXMAN_a8, PIXMAN_a8, neon_composite_add_n_8_8, 0 }, - { PIXMAN_OP_ADD, PIXMAN_a8, PIXMAN_null, PIXMAN_a8, neon_composite_add_8000_8000, 0 }, - { PIXMAN_OP_OVER, PIXMAN_solid, PIXMAN_a8, PIXMAN_r5g6b5, neon_composite_over_n_8_0565, 0 }, -@@ -1980,6 +2484,7 @@ static const pixman_fast_path_t arm_neon_fast_path_array[] = - { PIXMAN_OP_OVER, PIXMAN_solid, PIXMAN_a8, PIXMAN_x8r8g8b8, neon_composite_over_n_8_8888, 0 }, - { PIXMAN_OP_OVER, PIXMAN_solid, PIXMAN_a8, PIXMAN_a8b8g8r8, neon_composite_over_n_8_8888, 0 }, - { PIXMAN_OP_OVER, PIXMAN_solid, PIXMAN_a8, PIXMAN_x8b8g8r8, neon_composite_over_n_8_8888, 0 }, -+#endif - { PIXMAN_OP_NONE }, - }; - --- -1.6.2.4 - diff --git a/recipes/xorg-lib/pixman/neon-24bpp.patch b/recipes/xorg-lib/pixman/neon-24bpp.patch deleted file mode 100644 index edfd367626..0000000000 --- a/recipes/xorg-lib/pixman/neon-24bpp.patch +++ /dev/null @@ -1,264 +0,0 @@ -From b101c115102b83bb1fc4e28de6136dd4940796bc Mon Sep 17 00:00:00 2001 -From: Siarhei Siamashka <siarhei.siamashka@nokia.com> -Date: Fri, 30 Oct 2009 17:02:14 +0000 -Subject: ARM: initial 24bpp support - ---- -diff --git a/pixman/pixman-arm-neon-asm.S b/pixman/pixman-arm-neon-asm.S -index 35e6a7e..7f91ced 100644 ---- a/pixman/pixman-arm-neon-asm.S -+++ b/pixman/pixman-arm-neon-asm.S -@@ -977,3 +977,32 @@ generate_composite_function \ - pixman_composite_over_8888_n_8888_process_pixblock_head, \ - pixman_composite_over_8888_n_8888_process_pixblock_tail, \ - pixman_composite_over_8888_n_8888_process_pixblock_tail_head -+ -+/******************************************************************************/ -+ -+.macro pixman_composite_src_0888_0888_process_pixblock_head -+.endm -+ -+.macro pixman_composite_src_0888_0888_process_pixblock_tail -+.endm -+ -+.macro pixman_composite_src_0888_0888_process_pixblock_tail_head -+ vst3.8 {d0, d1, d2}, [DST_W]! -+ vld3.8 {d0, d1, d2}, [SRC]! -+ cache_preload 8, 8 -+.endm -+ -+generate_composite_function \ -+ pixman_composite_src_0888_0888_asm_neon, 24, 0, 24, \ -+ FLAG_DST_WRITEONLY, \ -+ 8, /* number of pixels, processed in a single block */ \ -+ 10, /* prefetch distance */ \ -+ default_init, \ -+ default_cleanup, \ -+ pixman_composite_src_0888_0888_process_pixblock_head, \ -+ pixman_composite_src_0888_0888_process_pixblock_tail, \ -+ pixman_composite_src_0888_0888_process_pixblock_tail_head, \ -+ 0, /* dst_w_basereg */ \ -+ 0, /* dst_r_basereg */ \ -+ 0, /* src_basereg */ \ -+ 0 /* mask_basereg */ -diff --git a/pixman/pixman-arm-neon-asm.h b/pixman/pixman-arm-neon-asm.h -index a2941ae..1653ef4 100644 ---- a/pixman/pixman-arm-neon-asm.h -+++ b/pixman/pixman-arm-neon-asm.h -@@ -95,6 +95,14 @@ - op&.&elem_size {d®1[idx]}, [&mem_operand&]! - .endm - -+.macro pixldst3 op, elem_size, reg1, reg2, reg3, mem_operand -+ op&.&elem_size {d®1, d®2, d®3}, [&mem_operand&]! -+.endm -+ -+.macro pixldst30 op, elem_size, reg1, reg2, reg3, idx, mem_operand -+ op&.&elem_size {d®1[idx], d®2[idx], d®3[idx]}, [&mem_operand&]! -+.endm -+ - .macro pixldst numbytes, op, elem_size, basereg, mem_operand, abits - .if numbytes == 32 - pixldst4 op, elem_size, %(basereg+4), %(basereg+5), \ -@@ -134,6 +142,18 @@ - .if (bpp == 32) && (numpix == 8) && (DEINTERLEAVE_32BPP_ENABLED != 0) - pixldst4 vld4, 8, %(basereg+4), %(basereg+5), \ - %(basereg+6), %(basereg+7), mem_operand, abits -+.elseif (bpp == 24) && (numpix == 8) -+ pixldst3 vld3, 8, %(basereg+3), %(basereg+4), %(basereg+5), mem_operand -+.elseif (bpp == 24) && (numpix == 4) -+ pixldst30 vld3, 8, %(basereg+0), %(basereg+1), %(basereg+2), 4, mem_operand -+ pixldst30 vld3, 8, %(basereg+0), %(basereg+1), %(basereg+2), 5, mem_operand -+ pixldst30 vld3, 8, %(basereg+0), %(basereg+1), %(basereg+2), 6, mem_operand -+ pixldst30 vld3, 8, %(basereg+0), %(basereg+1), %(basereg+2), 7, mem_operand -+.elseif (bpp == 24) && (numpix == 2) -+ pixldst30 vld3, 8, %(basereg+0), %(basereg+1), %(basereg+2), 2, mem_operand -+ pixldst30 vld3, 8, %(basereg+0), %(basereg+1), %(basereg+2), 3, mem_operand -+.elseif (bpp == 24) && (numpix == 1) -+ pixldst30 vld3, 8, %(basereg+0), %(basereg+1), %(basereg+2), 1, mem_operand - .else - pixldst %(numpix * bpp / 8), vld1, %(bpp), basereg, mem_operand, abits - .endif -@@ -145,6 +165,18 @@ - .if (bpp == 32) && (numpix == 8) && (DEINTERLEAVE_32BPP_ENABLED != 0) - pixldst4 vst4, 8, %(basereg+4), %(basereg+5), \ - %(basereg+6), %(basereg+7), mem_operand, abits -+.elseif (bpp == 24) && (numpix == 8) -+ pixldst3 vst3, 8, %(basereg+3), %(basereg+4), %(basereg+5), mem_operand -+.elseif (bpp == 24) && (numpix == 4) -+ pixldst30 vst3, 8, %(basereg+0), %(basereg+1), %(basereg+2), 4, mem_operand -+ pixldst30 vst3, 8, %(basereg+0), %(basereg+1), %(basereg+2), 5, mem_operand -+ pixldst30 vst3, 8, %(basereg+0), %(basereg+1), %(basereg+2), 6, mem_operand -+ pixldst30 vst3, 8, %(basereg+0), %(basereg+1), %(basereg+2), 7, mem_operand -+.elseif (bpp == 24) && (numpix == 2) -+ pixldst30 vst3, 8, %(basereg+0), %(basereg+1), %(basereg+2), 2, mem_operand -+ pixldst30 vst3, 8, %(basereg+0), %(basereg+1), %(basereg+2), 3, mem_operand -+.elseif (bpp == 24) && (numpix == 1) -+ pixldst30 vst3, 8, %(basereg+0), %(basereg+1), %(basereg+2), 1, mem_operand - .else - pixldst %(numpix * bpp / 8), vst1, %(bpp), basereg, mem_operand, abits - .endif -@@ -334,6 +366,8 @@ fname: - - .if src_bpp == 32 - .set src_bpp_shift, 2 -+.elseif src_bpp == 24 -+ .set src_bpp_shift, 0 - .elseif src_bpp == 16 - .set src_bpp_shift, 1 - .elseif src_bpp == 8 -@@ -345,6 +379,8 @@ fname: - .endif - .if mask_bpp == 32 - .set mask_bpp_shift, 2 -+.elseif mask_bpp == 24 -+ .set mask_bpp_shift, 0 - .elseif mask_bpp == 8 - .set mask_bpp_shift, 0 - .elseif mask_bpp == 0 -@@ -354,6 +390,8 @@ fname: - .endif - .if dst_w_bpp == 32 - .set dst_bpp_shift, 2 -+.elseif dst_w_bpp == 24 -+ .set dst_bpp_shift, 0 - .elseif dst_w_bpp == 16 - .set dst_bpp_shift, 1 - .elseif dst_w_bpp == 8 -@@ -398,6 +436,19 @@ fname: - PF mov PF_CTL, H, lsl #4 - PF add PF_CTL, #(prefetch_distance - 0x10) - -+.if src_bpp == 24 -+ sub SRC_STRIDE, SRC_STRIDE, W -+ sub SRC_STRIDE, SRC_STRIDE, W, lsl #1 -+.endif -+.if mask_bpp == 24 -+ sub MASK_STRIDE, MASK_STRIDE, W -+ sub MASK_STRIDE, MASK_STRIDE, W, lsl #1 -+.endif -+.if dst_w_bpp == 24 -+ sub DST_STRIDE, DST_STRIDE, W -+ sub DST_STRIDE, DST_STRIDE, W, lsl #1 -+.endif -+ - init - .if regs_shortage - push {r0, r1} -@@ -412,7 +463,8 @@ fname: - cmp W, #(pixblock_size * 2) - blt 8f - 0: -- /* ensure 16 byte alignment of the destination buffer */ -+ /* ensure 16 byte alignment of the destination buffer, except for 24bpp */ -+.if dst_w_bpp != 24 - tst DST_R, #0xF - beq 2f - -@@ -454,6 +506,7 @@ fname: - .endif - .endr - 2: -+.endif - - pixld_a pixblock_size, dst_r_bpp, \ - (dst_r_basereg - pixblock_size * dst_r_bpp / 64), DST_R -@@ -520,11 +573,13 @@ fname: - .if mask_bpp != 0 - add MASK, MASK, MASK_STRIDE, lsl #mask_bpp_shift - .endif -+.if (dst_w_bpp != 24) - sub DST_W, DST_W, W, lsl #dst_bpp_shift --.if src_bpp != 0 -+.endif -+.if (src_bpp != 24) && (src_bpp != 0) - sub SRC, SRC, W, lsl #src_bpp_shift - .endif --.if mask_bpp != 0 -+.if (mask_bpp != 24) && (mask_bpp != 0) - sub MASK, MASK, W, lsl #mask_bpp_shift - .endif - subs H, H, #1 -@@ -539,7 +594,7 @@ fname: - cleanup - pop {r4-r12, pc} /* exit */ - --8: /* handle small rectangle, width up to 15 pixels */ -+8: /* handle small rectangle, width up to (pixblock_size * 2 - 1) pixels */ - tst W, #pixblock_size - beq 1f - pixld pixblock_size, dst_r_bpp, \ -@@ -592,11 +647,13 @@ fname: - .if mask_bpp != 0 - add MASK, MASK, MASK_STRIDE, lsl #mask_bpp_shift - .endif -+.if (dst_w_bpp != 24) - sub DST_W, DST_W, W, lsl #dst_bpp_shift --.if src_bpp != 0 -+.endif -+.if (src_bpp != 24) && (src_bpp != 0) - sub SRC, SRC, W, lsl #src_bpp_shift - .endif --.if mask_bpp != 0 -+.if (mask_bpp != 24) && (mask_bpp != 0) - sub MASK, MASK, W, lsl #mask_bpp_shift - .endif - subs H, H, #1 -diff --git a/pixman/pixman-arm-neon.c b/pixman/pixman-arm-neon.c -index 2811099..f3f38a9 100644 ---- a/pixman/pixman-arm-neon.c -+++ b/pixman/pixman-arm-neon.c -@@ -2065,6 +2065,43 @@ neon_composite_src_8888_8888 (pixman_implementation_t *imp, - } - - void -+pixman_composite_src_0888_0888_asm_neon (int32_t w, -+ int32_t h, -+ uint8_t *dst, -+ int32_t dst_stride, -+ uint8_t *src, -+ int32_t src_stride); -+ -+static void -+neon_composite_src_0888_0888 (pixman_implementation_t *imp, -+ pixman_op_t op, -+ pixman_image_t * src_image, -+ pixman_image_t * mask_image, -+ pixman_image_t * dst_image, -+ int32_t src_x, -+ int32_t src_y, -+ int32_t mask_x, -+ int32_t mask_y, -+ int32_t dest_x, -+ int32_t dest_y, -+ int32_t width, -+ int32_t height) -+{ -+ uint8_t *dst_line; -+ uint8_t *src_line; -+ int32_t dst_stride, src_stride; -+ -+ PIXMAN_IMAGE_GET_LINE (src_image, src_x, src_y, uint8_t, -+ src_stride, src_line, 3); -+ PIXMAN_IMAGE_GET_LINE (dst_image, dest_x, dest_y, uint8_t, -+ dst_stride, dst_line, 3); -+ -+ pixman_composite_src_0888_0888_asm_neon (width, height, -+ dst_line, dst_stride, -+ src_line, src_stride); -+} -+ -+void - pixman_composite_over_8888_8888_asm_neon (int32_t w, - int32_t h, - uint32_t *dst, -@@ -2449,6 +2486,7 @@ static const pixman_fast_path_t arm_neon_fast_path_array[] = - { PIXMAN_OP_SRC, PIXMAN_a8b8g8r8, PIXMAN_null, PIXMAN_x8b8g8r8, neon_composite_src_8888_8888, 0 }, - { PIXMAN_OP_SRC, PIXMAN_x8b8g8r8, PIXMAN_null, PIXMAN_x8b8g8r8, neon_composite_src_8888_8888, 0 }, - { PIXMAN_OP_SRC, PIXMAN_b5g6r5, PIXMAN_null, PIXMAN_b5g6r5, neon_composite_src_0565_0565, 0 }, -+ { PIXMAN_OP_SRC, PIXMAN_r8g8b8, PIXMAN_null, PIXMAN_r8g8b8, neon_composite_src_0888_0888, 0 }, - { PIXMAN_OP_OVER, PIXMAN_a8r8g8b8, PIXMAN_null, PIXMAN_r5g6b5, neon_composite_over_8888_0565, 0 }, - { PIXMAN_OP_OVER, PIXMAN_a8b8g8r8, PIXMAN_null, PIXMAN_b5g6r5, neon_composite_over_8888_0565, 0 }, - { PIXMAN_OP_OVER, PIXMAN_a8r8g8b8, PIXMAN_null, PIXMAN_a8r8g8b8, neon_composite_over_8888_8888, 0 }, --- -cgit v0.8.2 diff --git a/recipes/xorg-lib/pixman/over-8888-0565.patch b/recipes/xorg-lib/pixman/over-8888-0565.patch deleted file mode 100644 index 3e27094022..0000000000 --- a/recipes/xorg-lib/pixman/over-8888-0565.patch +++ /dev/null @@ -1,296 +0,0 @@ -From: Siarhei Siamashka <siarhei.siamashka@nokia.com> -Date: Mon, 27 Jul 2009 04:48:04 +0000 (+0300) -Subject: ARM: NEON optimized version of composite_over_8888_0565 -X-Git-Url: http://siarhei.siamashka.name/gitweb/?p=pixman.git;a=commitdiff_plain;h=17d8ab82858511f212dfb30c347255393eb12b0c - -ARM: NEON optimized version of composite_over_8888_0565 ---- - -diff --git a/pixman/pixman-arm-neon.c b/pixman/pixman-arm-neon.c -index 9404c70..f1dcf1f 100644 ---- a/pixman/pixman-arm-neon.c -+++ b/pixman/pixman-arm-neon.c -@@ -1447,6 +1447,274 @@ neon_composite_src_16_16 (pixman_implementation_t * impl, - } - } - -+static inline void -+neon_composite_over_8888_0565_internal (uint32_t *src, -+ uint16_t *dst, -+ int32_t w, -+ int32_t h, -+ int32_t src_stride, -+ int32_t dst_stride) -+{ -+ int32_t dst_newline_delta = (dst_stride - w) * 2; -+ int32_t src_newline_delta = (src_stride - w) * 4; -+ asm volatile ( -+ -+ ".macro process_pixblock_head size\n" -+ /* load pixel data from memory */ -+ " .if \\size == 8\n" -+ " vld1.32 {d0, d1, d2, d3}, [%[src]]!\n" -+ " vld1.16 {d4, d5}, [%[dst_r]]!\n" -+ " .elseif \\size == 4\n" -+ " vld1.32 {d0, d1}, [%[src]]!\n" -+ " vld1.16 {d4}, [%[dst_r]]!\n" -+ " .elseif \\size == 2\n" -+ " vld1.32 {d0}, [%[src]]!\n" -+ " vld1.16 {d4[0]}, [%[dst_r]]!\n" -+ " vld1.16 {d4[1]}, [%[dst_r]]!\n" -+ " .elseif \\size == 1\n" -+ " vld1.32 {d0[0]}, [%[src]]!\n" -+ " vld1.16 {d4[0]}, [%[dst_r]]!\n" -+ " .endif\n" -+ /* deinterleave and convert both source and destination -+ to "planar" 8-bit format */ -+ " vshrn.u16 d16, q2, #8\n" -+ " vuzp.8 d0, d1\n" -+ " vshrn.u16 d17, q2, #3\n" -+ " vuzp.8 d2, d3\n" -+ " vsli.u16 q2, q2, #5\n" -+ " vuzp.8 d1, d3\n" -+ " vsri.u8 d16, d16, #5\n" -+ " vuzp.8 d0, d2\n" -+ " vmvn.8 d3, d3\n" -+ " vsri.u8 d17, d17, #6\n" -+ " vshrn.u16 d18, q2, #2\n" -+ /* source: d0 - blue, d1 - green, d2 - red, d3 - alpha */ -+ /* destination: d16 - red, d17 - green, d18 - blue */ -+ /* now do alpha blending */ -+ " vmull.u8 q10, d3, d16\n" -+ "pld [%[src], #128]\n" -+ " vmull.u8 q11, d3, d17\n" -+ "pld [%[dst_r], #64]\n" -+ " vmull.u8 q12, d3, d18\n" -+ " vrshr.u16 q13, q10, #8\n" -+ " vrshr.u16 q8, q11, #8\n" -+ " vrshr.u16 q9, q12, #8\n" -+ " vraddhn.u16 d20, q10, q13\n" -+ " vraddhn.u16 d21, q11, q8\n" -+ " vraddhn.u16 d22, q12, q9\n" -+ ".endm\n" -+ -+ ".macro process_pixblock_tail size\n" -+ /* result is ready in d28, d29, d30 (R, G, B) */ -+ " vqadd.u8 d28, d2, d20\n" -+ " vqadd.u8 d29, d1, d21\n" -+ " vqadd.u8 d30, d0, d22\n" -+ /* convert it to r5g6b5 */ -+ " vshll.u8 q3, d28, #8\n" -+ " vshll.u8 q14, d29, #8\n" -+ " vshll.u8 q15, d30, #8\n" -+ " vsri.u16 q3, q14, #5\n" -+ " vsri.u16 q3, q15, #11\n" -+ /* store pixel data to memory */ -+ " .if \\size == 8\n" -+ " vst1.16 {d6, d7}, [%[dst_w], :128]!\n" -+ " .elseif \\size == 4\n" -+ " vst1.16 {d6}, [%[dst_w]]!\n" -+ " .elseif \\size == 2\n" -+ " vst1.16 {d6[0]}, [%[dst_w]]!\n" -+ " vst1.16 {d6[1]}, [%[dst_w]]!\n" -+ " .elseif \\size == 1\n" -+ " vst1.16 {d6[0]}, [%[dst_w]]!\n" -+ " .endif\n" -+ ".endm\n" -+ -+ /* "tail" of the previous block and "head" of the next block -+ are merged and interleaved for better instructions scheduling */ -+ ".macro process_pixblock_tail_head_8\n" -+ " vqadd.u8 d28, d2, d20\n" -+ " vld1.16 {d4, d5}, [%[dst_r], :128]!\n" -+ " vqadd.u8 d29, d1, d21\n" /* TODO: try to join these into a */ -+ " vqadd.u8 d30, d0, d22\n" /* single 128-bit operation */ -+ " vshrn.u16 d16, q2, #8\n" -+ " vld1.32 {d0, d1, d2, d3}, [%[src]]!\n" /* TODO: maybe split */ -+ " vshrn.u16 d17, q2, #3\n" -+ " vsli.u16 q2, q2, #5\n" -+ " vuzp.8 d0, d1\n" -+ " vshll.u8 q3, d28, #8\n" -+ " vuzp.8 d2, d3\n" -+ " vshll.u8 q14, d29, #8\n" -+ " vuzp.8 d1, d3\n" -+ " vsri.u8 d16, d16, #5\n" -+ " vuzp.8 d0, d2\n" -+ " vmvn.8 d3, d3\n" -+ " vsri.u8 d17, d17, #6\n" -+ " vshrn.u16 d18, q2, #2\n" -+ " vmull.u8 q10, d3, d16\n" -+ "pld [%[src], #128]\n" -+ " vmull.u8 q11, d3, d17\n" -+ "pld [%[dst_r], #64]\n" -+ " vmull.u8 q12, d3, d18\n" -+ " vsri.u16 d6, d28, #5\n" -+ " vsri.u16 d7, d29, #5\n" -+ " vshll.u8 q15, d30, #8\n" -+ " vrshr.u16 q13, q10, #8\n" -+ " vrshr.u16 q8, q11, #8\n" -+ " vrshr.u16 q9, q12, #8\n" -+ " vsri.u16 d6, d30, #11\n" -+ " vsri.u16 d7, d31, #11\n" -+ " vraddhn.u16 d20, q10, q13\n" -+ " vraddhn.u16 d21, q11, q8\n" -+ " vraddhn.u16 d22, q12, q9\n" -+ " vst1.16 {d6, d7}, [%[dst_w], :128]!\n" -+ ".endm\n" -+ -+ "subs %[h], %[h], #1\n" -+ "blt 9f\n" -+ "0:\n" -+ "cmp %[w], #8\n" -+ "blt 8f\n" -+ -+ /* ensure 16 byte alignment of the destination buffer */ -+ "tst %[dst_r], #0xF\n" -+ "beq 2f\n" -+ "tst %[dst_r], #2\n" -+ "beq 1f\n" -+ "vld1.32 {d3[0]}, [%[src]]!\n" -+ "vld1.16 {d5[2]}, [%[dst_r]]!\n" -+ "sub %[w], %[w], #1\n" -+ "1:\n" -+ "tst %[dst_r], #4\n" -+ "beq 1f\n" -+ "vld1.32 {d2}, [%[src]]!\n" -+ "vld1.16 {d5[0]}, [%[dst_r]]!\n" -+ "vld1.16 {d5[1]}, [%[dst_r]]!\n" -+ "sub %[w], %[w], #2\n" -+ "1:\n" -+ "tst %[dst_r], #8\n" -+ "beq 1f\n" -+ "vld1.32 {d0, d1}, [%[src]]!\n" -+ "vld1.16 {d4}, [%[dst_r]]!\n" -+ "sub %[w], %[w], #4\n" -+ "1:\n" -+ "process_pixblock_head -1\n" -+ "process_pixblock_tail -1\n" -+ "tst %[dst_w], #2\n" -+ "beq 1f\n" -+ "vst1.16 {d7[2]}, [%[dst_w]]!\n" -+ "1:\n" -+ "tst %[dst_w], #4\n" -+ "beq 1f\n" -+ "vst1.16 {d7[0]}, [%[dst_w]]!\n" -+ "vst1.16 {d7[1]}, [%[dst_w]]!\n" -+ "1:\n" -+ "tst %[dst_w], #8\n" -+ "beq 2f\n" -+ "vst1.16 {d6}, [%[dst_w]]!\n" -+ "2:\n" -+ -+ "subs %[w], %[w], #8\n" -+ "blt 8f\n" -+ "process_pixblock_head 8\n" -+ "subs %[w], %[w], #8\n" -+ "blt 2f\n" -+ "1:\n" /* innermost pipelined loop */ -+ "process_pixblock_tail_head_8\n" -+ "subs %[w], %[w], #8\n" -+ "bge 1b\n" -+ "2:\n" -+ "process_pixblock_tail 8\n" -+ -+ "8:\n" -+ /* process up to 7 remaining pixels */ -+ "tst %[w], #7\n" -+ "beq 2f\n" -+ "tst %[w], #4\n" -+ "beq 1f\n" -+ "vld1.32 {d0, d1}, [%[src]]!\n" -+ "vld1.16 {d4}, [%[dst_r]]!\n" -+ "1:\n" -+ "tst %[w], #2\n" -+ "beq 1f\n" -+ "vld1.32 {d2}, [%[src]]!\n" -+ "vld1.16 {d5[0]}, [%[dst_r]]!\n" -+ "vld1.16 {d5[1]}, [%[dst_r]]!\n" -+ "1:\n" -+ "tst %[w], #1\n" -+ "beq 1f\n" -+ "vld1.32 {d3[0]}, [%[src]]!\n" -+ "vld1.16 {d5[2]}, [%[dst_r]]!\n" -+ "1:\n" -+ -+ "process_pixblock_head -1\n" -+ "process_pixblock_tail -1\n" -+ -+ "tst %[w], #4\n" -+ "beq 1f\n" -+ "vst1.16 {d6}, [%[dst_w]]!\n" -+ "1:\n" -+ "tst %[w], #2\n" -+ "beq 1f\n" -+ "vst1.16 {d7[0]}, [%[dst_w]]!\n" -+ "vst1.16 {d7[1]}, [%[dst_w]]!\n" -+ "1:\n" -+ "tst %[w], #1\n" -+ "beq 2f\n" -+ "vst1.16 {d7[2]}, [%[dst_w]]!\n" -+ "2:\n" -+ -+ "add %[src], %[src], %[src_newline_delta]\n" -+ "add %[dst_r], %[dst_r], %[dst_newline_delta]\n" -+ "add %[dst_w], %[dst_w], %[dst_newline_delta]\n" -+ "mov %[w], %[orig_w]\n" -+ "subs %[h], %[h], #1\n" -+ "bge 0b\n" -+ "9:\n" -+ ".purgem process_pixblock_head\n" -+ ".purgem process_pixblock_tail\n" -+ ".purgem process_pixblock_tail_head_8\n" -+ -+ : [src] "+&r" (src), [dst_r] "+&r" (dst), [dst_w] "+&r" (dst), -+ [w] "+&r" (w), [h] "+&r" (h) -+ : [dst_newline_delta] "r" (dst_newline_delta), -+ [src_newline_delta] "r" (src_newline_delta), [orig_w] "r" (w) -+ : "cc", "memory", -+ "d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7", -+ /* "d8", "d9", "d10", "d11", "d12", "d13", "d14", "d15", */ -+ "d16", "d17", "d18", "d19", "d20", "d21", "d22", "d23", -+ "d24", "d25", "d26", "d27", "d28", "d29", "d30", "d31" -+ ); -+} -+ -+static void -+neon_composite_over_8888_0565 (pixman_implementation_t *imp, -+ pixman_op_t op, -+ pixman_image_t * src_image, -+ pixman_image_t * mask_image, -+ pixman_image_t * dst_image, -+ int32_t src_x, -+ int32_t src_y, -+ int32_t mask_x, -+ int32_t mask_y, -+ int32_t dest_x, -+ int32_t dest_y, -+ int32_t width, -+ int32_t height) -+{ -+ uint16_t *dst_line; -+ uint32_t *src_line; -+ int32_t dst_stride, src_stride; -+ -+ PIXMAN_IMAGE_GET_LINE (src_image, src_x, src_y, uint32_t, src_stride, src_line, 1); -+ PIXMAN_IMAGE_GET_LINE (dst_image, dest_x, dest_y, uint16_t, dst_stride, dst_line, 1); -+ -+ neon_composite_over_8888_0565_internal (src_line, -+ dst_line, -+ width, -+ height, -+ src_stride, -+ dst_stride); -+} -+ - #endif /* USE_GCC_INLINE_ASM */ - - static void -@@ -1908,6 +2176,8 @@ static const pixman_fast_path_t arm_neon_fast_path_array[] = - #ifdef USE_GCC_INLINE_ASM - { PIXMAN_OP_SRC, PIXMAN_r5g6b5, PIXMAN_null, PIXMAN_r5g6b5, neon_composite_src_16_16, 0 }, - { PIXMAN_OP_SRC, PIXMAN_b5g6r5, PIXMAN_null, PIXMAN_b5g6r5, neon_composite_src_16_16, 0 }, -+ { PIXMAN_OP_OVER, PIXMAN_a8r8g8b8, PIXMAN_null, PIXMAN_r5g6b5, neon_composite_over_8888_0565, 0 }, -+ { PIXMAN_OP_OVER, PIXMAN_a8b8g8r8, PIXMAN_null, PIXMAN_b5g6r5, neon_composite_over_8888_0565, 0 }, - #endif - { PIXMAN_OP_OVER, PIXMAN_a8r8g8b8, PIXMAN_null, PIXMAN_a8r8g8b8, neon_composite_over_8888_8888, 0 }, - { PIXMAN_OP_OVER, PIXMAN_a8r8g8b8, PIXMAN_null, PIXMAN_x8r8g8b8, neon_composite_over_8888_8888, 0 }, diff --git a/recipes/xorg-lib/pixman_git.bb b/recipes/xorg-lib/pixman_git.bb index ffca7becce..dd02828e37 100644 --- a/recipes/xorg-lib/pixman_git.bb +++ b/recipes/xorg-lib/pixman_git.bb @@ -4,26 +4,16 @@ DESCRIPTION = "Low-level pixel manipulation library." LICENSE = "X11" PV = "0.17.1" -PR = "r3" +PR = "r4" PR_append = "+gitr${SRCREV}" -SRCREV = "67bf739187cd43b5fff754b25693f76bb788d1fa" +SRCREV = "abefe68ae2a422fecf315f17430c0cda5561be66" DEFAULT_PREFERENCE = "-1" DEFAULT_PREFERENCE_angstrom = "1" SRC_URI = "git://anongit.freedesktop.org/pixman;protocol=git \ -file://0002-ARM-Introduction-of-the-new-framework-for-NEON-fast.patch;patch=1 \ -file://0003-ARM-Added-pixman_composite_src_8888_0565_asm_neon-f.patch;patch=1 \ -file://0004-ARM-Added-pixman_composite_add_8000_8000_asm_neon-f.patch;patch=1 \ -file://0005-ARM-Added-pixman_composite_over_8888_8888_asm_neon.patch;patch=1 \ -file://0006-ARM-Added-a-set-of-NEON-functions-not-fully-optimi.patch;patch=1 \ -file://0007-ARM-Enabled-new-NEON-optimizations.patch;patch=1 \ - file://pixman-28986.patch;patch=1 \ file://nearest-neighbour.patch;patch=1 \ - file://over-8888-0565.patch;patch=1 \ -file://prefetch.patch;patch=1 \ -file://neon-24bpp.patch;patch=1 \ " S = "${WORKDIR}/git" diff --git a/recipes/zaurus-utils/zaurus-updater.bb b/recipes/zaurus-utils/zaurus-updater.bb index ab32d7fe29..62707a994d 100644 --- a/recipes/zaurus-utils/zaurus-updater.bb +++ b/recipes/zaurus-utils/zaurus-updater.bb @@ -34,5 +34,6 @@ do_deploy() { esac } -addtask deploy before do_build after do_compile -PARALLEL_MAKE = "" +# package_stagefile_shell need to run before populate_staging for packaged-staging +addtask deploy before do_populate_staging after do_compile + |