added my Recipes
This commit is contained in:
@@ -0,0 +1,80 @@
|
||||
From 97af5a2efbe30726ce4d7c921efed6afc32a314f Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzeltony@googlemail.com>
|
||||
Date: Sun, 25 Dec 2016 13:41:19 +0100
|
||||
Subject: [PATCH] NEON autodetection segfaults: assume neon present
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
If TUNE_FEATURES contain 'neon' we can assume our machine supports it
|
||||
|
||||
Upstream-Status: Inappropriate [embedded specific]
|
||||
|
||||
Signed-off-by: Andreas Müller <schnitzeltony@googlemail.com>
|
||||
---
|
||||
simd-support/neon.c | 46 +---------------------------------------------
|
||||
1 file changed, 1 insertion(+), 45 deletions(-)
|
||||
|
||||
diff --git a/simd-support/neon.c b/simd-support/neon.c
|
||||
index 86b2cb6..8d6537e 100644
|
||||
--- a/simd-support/neon.c
|
||||
+++ b/simd-support/neon.c
|
||||
@@ -23,54 +23,10 @@
|
||||
|
||||
#if HAVE_NEON
|
||||
|
||||
-/* check for an environment where signals are known to work */
|
||||
-#if defined(unix) || defined(linux)
|
||||
- # include <signal.h>
|
||||
- # include <setjmp.h>
|
||||
-
|
||||
- static jmp_buf jb;
|
||||
-
|
||||
- static void sighandler(int x)
|
||||
- {
|
||||
- UNUSED(x);
|
||||
- longjmp(jb, 1);
|
||||
- }
|
||||
-
|
||||
- static int really_have_neon(void)
|
||||
- {
|
||||
- void (*oldsig)(int);
|
||||
- oldsig = signal(SIGILL, sighandler);
|
||||
- if (setjmp(jb)) {
|
||||
- signal(SIGILL, oldsig);
|
||||
- return 0;
|
||||
- } else {
|
||||
- /* paranoia: encode the instruction in binary because the
|
||||
- assembler may not recognize it without -mfpu=neon */
|
||||
- /*asm volatile ("vand q0, q0, q0");*/
|
||||
- asm volatile (".long 0xf2000150");
|
||||
- signal(SIGILL, oldsig);
|
||||
- return 1;
|
||||
- }
|
||||
- }
|
||||
-
|
||||
- int X(have_simd_neon)(void)
|
||||
- {
|
||||
- static int init = 0, res;
|
||||
-
|
||||
- if (!init) {
|
||||
- res = really_have_neon();
|
||||
- init = 1;
|
||||
- }
|
||||
- return res;
|
||||
- }
|
||||
-
|
||||
-
|
||||
-#else
|
||||
-/* don't know how to autodetect NEON; assume it is present */
|
||||
+/* autodetect NEON broken; assume it is present */
|
||||
int X(have_simd_neon)(void)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
-#endif
|
||||
|
||||
#endif
|
||||
--
|
||||
2.5.5
|
||||
|
||||
@@ -0,0 +1,41 @@
|
||||
--- ./tests/Makefile.am.orig 2021-03-23 11:45:12.756371739 -0400
|
||||
+++ ./tests/Makefile.am 2021-03-23 19:29:19.692180793 -0400
|
||||
@@ -1,21 +1,21 @@
|
||||
AM_CPPFLAGS = -I $(top_srcdir)
|
||||
-noinst_PROGRAMS = bench
|
||||
+bin_PROGRAMS = bench@PREC_SUFFIX@
|
||||
EXTRA_DIST = check.pl README
|
||||
|
||||
if THREADS
|
||||
-bench_CFLAGS = $(PTHREAD_CFLAGS)
|
||||
+bench@PREC_SUFFIX@_CFLAGS = $(PTHREAD_CFLAGS)
|
||||
if !COMBINED_THREADS
|
||||
LIBFFTWTHREADS = $(top_builddir)/threads/libfftw3@PREC_SUFFIX@_threads.la
|
||||
endif
|
||||
else
|
||||
if OPENMP
|
||||
-bench_CFLAGS = $(OPENMP_CFLAGS)
|
||||
+bench@PREC_SUFFIX@_CFLAGS = $(OPENMP_CFLAGS)
|
||||
LIBFFTWTHREADS = $(top_builddir)/threads/libfftw3@PREC_SUFFIX@_omp.la
|
||||
endif
|
||||
endif
|
||||
|
||||
-bench_SOURCES = bench.c hook.c fftw-bench.c fftw-bench.h
|
||||
-bench_LDADD = $(LIBFFTWTHREADS) \
|
||||
+bench@PREC_SUFFIX@_SOURCES = bench.c hook.c fftw-bench.c fftw-bench.h
|
||||
+bench@PREC_SUFFIX@_LDADD = $(LIBFFTWTHREADS) \
|
||||
$(top_builddir)/libfftw3@PREC_SUFFIX@.la \
|
||||
$(top_builddir)/libbench2/libbench2.a $(THREADLIBS)
|
||||
|
||||
--- ./tools/Makefile.am.orig 2021-03-24 08:22:31.845581620 -0400
|
||||
+++ ./tools/Makefile.am 2021-03-24 08:24:26.454053573 -0400
|
||||
@@ -24,7 +24,7 @@
|
||||
endif
|
||||
|
||||
fftw@PREC_SUFFIX@_wisdom_SOURCES = fftw-wisdom.c
|
||||
-fftw@PREC_SUFFIX@_wisdom_LDADD = $(top_builddir)/tests/bench-bench.o \
|
||||
-$(top_builddir)/tests/bench-fftw-bench.o $(LIBFFTWTHREADS) \
|
||||
+fftw@PREC_SUFFIX@_wisdom_LDADD = $(top_builddir)/tests/bench@PREC_SUFFIX@-bench.o \
|
||||
+$(top_builddir)/tests/bench@PREC_SUFFIX@-fftw-bench.o $(LIBFFTWTHREADS) \
|
||||
$(top_builddir)/libfftw3@PREC_SUFFIX@.la \
|
||||
$(top_builddir)/libbench2/libbench2.a $(THREADLIBS)
|
||||
@@ -0,0 +1,30 @@
|
||||
#!/bin/sh
|
||||
|
||||
cd fftw
|
||||
/usr/bin/perl -w ./check.pl -r -c=30 -v `pwd`/bench
|
||||
fftw_result=$?
|
||||
cd ../fftwf
|
||||
/usr/bin/perl -w ./check.pl -r -c=30 -v `pwd`/benchf
|
||||
fftwf_result=$?
|
||||
cd ../fftwl
|
||||
/usr/bin/perl -w ./check.pl -r -c=30 -v `pwd`/benchl
|
||||
fftwl_result=$?
|
||||
|
||||
echo -n "fftw test result:"
|
||||
if [ $fftw_result = "0" ]; then
|
||||
echo PASSED
|
||||
else
|
||||
echo FAILED
|
||||
fi
|
||||
echo -n "fftwf test result:"
|
||||
if [ $fftwf_result = "0" ]; then
|
||||
echo PASSED
|
||||
else
|
||||
echo FAILED
|
||||
fi
|
||||
echo -n "fftwl test result:"
|
||||
if [ $fftwl_result = "0" ]; then
|
||||
echo PASSED
|
||||
else
|
||||
echo FAILED
|
||||
fi
|
||||
103
meta-openembedded/meta-oe/recipes-support/fftw/fftw_3.3.10.bb
Normal file
103
meta-openembedded/meta-oe/recipes-support/fftw/fftw_3.3.10.bb
Normal file
@@ -0,0 +1,103 @@
|
||||
DESCRIPTION = "FFTW"
|
||||
SECTION = "libs"
|
||||
LICENSE = "GPL-2.0-only"
|
||||
LIC_FILES_CHKSUM = "file://COPYING;md5=59530bdf33659b29e73d4adb9f9f6552"
|
||||
|
||||
SRC_URI = " \
|
||||
http://www.fftw.org/fftw-${PV}.tar.gz \
|
||||
file://0001-NEON-autodetection-segfaults-assume-neon-present.patch \
|
||||
file://install-bench.patch \
|
||||
file://run-ptest \
|
||||
"
|
||||
SRC_URI[sha256sum] = "56c932549852cddcfafdab3820b0200c7742675be92179e59e6215b340e26467"
|
||||
|
||||
inherit autotools pkgconfig ptest
|
||||
|
||||
# we had multiple recipes in the past
|
||||
PROVIDES = "fftwl fftwf"
|
||||
|
||||
EXTRA_OECONF = "--disable-fortran --enable-shared --enable-threads"
|
||||
|
||||
CFLAGS += "-D_GNU_SOURCE"
|
||||
|
||||
# neon is optional for arm version < 8 -> check tune features
|
||||
FFTW_NEON = "${@bb.utils.contains('TUNE_FEATURES', 'neon', '--enable-neon', '', d)}"
|
||||
# neon is suppored for arm version = 8 -> enable
|
||||
FFTW_NEON:aarch64 = "--enable-neon"
|
||||
FFTW_NEON:class-native = ""
|
||||
|
||||
do_configure() {
|
||||
# configure fftw
|
||||
rm -rf ${WORKDIR}/build-fftw
|
||||
mkdir -p ${B}
|
||||
cd ${B}
|
||||
# full (re)configure
|
||||
autotools_do_configure
|
||||
mv ${B} ${WORKDIR}/build-fftw
|
||||
|
||||
# configure fftwl
|
||||
rm -rf ${WORKDIR}/build-fftwl
|
||||
mkdir -p ${B}
|
||||
cd ${B}
|
||||
# configure only
|
||||
oe_runconf --enable-long-double
|
||||
mv ${B} ${WORKDIR}/build-fftwl
|
||||
|
||||
# configure fftwf
|
||||
rm -rf ${WORKDIR}/build-fftwf
|
||||
mkdir -p ${B}
|
||||
cd ${B}
|
||||
# configure only
|
||||
oe_runconf --enable-single ${FFTW_NEON}
|
||||
mv ${B} ${WORKDIR}/build-fftwf
|
||||
}
|
||||
|
||||
do_compile() {
|
||||
for lib in fftw fftwl fftwf; do
|
||||
cd ${WORKDIR}/build-$lib
|
||||
test -n "${TOOLCHAIN_OPTIONS}" && sed -i -e 's|${TOOLCHAIN_OPTIONS}||g' config.h
|
||||
autotools_do_compile
|
||||
done
|
||||
}
|
||||
|
||||
do_install() {
|
||||
for lib in fftw fftwl fftwf; do
|
||||
cd ${WORKDIR}/build-$lib
|
||||
autotools_do_install
|
||||
done
|
||||
}
|
||||
|
||||
do_install_ptest() {
|
||||
for lib in fftw fftwl fftwf; do
|
||||
install -d ${D}${PTEST_PATH}/$lib
|
||||
install -m 0755 ${S}/tests/check.pl ${D}${PTEST_PATH}/$lib
|
||||
cd ${WORKDIR}/build-$lib
|
||||
if [ $lib = "fftw" ]; then
|
||||
mv ${D}${bindir}/bench ${D}${PTEST_PATH}/$lib
|
||||
fi
|
||||
if [ $lib = "fftwl" ]; then
|
||||
mv ${D}${bindir}/benchl ${D}${PTEST_PATH}/$lib
|
||||
fi
|
||||
if [ $lib = "fftwf" ]; then
|
||||
mv ${D}${bindir}/benchf ${D}${PTEST_PATH}/$lib
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
PACKAGES =+ "libfftw libfftwl libfftwf"
|
||||
FILES:libfftw = "${libdir}/libfftw3.so.* ${libdir}/libfftw3_*.so.*"
|
||||
FILES:libfftwl = "${libdir}/libfftw3l.so.* ${libdir}/libfftw3l_*.so.*"
|
||||
FILES:libfftwf = "${libdir}/libfftw3f.so.* ${libdir}/libfftw3f_*.so.*"
|
||||
|
||||
PACKAGES =+ "fftw-wisdom fftwl-wisdom fftwf-wisdom fftw-wisdom-to-conf"
|
||||
FILES:fftw-wisdom = "${bindir}/fftw-wisdom"
|
||||
FILES:fftwl-wisdom = "${bindir}/fftwl-wisdom"
|
||||
FILES:fftwf-wisdom = "${bindir}/fftwf-wisdom"
|
||||
FILES:fftw-wisdom-to-conf = "${bindir}/fftw-wisdom-to-conf"
|
||||
|
||||
FILES:${PN}-dev += "${libdir}/cmake"
|
||||
RDEPENDS:${PN}-dev = "libfftw libfftwl libfftwf"
|
||||
RDEPENDS:${PN}-ptest += "perl"
|
||||
RDEPENDS:${PN}-ptest:remove = "fftw"
|
||||
|
||||
BBCLASSEXTEND = "native"
|
||||
Reference in New Issue
Block a user