From a046619a79eed1400e288dfb12898772b815da8f Mon Sep 17 00:00:00 2001 From: Ismo Puustinen Date: Wed, 26 Apr 2017 10:14:10 +0300 Subject: [PATCH 01/10] meta-refkit-extra: add new layer. Add meta-refkit-extra layer for storing demos and extra content. Have the layer initially in disabled state. Also add initial configuration. Signed-off-by: Ismo Puustinen --- .../include/refkit-extra-supported-recipes.txt | 0 .../conf/distro/include/refkit-extra.conf | 6 ++++++ .../distro/include/refkit_extra_security_flags.inc | 0 meta-refkit-extra/conf/layer.conf | 13 +++++++++++++ meta-refkit-extra/doc/README | 10 ++++++++++ 5 files changed, 29 insertions(+) create mode 100644 meta-refkit-extra/conf/distro/include/refkit-extra-supported-recipes.txt create mode 100644 meta-refkit-extra/conf/distro/include/refkit-extra.conf create mode 100644 meta-refkit-extra/conf/distro/include/refkit_extra_security_flags.inc create mode 100644 meta-refkit-extra/conf/layer.conf create mode 100644 meta-refkit-extra/doc/README diff --git a/meta-refkit-extra/conf/distro/include/refkit-extra-supported-recipes.txt b/meta-refkit-extra/conf/distro/include/refkit-extra-supported-recipes.txt new file mode 100644 index 0000000000..e69de29bb2 diff --git a/meta-refkit-extra/conf/distro/include/refkit-extra.conf b/meta-refkit-extra/conf/distro/include/refkit-extra.conf new file mode 100644 index 0000000000..54fe5f72a5 --- /dev/null +++ b/meta-refkit-extra/conf/distro/include/refkit-extra.conf @@ -0,0 +1,6 @@ +require refkit_extra_security_flags.inc + +SUPPORTED_RECIPES_append = " \ + ${META_REFKIT_EXTRA_BASE}/conf/distro/include/refkit-extra-supported-recipes.txt \ +" +SUPPORTED_RECIPES[refkit-extra-supported-recipes.txt] = "extra" diff --git a/meta-refkit-extra/conf/distro/include/refkit_extra_security_flags.inc b/meta-refkit-extra/conf/distro/include/refkit_extra_security_flags.inc new file mode 100644 index 0000000000..e69de29bb2 diff --git a/meta-refkit-extra/conf/layer.conf b/meta-refkit-extra/conf/layer.conf new file mode 100644 index 0000000000..5f4dfbdb31 --- /dev/null +++ b/meta-refkit-extra/conf/layer.conf @@ -0,0 +1,13 @@ +# We have a conf and classes directory, add to BBPATH +BBPATH .= ":${LAYERDIR}" + +# We have recipes-* directories, add to BBFILES +BBFILES += "${LAYERDIR}/recipes-*/*/*.bb \ + ${LAYERDIR}/recipes-*/*/*.bbappend" + +BBFILE_COLLECTIONS += "refkit-extra" +BBFILE_PATTERN_refkit-extra = "^${LAYERDIR}/" +# higher priority than meta-refkit, so that we can override recipes here +BBFILE_PRIORITY_refkit-extra = "7" + +META_REFKIT_EXTRA_BASE := "${LAYERDIR}" diff --git a/meta-refkit-extra/doc/README b/meta-refkit-extra/doc/README new file mode 100644 index 0000000000..5b12df87e5 --- /dev/null +++ b/meta-refkit-extra/doc/README @@ -0,0 +1,10 @@ +This a layer for demos and other things which are built on top of +Refkit. Do not add dependencies from meta-refkit to this layer. + +To enable this layer, enter: + + $ bitbake-layers add-layer meta-refkit-extra + +Then add to your local.conf of distribution config this line: + + require conf/distro/include/refkit-extra.conf From 2808776aad5097e5b5ac4568e5eb3dfbaab0ff16 Mon Sep 17 00:00:00 2001 From: Ismo Puustinen Date: Wed, 26 Apr 2017 12:22:05 +0300 Subject: [PATCH 02/10] python3-pillow: new package. Pillow is a fork of PIL, Python Imaging Library. Signed-off-by: Ismo Puustinen --- ...ild-always-disable-platform-guessing.patch | 60 +++++++++++++++++++ .../python-pillow/python3-pillow_4.0.0.bb | 28 +++++++++ 2 files changed, 88 insertions(+) create mode 100644 meta-refkit-extra/recipes-convnet/python-pillow/files/0001-build-always-disable-platform-guessing.patch create mode 100644 meta-refkit-extra/recipes-convnet/python-pillow/python3-pillow_4.0.0.bb diff --git a/meta-refkit-extra/recipes-convnet/python-pillow/files/0001-build-always-disable-platform-guessing.patch b/meta-refkit-extra/recipes-convnet/python-pillow/files/0001-build-always-disable-platform-guessing.patch new file mode 100644 index 0000000000..54c91f2f64 --- /dev/null +++ b/meta-refkit-extra/recipes-convnet/python-pillow/files/0001-build-always-disable-platform-guessing.patch @@ -0,0 +1,60 @@ +From f95790326dde62e98894a61528f5374f15a10dcf Mon Sep 17 00:00:00 2001 +From: Ismo Puustinen +Date: Mon, 27 Feb 2017 13:16:23 +0200 +Subject: [PATCH] build: always disable platform guessing. + +Upstream-status: Inappropriate + +Signed-off-by: Ismo Puustinen +--- + setup.py | 20 +------------------- + 1 file changed, 1 insertion(+), 19 deletions(-) + +diff --git a/setup.py b/setup.py +index 1dc146d..dcdb8e8 100755 +--- a/setup.py ++++ b/setup.py +@@ -251,7 +251,7 @@ class pil_build_ext(build_ext): + # + # add platform directories + +- if self.disable_platform_guessing: ++ if self.disable_platform_guessing or True: + pass + + elif sys.platform == "cygwin": +@@ -351,14 +351,6 @@ class pil_build_ext(build_ext): + raise ValueError( + "Unable to identify Linux platform: `%s`" % platform_) + +- # XXX Kludge. Above /\ we brute force support multiarch. Here we +- # try Barry's more general approach. Afterward, something should +- # work ;-) +- self.add_multiarch_paths() +- +- elif sys.platform.startswith("gnu"): +- self.add_multiarch_paths() +- + elif sys.platform.startswith("freebsd"): + _add_directory(library_dirs, "/usr/local/lib") + _add_directory(include_dirs, "/usr/local/include") +@@ -373,16 +365,6 @@ class pil_build_ext(build_ext): + + # FIXME: check /opt/stuff directories here? + +- # standard locations +- if not self.disable_platform_guessing: +- _add_directory(library_dirs, "/usr/local/lib") +- _add_directory(include_dirs, "/usr/local/include") +- +- _add_directory(library_dirs, "/usr/lib") +- _add_directory(include_dirs, "/usr/include") +- # alpine, at least +- _add_directory(library_dirs, "/lib") +- + # on Windows, look for the OpenJPEG libraries in the location that + # the official installer puts them + if sys.platform == "win32": +-- +2.9.3 + diff --git a/meta-refkit-extra/recipes-convnet/python-pillow/python3-pillow_4.0.0.bb b/meta-refkit-extra/recipes-convnet/python-pillow/python3-pillow_4.0.0.bb new file mode 100644 index 0000000000..80da647980 --- /dev/null +++ b/meta-refkit-extra/recipes-convnet/python-pillow/python3-pillow_4.0.0.bb @@ -0,0 +1,28 @@ +SUMMARY = "Python library that provides an easy interface to read and write a wide range of image data, including animated images, video, volumetric data, and scientific formats." +SECTION = "devel/python" +LICENSE = "PIL" +LIC_FILES_CHKSUM = "file://LICENSE;md5=ed22148166c9fd21895d7794dc16f6a5" + +inherit setuptools3 pkgconfig distutils-tools + +SRC_URI = " \ + https://github.com/python-pillow/Pillow/archive/${PV}a.tar.gz \ + file://0001-build-always-disable-platform-guessing.patch \ +" + +SRC_URI[md5sum] = "bca20cd48afd6618135540b34dba3267" +SRC_URI[sha256sum] = "d498837f6c84d0fad9ef414dc0e9ee0b8d45d10efebc72898ed15950f111ad55" + +S = "${WORKDIR}/Pillow-${PV}a" + +DEPENDS += "python3 libjpeg-turbo zlib tiff freetype libpng jpeg" + +# DISTUTILS_INSTALL_ARGS += "--disable-platform-guessing" + +CFLAGS_append = " -I${STAGING_INCDIR}" +LDFLAGS_append = " -L${STAGING_LIBDIR}" + +do_compile_prepend() { + export LDFLAGS="$LDFLAGS -L${STAGING_LIBDIR}" + export CFLAGS="$CFLAGS -I${STAGING_INCDIR}" +} From 934ce98bd3b9509cf58c5455b7c272c4450b9264 Mon Sep 17 00:00:00 2001 From: Ismo Puustinen Date: Thu, 2 Mar 2017 10:46:31 +0200 Subject: [PATCH 03/10] python3-imageio: add a new package. ImageIO is a Python library for doing basic I/O operations for images. Signed-off-by: Ismo Puustinen --- .../python-imageio/python3-imageio_2.1.2.bb | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 meta-refkit-extra/recipes-convnet/python-imageio/python3-imageio_2.1.2.bb diff --git a/meta-refkit-extra/recipes-convnet/python-imageio/python3-imageio_2.1.2.bb b/meta-refkit-extra/recipes-convnet/python-imageio/python3-imageio_2.1.2.bb new file mode 100644 index 0000000000..cec41b27d2 --- /dev/null +++ b/meta-refkit-extra/recipes-convnet/python-imageio/python3-imageio_2.1.2.bb @@ -0,0 +1,19 @@ +SUMMARY = "Python library that provides an easy interface to read and write a wide range of image data, including animated images, video, volumetric data, and scientific formats." +SECTION = "devel/python" +LICENSE = "BSD" +LIC_FILES_CHKSUM = "file://LICENSE;md5=295e673459dd7498500c971c98831367" + +SRC_URI = " \ + https://github.com/imageio/imageio/archive/v${PV}.tar.gz \ +" +SRC_URI[md5sum] = "61bb19fa36d966c2dc85521948b338c9" +SRC_URI[sha256sum] = "d7d411c25e2b46af99b6bbca7eb00cc9847981db12f467f6c8d9e7d7a80b277b" + +S = "${WORKDIR}/imageio-${PV}" + +inherit setuptools3 + +DEPENDS = "python3" + +RDEPENDS_${PN} = "python3-numpy python3-pillow" + From 6c24fe0c7c5918e5dfc46478d245e2eafe7c95c2 Mon Sep 17 00:00:00 2001 From: Ismo Puustinen Date: Tue, 28 Feb 2017 16:42:48 +0200 Subject: [PATCH 04/10] python3-protobuf: add a new package. The protobuf package didn't compile Python bindings. Add a new package which does that. Signed-off-by: Ismo Puustinen --- .../python-protobuf/python3-protobuf_3.1.0.bb | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 meta-refkit-extra/recipes-convnet/python-protobuf/python3-protobuf_3.1.0.bb diff --git a/meta-refkit-extra/recipes-convnet/python-protobuf/python3-protobuf_3.1.0.bb b/meta-refkit-extra/recipes-convnet/python-protobuf/python3-protobuf_3.1.0.bb new file mode 100644 index 0000000000..dbf0eb47c1 --- /dev/null +++ b/meta-refkit-extra/recipes-convnet/python-protobuf/python3-protobuf_3.1.0.bb @@ -0,0 +1,15 @@ +SUMMARY = "Protocol Buffers Python bindings" +SECTION = "devel/python" +LICENSE = "BSD-3-Clause" + +LIC_FILES_CHKSUM = "file://${WORKDIR}/git/LICENSE;md5=35953c752efc9299b184f91bef540095" + +inherit setuptools3 + +SRCREV = "a428e42072765993ff674fda72863c9f1aa2d268" +PV = "3.1.0+git${SRCPV}" +SRC_URI = "git://github.com/google/protobuf.git" + +S = "${WORKDIR}/git/python" + +DEPENDS = "python3 protobuf protobuf-native python3-setuptools-native" From d0399331c40947b912502af60d23891819967c29 Mon Sep 17 00:00:00 2001 From: Ismo Puustinen Date: Thu, 2 Mar 2017 10:46:17 +0200 Subject: [PATCH 05/10] opencv: use Python 3 instead of Python 2. The goal is to have the computer vision stack to be scriptable by Python 3. Signed-off-by: Ismo Puustinen --- meta-refkit/recipes-computervision/opencv/opencv_%.bbappend | 3 +++ 1 file changed, 3 insertions(+) diff --git a/meta-refkit/recipes-computervision/opencv/opencv_%.bbappend b/meta-refkit/recipes-computervision/opencv/opencv_%.bbappend index 818c0d50fa..dfa520ff02 100644 --- a/meta-refkit/recipes-computervision/opencv/opencv_%.bbappend +++ b/meta-refkit/recipes-computervision/opencv/opencv_%.bbappend @@ -4,4 +4,7 @@ SRC_URI_append = " \ file://0001-opencv-link-dynamically-against-OpenCL-library.patch \ " +DEPENDS_remove = "python" +DEPENDS_append = " python3" + PACKAGECONFIG[opencl] = "-DWITH_OPENCL=ON,-DWITH_OPENCL=OFF,virtual/opencl-headers virtual/opencl-icd," From edaae7deb5d7209c13e367f37bfc482235b43252 Mon Sep 17 00:00:00 2001 From: Ismo Puustinen Date: Wed, 22 Feb 2017 10:57:48 +0200 Subject: [PATCH 06/10] recipes-convnet: import caffe and its dependencies. The recipes are originally from (non-maintained) meta-convnet layer. Patch Caffe to compile the Python bindings with Python 3. Also change the image IO libary away from scipy-image, so that we don't have full matplotlib and graphical environment as runtime dependencies. Then add custom demo scripts. Many recipes are updated and customized. They probably don't work properly in anything else than 64-bit x86 environment. Also add package with a pretrained imagenet model. The model is a pretrained deep learning network for classifying based on the imagenet database. Signed-off-by: Ismo Puustinen --- .../recipes-convnet/boost/boost_%.bbappend | 1 + .../recipes-convnet/caffe/caffe_git.bb | 94 ++ ...tting-numpy-include-dir-from-outside.patch | 43 + ...1-cmake-find-Yocto-boost-python-libs.patch | 39 + ...-SYSTEM-for-non-system-include-direc.patch | 67 + .../caffe/files/0003-cmake-fix-RPATHS.patch | 28 + .../files/0004-config-use-Python-3.patch | 28 + .../files/0005-io-change-to-imageio.patch | 74 ++ ...ded-a-demo-app-for-classifying-image.patch | 195 +++ .../recipes-convnet/glog/glog_%.bbappend | 1 + .../recipes-convnet/hdf5/files/H5Tinit.c | 993 +++++++++++++++ .../hdf5/files/H5lib_settings.c | 41 + .../hdf5/files/configuration.patch | 1090 +++++++++++++++++ .../hdf5/files/copy_generated.patch | 15 + .../hdf5/files/fix-configure.patch | 65 + .../hdf5/files/fix-src-make.patch | 36 + .../hdf5/files/fix-test-make.patch | 12 + .../hdf5/files/generation.patch | 44 + .../recipes-convnet/hdf5/hdf5_1.8.18.bb | 69 ++ .../leveldb/leveldb_%.bbappend | 1 + .../files/0001-Patch-the-main-Makefile.patch | 91 ++ .../recipes-convnet/lmdb/lmdb_0.9.16.bb | 28 + .../openblas/openblas_0.2.19.bb | 58 + .../packagegroup/packagegroup-caffe.bb | 45 + .../recipes-convnet/snappy/snappy_1.1.4.bb | 19 + 25 files changed, 3177 insertions(+) create mode 100644 meta-refkit-extra/recipes-convnet/boost/boost_%.bbappend create mode 100644 meta-refkit-extra/recipes-convnet/caffe/caffe_git.bb create mode 100644 meta-refkit-extra/recipes-convnet/caffe/files/0001-Allow-setting-numpy-include-dir-from-outside.patch create mode 100644 meta-refkit-extra/recipes-convnet/caffe/files/0001-cmake-find-Yocto-boost-python-libs.patch create mode 100644 meta-refkit-extra/recipes-convnet/caffe/files/0002-cmake-do-not-use-SYSTEM-for-non-system-include-direc.patch create mode 100644 meta-refkit-extra/recipes-convnet/caffe/files/0003-cmake-fix-RPATHS.patch create mode 100644 meta-refkit-extra/recipes-convnet/caffe/files/0004-config-use-Python-3.patch create mode 100644 meta-refkit-extra/recipes-convnet/caffe/files/0005-io-change-to-imageio.patch create mode 100644 meta-refkit-extra/recipes-convnet/caffe/files/0006-classify-demo-added-a-demo-app-for-classifying-image.patch create mode 100644 meta-refkit-extra/recipes-convnet/glog/glog_%.bbappend create mode 100644 meta-refkit-extra/recipes-convnet/hdf5/files/H5Tinit.c create mode 100644 meta-refkit-extra/recipes-convnet/hdf5/files/H5lib_settings.c create mode 100644 meta-refkit-extra/recipes-convnet/hdf5/files/configuration.patch create mode 100644 meta-refkit-extra/recipes-convnet/hdf5/files/copy_generated.patch create mode 100644 meta-refkit-extra/recipes-convnet/hdf5/files/fix-configure.patch create mode 100644 meta-refkit-extra/recipes-convnet/hdf5/files/fix-src-make.patch create mode 100644 meta-refkit-extra/recipes-convnet/hdf5/files/fix-test-make.patch create mode 100644 meta-refkit-extra/recipes-convnet/hdf5/files/generation.patch create mode 100644 meta-refkit-extra/recipes-convnet/hdf5/hdf5_1.8.18.bb create mode 100644 meta-refkit-extra/recipes-convnet/leveldb/leveldb_%.bbappend create mode 100644 meta-refkit-extra/recipes-convnet/lmdb/files/0001-Patch-the-main-Makefile.patch create mode 100644 meta-refkit-extra/recipes-convnet/lmdb/lmdb_0.9.16.bb create mode 100644 meta-refkit-extra/recipes-convnet/openblas/openblas_0.2.19.bb create mode 100644 meta-refkit-extra/recipes-convnet/packagegroup/packagegroup-caffe.bb create mode 100644 meta-refkit-extra/recipes-convnet/snappy/snappy_1.1.4.bb diff --git a/meta-refkit-extra/recipes-convnet/boost/boost_%.bbappend b/meta-refkit-extra/recipes-convnet/boost/boost_%.bbappend new file mode 100644 index 0000000000..af6cc8b5eb --- /dev/null +++ b/meta-refkit-extra/recipes-convnet/boost/boost_%.bbappend @@ -0,0 +1 @@ +PACKAGECONFIG += "python" diff --git a/meta-refkit-extra/recipes-convnet/caffe/caffe_git.bb b/meta-refkit-extra/recipes-convnet/caffe/caffe_git.bb new file mode 100644 index 0000000000..ffd0309afb --- /dev/null +++ b/meta-refkit-extra/recipes-convnet/caffe/caffe_git.bb @@ -0,0 +1,94 @@ +DESCRIPTION = "Build Caffe library for CNN using OpenBLAS lib" +AUTHOR = "Alexander Leiva " +SUMMARY = "Caffe : A fast open framework for deep learning" +HOMEPAGE = "http://caffe.berkeleyvision.org/" +LICENSE = "BSD & BVLC-model-license" +PRIORITY= "optional" +SECTION = "libs" +PR = "r0" + +DEPENDS = " \ + boost \ + openblas \ + protobuf-native \ + protobuf \ + glog \ + gflags \ + hdf5 \ + opencv \ + lmdb \ + snappy \ + leveldb \ + viennacl \ + ocl-icd \ + python3 \ + python3-native \ + python3-numpy-native \ +" + +inherit python3native + +RDEPENDS_${PN} = "python3-numpy python3-imageio python3-six python3-protobuf" + +LIC_FILES_CHKSUM = "file://LICENSE;md5=91d560803ea3d191c457b12834553991" + +SRC_URI = " \ + git://github.com/BVLC/caffe.git;branch=opencl \ + http://dl.caffe.berkeleyvision.org/caffe_ilsvrc12.tar.gz;name=ilsvrc12 \ + http://dl.caffe.berkeleyvision.org/bvlc_reference_caffenet.caffemodel;name=caffenet \ + file://0001-Allow-setting-numpy-include-dir-from-outside.patch \ + file://0002-cmake-do-not-use-SYSTEM-for-non-system-include-direc.patch \ + file://0003-cmake-fix-RPATHS.patch \ + file://0004-config-use-Python-3.patch \ + file://0005-io-change-to-imageio.patch \ + file://0006-classify-demo-added-a-demo-app-for-classifying-image.patch \ + file://0001-cmake-find-Yocto-boost-python-libs.patch \ +" +SRCREV = "f3ba72c520165d7c403a82770370f20472685d63" + +SRC_URI[ilsvrc12.md5sum] = "f963098ea0e785a968ca1eb634003a90" +SRC_URI[ilsvrc12.sha256sum] = "e35c0c1994a21f7d8ed49d01881ce17ab766743d3b0372cdc0183ff4d0dfc491" + +SRC_URI[caffenet.md5sum] = "af678f0bd3cdd2437e35679d88665170" +SRC_URI[caffenet.sha256sum] = "472d4a06035497b180636d8a82667129960371375bd10fcb6df5c6c7631f25e0" + +S = "${WORKDIR}/git" + +PACKAGES += "${PN}-imagenet-model" + +RDEPENDS_${PN}-imagenet-model = "${PN}" + +do_install_append() { + install -d ${D}${datadir}/Caffe/models/bvlc_reference_caffenet/ + install -d ${D}${datadir}/Caffe/data/ilsvrc12 + + install ${S}/models/bvlc_reference_caffenet/* ${D}${datadir}/Caffe/models/bvlc_reference_caffenet/ + install ${WORKDIR}/synset_words.txt ${D}${datadir}/Caffe/data/ilsvrc12 + install ${WORKDIR}/bvlc_reference_caffenet.caffemodel ${D}${datadir}/Caffe/models/bvlc_reference_caffenet/ + + # ilsvrc_2012_mean.npy is already installed at /usr/python/caffe/imagenet/ilsvrc_2012_mean.npy +} + +FILES_${PN}-imagenet-model += " \ + ${datadir}/Caffe/models/bvlc_reference_caffenet/* \ + ${datadir}/Caffe/data/ilsvrc12/* \ +" +FILES_${PN} += " \ + ${prefix}/python/* \ +" +FILES_${PN}-dev = " \ + ${includedir} \ + ${datadir}/Caffe/*cmake \ + ${libdir}/*.so \ +" + +inherit cmake python-dir + +EXTRA_OECMAKE = " \ + -DBLAS=open \ + -DPYTHON_NUMPY_INCLUDE_DIR=${STAGING_DIR_TARGET}/usr/lib/python3.5/site-packages/numpy/core/include \ + -DPYTHON_EXECUTABLE=${STAGING_BINDIR_NATIVE}/python3-native/python3 \ + -DPYTHON_INCLUDE_DIRS=${STAGING_INCDIR_TARGET}/python3-native/python3.5m \ + -DPYTHON_LIBRARIES=${STAGING_LIBDIR_TARGET}/python3.5 \ +" + diff --git a/meta-refkit-extra/recipes-convnet/caffe/files/0001-Allow-setting-numpy-include-dir-from-outside.patch b/meta-refkit-extra/recipes-convnet/caffe/files/0001-Allow-setting-numpy-include-dir-from-outside.patch new file mode 100644 index 0000000000..9cd0fdbbb9 --- /dev/null +++ b/meta-refkit-extra/recipes-convnet/caffe/files/0001-Allow-setting-numpy-include-dir-from-outside.patch @@ -0,0 +1,43 @@ +From 3a0407e127559d2349f0217c6c5cf7751dd1aeba Mon Sep 17 00:00:00 2001 +From: Ismo Puustinen +Date: Tue, 25 Oct 2016 12:09:19 +0300 +Subject: [PATCH 1/6] Allow setting numpy include dir from outside. + +--- + cmake/Modules/FindNumPy.cmake | 16 ++++++++++------ + 1 file changed, 10 insertions(+), 6 deletions(-) + +diff --git a/cmake/Modules/FindNumPy.cmake b/cmake/Modules/FindNumPy.cmake +index a671494..38ebb32 100644 +--- a/cmake/Modules/FindNumPy.cmake ++++ b/cmake/Modules/FindNumPy.cmake +@@ -16,11 +16,16 @@ unset(NUMPY_VERSION) + unset(NUMPY_INCLUDE_DIR) + + if(PYTHONINTERP_FOUND) +- execute_process(COMMAND "${PYTHON_EXECUTABLE}" "-c" +- "import numpy as n; print(n.__version__); print(n.get_include());" +- RESULT_VARIABLE __result +- OUTPUT_VARIABLE __output +- OUTPUT_STRIP_TRAILING_WHITESPACE) ++ if(NOT DEFINED PYTHON_NUMPY_INCLUDE_DIR) ++ execute_process(COMMAND "${PYTHON_EXECUTABLE}" "-c" ++ "import numpy as n; print(n.__version__); print(n.get_include());" ++ RESULT_VARIABLE __result ++ OUTPUT_VARIABLE __output ++ OUTPUT_STRIP_TRAILING_WHITESPACE) ++ else() ++ SET(__result 0) ++ SET(__output "1.11.0\n${PYTHON_NUMPY_INCLUDE_DIR}") ++ endif() + + if(__result MATCHES 0) + string(REGEX REPLACE ";" "\\\\;" __values ${__output}) +@@ -55,4 +60,3 @@ if(NUMPY_FOUND) + endif() + + caffe_clear_vars(__result __output __error_value __values __ver_check __error_value) +- +-- +2.9.3 + diff --git a/meta-refkit-extra/recipes-convnet/caffe/files/0001-cmake-find-Yocto-boost-python-libs.patch b/meta-refkit-extra/recipes-convnet/caffe/files/0001-cmake-find-Yocto-boost-python-libs.patch new file mode 100644 index 0000000000..c0c029db11 --- /dev/null +++ b/meta-refkit-extra/recipes-convnet/caffe/files/0001-cmake-find-Yocto-boost-python-libs.patch @@ -0,0 +1,39 @@ +From 91f8bfd7da0d9d59701dffdb2f1ab6552721fe7b Mon Sep 17 00:00:00 2001 +From: Ismo Puustinen +Date: Wed, 26 Apr 2017 14:43:01 +0300 +Subject: [PATCH] cmake: find Yocto boost python libs. + +Upstream-status: Inappropriate + +Signed-off-by: Ismo Puustinen +--- + cmake/Dependencies.cmake | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +diff --git a/cmake/Dependencies.cmake b/cmake/Dependencies.cmake +index 4a5bac4..dab3415 100644 +--- a/cmake/Dependencies.cmake ++++ b/cmake/Dependencies.cmake +@@ -146,15 +146,15 @@ if(BUILD_python) + set(version ${PYTHONLIBS_VERSION_STRING}) + + STRING( REGEX REPLACE "[^0-9]" "" boost_py_version ${version} ) +- find_package(Boost 1.46 COMPONENTS "python-py${boost_py_version}") +- set(Boost_PYTHON_FOUND ${Boost_PYTHON-PY${boost_py_version}_FOUND}) ++ find_package(Boost 1.46 COMPONENTS "python${boost_py_version}") ++ set(Boost_PYTHON_FOUND ${Boost_PYTHON${boost_py_version}_FOUND}) + + while(NOT "${version}" STREQUAL "" AND NOT Boost_PYTHON_FOUND) + STRING( REGEX REPLACE "([0-9.]+).[0-9]+" "\\1" version ${version} ) + + STRING( REGEX REPLACE "[^0-9]" "" boost_py_version ${version} ) +- find_package(Boost 1.46 COMPONENTS "python-py${boost_py_version}") +- set(Boost_PYTHON_FOUND ${Boost_PYTHON-PY${boost_py_version}_FOUND}) ++ find_package(Boost 1.46 COMPONENTS "python${boost_py_version}") ++ set(Boost_PYTHON_FOUND ${Boost_PYTHON${boost_py_version}_FOUND}) + + STRING( REGEX MATCHALL "([0-9.]+).[0-9]+" has_more_version ${version} ) + if("${has_more_version}" STREQUAL "") +-- +2.9.3 + diff --git a/meta-refkit-extra/recipes-convnet/caffe/files/0002-cmake-do-not-use-SYSTEM-for-non-system-include-direc.patch b/meta-refkit-extra/recipes-convnet/caffe/files/0002-cmake-do-not-use-SYSTEM-for-non-system-include-direc.patch new file mode 100644 index 0000000000..d08afe128c --- /dev/null +++ b/meta-refkit-extra/recipes-convnet/caffe/files/0002-cmake-do-not-use-SYSTEM-for-non-system-include-direc.patch @@ -0,0 +1,67 @@ +From 9e698ecf0b354a87ea0bf79ee42a4e6ec09c7669 Mon Sep 17 00:00:00 2001 +From: Ismo Puustinen +Date: Fri, 17 Feb 2017 14:43:21 +0200 +Subject: [PATCH 2/6] cmake: do not use SYSTEM for non-system include + directories. + +Signed-off-by: Ismo Puustinen +--- + cmake/Dependencies.cmake | 8 ++++---- + cmake/ProtoBuf.cmake | 2 +- + 2 files changed, 5 insertions(+), 5 deletions(-) + +diff --git a/cmake/Dependencies.cmake b/cmake/Dependencies.cmake +index 00de565..0b861af 100644 +--- a/cmake/Dependencies.cmake ++++ b/cmake/Dependencies.cmake +@@ -6,7 +6,7 @@ set(Caffe_COMPILE_OPTIONS "") + + # ---[ Boost + find_package(Boost 1.46 REQUIRED COMPONENTS system thread filesystem) +-include_directories(SYSTEM PUBLIC ${Boost_INCLUDE_DIR}) ++include_directories(PUBLIC ${Boost_INCLUDE_DIR}) + add_definitions(-DBOOST_ALL_NO_LIB) + list(APPEND Caffe_INCLUDE_DIRS PUBLIC ${Boost_INCLUDE_DIRS}) + list(APPEND Caffe_LINKER_LIBS PUBLIC ${Boost_LIBRARIES}) +@@ -66,14 +66,14 @@ else() + endif() + endif() + +-include_directories(SYSTEM ${HDF5_INCLUDE_DIRS} ${HDF5_HL_INCLUDE_DIR}) ++include_directories(${HDF5_INCLUDE_DIRS} ${HDF5_HL_INCLUDE_DIR}) + list(APPEND Caffe_LINKER_LIBS PUBLIC ${HDF5_LIBRARIES} ${HDF5_HL_LIBRARIES}) + list(APPEND Caffe_INCLUDE_DIRS PUBLIC ${HDF5_INCLUDE_DIRS}) + + # This code is taken from https://github.com/sh1r0/caffe-android-lib + if(USE_HDF5) + find_package(HDF5 COMPONENTS HL REQUIRED) +- include_directories(SYSTEM ${HDF5_INCLUDE_DIRS} ${HDF5_HL_INCLUDE_DIR}) ++ include_directories(${HDF5_INCLUDE_DIRS} ${HDF5_HL_INCLUDE_DIR}) + list(APPEND Caffe_INCLUDE_DIRS PUBLIC ${HDF5_INCLUDE_DIRS}) + list(APPEND Caffe_LINKER_LIBS PUBLIC ${HDF5_LIBRARIES} ${HDF5_HL_LIBRARIES}) + add_definitions(-DUSE_HDF5) +@@ -201,7 +201,7 @@ endif() + + if(USE_NCCL) + include("cmake/External/nccl.cmake") +- include_directories(SYSTEM ${NCCL_INCLUDE_DIR}) ++ include_directories(${NCCL_INCLUDE_DIR}) + list(APPEND Caffe_LINKER_LIBS ${NCCL_LIBRARIES}) + add_definitions(-DUSE_NCCL) + endif() +diff --git a/cmake/ProtoBuf.cmake b/cmake/ProtoBuf.cmake +index 2527195..dc6285b 100644 +--- a/cmake/ProtoBuf.cmake ++++ b/cmake/ProtoBuf.cmake +@@ -8,7 +8,7 @@ if(MSVC) + else() + find_package( Protobuf REQUIRED ) + endif() +-include_directories(SYSTEM ${PROTOBUF_INCLUDE_DIR}) ++include_directories(${PROTOBUF_INCLUDE_DIR}) + list(APPEND Caffe_INCLUDE_DIRS PUBLIC ${PROTOBUF_INCLUDE_DIR}) + list(APPEND Caffe_LINKER_LIBS PUBLIC ${PROTOBUF_LIBRARIES}) + +-- +2.9.3 + diff --git a/meta-refkit-extra/recipes-convnet/caffe/files/0003-cmake-fix-RPATHS.patch b/meta-refkit-extra/recipes-convnet/caffe/files/0003-cmake-fix-RPATHS.patch new file mode 100644 index 0000000000..7b41318313 --- /dev/null +++ b/meta-refkit-extra/recipes-convnet/caffe/files/0003-cmake-fix-RPATHS.patch @@ -0,0 +1,28 @@ +From 8d9b978681b7c7d5443f5503e2075b007fb460a5 Mon Sep 17 00:00:00 2001 +From: Ismo Puustinen +Date: Fri, 17 Feb 2017 15:35:43 +0200 +Subject: [PATCH 3/6] cmake: fix RPATHS. + +Signed-off-by: Ismo Puustinen +--- + cmake/Misc.cmake | 4 ---- + 1 file changed, 4 deletions(-) + +diff --git a/cmake/Misc.cmake b/cmake/Misc.cmake +index 9dd2609..2150751 100644 +--- a/cmake/Misc.cmake ++++ b/cmake/Misc.cmake +@@ -28,10 +28,6 @@ if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) + set(CMAKE_INSTALL_PREFIX "${PROJECT_BINARY_DIR}/install" CACHE PATH "Default install path" FORCE) + endif() + +-# ---[ RPATH settings +-set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE CACHE BOOLEAN "Use link paths for shared library rpath") +-set(CMAKE_MACOSX_RPATH TRUE) +- + list(FIND CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES ${CMAKE_INSTALL_PREFIX}/lib __is_systtem_dir) + if(${__is_systtem_dir} STREQUAL -1) + set(CMAKE_INSTALL_RPATH ${CMAKE_INSTALL_PREFIX}/lib) +-- +2.9.3 + diff --git a/meta-refkit-extra/recipes-convnet/caffe/files/0004-config-use-Python-3.patch b/meta-refkit-extra/recipes-convnet/caffe/files/0004-config-use-Python-3.patch new file mode 100644 index 0000000000..167c30c91a --- /dev/null +++ b/meta-refkit-extra/recipes-convnet/caffe/files/0004-config-use-Python-3.patch @@ -0,0 +1,28 @@ +From a2e6ed1a11500896453c346c82713dd1869368b2 Mon Sep 17 00:00:00 2001 +From: Ismo Puustinen +Date: Thu, 23 Feb 2017 18:01:09 +0200 +Subject: [PATCH 4/6] config: use Python 3. + +Upstream-status: Inappropriate + +Signed-off-by: Ismo Puustinen +--- + CMakeLists.txt | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index c6f9ca6..aceb1e8 100755 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -68,7 +68,7 @@ else() + caffe_option(BUILD_SHARED_LIBS "Build shared libraries" ON) + endif() + caffe_option(BUILD_python "Build Python wrapper" ON) +-set(python_version "2" CACHE STRING "Specify which Python version to use") ++set(python_version "3" CACHE STRING "Specify which Python version to use") + caffe_option(BUILD_matlab "Build Matlab wrapper" OFF) + caffe_option(BUILD_docs "Build documentation" ON IF UNIX OR APPLE) + caffe_option(BUILD_python_layer "Build the Caffe Python layer" ON) +-- +2.9.3 + diff --git a/meta-refkit-extra/recipes-convnet/caffe/files/0005-io-change-to-imageio.patch b/meta-refkit-extra/recipes-convnet/caffe/files/0005-io-change-to-imageio.patch new file mode 100644 index 0000000000..edd1f4e516 --- /dev/null +++ b/meta-refkit-extra/recipes-convnet/caffe/files/0005-io-change-to-imageio.patch @@ -0,0 +1,74 @@ +From b5a475cbabd67a7c31c01698f55814895f194730 Mon Sep 17 00:00:00 2001 +From: Ismo Puustinen +Date: Fri, 24 Feb 2017 16:07:09 +0200 +Subject: [PATCH 5/6] io: change to imageio. + +This gets rid of the whole sciki-image dependency (and as a consequence, +drops the matplotlib dependency). Note that some operations meant for +image resizing still use other dependencies -- the imports have been +pushed into the respective code branches to avoid top-level +dependencies. + +Upstream-status: Inappropriate + +Signed-off-by: Ismo Puustinen +--- + python/caffe/io.py | 15 +++++++++++---- + 1 file changed, 11 insertions(+), 4 deletions(-) + +diff --git a/python/caffe/io.py b/python/caffe/io.py +index e1759be..ebccca2 100644 +--- a/python/caffe/io.py ++++ b/python/caffe/io.py +@@ -1,7 +1,5 @@ + import numpy as np +-import skimage.io +-from scipy.ndimage import zoom +-from skimage.transform import resize ++import imageio + + try: + # Python3 will most likely not be able to load protobuf +@@ -139,6 +137,7 @@ class Transformer: + ------- + caffe_in : (K x H x W) ndarray for input to a Net + """ ++ + self.__check_input(in_) + caffe_in = data.astype(np.float32, copy=False) + transpose = self.transpose.get(in_) +@@ -293,7 +292,7 @@ def load_image(filename, color=True): + of size (H x W x 3) in RGB or + of size (H x W x 1) in grayscale. + """ +- img = skimage.img_as_float(skimage.io.imread(filename, as_grey=not color)).astype(np.float32) ++ img = np.array(np.divide(imageio.imread(filename), 255.0).astype(np.float32)) + if img.ndim == 2: + img = img[:, :, np.newaxis] + if color: +@@ -317,7 +316,13 @@ def resize_image(im, new_dims, interp_order=1): + ------- + im : resized ndarray with shape (new_dims[0], new_dims[1], K) + """ ++ ++ if im.shape[:2] == tuple(new_dims): ++ return im ++ + if im.shape[-1] == 1 or im.shape[-1] == 3: ++ from skimage.transform import resize ++ + im_min, im_max = im.min(), im.max() + if im_max > im_min: + # skimage is fast but only understands {1,3} channel images +@@ -332,6 +337,8 @@ def resize_image(im, new_dims, interp_order=1): + ret.fill(im_min) + return ret + else: ++ from scipy.ndimage import zoom ++ + # ndimage interpolates anything but more slowly. + scale = tuple(np.array(new_dims, dtype=float) / np.array(im.shape[:2])) + resized_im = zoom(im, scale + (1,), order=interp_order) +-- +2.9.3 + diff --git a/meta-refkit-extra/recipes-convnet/caffe/files/0006-classify-demo-added-a-demo-app-for-classifying-image.patch b/meta-refkit-extra/recipes-convnet/caffe/files/0006-classify-demo-added-a-demo-app-for-classifying-image.patch new file mode 100644 index 0000000000..76f9cf76eb --- /dev/null +++ b/meta-refkit-extra/recipes-convnet/caffe/files/0006-classify-demo-added-a-demo-app-for-classifying-image.patch @@ -0,0 +1,195 @@ +From dc4f9ab92cbcb5b0224ce81d00c91824c0df89fd Mon Sep 17 00:00:00 2001 +From: Ismo Puustinen +Date: Tue, 28 Feb 2017 16:38:26 +0200 +Subject: [PATCH 6/6] classify-demo: added a demo app for classifying images. + +This is a modification of the existing classify.py script in the same +folder. The modified script is meant to be suitable for interactive use, +which means that the results are presented on the screen in a +human-readable format instead of saving them into a file. Image +capturing is done using a webcam. + +Upstream-status: Inappropriate + +Signed-off-by: Ismo Puustinen +--- + python/classify-demo.py | 167 ++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 167 insertions(+) + create mode 100755 python/classify-demo.py + +diff --git a/python/classify-demo.py b/python/classify-demo.py +new file mode 100755 +index 0000000..f411c98 +--- /dev/null ++++ b/python/classify-demo.py +@@ -0,0 +1,167 @@ ++#!/usr/bin/env python ++""" ++classify-demo.py is a modification of classify.py meant for interactive ++demo use. ++""" ++import numpy as np ++import os ++import sys ++import argparse ++import glob ++import time ++ ++import caffe ++import cv2 ++ ++def main(argv): ++ pycaffe_dir = os.path.dirname(__file__) ++ ++ parser = argparse.ArgumentParser() ++ # Optional arguments. ++ parser.add_argument( ++ "--model_def", ++ default=os.path.join(pycaffe_dir, ++ "/usr/share/Caffe/models/bvlc_reference_caffenet/deploy.prototxt"), ++ help="Model definition file." ++ ) ++ parser.add_argument( ++ "--pretrained_model", ++ default=os.path.join(pycaffe_dir, ++ "/usr/share/Caffe/models/bvlc_reference_caffenet/bvlc_reference_caffenet.caffemodel"), ++ help="Trained model weights file." ++ ) ++ parser.add_argument( ++ "--gpu", ++ action='store_true', ++ help="Switch for gpu computation." ++ ) ++ parser.add_argument( ++ "--center_only", ++ action='store_true', ++ help="Switch for prediction from center crop alone instead of " + ++ "averaging predictions across crops (default)." ++ ) ++ parser.add_argument( ++ "--images_dim", ++ default='256,256', ++ help="Canonical 'height,width' dimensions of input images." ++ ) ++ parser.add_argument( ++ "--mean_file", ++ default=os.path.join(pycaffe_dir, ++ '/usr/python/caffe/imagenet/ilsvrc_2012_mean.npy'), ++ help="Data set image mean of [Channels x Height x Width] dimensions " + ++ "(numpy array). Set to '' for no mean subtraction." ++ ) ++ parser.add_argument( ++ "--input_scale", ++ type=float, ++ help="Multiply input features by this scale to finish preprocessing." ++ ) ++ parser.add_argument( ++ "--raw_scale", ++ type=float, ++ default=255.0, ++ help="Multiply raw input by this scale before preprocessing." ++ ) ++ parser.add_argument( ++ "--channel_swap", ++ default='2,1,0', ++ help="Order to permute input channels. The default converts " + ++ "RGB -> BGR since BGR is the Caffe default by way of OpenCV." ++ ) ++ parser.add_argument( ++ "--ext", ++ default='jpg', ++ help="Image file extension to take as input when a directory " + ++ "is given as the input file." ++ ) ++ parser.add_argument( ++ "--labels", ++ default='/usr/share/Caffe/data/ilsvrc12/synset_words.txt', ++ help="Image file extension to take as input when a directory " + ++ "is given as the input file." ++ ) ++ args = parser.parse_args() ++ ++ image_dims = [int(s) for s in args.images_dim.split(',')] ++ ++ mean, channel_swap = None, None ++ if args.mean_file: ++ mean = np.load(args.mean_file) ++ if args.channel_swap: ++ channel_swap = [int(s) for s in args.channel_swap.split(',')] ++ ++ if args.gpu: ++ caffe.set_mode_gpu() ++ caffe.set_devices((0,)) ++ caffe.select_device(0, True) ++ print("GPU mode") ++ else: ++ caffe.set_mode_cpu() ++ print("CPU mode") ++ ++ labels = [] ++ ++ with open(args.labels, "r") as f: ++ lines = f.readlines() ++ for line in lines: ++ labels.append(line[10:].strip()) ++ ++ # Make classifier. ++ classifier = caffe.Classifier(args.model_def, args.pretrained_model, ++ image_dims=image_dims, mean=mean, ++ input_scale=args.input_scale, raw_scale=args.raw_scale, ++ channel_swap=channel_swap) ++ ++ cam = cv2.VideoCapture(0) ++ ++ while True: ++ ++ # stabilize ++ for x in range(10): ++ cam.read() ++ ++ # read image ++ r, im = cam.read() ++ ++ # crop and resize ++ y, x, _ = im.shape ++ sideCrop = int(abs(y-x) / 2) ++ cropped = im[:, sideCrop:y+sideCrop] ++ resized = cv2.resize(cropped, (256,256)) ++ ++ # normalize ++ inputs = [np.asarray(resized, 'float32')/255] ++ ++ print("Classifying input...") ++ ++ # Classify. ++ start = time.time() ++ predictions = classifier.predict(inputs, not args.center_only) ++ print("Done in %.2f s." % (time.time() - start)) ++ ++ for prediction in predictions: ++ ++ # Find three best matches. ++ first = -1 ++ second = -1 ++ third = -1 ++ ++ for x in range(len(prediction)): ++ if first == -1 or prediction[x] > prediction[first]: ++ third = second ++ second = first ++ first = x ++ elif second == -1 or prediction[x] > prediction[second]: ++ third = second ++ second = x ++ elif third == -1 or prediction[x] > prediction[third]: ++ third = x ++ ++ print("First match: '%s' (%.1f %%)" % (labels[first], prediction[first]*100)) ++ print("Second match: '%s' (%.1f %%)" % (labels[second], prediction[second]*100)) ++ print("Third match: '%s' (%.1f %%)" % (labels[third], prediction[third]*100)) ++ ++if __name__ == '__main__': ++ main(sys.argv) +-- +2.9.3 + diff --git a/meta-refkit-extra/recipes-convnet/glog/glog_%.bbappend b/meta-refkit-extra/recipes-convnet/glog/glog_%.bbappend new file mode 100644 index 0000000000..a065152fbb --- /dev/null +++ b/meta-refkit-extra/recipes-convnet/glog/glog_%.bbappend @@ -0,0 +1 @@ +DEPENDS += "gflags" diff --git a/meta-refkit-extra/recipes-convnet/hdf5/files/H5Tinit.c b/meta-refkit-extra/recipes-convnet/hdf5/files/H5Tinit.c new file mode 100644 index 0000000000..e6600a13d4 --- /dev/null +++ b/meta-refkit-extra/recipes-convnet/hdf5/files/H5Tinit.c @@ -0,0 +1,993 @@ +/* Generated automatically by H5detect -- do not edit */ + + + +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by The HDF Group. * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from help@hdfgroup.org. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Created: Feb 15, 2017 + * root + * + * Purpose: This machine-generated source code contains + * information about the various integer and + * floating point numeric formats found on this + * architecture. The parameters below should be + * checked carefully and errors reported to the + * HDF5 maintainer. + * + * Each of the numeric formats listed below are + * printed from most significant bit to least + * significant bit even though the actual bytes + * might be stored in a different order in + * memory. The integers above each binary byte + * indicate the relative order of the bytes in + * memory; little-endian machines have + * decreasing numbers while big-endian machines + * have increasing numbers. + * + * The fields of the numbers are printed as + * letters with `S' for the mantissa sign bit, + * `M' for the mantissa magnitude, and `E' for + * the exponent. The exponent has an associated + * bias which can be subtracted to find the + * true exponent. The radix point is assumed + * to be before the first `M' bit. Any bit + * of a floating-point value not falling into one + * of these categories is printed as a question + * mark. Bits of integer types are printed as + * `I' for 2's complement and `U' for magnitude. + * + * If the most significant bit of the normalized + * mantissa (always a `1' except for `0.0') is + * not stored then an `implicit=yes' appears + * under the field description. In thie case, + * the radix point is still assumed to be + * before the first `M' but after the implicit + * bit. + * + * Modifications: + * + * DO NOT MAKE MODIFICATIONS TO THIS FILE! + * It was generated by code in `H5detect.c'. + * + *------------------------------------------------------------------------- + */ + +/****************/ +/* Module Setup */ +/****************/ + +#define H5T_PACKAGE /*suppress error about including H5Tpkg.h*/ + + +/***********/ +/* Headers */ +/***********/ +#include "H5private.h" /* Generic Functions */ +#include "H5Eprivate.h" /* Error handling */ +#include "H5FLprivate.h" /* Free Lists */ +#include "H5Iprivate.h" /* IDs */ +#include "H5Tpkg.h" /* Datatypes */ + + +/****************/ +/* Local Macros */ +/****************/ + + +/******************/ +/* Local Typedefs */ +/******************/ + + +/********************/ +/* Package Typedefs */ +/********************/ + + +/********************/ +/* Local Prototypes */ +/********************/ + + +/********************/ +/* Public Variables */ +/********************/ + + +/*****************************/ +/* Library Private Variables */ +/*****************************/ + + +/*********************/ +/* Package Variables */ +/*********************/ + + + +/*******************/ +/* Local Variables */ +/*******************/ + + + +/*------------------------------------------------------------------------- + * Function: H5TN_init_interface + * + * Purpose: Initialize pre-defined native datatypes from code generated + * during the library configuration by H5detect. + * + * Return: Success: non-negative + * Failure: negative + * + * Programmer: Robb Matzke + * Wednesday, December 16, 1998 + * + *------------------------------------------------------------------------- + */ +herr_t +H5TN_init_interface(void) +{ + H5T_t *dt = NULL; + herr_t ret_value = SUCCEED; + + FUNC_ENTER_NOAPI(FAIL) + + /* + * 0 + * IIIIIIII + * Alignment: none + */ + if(NULL == (dt = H5T__alloc())) + HGOTO_ERROR(H5E_DATATYPE, H5E_NOSPACE, FAIL, "datatype allocation failed") + dt->shared->state = H5T_STATE_IMMUTABLE; + dt->shared->type = H5T_INTEGER; + dt->shared->size = 1; + dt->shared->u.atomic.order = H5T_ORDER_LE; + dt->shared->u.atomic.offset = 0; + dt->shared->u.atomic.prec = 8; + dt->shared->u.atomic.lsb_pad = H5T_PAD_ZERO; + dt->shared->u.atomic.msb_pad = H5T_PAD_ZERO; + dt->shared->u.atomic.u.i.sign = H5T_SGN_2; + if((H5T_NATIVE_SCHAR_g = H5I_register(H5I_DATATYPE, dt, FALSE)) < 0) + HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "can't register ID for built-in datatype") + H5T_NATIVE_SCHAR_ALIGN_g = 1; + H5T_NATIVE_SCHAR_COMP_ALIGN_g = 1; + + /* + * 0 + * UUUUUUUU + * Alignment: none + */ + if(NULL == (dt = H5T__alloc())) + HGOTO_ERROR(H5E_DATATYPE, H5E_NOSPACE, FAIL, "datatype allocation failed") + dt->shared->state = H5T_STATE_IMMUTABLE; + dt->shared->type = H5T_INTEGER; + dt->shared->size = 1; + dt->shared->u.atomic.order = H5T_ORDER_LE; + dt->shared->u.atomic.offset = 0; + dt->shared->u.atomic.prec = 8; + dt->shared->u.atomic.lsb_pad = H5T_PAD_ZERO; + dt->shared->u.atomic.msb_pad = H5T_PAD_ZERO; + dt->shared->u.atomic.u.i.sign = H5T_SGN_NONE; + if((H5T_NATIVE_UCHAR_g = H5I_register(H5I_DATATYPE, dt, FALSE)) < 0) + HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "can't register ID for built-in datatype") + H5T_NATIVE_UCHAR_ALIGN_g = 1; + + /* + * 1 0 + * IIIIIIII IIIIIIII + * Alignment: none + */ + if(NULL == (dt = H5T__alloc())) + HGOTO_ERROR(H5E_DATATYPE, H5E_NOSPACE, FAIL, "datatype allocation failed") + dt->shared->state = H5T_STATE_IMMUTABLE; + dt->shared->type = H5T_INTEGER; + dt->shared->size = 2; + dt->shared->u.atomic.order = H5T_ORDER_LE; + dt->shared->u.atomic.offset = 0; + dt->shared->u.atomic.prec = 16; + dt->shared->u.atomic.lsb_pad = H5T_PAD_ZERO; + dt->shared->u.atomic.msb_pad = H5T_PAD_ZERO; + dt->shared->u.atomic.u.i.sign = H5T_SGN_2; + if((H5T_NATIVE_SHORT_g = H5I_register(H5I_DATATYPE, dt, FALSE)) < 0) + HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "can't register ID for built-in datatype") + H5T_NATIVE_SHORT_ALIGN_g = 1; + H5T_NATIVE_SHORT_COMP_ALIGN_g = 2; + + /* + * 1 0 + * UUUUUUUU UUUUUUUU + * Alignment: none + */ + if(NULL == (dt = H5T__alloc())) + HGOTO_ERROR(H5E_DATATYPE, H5E_NOSPACE, FAIL, "datatype allocation failed") + dt->shared->state = H5T_STATE_IMMUTABLE; + dt->shared->type = H5T_INTEGER; + dt->shared->size = 2; + dt->shared->u.atomic.order = H5T_ORDER_LE; + dt->shared->u.atomic.offset = 0; + dt->shared->u.atomic.prec = 16; + dt->shared->u.atomic.lsb_pad = H5T_PAD_ZERO; + dt->shared->u.atomic.msb_pad = H5T_PAD_ZERO; + dt->shared->u.atomic.u.i.sign = H5T_SGN_NONE; + if((H5T_NATIVE_USHORT_g = H5I_register(H5I_DATATYPE, dt, FALSE)) < 0) + HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "can't register ID for built-in datatype") + H5T_NATIVE_USHORT_ALIGN_g = 1; + + /* + * 3 2 1 0 + * IIIIIIII IIIIIIII IIIIIIII IIIIIIII + * Alignment: none + */ + if(NULL == (dt = H5T__alloc())) + HGOTO_ERROR(H5E_DATATYPE, H5E_NOSPACE, FAIL, "datatype allocation failed") + dt->shared->state = H5T_STATE_IMMUTABLE; + dt->shared->type = H5T_INTEGER; + dt->shared->size = 4; + dt->shared->u.atomic.order = H5T_ORDER_LE; + dt->shared->u.atomic.offset = 0; + dt->shared->u.atomic.prec = 32; + dt->shared->u.atomic.lsb_pad = H5T_PAD_ZERO; + dt->shared->u.atomic.msb_pad = H5T_PAD_ZERO; + dt->shared->u.atomic.u.i.sign = H5T_SGN_2; + if((H5T_NATIVE_INT_g = H5I_register(H5I_DATATYPE, dt, FALSE)) < 0) + HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "can't register ID for built-in datatype") + H5T_NATIVE_INT_ALIGN_g = 1; + H5T_NATIVE_INT_COMP_ALIGN_g = 4; + + /* + * 3 2 1 0 + * UUUUUUUU UUUUUUUU UUUUUUUU UUUUUUUU + * Alignment: none + */ + if(NULL == (dt = H5T__alloc())) + HGOTO_ERROR(H5E_DATATYPE, H5E_NOSPACE, FAIL, "datatype allocation failed") + dt->shared->state = H5T_STATE_IMMUTABLE; + dt->shared->type = H5T_INTEGER; + dt->shared->size = 4; + dt->shared->u.atomic.order = H5T_ORDER_LE; + dt->shared->u.atomic.offset = 0; + dt->shared->u.atomic.prec = 32; + dt->shared->u.atomic.lsb_pad = H5T_PAD_ZERO; + dt->shared->u.atomic.msb_pad = H5T_PAD_ZERO; + dt->shared->u.atomic.u.i.sign = H5T_SGN_NONE; + if((H5T_NATIVE_UINT_g = H5I_register(H5I_DATATYPE, dt, FALSE)) < 0) + HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "can't register ID for built-in datatype") + H5T_NATIVE_UINT_ALIGN_g = 1; + + /* + * 7 6 5 4 + * IIIIIIII IIIIIIII IIIIIIII IIIIIIII + * 3 2 1 0 + * IIIIIIII IIIIIIII IIIIIIII IIIIIIII + * Alignment: none + */ + if(NULL == (dt = H5T__alloc())) + HGOTO_ERROR(H5E_DATATYPE, H5E_NOSPACE, FAIL, "datatype allocation failed") + dt->shared->state = H5T_STATE_IMMUTABLE; + dt->shared->type = H5T_INTEGER; + dt->shared->size = 8; + dt->shared->u.atomic.order = H5T_ORDER_LE; + dt->shared->u.atomic.offset = 0; + dt->shared->u.atomic.prec = 64; + dt->shared->u.atomic.lsb_pad = H5T_PAD_ZERO; + dt->shared->u.atomic.msb_pad = H5T_PAD_ZERO; + dt->shared->u.atomic.u.i.sign = H5T_SGN_2; + if((H5T_NATIVE_LONG_g = H5I_register(H5I_DATATYPE, dt, FALSE)) < 0) + HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "can't register ID for built-in datatype") + H5T_NATIVE_LONG_ALIGN_g = 1; + H5T_NATIVE_LONG_COMP_ALIGN_g = 8; + + /* + * 7 6 5 4 + * UUUUUUUU UUUUUUUU UUUUUUUU UUUUUUUU + * 3 2 1 0 + * UUUUUUUU UUUUUUUU UUUUUUUU UUUUUUUU + * Alignment: none + */ + if(NULL == (dt = H5T__alloc())) + HGOTO_ERROR(H5E_DATATYPE, H5E_NOSPACE, FAIL, "datatype allocation failed") + dt->shared->state = H5T_STATE_IMMUTABLE; + dt->shared->type = H5T_INTEGER; + dt->shared->size = 8; + dt->shared->u.atomic.order = H5T_ORDER_LE; + dt->shared->u.atomic.offset = 0; + dt->shared->u.atomic.prec = 64; + dt->shared->u.atomic.lsb_pad = H5T_PAD_ZERO; + dt->shared->u.atomic.msb_pad = H5T_PAD_ZERO; + dt->shared->u.atomic.u.i.sign = H5T_SGN_NONE; + if((H5T_NATIVE_ULONG_g = H5I_register(H5I_DATATYPE, dt, FALSE)) < 0) + HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "can't register ID for built-in datatype") + H5T_NATIVE_ULONG_ALIGN_g = 1; + + /* + * 0 + * IIIIIIII + * Alignment: none + */ + if(NULL == (dt = H5T__alloc())) + HGOTO_ERROR(H5E_DATATYPE, H5E_NOSPACE, FAIL, "datatype allocation failed") + dt->shared->state = H5T_STATE_IMMUTABLE; + dt->shared->type = H5T_INTEGER; + dt->shared->size = 1; + dt->shared->u.atomic.order = H5T_ORDER_LE; + dt->shared->u.atomic.offset = 0; + dt->shared->u.atomic.prec = 8; + dt->shared->u.atomic.lsb_pad = H5T_PAD_ZERO; + dt->shared->u.atomic.msb_pad = H5T_PAD_ZERO; + dt->shared->u.atomic.u.i.sign = H5T_SGN_2; + if((H5T_NATIVE_INT8_g = H5I_register(H5I_DATATYPE, dt, FALSE)) < 0) + HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "can't register ID for built-in datatype") + H5T_NATIVE_INT8_ALIGN_g = 1; + + /* + * 0 + * UUUUUUUU + * Alignment: none + */ + if(NULL == (dt = H5T__alloc())) + HGOTO_ERROR(H5E_DATATYPE, H5E_NOSPACE, FAIL, "datatype allocation failed") + dt->shared->state = H5T_STATE_IMMUTABLE; + dt->shared->type = H5T_INTEGER; + dt->shared->size = 1; + dt->shared->u.atomic.order = H5T_ORDER_LE; + dt->shared->u.atomic.offset = 0; + dt->shared->u.atomic.prec = 8; + dt->shared->u.atomic.lsb_pad = H5T_PAD_ZERO; + dt->shared->u.atomic.msb_pad = H5T_PAD_ZERO; + dt->shared->u.atomic.u.i.sign = H5T_SGN_NONE; + if((H5T_NATIVE_UINT8_g = H5I_register(H5I_DATATYPE, dt, FALSE)) < 0) + HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "can't register ID for built-in datatype") + H5T_NATIVE_UINT8_ALIGN_g = 1; + + /* + * 0 + * IIIIIIII + * Alignment: none + */ + if(NULL == (dt = H5T__alloc())) + HGOTO_ERROR(H5E_DATATYPE, H5E_NOSPACE, FAIL, "datatype allocation failed") + dt->shared->state = H5T_STATE_IMMUTABLE; + dt->shared->type = H5T_INTEGER; + dt->shared->size = 1; + dt->shared->u.atomic.order = H5T_ORDER_LE; + dt->shared->u.atomic.offset = 0; + dt->shared->u.atomic.prec = 8; + dt->shared->u.atomic.lsb_pad = H5T_PAD_ZERO; + dt->shared->u.atomic.msb_pad = H5T_PAD_ZERO; + dt->shared->u.atomic.u.i.sign = H5T_SGN_2; + if((H5T_NATIVE_INT_LEAST8_g = H5I_register(H5I_DATATYPE, dt, FALSE)) < 0) + HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "can't register ID for built-in datatype") + H5T_NATIVE_INT_LEAST8_ALIGN_g = 1; + + /* + * 0 + * UUUUUUUU + * Alignment: none + */ + if(NULL == (dt = H5T__alloc())) + HGOTO_ERROR(H5E_DATATYPE, H5E_NOSPACE, FAIL, "datatype allocation failed") + dt->shared->state = H5T_STATE_IMMUTABLE; + dt->shared->type = H5T_INTEGER; + dt->shared->size = 1; + dt->shared->u.atomic.order = H5T_ORDER_LE; + dt->shared->u.atomic.offset = 0; + dt->shared->u.atomic.prec = 8; + dt->shared->u.atomic.lsb_pad = H5T_PAD_ZERO; + dt->shared->u.atomic.msb_pad = H5T_PAD_ZERO; + dt->shared->u.atomic.u.i.sign = H5T_SGN_NONE; + if((H5T_NATIVE_UINT_LEAST8_g = H5I_register(H5I_DATATYPE, dt, FALSE)) < 0) + HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "can't register ID for built-in datatype") + H5T_NATIVE_UINT_LEAST8_ALIGN_g = 1; + + /* + * 0 + * IIIIIIII + * Alignment: none + */ + if(NULL == (dt = H5T__alloc())) + HGOTO_ERROR(H5E_DATATYPE, H5E_NOSPACE, FAIL, "datatype allocation failed") + dt->shared->state = H5T_STATE_IMMUTABLE; + dt->shared->type = H5T_INTEGER; + dt->shared->size = 1; + dt->shared->u.atomic.order = H5T_ORDER_LE; + dt->shared->u.atomic.offset = 0; + dt->shared->u.atomic.prec = 8; + dt->shared->u.atomic.lsb_pad = H5T_PAD_ZERO; + dt->shared->u.atomic.msb_pad = H5T_PAD_ZERO; + dt->shared->u.atomic.u.i.sign = H5T_SGN_2; + if((H5T_NATIVE_INT_FAST8_g = H5I_register(H5I_DATATYPE, dt, FALSE)) < 0) + HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "can't register ID for built-in datatype") + H5T_NATIVE_INT_FAST8_ALIGN_g = 1; + + /* + * 0 + * UUUUUUUU + * Alignment: none + */ + if(NULL == (dt = H5T__alloc())) + HGOTO_ERROR(H5E_DATATYPE, H5E_NOSPACE, FAIL, "datatype allocation failed") + dt->shared->state = H5T_STATE_IMMUTABLE; + dt->shared->type = H5T_INTEGER; + dt->shared->size = 1; + dt->shared->u.atomic.order = H5T_ORDER_LE; + dt->shared->u.atomic.offset = 0; + dt->shared->u.atomic.prec = 8; + dt->shared->u.atomic.lsb_pad = H5T_PAD_ZERO; + dt->shared->u.atomic.msb_pad = H5T_PAD_ZERO; + dt->shared->u.atomic.u.i.sign = H5T_SGN_NONE; + if((H5T_NATIVE_UINT_FAST8_g = H5I_register(H5I_DATATYPE, dt, FALSE)) < 0) + HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "can't register ID for built-in datatype") + H5T_NATIVE_UINT_FAST8_ALIGN_g = 1; + + /* + * 1 0 + * IIIIIIII IIIIIIII + * Alignment: none + */ + if(NULL == (dt = H5T__alloc())) + HGOTO_ERROR(H5E_DATATYPE, H5E_NOSPACE, FAIL, "datatype allocation failed") + dt->shared->state = H5T_STATE_IMMUTABLE; + dt->shared->type = H5T_INTEGER; + dt->shared->size = 2; + dt->shared->u.atomic.order = H5T_ORDER_LE; + dt->shared->u.atomic.offset = 0; + dt->shared->u.atomic.prec = 16; + dt->shared->u.atomic.lsb_pad = H5T_PAD_ZERO; + dt->shared->u.atomic.msb_pad = H5T_PAD_ZERO; + dt->shared->u.atomic.u.i.sign = H5T_SGN_2; + if((H5T_NATIVE_INT16_g = H5I_register(H5I_DATATYPE, dt, FALSE)) < 0) + HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "can't register ID for built-in datatype") + H5T_NATIVE_INT16_ALIGN_g = 1; + + /* + * 1 0 + * UUUUUUUU UUUUUUUU + * Alignment: none + */ + if(NULL == (dt = H5T__alloc())) + HGOTO_ERROR(H5E_DATATYPE, H5E_NOSPACE, FAIL, "datatype allocation failed") + dt->shared->state = H5T_STATE_IMMUTABLE; + dt->shared->type = H5T_INTEGER; + dt->shared->size = 2; + dt->shared->u.atomic.order = H5T_ORDER_LE; + dt->shared->u.atomic.offset = 0; + dt->shared->u.atomic.prec = 16; + dt->shared->u.atomic.lsb_pad = H5T_PAD_ZERO; + dt->shared->u.atomic.msb_pad = H5T_PAD_ZERO; + dt->shared->u.atomic.u.i.sign = H5T_SGN_NONE; + if((H5T_NATIVE_UINT16_g = H5I_register(H5I_DATATYPE, dt, FALSE)) < 0) + HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "can't register ID for built-in datatype") + H5T_NATIVE_UINT16_ALIGN_g = 1; + + /* + * 1 0 + * IIIIIIII IIIIIIII + * Alignment: none + */ + if(NULL == (dt = H5T__alloc())) + HGOTO_ERROR(H5E_DATATYPE, H5E_NOSPACE, FAIL, "datatype allocation failed") + dt->shared->state = H5T_STATE_IMMUTABLE; + dt->shared->type = H5T_INTEGER; + dt->shared->size = 2; + dt->shared->u.atomic.order = H5T_ORDER_LE; + dt->shared->u.atomic.offset = 0; + dt->shared->u.atomic.prec = 16; + dt->shared->u.atomic.lsb_pad = H5T_PAD_ZERO; + dt->shared->u.atomic.msb_pad = H5T_PAD_ZERO; + dt->shared->u.atomic.u.i.sign = H5T_SGN_2; + if((H5T_NATIVE_INT_LEAST16_g = H5I_register(H5I_DATATYPE, dt, FALSE)) < 0) + HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "can't register ID for built-in datatype") + H5T_NATIVE_INT_LEAST16_ALIGN_g = 1; + + /* + * 1 0 + * UUUUUUUU UUUUUUUU + * Alignment: none + */ + if(NULL == (dt = H5T__alloc())) + HGOTO_ERROR(H5E_DATATYPE, H5E_NOSPACE, FAIL, "datatype allocation failed") + dt->shared->state = H5T_STATE_IMMUTABLE; + dt->shared->type = H5T_INTEGER; + dt->shared->size = 2; + dt->shared->u.atomic.order = H5T_ORDER_LE; + dt->shared->u.atomic.offset = 0; + dt->shared->u.atomic.prec = 16; + dt->shared->u.atomic.lsb_pad = H5T_PAD_ZERO; + dt->shared->u.atomic.msb_pad = H5T_PAD_ZERO; + dt->shared->u.atomic.u.i.sign = H5T_SGN_NONE; + if((H5T_NATIVE_UINT_LEAST16_g = H5I_register(H5I_DATATYPE, dt, FALSE)) < 0) + HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "can't register ID for built-in datatype") + H5T_NATIVE_UINT_LEAST16_ALIGN_g = 1; + + /* + * 7 6 5 4 + * IIIIIIII IIIIIIII IIIIIIII IIIIIIII + * 3 2 1 0 + * IIIIIIII IIIIIIII IIIIIIII IIIIIIII + * Alignment: none + */ + if(NULL == (dt = H5T__alloc())) + HGOTO_ERROR(H5E_DATATYPE, H5E_NOSPACE, FAIL, "datatype allocation failed") + dt->shared->state = H5T_STATE_IMMUTABLE; + dt->shared->type = H5T_INTEGER; + dt->shared->size = 8; + dt->shared->u.atomic.order = H5T_ORDER_LE; + dt->shared->u.atomic.offset = 0; + dt->shared->u.atomic.prec = 64; + dt->shared->u.atomic.lsb_pad = H5T_PAD_ZERO; + dt->shared->u.atomic.msb_pad = H5T_PAD_ZERO; + dt->shared->u.atomic.u.i.sign = H5T_SGN_2; + if((H5T_NATIVE_INT_FAST16_g = H5I_register(H5I_DATATYPE, dt, FALSE)) < 0) + HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "can't register ID for built-in datatype") + H5T_NATIVE_INT_FAST16_ALIGN_g = 1; + + /* + * 7 6 5 4 + * UUUUUUUU UUUUUUUU UUUUUUUU UUUUUUUU + * 3 2 1 0 + * UUUUUUUU UUUUUUUU UUUUUUUU UUUUUUUU + * Alignment: none + */ + if(NULL == (dt = H5T__alloc())) + HGOTO_ERROR(H5E_DATATYPE, H5E_NOSPACE, FAIL, "datatype allocation failed") + dt->shared->state = H5T_STATE_IMMUTABLE; + dt->shared->type = H5T_INTEGER; + dt->shared->size = 8; + dt->shared->u.atomic.order = H5T_ORDER_LE; + dt->shared->u.atomic.offset = 0; + dt->shared->u.atomic.prec = 64; + dt->shared->u.atomic.lsb_pad = H5T_PAD_ZERO; + dt->shared->u.atomic.msb_pad = H5T_PAD_ZERO; + dt->shared->u.atomic.u.i.sign = H5T_SGN_NONE; + if((H5T_NATIVE_UINT_FAST16_g = H5I_register(H5I_DATATYPE, dt, FALSE)) < 0) + HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "can't register ID for built-in datatype") + H5T_NATIVE_UINT_FAST16_ALIGN_g = 1; + + /* + * 3 2 1 0 + * IIIIIIII IIIIIIII IIIIIIII IIIIIIII + * Alignment: none + */ + if(NULL == (dt = H5T__alloc())) + HGOTO_ERROR(H5E_DATATYPE, H5E_NOSPACE, FAIL, "datatype allocation failed") + dt->shared->state = H5T_STATE_IMMUTABLE; + dt->shared->type = H5T_INTEGER; + dt->shared->size = 4; + dt->shared->u.atomic.order = H5T_ORDER_LE; + dt->shared->u.atomic.offset = 0; + dt->shared->u.atomic.prec = 32; + dt->shared->u.atomic.lsb_pad = H5T_PAD_ZERO; + dt->shared->u.atomic.msb_pad = H5T_PAD_ZERO; + dt->shared->u.atomic.u.i.sign = H5T_SGN_2; + if((H5T_NATIVE_INT32_g = H5I_register(H5I_DATATYPE, dt, FALSE)) < 0) + HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "can't register ID for built-in datatype") + H5T_NATIVE_INT32_ALIGN_g = 1; + + /* + * 3 2 1 0 + * UUUUUUUU UUUUUUUU UUUUUUUU UUUUUUUU + * Alignment: none + */ + if(NULL == (dt = H5T__alloc())) + HGOTO_ERROR(H5E_DATATYPE, H5E_NOSPACE, FAIL, "datatype allocation failed") + dt->shared->state = H5T_STATE_IMMUTABLE; + dt->shared->type = H5T_INTEGER; + dt->shared->size = 4; + dt->shared->u.atomic.order = H5T_ORDER_LE; + dt->shared->u.atomic.offset = 0; + dt->shared->u.atomic.prec = 32; + dt->shared->u.atomic.lsb_pad = H5T_PAD_ZERO; + dt->shared->u.atomic.msb_pad = H5T_PAD_ZERO; + dt->shared->u.atomic.u.i.sign = H5T_SGN_NONE; + if((H5T_NATIVE_UINT32_g = H5I_register(H5I_DATATYPE, dt, FALSE)) < 0) + HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "can't register ID for built-in datatype") + H5T_NATIVE_UINT32_ALIGN_g = 1; + + /* + * 3 2 1 0 + * IIIIIIII IIIIIIII IIIIIIII IIIIIIII + * Alignment: none + */ + if(NULL == (dt = H5T__alloc())) + HGOTO_ERROR(H5E_DATATYPE, H5E_NOSPACE, FAIL, "datatype allocation failed") + dt->shared->state = H5T_STATE_IMMUTABLE; + dt->shared->type = H5T_INTEGER; + dt->shared->size = 4; + dt->shared->u.atomic.order = H5T_ORDER_LE; + dt->shared->u.atomic.offset = 0; + dt->shared->u.atomic.prec = 32; + dt->shared->u.atomic.lsb_pad = H5T_PAD_ZERO; + dt->shared->u.atomic.msb_pad = H5T_PAD_ZERO; + dt->shared->u.atomic.u.i.sign = H5T_SGN_2; + if((H5T_NATIVE_INT_LEAST32_g = H5I_register(H5I_DATATYPE, dt, FALSE)) < 0) + HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "can't register ID for built-in datatype") + H5T_NATIVE_INT_LEAST32_ALIGN_g = 1; + + /* + * 3 2 1 0 + * UUUUUUUU UUUUUUUU UUUUUUUU UUUUUUUU + * Alignment: none + */ + if(NULL == (dt = H5T__alloc())) + HGOTO_ERROR(H5E_DATATYPE, H5E_NOSPACE, FAIL, "datatype allocation failed") + dt->shared->state = H5T_STATE_IMMUTABLE; + dt->shared->type = H5T_INTEGER; + dt->shared->size = 4; + dt->shared->u.atomic.order = H5T_ORDER_LE; + dt->shared->u.atomic.offset = 0; + dt->shared->u.atomic.prec = 32; + dt->shared->u.atomic.lsb_pad = H5T_PAD_ZERO; + dt->shared->u.atomic.msb_pad = H5T_PAD_ZERO; + dt->shared->u.atomic.u.i.sign = H5T_SGN_NONE; + if((H5T_NATIVE_UINT_LEAST32_g = H5I_register(H5I_DATATYPE, dt, FALSE)) < 0) + HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "can't register ID for built-in datatype") + H5T_NATIVE_UINT_LEAST32_ALIGN_g = 1; + + /* + * 7 6 5 4 + * IIIIIIII IIIIIIII IIIIIIII IIIIIIII + * 3 2 1 0 + * IIIIIIII IIIIIIII IIIIIIII IIIIIIII + * Alignment: none + */ + if(NULL == (dt = H5T__alloc())) + HGOTO_ERROR(H5E_DATATYPE, H5E_NOSPACE, FAIL, "datatype allocation failed") + dt->shared->state = H5T_STATE_IMMUTABLE; + dt->shared->type = H5T_INTEGER; + dt->shared->size = 8; + dt->shared->u.atomic.order = H5T_ORDER_LE; + dt->shared->u.atomic.offset = 0; + dt->shared->u.atomic.prec = 64; + dt->shared->u.atomic.lsb_pad = H5T_PAD_ZERO; + dt->shared->u.atomic.msb_pad = H5T_PAD_ZERO; + dt->shared->u.atomic.u.i.sign = H5T_SGN_2; + if((H5T_NATIVE_INT_FAST32_g = H5I_register(H5I_DATATYPE, dt, FALSE)) < 0) + HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "can't register ID for built-in datatype") + H5T_NATIVE_INT_FAST32_ALIGN_g = 1; + + /* + * 7 6 5 4 + * UUUUUUUU UUUUUUUU UUUUUUUU UUUUUUUU + * 3 2 1 0 + * UUUUUUUU UUUUUUUU UUUUUUUU UUUUUUUU + * Alignment: none + */ + if(NULL == (dt = H5T__alloc())) + HGOTO_ERROR(H5E_DATATYPE, H5E_NOSPACE, FAIL, "datatype allocation failed") + dt->shared->state = H5T_STATE_IMMUTABLE; + dt->shared->type = H5T_INTEGER; + dt->shared->size = 8; + dt->shared->u.atomic.order = H5T_ORDER_LE; + dt->shared->u.atomic.offset = 0; + dt->shared->u.atomic.prec = 64; + dt->shared->u.atomic.lsb_pad = H5T_PAD_ZERO; + dt->shared->u.atomic.msb_pad = H5T_PAD_ZERO; + dt->shared->u.atomic.u.i.sign = H5T_SGN_NONE; + if((H5T_NATIVE_UINT_FAST32_g = H5I_register(H5I_DATATYPE, dt, FALSE)) < 0) + HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "can't register ID for built-in datatype") + H5T_NATIVE_UINT_FAST32_ALIGN_g = 1; + + /* + * 7 6 5 4 + * IIIIIIII IIIIIIII IIIIIIII IIIIIIII + * 3 2 1 0 + * IIIIIIII IIIIIIII IIIIIIII IIIIIIII + * Alignment: none + */ + if(NULL == (dt = H5T__alloc())) + HGOTO_ERROR(H5E_DATATYPE, H5E_NOSPACE, FAIL, "datatype allocation failed") + dt->shared->state = H5T_STATE_IMMUTABLE; + dt->shared->type = H5T_INTEGER; + dt->shared->size = 8; + dt->shared->u.atomic.order = H5T_ORDER_LE; + dt->shared->u.atomic.offset = 0; + dt->shared->u.atomic.prec = 64; + dt->shared->u.atomic.lsb_pad = H5T_PAD_ZERO; + dt->shared->u.atomic.msb_pad = H5T_PAD_ZERO; + dt->shared->u.atomic.u.i.sign = H5T_SGN_2; + if((H5T_NATIVE_INT64_g = H5I_register(H5I_DATATYPE, dt, FALSE)) < 0) + HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "can't register ID for built-in datatype") + H5T_NATIVE_INT64_ALIGN_g = 1; + + /* + * 7 6 5 4 + * UUUUUUUU UUUUUUUU UUUUUUUU UUUUUUUU + * 3 2 1 0 + * UUUUUUUU UUUUUUUU UUUUUUUU UUUUUUUU + * Alignment: none + */ + if(NULL == (dt = H5T__alloc())) + HGOTO_ERROR(H5E_DATATYPE, H5E_NOSPACE, FAIL, "datatype allocation failed") + dt->shared->state = H5T_STATE_IMMUTABLE; + dt->shared->type = H5T_INTEGER; + dt->shared->size = 8; + dt->shared->u.atomic.order = H5T_ORDER_LE; + dt->shared->u.atomic.offset = 0; + dt->shared->u.atomic.prec = 64; + dt->shared->u.atomic.lsb_pad = H5T_PAD_ZERO; + dt->shared->u.atomic.msb_pad = H5T_PAD_ZERO; + dt->shared->u.atomic.u.i.sign = H5T_SGN_NONE; + if((H5T_NATIVE_UINT64_g = H5I_register(H5I_DATATYPE, dt, FALSE)) < 0) + HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "can't register ID for built-in datatype") + H5T_NATIVE_UINT64_ALIGN_g = 1; + + /* + * 7 6 5 4 + * IIIIIIII IIIIIIII IIIIIIII IIIIIIII + * 3 2 1 0 + * IIIIIIII IIIIIIII IIIIIIII IIIIIIII + * Alignment: none + */ + if(NULL == (dt = H5T__alloc())) + HGOTO_ERROR(H5E_DATATYPE, H5E_NOSPACE, FAIL, "datatype allocation failed") + dt->shared->state = H5T_STATE_IMMUTABLE; + dt->shared->type = H5T_INTEGER; + dt->shared->size = 8; + dt->shared->u.atomic.order = H5T_ORDER_LE; + dt->shared->u.atomic.offset = 0; + dt->shared->u.atomic.prec = 64; + dt->shared->u.atomic.lsb_pad = H5T_PAD_ZERO; + dt->shared->u.atomic.msb_pad = H5T_PAD_ZERO; + dt->shared->u.atomic.u.i.sign = H5T_SGN_2; + if((H5T_NATIVE_INT_LEAST64_g = H5I_register(H5I_DATATYPE, dt, FALSE)) < 0) + HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "can't register ID for built-in datatype") + H5T_NATIVE_INT_LEAST64_ALIGN_g = 1; + + /* + * 7 6 5 4 + * UUUUUUUU UUUUUUUU UUUUUUUU UUUUUUUU + * 3 2 1 0 + * UUUUUUUU UUUUUUUU UUUUUUUU UUUUUUUU + * Alignment: none + */ + if(NULL == (dt = H5T__alloc())) + HGOTO_ERROR(H5E_DATATYPE, H5E_NOSPACE, FAIL, "datatype allocation failed") + dt->shared->state = H5T_STATE_IMMUTABLE; + dt->shared->type = H5T_INTEGER; + dt->shared->size = 8; + dt->shared->u.atomic.order = H5T_ORDER_LE; + dt->shared->u.atomic.offset = 0; + dt->shared->u.atomic.prec = 64; + dt->shared->u.atomic.lsb_pad = H5T_PAD_ZERO; + dt->shared->u.atomic.msb_pad = H5T_PAD_ZERO; + dt->shared->u.atomic.u.i.sign = H5T_SGN_NONE; + if((H5T_NATIVE_UINT_LEAST64_g = H5I_register(H5I_DATATYPE, dt, FALSE)) < 0) + HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "can't register ID for built-in datatype") + H5T_NATIVE_UINT_LEAST64_ALIGN_g = 1; + + /* + * 7 6 5 4 + * IIIIIIII IIIIIIII IIIIIIII IIIIIIII + * 3 2 1 0 + * IIIIIIII IIIIIIII IIIIIIII IIIIIIII + * Alignment: none + */ + if(NULL == (dt = H5T__alloc())) + HGOTO_ERROR(H5E_DATATYPE, H5E_NOSPACE, FAIL, "datatype allocation failed") + dt->shared->state = H5T_STATE_IMMUTABLE; + dt->shared->type = H5T_INTEGER; + dt->shared->size = 8; + dt->shared->u.atomic.order = H5T_ORDER_LE; + dt->shared->u.atomic.offset = 0; + dt->shared->u.atomic.prec = 64; + dt->shared->u.atomic.lsb_pad = H5T_PAD_ZERO; + dt->shared->u.atomic.msb_pad = H5T_PAD_ZERO; + dt->shared->u.atomic.u.i.sign = H5T_SGN_2; + if((H5T_NATIVE_INT_FAST64_g = H5I_register(H5I_DATATYPE, dt, FALSE)) < 0) + HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "can't register ID for built-in datatype") + H5T_NATIVE_INT_FAST64_ALIGN_g = 1; + + /* + * 7 6 5 4 + * UUUUUUUU UUUUUUUU UUUUUUUU UUUUUUUU + * 3 2 1 0 + * UUUUUUUU UUUUUUUU UUUUUUUU UUUUUUUU + * Alignment: none + */ + if(NULL == (dt = H5T__alloc())) + HGOTO_ERROR(H5E_DATATYPE, H5E_NOSPACE, FAIL, "datatype allocation failed") + dt->shared->state = H5T_STATE_IMMUTABLE; + dt->shared->type = H5T_INTEGER; + dt->shared->size = 8; + dt->shared->u.atomic.order = H5T_ORDER_LE; + dt->shared->u.atomic.offset = 0; + dt->shared->u.atomic.prec = 64; + dt->shared->u.atomic.lsb_pad = H5T_PAD_ZERO; + dt->shared->u.atomic.msb_pad = H5T_PAD_ZERO; + dt->shared->u.atomic.u.i.sign = H5T_SGN_NONE; + if((H5T_NATIVE_UINT_FAST64_g = H5I_register(H5I_DATATYPE, dt, FALSE)) < 0) + HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "can't register ID for built-in datatype") + H5T_NATIVE_UINT_FAST64_ALIGN_g = 1; + + /* + * 7 6 5 4 + * IIIIIIII IIIIIIII IIIIIIII IIIIIIII + * 3 2 1 0 + * IIIIIIII IIIIIIII IIIIIIII IIIIIIII + * Alignment: none + */ + if(NULL == (dt = H5T__alloc())) + HGOTO_ERROR(H5E_DATATYPE, H5E_NOSPACE, FAIL, "datatype allocation failed") + dt->shared->state = H5T_STATE_IMMUTABLE; + dt->shared->type = H5T_INTEGER; + dt->shared->size = 8; + dt->shared->u.atomic.order = H5T_ORDER_LE; + dt->shared->u.atomic.offset = 0; + dt->shared->u.atomic.prec = 64; + dt->shared->u.atomic.lsb_pad = H5T_PAD_ZERO; + dt->shared->u.atomic.msb_pad = H5T_PAD_ZERO; + dt->shared->u.atomic.u.i.sign = H5T_SGN_2; + if((H5T_NATIVE_LLONG_g = H5I_register(H5I_DATATYPE, dt, FALSE)) < 0) + HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "can't register ID for built-in datatype") + H5T_NATIVE_LLONG_ALIGN_g = 1; + H5T_NATIVE_LLONG_COMP_ALIGN_g = 8; + + /* + * 7 6 5 4 + * UUUUUUUU UUUUUUUU UUUUUUUU UUUUUUUU + * 3 2 1 0 + * UUUUUUUU UUUUUUUU UUUUUUUU UUUUUUUU + * Alignment: none + */ + if(NULL == (dt = H5T__alloc())) + HGOTO_ERROR(H5E_DATATYPE, H5E_NOSPACE, FAIL, "datatype allocation failed") + dt->shared->state = H5T_STATE_IMMUTABLE; + dt->shared->type = H5T_INTEGER; + dt->shared->size = 8; + dt->shared->u.atomic.order = H5T_ORDER_LE; + dt->shared->u.atomic.offset = 0; + dt->shared->u.atomic.prec = 64; + dt->shared->u.atomic.lsb_pad = H5T_PAD_ZERO; + dt->shared->u.atomic.msb_pad = H5T_PAD_ZERO; + dt->shared->u.atomic.u.i.sign = H5T_SGN_NONE; + if((H5T_NATIVE_ULLONG_g = H5I_register(H5I_DATATYPE, dt, FALSE)) < 0) + HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "can't register ID for built-in datatype") + H5T_NATIVE_ULLONG_ALIGN_g = 1; + + /* + * 3 2 1 0 + * SEEEEEEE EMMMMMMM MMMMMMMM MMMMMMMM + * Implicit bit? yes + * Alignment: none + */ + if(NULL == (dt = H5T__alloc())) + HGOTO_ERROR(H5E_DATATYPE, H5E_NOSPACE, FAIL, "datatype allocation failed") + dt->shared->state = H5T_STATE_IMMUTABLE; + dt->shared->type = H5T_FLOAT; + dt->shared->size = 4; + dt->shared->u.atomic.order = H5T_ORDER_LE; + dt->shared->u.atomic.offset = 0; + dt->shared->u.atomic.prec = 32; + dt->shared->u.atomic.lsb_pad = H5T_PAD_ZERO; + dt->shared->u.atomic.msb_pad = H5T_PAD_ZERO; + dt->shared->u.atomic.u.f.sign = 31; + dt->shared->u.atomic.u.f.epos = 23; + dt->shared->u.atomic.u.f.esize = 8; + dt->shared->u.atomic.u.f.ebias = 0x0000007f; + dt->shared->u.atomic.u.f.mpos = 0; + dt->shared->u.atomic.u.f.msize = 23; + dt->shared->u.atomic.u.f.norm = H5T_NORM_IMPLIED; + dt->shared->u.atomic.u.f.pad = H5T_PAD_ZERO; + if((H5T_NATIVE_FLOAT_g = H5I_register(H5I_DATATYPE, dt, FALSE)) < 0) + HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "can't register ID for built-in datatype") + H5T_NATIVE_FLOAT_ALIGN_g = 1; + H5T_NATIVE_FLOAT_COMP_ALIGN_g = 4; + + /* + * 7 6 5 4 + * SEEEEEEE EEEEMMMM MMMMMMMM MMMMMMMM + * 3 2 1 0 + * MMMMMMMM MMMMMMMM MMMMMMMM MMMMMMMM + * Implicit bit? yes + * Alignment: none + */ + if(NULL == (dt = H5T__alloc())) + HGOTO_ERROR(H5E_DATATYPE, H5E_NOSPACE, FAIL, "datatype allocation failed") + dt->shared->state = H5T_STATE_IMMUTABLE; + dt->shared->type = H5T_FLOAT; + dt->shared->size = 8; + dt->shared->u.atomic.order = H5T_ORDER_LE; + dt->shared->u.atomic.offset = 0; + dt->shared->u.atomic.prec = 64; + dt->shared->u.atomic.lsb_pad = H5T_PAD_ZERO; + dt->shared->u.atomic.msb_pad = H5T_PAD_ZERO; + dt->shared->u.atomic.u.f.sign = 63; + dt->shared->u.atomic.u.f.epos = 52; + dt->shared->u.atomic.u.f.esize = 11; + dt->shared->u.atomic.u.f.ebias = 0x000003ff; + dt->shared->u.atomic.u.f.mpos = 0; + dt->shared->u.atomic.u.f.msize = 52; + dt->shared->u.atomic.u.f.norm = H5T_NORM_IMPLIED; + dt->shared->u.atomic.u.f.pad = H5T_PAD_ZERO; + if((H5T_NATIVE_DOUBLE_g = H5I_register(H5I_DATATYPE, dt, FALSE)) < 0) + HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "can't register ID for built-in datatype") + H5T_NATIVE_DOUBLE_ALIGN_g = 1; + H5T_NATIVE_DOUBLE_COMP_ALIGN_g = 8; + + /* + * 15 14 13 12 + * ???????? ???????? ???????? ???????? + * 11 10 9 8 + * ???????? ???????? SEEEEEEE EEEEEEEE + * 7 6 5 4 + * MMMMMMMM MMMMMMMM MMMMMMMM MMMMMMMM + * 3 2 1 0 + * MMMMMMMM MMMMMMMM MMMMMMMM MMMMMMMM + * Implicit bit? no + * Alignment: none + */ + if(NULL == (dt = H5T__alloc())) + HGOTO_ERROR(H5E_DATATYPE, H5E_NOSPACE, FAIL, "datatype allocation failed") + dt->shared->state = H5T_STATE_IMMUTABLE; + dt->shared->type = H5T_FLOAT; + dt->shared->size = 16; + dt->shared->u.atomic.order = H5T_ORDER_LE; + dt->shared->u.atomic.offset = 0; + dt->shared->u.atomic.prec = 80; + dt->shared->u.atomic.lsb_pad = H5T_PAD_ZERO; + dt->shared->u.atomic.msb_pad = H5T_PAD_ZERO; + dt->shared->u.atomic.u.f.sign = 79; + dt->shared->u.atomic.u.f.epos = 64; + dt->shared->u.atomic.u.f.esize = 15; + dt->shared->u.atomic.u.f.ebias = 0x00003fff; + dt->shared->u.atomic.u.f.mpos = 0; + dt->shared->u.atomic.u.f.msize = 64; + dt->shared->u.atomic.u.f.norm = H5T_NORM_NONE; + dt->shared->u.atomic.u.f.pad = H5T_PAD_ZERO; + if((H5T_NATIVE_LDOUBLE_g = H5I_register(H5I_DATATYPE, dt, FALSE)) < 0) + HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "can't register ID for built-in datatype") + H5T_NATIVE_LDOUBLE_ALIGN_g = 1; + H5T_NATIVE_LDOUBLE_COMP_ALIGN_g = 16; + + /* Set the native order for this machine */ + H5T_native_order_g = H5T_ORDER_LE; + + /* Structure alignment for pointers, hvl_t, hobj_ref_t, hdset_reg_ref_t */ + H5T_POINTER_COMP_ALIGN_g = 8; + H5T_HVL_COMP_ALIGN_g = 8; + H5T_HOBJREF_COMP_ALIGN_g = 8; + H5T_HDSETREGREF_COMP_ALIGN_g = 1; + +done: + if(ret_value < 0) { + if(dt != NULL) { + dt->shared = H5FL_FREE(H5T_shared_t, dt->shared); + dt = H5FL_FREE(H5T_t, dt); + } /* end if */ + } /* end if */ + + FUNC_LEAVE_NOAPI(ret_value); +} /* end H5TN_init_interface() */ + +/****************************************/ +/* ALIGNMENT and signal-handling status */ +/****************************************/ +/* Signal() support: yes */ +/* setjmp() support: yes */ +/* longjmp() support: yes */ +/* sigsetjmp() support: yes */ +/* siglongjmp() support: yes */ +/* sigprocmask() support: yes */ + +/******************************/ +/* signal handlers statistics */ +/******************************/ +/* signal_handlers tested: 15 times */ +/* sigbus_handler called: 5 times */ +/* sigsegv_handler called: 5 times */ +/* sigill_handler called: 5 times */ diff --git a/meta-refkit-extra/recipes-convnet/hdf5/files/H5lib_settings.c b/meta-refkit-extra/recipes-convnet/hdf5/files/H5lib_settings.c new file mode 100644 index 0000000000..c1c3444e34 --- /dev/null +++ b/meta-refkit-extra/recipes-convnet/hdf5/files/H5lib_settings.c @@ -0,0 +1,41 @@ +/* Generated automatically by H5make_libsettings -- do not edit */ + + + +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by The HDF Group. * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from help@hdfgroup.org. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Created: Feb 15, 2017 + * root + * + * Purpose: This machine-generated source code contains + * information about the library build configuration + * + * Modifications: + * + * DO NOT MAKE MODIFICATIONS TO THIS FILE! + * It was generated by code in `H5make_libsettings.c'. + * + *------------------------------------------------------------------------- + */ + +char H5libhdf5_settings[]= + " SUMMARY OF THE HDF5 CONFIGURATION\n" + " =================================\n" + "\n" + "The configuration information is withheld. Build OS is x86_64 Intel IoT Reference Kit.\n" + "\n" +; + diff --git a/meta-refkit-extra/recipes-convnet/hdf5/files/configuration.patch b/meta-refkit-extra/recipes-convnet/hdf5/files/configuration.patch new file mode 100644 index 0000000000..a010427164 --- /dev/null +++ b/meta-refkit-extra/recipes-convnet/hdf5/files/configuration.patch @@ -0,0 +1,1090 @@ +diff --git a/H5Tinit.c b/H5Tinit.c +new file mode 100644 +index 0000000..ef1afc4 +--- /dev/null ++++ b/H5Tinit.c +@@ -0,0 +1,977 @@ ++/* Generated automatically by H5detect -- do not edit */ ++ ++ ++ ++/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ++ * Copyright by The HDF Group. * ++ * Copyright by the Board of Trustees of the University of Illinois. * ++ * All rights reserved. * ++ * * ++ * This file is part of HDF5. The full HDF5 copyright notice, including * ++ * terms governing use, modification, and redistribution, is contained in * ++ * the files COPYING and Copyright.html. COPYING can be found at the root * ++ * of the source code distribution tree; Copyright.html can be found at the * ++ * root level of an installed copy of the electronic HDF5 document set and * ++ * is linked from the top-level documents page. It can also be found at * ++ * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * ++ * access to either file, you may request a copy from help@hdfgroup.org. * ++ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ++ * ++ * Created: Nov 30, 2015 ++ * root ++ * ++ * Purpose: This machine-generated source code contains ++ * information about the various integer and ++ * floating point numeric formats found on this ++ * architecture. The parameters below should be ++ * checked carefully and errors reported to the ++ * HDF5 maintainer. ++ * ++ * Each of the numeric formats listed below are ++ * printed from most significant bit to least ++ * significant bit even though the actual bytes ++ * might be stored in a different order in ++ * memory. The integers above each binary byte ++ * indicate the relative order of the bytes in ++ * memory; little-endian machines have ++ * decreasing numbers while big-endian machines ++ * have increasing numbers. ++ * ++ * The fields of the numbers are printed as ++ * letters with `S' for the mantissa sign bit, ++ * `M' for the mantissa magnitude, and `E' for ++ * the exponent. The exponent has an associated ++ * bias which can be subtracted to find the ++ * true exponent. The radix point is assumed ++ * to be before the first `M' bit. Any bit ++ * of a floating-point value not falling into one ++ * of these categories is printed as a question ++ * mark. Bits of integer types are printed as ++ * `I' for 2's complement and `U' for magnitude. ++ * ++ * If the most significant bit of the normalized ++ * mantissa (always a `1' except for `0.0') is ++ * not stored then an `implicit=yes' appears ++ * under the field description. In thie case, ++ * the radix point is still assumed to be ++ * before the first `M' but after the implicit ++ * bit. ++ * ++ * Modifications: ++ * ++ * DO NOT MAKE MODIFICATIONS TO THIS FILE! ++ * It was generated by code in `H5detect.c'. ++ * ++ *------------------------------------------------------------------------- ++ */ ++ ++/****************/ ++/* Module Setup */ ++/****************/ ++ ++#define H5T_PACKAGE /*suppress error about including H5Tpkg.h*/ ++ ++ ++/***********/ ++/* Headers */ ++/***********/ ++#include "H5private.h" /* Generic Functions */ ++#include "H5Eprivate.h" /* Error handling */ ++#include "H5FLprivate.h" /* Free Lists */ ++#include "H5Iprivate.h" /* IDs */ ++#include "H5Tpkg.h" /* Datatypes */ ++ ++ ++/****************/ ++/* Local Macros */ ++/****************/ ++ ++ ++/******************/ ++/* Local Typedefs */ ++/******************/ ++ ++ ++/********************/ ++/* Package Typedefs */ ++/********************/ ++ ++ ++/********************/ ++/* Local Prototypes */ ++/********************/ ++ ++ ++/********************/ ++/* Public Variables */ ++/********************/ ++ ++ ++/*****************************/ ++/* Library Private Variables */ ++/*****************************/ ++ ++ ++/*********************/ ++/* Package Variables */ ++/*********************/ ++ ++ ++ ++/*******************/ ++/* Local Variables */ ++/*******************/ ++ ++ ++ ++/*------------------------------------------------------------------------- ++ * Function: H5TN_init_interface ++ * ++ * Purpose: Initialize pre-defined native datatypes from code generated ++ * during the library configuration by H5detect. ++ * ++ * Return: Success: non-negative ++ * Failure: negative ++ * ++ * Programmer: Robb Matzke ++ * Wednesday, December 16, 1998 ++ * ++ *------------------------------------------------------------------------- ++ */ ++herr_t ++H5TN_init_interface(void) ++{ ++ H5T_t *dt = NULL; ++ herr_t ret_value = SUCCEED; ++ ++ FUNC_ENTER_NOAPI(FAIL) ++ ++ /* ++ * 0 ++ * IIIIIIII ++ * Alignment: none ++ */ ++ if(NULL == (dt = H5T__alloc())) ++ HGOTO_ERROR(H5E_DATATYPE, H5E_NOSPACE, FAIL, "datatype allocation failed") ++ dt->shared->state = H5T_STATE_IMMUTABLE; ++ dt->shared->type = H5T_INTEGER; ++ dt->shared->size = 1; ++ dt->shared->u.atomic.order = H5T_ORDER_LE; ++ dt->shared->u.atomic.offset = 0; ++ dt->shared->u.atomic.prec = 8; ++ dt->shared->u.atomic.lsb_pad = H5T_PAD_ZERO; ++ dt->shared->u.atomic.msb_pad = H5T_PAD_ZERO; ++ dt->shared->u.atomic.u.i.sign = H5T_SGN_2; ++ if((H5T_NATIVE_SCHAR_g = H5I_register(H5I_DATATYPE, dt, FALSE)) < 0) ++ HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "can't register ID for built-in datatype") ++ H5T_NATIVE_SCHAR_ALIGN_g = 1; ++ H5T_NATIVE_SCHAR_COMP_ALIGN_g = 1; ++ ++ /* ++ * 0 ++ * UUUUUUUU ++ * Alignment: none ++ */ ++ if(NULL == (dt = H5T__alloc())) ++ HGOTO_ERROR(H5E_DATATYPE, H5E_NOSPACE, FAIL, "datatype allocation failed") ++ dt->shared->state = H5T_STATE_IMMUTABLE; ++ dt->shared->type = H5T_INTEGER; ++ dt->shared->size = 1; ++ dt->shared->u.atomic.order = H5T_ORDER_LE; ++ dt->shared->u.atomic.offset = 0; ++ dt->shared->u.atomic.prec = 8; ++ dt->shared->u.atomic.lsb_pad = H5T_PAD_ZERO; ++ dt->shared->u.atomic.msb_pad = H5T_PAD_ZERO; ++ dt->shared->u.atomic.u.i.sign = H5T_SGN_NONE; ++ if((H5T_NATIVE_UCHAR_g = H5I_register(H5I_DATATYPE, dt, FALSE)) < 0) ++ HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "can't register ID for built-in datatype") ++ H5T_NATIVE_UCHAR_ALIGN_g = 1; ++ ++ /* ++ * 1 0 ++ * IIIIIIII IIIIIIII ++ * Alignment: none ++ */ ++ if(NULL == (dt = H5T__alloc())) ++ HGOTO_ERROR(H5E_DATATYPE, H5E_NOSPACE, FAIL, "datatype allocation failed") ++ dt->shared->state = H5T_STATE_IMMUTABLE; ++ dt->shared->type = H5T_INTEGER; ++ dt->shared->size = 2; ++ dt->shared->u.atomic.order = H5T_ORDER_LE; ++ dt->shared->u.atomic.offset = 0; ++ dt->shared->u.atomic.prec = 16; ++ dt->shared->u.atomic.lsb_pad = H5T_PAD_ZERO; ++ dt->shared->u.atomic.msb_pad = H5T_PAD_ZERO; ++ dt->shared->u.atomic.u.i.sign = H5T_SGN_2; ++ if((H5T_NATIVE_SHORT_g = H5I_register(H5I_DATATYPE, dt, FALSE)) < 0) ++ HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "can't register ID for built-in datatype") ++ H5T_NATIVE_SHORT_ALIGN_g = 1; ++ H5T_NATIVE_SHORT_COMP_ALIGN_g = 2; ++ ++ /* ++ * 1 0 ++ * UUUUUUUU UUUUUUUU ++ * Alignment: none ++ */ ++ if(NULL == (dt = H5T__alloc())) ++ HGOTO_ERROR(H5E_DATATYPE, H5E_NOSPACE, FAIL, "datatype allocation failed") ++ dt->shared->state = H5T_STATE_IMMUTABLE; ++ dt->shared->type = H5T_INTEGER; ++ dt->shared->size = 2; ++ dt->shared->u.atomic.order = H5T_ORDER_LE; ++ dt->shared->u.atomic.offset = 0; ++ dt->shared->u.atomic.prec = 16; ++ dt->shared->u.atomic.lsb_pad = H5T_PAD_ZERO; ++ dt->shared->u.atomic.msb_pad = H5T_PAD_ZERO; ++ dt->shared->u.atomic.u.i.sign = H5T_SGN_NONE; ++ if((H5T_NATIVE_USHORT_g = H5I_register(H5I_DATATYPE, dt, FALSE)) < 0) ++ HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "can't register ID for built-in datatype") ++ H5T_NATIVE_USHORT_ALIGN_g = 1; ++ ++ /* ++ * 3 2 1 0 ++ * IIIIIIII IIIIIIII IIIIIIII IIIIIIII ++ * Alignment: none ++ */ ++ if(NULL == (dt = H5T__alloc())) ++ HGOTO_ERROR(H5E_DATATYPE, H5E_NOSPACE, FAIL, "datatype allocation failed") ++ dt->shared->state = H5T_STATE_IMMUTABLE; ++ dt->shared->type = H5T_INTEGER; ++ dt->shared->size = 4; ++ dt->shared->u.atomic.order = H5T_ORDER_LE; ++ dt->shared->u.atomic.offset = 0; ++ dt->shared->u.atomic.prec = 32; ++ dt->shared->u.atomic.lsb_pad = H5T_PAD_ZERO; ++ dt->shared->u.atomic.msb_pad = H5T_PAD_ZERO; ++ dt->shared->u.atomic.u.i.sign = H5T_SGN_2; ++ if((H5T_NATIVE_INT_g = H5I_register(H5I_DATATYPE, dt, FALSE)) < 0) ++ HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "can't register ID for built-in datatype") ++ H5T_NATIVE_INT_ALIGN_g = 1; ++ H5T_NATIVE_INT_COMP_ALIGN_g = 4; ++ ++ /* ++ * 3 2 1 0 ++ * UUUUUUUU UUUUUUUU UUUUUUUU UUUUUUUU ++ * Alignment: none ++ */ ++ if(NULL == (dt = H5T__alloc())) ++ HGOTO_ERROR(H5E_DATATYPE, H5E_NOSPACE, FAIL, "datatype allocation failed") ++ dt->shared->state = H5T_STATE_IMMUTABLE; ++ dt->shared->type = H5T_INTEGER; ++ dt->shared->size = 4; ++ dt->shared->u.atomic.order = H5T_ORDER_LE; ++ dt->shared->u.atomic.offset = 0; ++ dt->shared->u.atomic.prec = 32; ++ dt->shared->u.atomic.lsb_pad = H5T_PAD_ZERO; ++ dt->shared->u.atomic.msb_pad = H5T_PAD_ZERO; ++ dt->shared->u.atomic.u.i.sign = H5T_SGN_NONE; ++ if((H5T_NATIVE_UINT_g = H5I_register(H5I_DATATYPE, dt, FALSE)) < 0) ++ HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "can't register ID for built-in datatype") ++ H5T_NATIVE_UINT_ALIGN_g = 1; ++ ++ /* ++ * 3 2 1 0 ++ * IIIIIIII IIIIIIII IIIIIIII IIIIIIII ++ * Alignment: none ++ */ ++ if(NULL == (dt = H5T__alloc())) ++ HGOTO_ERROR(H5E_DATATYPE, H5E_NOSPACE, FAIL, "datatype allocation failed") ++ dt->shared->state = H5T_STATE_IMMUTABLE; ++ dt->shared->type = H5T_INTEGER; ++ dt->shared->size = 4; ++ dt->shared->u.atomic.order = H5T_ORDER_LE; ++ dt->shared->u.atomic.offset = 0; ++ dt->shared->u.atomic.prec = 32; ++ dt->shared->u.atomic.lsb_pad = H5T_PAD_ZERO; ++ dt->shared->u.atomic.msb_pad = H5T_PAD_ZERO; ++ dt->shared->u.atomic.u.i.sign = H5T_SGN_2; ++ if((H5T_NATIVE_LONG_g = H5I_register(H5I_DATATYPE, dt, FALSE)) < 0) ++ HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "can't register ID for built-in datatype") ++ H5T_NATIVE_LONG_ALIGN_g = 1; ++ H5T_NATIVE_LONG_COMP_ALIGN_g = 4; ++ ++ /* ++ * 3 2 1 0 ++ * UUUUUUUU UUUUUUUU UUUUUUUU UUUUUUUU ++ * Alignment: none ++ */ ++ if(NULL == (dt = H5T__alloc())) ++ HGOTO_ERROR(H5E_DATATYPE, H5E_NOSPACE, FAIL, "datatype allocation failed") ++ dt->shared->state = H5T_STATE_IMMUTABLE; ++ dt->shared->type = H5T_INTEGER; ++ dt->shared->size = 4; ++ dt->shared->u.atomic.order = H5T_ORDER_LE; ++ dt->shared->u.atomic.offset = 0; ++ dt->shared->u.atomic.prec = 32; ++ dt->shared->u.atomic.lsb_pad = H5T_PAD_ZERO; ++ dt->shared->u.atomic.msb_pad = H5T_PAD_ZERO; ++ dt->shared->u.atomic.u.i.sign = H5T_SGN_NONE; ++ if((H5T_NATIVE_ULONG_g = H5I_register(H5I_DATATYPE, dt, FALSE)) < 0) ++ HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "can't register ID for built-in datatype") ++ H5T_NATIVE_ULONG_ALIGN_g = 1; ++ ++ /* ++ * 0 ++ * IIIIIIII ++ * Alignment: none ++ */ ++ if(NULL == (dt = H5T__alloc())) ++ HGOTO_ERROR(H5E_DATATYPE, H5E_NOSPACE, FAIL, "datatype allocation failed") ++ dt->shared->state = H5T_STATE_IMMUTABLE; ++ dt->shared->type = H5T_INTEGER; ++ dt->shared->size = 1; ++ dt->shared->u.atomic.order = H5T_ORDER_LE; ++ dt->shared->u.atomic.offset = 0; ++ dt->shared->u.atomic.prec = 8; ++ dt->shared->u.atomic.lsb_pad = H5T_PAD_ZERO; ++ dt->shared->u.atomic.msb_pad = H5T_PAD_ZERO; ++ dt->shared->u.atomic.u.i.sign = H5T_SGN_2; ++ if((H5T_NATIVE_INT8_g = H5I_register(H5I_DATATYPE, dt, FALSE)) < 0) ++ HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "can't register ID for built-in datatype") ++ H5T_NATIVE_INT8_ALIGN_g = 1; ++ ++ /* ++ * 0 ++ * UUUUUUUU ++ * Alignment: none ++ */ ++ if(NULL == (dt = H5T__alloc())) ++ HGOTO_ERROR(H5E_DATATYPE, H5E_NOSPACE, FAIL, "datatype allocation failed") ++ dt->shared->state = H5T_STATE_IMMUTABLE; ++ dt->shared->type = H5T_INTEGER; ++ dt->shared->size = 1; ++ dt->shared->u.atomic.order = H5T_ORDER_LE; ++ dt->shared->u.atomic.offset = 0; ++ dt->shared->u.atomic.prec = 8; ++ dt->shared->u.atomic.lsb_pad = H5T_PAD_ZERO; ++ dt->shared->u.atomic.msb_pad = H5T_PAD_ZERO; ++ dt->shared->u.atomic.u.i.sign = H5T_SGN_NONE; ++ if((H5T_NATIVE_UINT8_g = H5I_register(H5I_DATATYPE, dt, FALSE)) < 0) ++ HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "can't register ID for built-in datatype") ++ H5T_NATIVE_UINT8_ALIGN_g = 1; ++ ++ /* ++ * 0 ++ * IIIIIIII ++ * Alignment: none ++ */ ++ if(NULL == (dt = H5T__alloc())) ++ HGOTO_ERROR(H5E_DATATYPE, H5E_NOSPACE, FAIL, "datatype allocation failed") ++ dt->shared->state = H5T_STATE_IMMUTABLE; ++ dt->shared->type = H5T_INTEGER; ++ dt->shared->size = 1; ++ dt->shared->u.atomic.order = H5T_ORDER_LE; ++ dt->shared->u.atomic.offset = 0; ++ dt->shared->u.atomic.prec = 8; ++ dt->shared->u.atomic.lsb_pad = H5T_PAD_ZERO; ++ dt->shared->u.atomic.msb_pad = H5T_PAD_ZERO; ++ dt->shared->u.atomic.u.i.sign = H5T_SGN_2; ++ if((H5T_NATIVE_INT_LEAST8_g = H5I_register(H5I_DATATYPE, dt, FALSE)) < 0) ++ HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "can't register ID for built-in datatype") ++ H5T_NATIVE_INT_LEAST8_ALIGN_g = 1; ++ ++ /* ++ * 0 ++ * UUUUUUUU ++ * Alignment: none ++ */ ++ if(NULL == (dt = H5T__alloc())) ++ HGOTO_ERROR(H5E_DATATYPE, H5E_NOSPACE, FAIL, "datatype allocation failed") ++ dt->shared->state = H5T_STATE_IMMUTABLE; ++ dt->shared->type = H5T_INTEGER; ++ dt->shared->size = 1; ++ dt->shared->u.atomic.order = H5T_ORDER_LE; ++ dt->shared->u.atomic.offset = 0; ++ dt->shared->u.atomic.prec = 8; ++ dt->shared->u.atomic.lsb_pad = H5T_PAD_ZERO; ++ dt->shared->u.atomic.msb_pad = H5T_PAD_ZERO; ++ dt->shared->u.atomic.u.i.sign = H5T_SGN_NONE; ++ if((H5T_NATIVE_UINT_LEAST8_g = H5I_register(H5I_DATATYPE, dt, FALSE)) < 0) ++ HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "can't register ID for built-in datatype") ++ H5T_NATIVE_UINT_LEAST8_ALIGN_g = 1; ++ ++ /* ++ * 0 ++ * IIIIIIII ++ * Alignment: none ++ */ ++ if(NULL == (dt = H5T__alloc())) ++ HGOTO_ERROR(H5E_DATATYPE, H5E_NOSPACE, FAIL, "datatype allocation failed") ++ dt->shared->state = H5T_STATE_IMMUTABLE; ++ dt->shared->type = H5T_INTEGER; ++ dt->shared->size = 1; ++ dt->shared->u.atomic.order = H5T_ORDER_LE; ++ dt->shared->u.atomic.offset = 0; ++ dt->shared->u.atomic.prec = 8; ++ dt->shared->u.atomic.lsb_pad = H5T_PAD_ZERO; ++ dt->shared->u.atomic.msb_pad = H5T_PAD_ZERO; ++ dt->shared->u.atomic.u.i.sign = H5T_SGN_2; ++ if((H5T_NATIVE_INT_FAST8_g = H5I_register(H5I_DATATYPE, dt, FALSE)) < 0) ++ HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "can't register ID for built-in datatype") ++ H5T_NATIVE_INT_FAST8_ALIGN_g = 1; ++ ++ /* ++ * 0 ++ * UUUUUUUU ++ * Alignment: none ++ */ ++ if(NULL == (dt = H5T__alloc())) ++ HGOTO_ERROR(H5E_DATATYPE, H5E_NOSPACE, FAIL, "datatype allocation failed") ++ dt->shared->state = H5T_STATE_IMMUTABLE; ++ dt->shared->type = H5T_INTEGER; ++ dt->shared->size = 1; ++ dt->shared->u.atomic.order = H5T_ORDER_LE; ++ dt->shared->u.atomic.offset = 0; ++ dt->shared->u.atomic.prec = 8; ++ dt->shared->u.atomic.lsb_pad = H5T_PAD_ZERO; ++ dt->shared->u.atomic.msb_pad = H5T_PAD_ZERO; ++ dt->shared->u.atomic.u.i.sign = H5T_SGN_NONE; ++ if((H5T_NATIVE_UINT_FAST8_g = H5I_register(H5I_DATATYPE, dt, FALSE)) < 0) ++ HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "can't register ID for built-in datatype") ++ H5T_NATIVE_UINT_FAST8_ALIGN_g = 1; ++ ++ /* ++ * 1 0 ++ * IIIIIIII IIIIIIII ++ * Alignment: none ++ */ ++ if(NULL == (dt = H5T__alloc())) ++ HGOTO_ERROR(H5E_DATATYPE, H5E_NOSPACE, FAIL, "datatype allocation failed") ++ dt->shared->state = H5T_STATE_IMMUTABLE; ++ dt->shared->type = H5T_INTEGER; ++ dt->shared->size = 2; ++ dt->shared->u.atomic.order = H5T_ORDER_LE; ++ dt->shared->u.atomic.offset = 0; ++ dt->shared->u.atomic.prec = 16; ++ dt->shared->u.atomic.lsb_pad = H5T_PAD_ZERO; ++ dt->shared->u.atomic.msb_pad = H5T_PAD_ZERO; ++ dt->shared->u.atomic.u.i.sign = H5T_SGN_2; ++ if((H5T_NATIVE_INT16_g = H5I_register(H5I_DATATYPE, dt, FALSE)) < 0) ++ HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "can't register ID for built-in datatype") ++ H5T_NATIVE_INT16_ALIGN_g = 1; ++ ++ /* ++ * 1 0 ++ * UUUUUUUU UUUUUUUU ++ * Alignment: none ++ */ ++ if(NULL == (dt = H5T__alloc())) ++ HGOTO_ERROR(H5E_DATATYPE, H5E_NOSPACE, FAIL, "datatype allocation failed") ++ dt->shared->state = H5T_STATE_IMMUTABLE; ++ dt->shared->type = H5T_INTEGER; ++ dt->shared->size = 2; ++ dt->shared->u.atomic.order = H5T_ORDER_LE; ++ dt->shared->u.atomic.offset = 0; ++ dt->shared->u.atomic.prec = 16; ++ dt->shared->u.atomic.lsb_pad = H5T_PAD_ZERO; ++ dt->shared->u.atomic.msb_pad = H5T_PAD_ZERO; ++ dt->shared->u.atomic.u.i.sign = H5T_SGN_NONE; ++ if((H5T_NATIVE_UINT16_g = H5I_register(H5I_DATATYPE, dt, FALSE)) < 0) ++ HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "can't register ID for built-in datatype") ++ H5T_NATIVE_UINT16_ALIGN_g = 1; ++ ++ /* ++ * 1 0 ++ * IIIIIIII IIIIIIII ++ * Alignment: none ++ */ ++ if(NULL == (dt = H5T__alloc())) ++ HGOTO_ERROR(H5E_DATATYPE, H5E_NOSPACE, FAIL, "datatype allocation failed") ++ dt->shared->state = H5T_STATE_IMMUTABLE; ++ dt->shared->type = H5T_INTEGER; ++ dt->shared->size = 2; ++ dt->shared->u.atomic.order = H5T_ORDER_LE; ++ dt->shared->u.atomic.offset = 0; ++ dt->shared->u.atomic.prec = 16; ++ dt->shared->u.atomic.lsb_pad = H5T_PAD_ZERO; ++ dt->shared->u.atomic.msb_pad = H5T_PAD_ZERO; ++ dt->shared->u.atomic.u.i.sign = H5T_SGN_2; ++ if((H5T_NATIVE_INT_LEAST16_g = H5I_register(H5I_DATATYPE, dt, FALSE)) < 0) ++ HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "can't register ID for built-in datatype") ++ H5T_NATIVE_INT_LEAST16_ALIGN_g = 1; ++ ++ /* ++ * 1 0 ++ * UUUUUUUU UUUUUUUU ++ * Alignment: none ++ */ ++ if(NULL == (dt = H5T__alloc())) ++ HGOTO_ERROR(H5E_DATATYPE, H5E_NOSPACE, FAIL, "datatype allocation failed") ++ dt->shared->state = H5T_STATE_IMMUTABLE; ++ dt->shared->type = H5T_INTEGER; ++ dt->shared->size = 2; ++ dt->shared->u.atomic.order = H5T_ORDER_LE; ++ dt->shared->u.atomic.offset = 0; ++ dt->shared->u.atomic.prec = 16; ++ dt->shared->u.atomic.lsb_pad = H5T_PAD_ZERO; ++ dt->shared->u.atomic.msb_pad = H5T_PAD_ZERO; ++ dt->shared->u.atomic.u.i.sign = H5T_SGN_NONE; ++ if((H5T_NATIVE_UINT_LEAST16_g = H5I_register(H5I_DATATYPE, dt, FALSE)) < 0) ++ HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "can't register ID for built-in datatype") ++ H5T_NATIVE_UINT_LEAST16_ALIGN_g = 1; ++ ++ /* ++ * 3 2 1 0 ++ * IIIIIIII IIIIIIII IIIIIIII IIIIIIII ++ * Alignment: none ++ */ ++ if(NULL == (dt = H5T__alloc())) ++ HGOTO_ERROR(H5E_DATATYPE, H5E_NOSPACE, FAIL, "datatype allocation failed") ++ dt->shared->state = H5T_STATE_IMMUTABLE; ++ dt->shared->type = H5T_INTEGER; ++ dt->shared->size = 4; ++ dt->shared->u.atomic.order = H5T_ORDER_LE; ++ dt->shared->u.atomic.offset = 0; ++ dt->shared->u.atomic.prec = 32; ++ dt->shared->u.atomic.lsb_pad = H5T_PAD_ZERO; ++ dt->shared->u.atomic.msb_pad = H5T_PAD_ZERO; ++ dt->shared->u.atomic.u.i.sign = H5T_SGN_2; ++ if((H5T_NATIVE_INT_FAST16_g = H5I_register(H5I_DATATYPE, dt, FALSE)) < 0) ++ HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "can't register ID for built-in datatype") ++ H5T_NATIVE_INT_FAST16_ALIGN_g = 1; ++ ++ /* ++ * 3 2 1 0 ++ * UUUUUUUU UUUUUUUU UUUUUUUU UUUUUUUU ++ * Alignment: none ++ */ ++ if(NULL == (dt = H5T__alloc())) ++ HGOTO_ERROR(H5E_DATATYPE, H5E_NOSPACE, FAIL, "datatype allocation failed") ++ dt->shared->state = H5T_STATE_IMMUTABLE; ++ dt->shared->type = H5T_INTEGER; ++ dt->shared->size = 4; ++ dt->shared->u.atomic.order = H5T_ORDER_LE; ++ dt->shared->u.atomic.offset = 0; ++ dt->shared->u.atomic.prec = 32; ++ dt->shared->u.atomic.lsb_pad = H5T_PAD_ZERO; ++ dt->shared->u.atomic.msb_pad = H5T_PAD_ZERO; ++ dt->shared->u.atomic.u.i.sign = H5T_SGN_NONE; ++ if((H5T_NATIVE_UINT_FAST16_g = H5I_register(H5I_DATATYPE, dt, FALSE)) < 0) ++ HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "can't register ID for built-in datatype") ++ H5T_NATIVE_UINT_FAST16_ALIGN_g = 1; ++ ++ /* ++ * 3 2 1 0 ++ * IIIIIIII IIIIIIII IIIIIIII IIIIIIII ++ * Alignment: none ++ */ ++ if(NULL == (dt = H5T__alloc())) ++ HGOTO_ERROR(H5E_DATATYPE, H5E_NOSPACE, FAIL, "datatype allocation failed") ++ dt->shared->state = H5T_STATE_IMMUTABLE; ++ dt->shared->type = H5T_INTEGER; ++ dt->shared->size = 4; ++ dt->shared->u.atomic.order = H5T_ORDER_LE; ++ dt->shared->u.atomic.offset = 0; ++ dt->shared->u.atomic.prec = 32; ++ dt->shared->u.atomic.lsb_pad = H5T_PAD_ZERO; ++ dt->shared->u.atomic.msb_pad = H5T_PAD_ZERO; ++ dt->shared->u.atomic.u.i.sign = H5T_SGN_2; ++ if((H5T_NATIVE_INT32_g = H5I_register(H5I_DATATYPE, dt, FALSE)) < 0) ++ HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "can't register ID for built-in datatype") ++ H5T_NATIVE_INT32_ALIGN_g = 1; ++ ++ /* ++ * 3 2 1 0 ++ * UUUUUUUU UUUUUUUU UUUUUUUU UUUUUUUU ++ * Alignment: none ++ */ ++ if(NULL == (dt = H5T__alloc())) ++ HGOTO_ERROR(H5E_DATATYPE, H5E_NOSPACE, FAIL, "datatype allocation failed") ++ dt->shared->state = H5T_STATE_IMMUTABLE; ++ dt->shared->type = H5T_INTEGER; ++ dt->shared->size = 4; ++ dt->shared->u.atomic.order = H5T_ORDER_LE; ++ dt->shared->u.atomic.offset = 0; ++ dt->shared->u.atomic.prec = 32; ++ dt->shared->u.atomic.lsb_pad = H5T_PAD_ZERO; ++ dt->shared->u.atomic.msb_pad = H5T_PAD_ZERO; ++ dt->shared->u.atomic.u.i.sign = H5T_SGN_NONE; ++ if((H5T_NATIVE_UINT32_g = H5I_register(H5I_DATATYPE, dt, FALSE)) < 0) ++ HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "can't register ID for built-in datatype") ++ H5T_NATIVE_UINT32_ALIGN_g = 1; ++ ++ /* ++ * 3 2 1 0 ++ * IIIIIIII IIIIIIII IIIIIIII IIIIIIII ++ * Alignment: none ++ */ ++ if(NULL == (dt = H5T__alloc())) ++ HGOTO_ERROR(H5E_DATATYPE, H5E_NOSPACE, FAIL, "datatype allocation failed") ++ dt->shared->state = H5T_STATE_IMMUTABLE; ++ dt->shared->type = H5T_INTEGER; ++ dt->shared->size = 4; ++ dt->shared->u.atomic.order = H5T_ORDER_LE; ++ dt->shared->u.atomic.offset = 0; ++ dt->shared->u.atomic.prec = 32; ++ dt->shared->u.atomic.lsb_pad = H5T_PAD_ZERO; ++ dt->shared->u.atomic.msb_pad = H5T_PAD_ZERO; ++ dt->shared->u.atomic.u.i.sign = H5T_SGN_2; ++ if((H5T_NATIVE_INT_LEAST32_g = H5I_register(H5I_DATATYPE, dt, FALSE)) < 0) ++ HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "can't register ID for built-in datatype") ++ H5T_NATIVE_INT_LEAST32_ALIGN_g = 1; ++ ++ /* ++ * 3 2 1 0 ++ * UUUUUUUU UUUUUUUU UUUUUUUU UUUUUUUU ++ * Alignment: none ++ */ ++ if(NULL == (dt = H5T__alloc())) ++ HGOTO_ERROR(H5E_DATATYPE, H5E_NOSPACE, FAIL, "datatype allocation failed") ++ dt->shared->state = H5T_STATE_IMMUTABLE; ++ dt->shared->type = H5T_INTEGER; ++ dt->shared->size = 4; ++ dt->shared->u.atomic.order = H5T_ORDER_LE; ++ dt->shared->u.atomic.offset = 0; ++ dt->shared->u.atomic.prec = 32; ++ dt->shared->u.atomic.lsb_pad = H5T_PAD_ZERO; ++ dt->shared->u.atomic.msb_pad = H5T_PAD_ZERO; ++ dt->shared->u.atomic.u.i.sign = H5T_SGN_NONE; ++ if((H5T_NATIVE_UINT_LEAST32_g = H5I_register(H5I_DATATYPE, dt, FALSE)) < 0) ++ HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "can't register ID for built-in datatype") ++ H5T_NATIVE_UINT_LEAST32_ALIGN_g = 1; ++ ++ /* ++ * 3 2 1 0 ++ * IIIIIIII IIIIIIII IIIIIIII IIIIIIII ++ * Alignment: none ++ */ ++ if(NULL == (dt = H5T__alloc())) ++ HGOTO_ERROR(H5E_DATATYPE, H5E_NOSPACE, FAIL, "datatype allocation failed") ++ dt->shared->state = H5T_STATE_IMMUTABLE; ++ dt->shared->type = H5T_INTEGER; ++ dt->shared->size = 4; ++ dt->shared->u.atomic.order = H5T_ORDER_LE; ++ dt->shared->u.atomic.offset = 0; ++ dt->shared->u.atomic.prec = 32; ++ dt->shared->u.atomic.lsb_pad = H5T_PAD_ZERO; ++ dt->shared->u.atomic.msb_pad = H5T_PAD_ZERO; ++ dt->shared->u.atomic.u.i.sign = H5T_SGN_2; ++ if((H5T_NATIVE_INT_FAST32_g = H5I_register(H5I_DATATYPE, dt, FALSE)) < 0) ++ HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "can't register ID for built-in datatype") ++ H5T_NATIVE_INT_FAST32_ALIGN_g = 1; ++ ++ /* ++ * 3 2 1 0 ++ * UUUUUUUU UUUUUUUU UUUUUUUU UUUUUUUU ++ * Alignment: none ++ */ ++ if(NULL == (dt = H5T__alloc())) ++ HGOTO_ERROR(H5E_DATATYPE, H5E_NOSPACE, FAIL, "datatype allocation failed") ++ dt->shared->state = H5T_STATE_IMMUTABLE; ++ dt->shared->type = H5T_INTEGER; ++ dt->shared->size = 4; ++ dt->shared->u.atomic.order = H5T_ORDER_LE; ++ dt->shared->u.atomic.offset = 0; ++ dt->shared->u.atomic.prec = 32; ++ dt->shared->u.atomic.lsb_pad = H5T_PAD_ZERO; ++ dt->shared->u.atomic.msb_pad = H5T_PAD_ZERO; ++ dt->shared->u.atomic.u.i.sign = H5T_SGN_NONE; ++ if((H5T_NATIVE_UINT_FAST32_g = H5I_register(H5I_DATATYPE, dt, FALSE)) < 0) ++ HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "can't register ID for built-in datatype") ++ H5T_NATIVE_UINT_FAST32_ALIGN_g = 1; ++ ++ /* ++ * 7 6 5 4 ++ * IIIIIIII IIIIIIII IIIIIIII IIIIIIII ++ * 3 2 1 0 ++ * IIIIIIII IIIIIIII IIIIIIII IIIIIIII ++ * Alignment: none ++ */ ++ if(NULL == (dt = H5T__alloc())) ++ HGOTO_ERROR(H5E_DATATYPE, H5E_NOSPACE, FAIL, "datatype allocation failed") ++ dt->shared->state = H5T_STATE_IMMUTABLE; ++ dt->shared->type = H5T_INTEGER; ++ dt->shared->size = 8; ++ dt->shared->u.atomic.order = H5T_ORDER_LE; ++ dt->shared->u.atomic.offset = 0; ++ dt->shared->u.atomic.prec = 64; ++ dt->shared->u.atomic.lsb_pad = H5T_PAD_ZERO; ++ dt->shared->u.atomic.msb_pad = H5T_PAD_ZERO; ++ dt->shared->u.atomic.u.i.sign = H5T_SGN_2; ++ if((H5T_NATIVE_INT64_g = H5I_register(H5I_DATATYPE, dt, FALSE)) < 0) ++ HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "can't register ID for built-in datatype") ++ H5T_NATIVE_INT64_ALIGN_g = 1; ++ ++ /* ++ * 7 6 5 4 ++ * UUUUUUUU UUUUUUUU UUUUUUUU UUUUUUUU ++ * 3 2 1 0 ++ * UUUUUUUU UUUUUUUU UUUUUUUU UUUUUUUU ++ * Alignment: none ++ */ ++ if(NULL == (dt = H5T__alloc())) ++ HGOTO_ERROR(H5E_DATATYPE, H5E_NOSPACE, FAIL, "datatype allocation failed") ++ dt->shared->state = H5T_STATE_IMMUTABLE; ++ dt->shared->type = H5T_INTEGER; ++ dt->shared->size = 8; ++ dt->shared->u.atomic.order = H5T_ORDER_LE; ++ dt->shared->u.atomic.offset = 0; ++ dt->shared->u.atomic.prec = 64; ++ dt->shared->u.atomic.lsb_pad = H5T_PAD_ZERO; ++ dt->shared->u.atomic.msb_pad = H5T_PAD_ZERO; ++ dt->shared->u.atomic.u.i.sign = H5T_SGN_NONE; ++ if((H5T_NATIVE_UINT64_g = H5I_register(H5I_DATATYPE, dt, FALSE)) < 0) ++ HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "can't register ID for built-in datatype") ++ H5T_NATIVE_UINT64_ALIGN_g = 1; ++ ++ /* ++ * 7 6 5 4 ++ * IIIIIIII IIIIIIII IIIIIIII IIIIIIII ++ * 3 2 1 0 ++ * IIIIIIII IIIIIIII IIIIIIII IIIIIIII ++ * Alignment: none ++ */ ++ if(NULL == (dt = H5T__alloc())) ++ HGOTO_ERROR(H5E_DATATYPE, H5E_NOSPACE, FAIL, "datatype allocation failed") ++ dt->shared->state = H5T_STATE_IMMUTABLE; ++ dt->shared->type = H5T_INTEGER; ++ dt->shared->size = 8; ++ dt->shared->u.atomic.order = H5T_ORDER_LE; ++ dt->shared->u.atomic.offset = 0; ++ dt->shared->u.atomic.prec = 64; ++ dt->shared->u.atomic.lsb_pad = H5T_PAD_ZERO; ++ dt->shared->u.atomic.msb_pad = H5T_PAD_ZERO; ++ dt->shared->u.atomic.u.i.sign = H5T_SGN_2; ++ if((H5T_NATIVE_INT_LEAST64_g = H5I_register(H5I_DATATYPE, dt, FALSE)) < 0) ++ HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "can't register ID for built-in datatype") ++ H5T_NATIVE_INT_LEAST64_ALIGN_g = 1; ++ ++ /* ++ * 7 6 5 4 ++ * UUUUUUUU UUUUUUUU UUUUUUUU UUUUUUUU ++ * 3 2 1 0 ++ * UUUUUUUU UUUUUUUU UUUUUUUU UUUUUUUU ++ * Alignment: none ++ */ ++ if(NULL == (dt = H5T__alloc())) ++ HGOTO_ERROR(H5E_DATATYPE, H5E_NOSPACE, FAIL, "datatype allocation failed") ++ dt->shared->state = H5T_STATE_IMMUTABLE; ++ dt->shared->type = H5T_INTEGER; ++ dt->shared->size = 8; ++ dt->shared->u.atomic.order = H5T_ORDER_LE; ++ dt->shared->u.atomic.offset = 0; ++ dt->shared->u.atomic.prec = 64; ++ dt->shared->u.atomic.lsb_pad = H5T_PAD_ZERO; ++ dt->shared->u.atomic.msb_pad = H5T_PAD_ZERO; ++ dt->shared->u.atomic.u.i.sign = H5T_SGN_NONE; ++ if((H5T_NATIVE_UINT_LEAST64_g = H5I_register(H5I_DATATYPE, dt, FALSE)) < 0) ++ HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "can't register ID for built-in datatype") ++ H5T_NATIVE_UINT_LEAST64_ALIGN_g = 1; ++ ++ /* ++ * 7 6 5 4 ++ * IIIIIIII IIIIIIII IIIIIIII IIIIIIII ++ * 3 2 1 0 ++ * IIIIIIII IIIIIIII IIIIIIII IIIIIIII ++ * Alignment: none ++ */ ++ if(NULL == (dt = H5T__alloc())) ++ HGOTO_ERROR(H5E_DATATYPE, H5E_NOSPACE, FAIL, "datatype allocation failed") ++ dt->shared->state = H5T_STATE_IMMUTABLE; ++ dt->shared->type = H5T_INTEGER; ++ dt->shared->size = 8; ++ dt->shared->u.atomic.order = H5T_ORDER_LE; ++ dt->shared->u.atomic.offset = 0; ++ dt->shared->u.atomic.prec = 64; ++ dt->shared->u.atomic.lsb_pad = H5T_PAD_ZERO; ++ dt->shared->u.atomic.msb_pad = H5T_PAD_ZERO; ++ dt->shared->u.atomic.u.i.sign = H5T_SGN_2; ++ if((H5T_NATIVE_INT_FAST64_g = H5I_register(H5I_DATATYPE, dt, FALSE)) < 0) ++ HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "can't register ID for built-in datatype") ++ H5T_NATIVE_INT_FAST64_ALIGN_g = 1; ++ ++ /* ++ * 7 6 5 4 ++ * UUUUUUUU UUUUUUUU UUUUUUUU UUUUUUUU ++ * 3 2 1 0 ++ * UUUUUUUU UUUUUUUU UUUUUUUU UUUUUUUU ++ * Alignment: none ++ */ ++ if(NULL == (dt = H5T__alloc())) ++ HGOTO_ERROR(H5E_DATATYPE, H5E_NOSPACE, FAIL, "datatype allocation failed") ++ dt->shared->state = H5T_STATE_IMMUTABLE; ++ dt->shared->type = H5T_INTEGER; ++ dt->shared->size = 8; ++ dt->shared->u.atomic.order = H5T_ORDER_LE; ++ dt->shared->u.atomic.offset = 0; ++ dt->shared->u.atomic.prec = 64; ++ dt->shared->u.atomic.lsb_pad = H5T_PAD_ZERO; ++ dt->shared->u.atomic.msb_pad = H5T_PAD_ZERO; ++ dt->shared->u.atomic.u.i.sign = H5T_SGN_NONE; ++ if((H5T_NATIVE_UINT_FAST64_g = H5I_register(H5I_DATATYPE, dt, FALSE)) < 0) ++ HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "can't register ID for built-in datatype") ++ H5T_NATIVE_UINT_FAST64_ALIGN_g = 1; ++ ++ /* ++ * 7 6 5 4 ++ * IIIIIIII IIIIIIII IIIIIIII IIIIIIII ++ * 3 2 1 0 ++ * IIIIIIII IIIIIIII IIIIIIII IIIIIIII ++ * Alignment: none ++ */ ++ if(NULL == (dt = H5T__alloc())) ++ HGOTO_ERROR(H5E_DATATYPE, H5E_NOSPACE, FAIL, "datatype allocation failed") ++ dt->shared->state = H5T_STATE_IMMUTABLE; ++ dt->shared->type = H5T_INTEGER; ++ dt->shared->size = 8; ++ dt->shared->u.atomic.order = H5T_ORDER_LE; ++ dt->shared->u.atomic.offset = 0; ++ dt->shared->u.atomic.prec = 64; ++ dt->shared->u.atomic.lsb_pad = H5T_PAD_ZERO; ++ dt->shared->u.atomic.msb_pad = H5T_PAD_ZERO; ++ dt->shared->u.atomic.u.i.sign = H5T_SGN_2; ++ if((H5T_NATIVE_LLONG_g = H5I_register(H5I_DATATYPE, dt, FALSE)) < 0) ++ HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "can't register ID for built-in datatype") ++ H5T_NATIVE_LLONG_ALIGN_g = 1; ++ H5T_NATIVE_LLONG_COMP_ALIGN_g = 8; ++ ++ /* ++ * 7 6 5 4 ++ * UUUUUUUU UUUUUUUU UUUUUUUU UUUUUUUU ++ * 3 2 1 0 ++ * UUUUUUUU UUUUUUUU UUUUUUUU UUUUUUUU ++ * Alignment: none ++ */ ++ if(NULL == (dt = H5T__alloc())) ++ HGOTO_ERROR(H5E_DATATYPE, H5E_NOSPACE, FAIL, "datatype allocation failed") ++ dt->shared->state = H5T_STATE_IMMUTABLE; ++ dt->shared->type = H5T_INTEGER; ++ dt->shared->size = 8; ++ dt->shared->u.atomic.order = H5T_ORDER_LE; ++ dt->shared->u.atomic.offset = 0; ++ dt->shared->u.atomic.prec = 64; ++ dt->shared->u.atomic.lsb_pad = H5T_PAD_ZERO; ++ dt->shared->u.atomic.msb_pad = H5T_PAD_ZERO; ++ dt->shared->u.atomic.u.i.sign = H5T_SGN_NONE; ++ if((H5T_NATIVE_ULLONG_g = H5I_register(H5I_DATATYPE, dt, FALSE)) < 0) ++ HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "can't register ID for built-in datatype") ++ H5T_NATIVE_ULLONG_ALIGN_g = 1; ++ ++ /* ++ * 3 2 1 0 ++ * SEEEEEEE EMMMMMMM MMMMMMMM MMMMMMMM ++ * Implicit bit? yes ++ * Alignment: none ++ */ ++ if(NULL == (dt = H5T__alloc())) ++ HGOTO_ERROR(H5E_DATATYPE, H5E_NOSPACE, FAIL, "datatype allocation failed") ++ dt->shared->state = H5T_STATE_IMMUTABLE; ++ dt->shared->type = H5T_FLOAT; ++ dt->shared->size = 4; ++ dt->shared->u.atomic.order = H5T_ORDER_LE; ++ dt->shared->u.atomic.offset = 0; ++ dt->shared->u.atomic.prec = 32; ++ dt->shared->u.atomic.lsb_pad = H5T_PAD_ZERO; ++ dt->shared->u.atomic.msb_pad = H5T_PAD_ZERO; ++ dt->shared->u.atomic.u.f.sign = 31; ++ dt->shared->u.atomic.u.f.epos = 23; ++ dt->shared->u.atomic.u.f.esize = 8; ++ dt->shared->u.atomic.u.f.ebias = 0x0000007f; ++ dt->shared->u.atomic.u.f.mpos = 0; ++ dt->shared->u.atomic.u.f.msize = 23; ++ dt->shared->u.atomic.u.f.norm = H5T_NORM_IMPLIED; ++ dt->shared->u.atomic.u.f.pad = H5T_PAD_ZERO; ++ if((H5T_NATIVE_FLOAT_g = H5I_register(H5I_DATATYPE, dt, FALSE)) < 0) ++ HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "can't register ID for built-in datatype") ++ H5T_NATIVE_FLOAT_ALIGN_g = 1; ++ H5T_NATIVE_FLOAT_COMP_ALIGN_g = 4; ++ ++ /* ++ * 7 6 5 4 ++ * SEEEEEEE EEEEMMMM MMMMMMMM MMMMMMMM ++ * 3 2 1 0 ++ * MMMMMMMM MMMMMMMM MMMMMMMM MMMMMMMM ++ * Implicit bit? yes ++ * Alignment: none ++ */ ++ if(NULL == (dt = H5T__alloc())) ++ HGOTO_ERROR(H5E_DATATYPE, H5E_NOSPACE, FAIL, "datatype allocation failed") ++ dt->shared->state = H5T_STATE_IMMUTABLE; ++ dt->shared->type = H5T_FLOAT; ++ dt->shared->size = 8; ++ dt->shared->u.atomic.order = H5T_ORDER_LE; ++ dt->shared->u.atomic.offset = 0; ++ dt->shared->u.atomic.prec = 64; ++ dt->shared->u.atomic.lsb_pad = H5T_PAD_ZERO; ++ dt->shared->u.atomic.msb_pad = H5T_PAD_ZERO; ++ dt->shared->u.atomic.u.f.sign = 63; ++ dt->shared->u.atomic.u.f.epos = 52; ++ dt->shared->u.atomic.u.f.esize = 11; ++ dt->shared->u.atomic.u.f.ebias = 0x000003ff; ++ dt->shared->u.atomic.u.f.mpos = 0; ++ dt->shared->u.atomic.u.f.msize = 52; ++ dt->shared->u.atomic.u.f.norm = H5T_NORM_IMPLIED; ++ dt->shared->u.atomic.u.f.pad = H5T_PAD_ZERO; ++ if((H5T_NATIVE_DOUBLE_g = H5I_register(H5I_DATATYPE, dt, FALSE)) < 0) ++ HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "can't register ID for built-in datatype") ++ H5T_NATIVE_DOUBLE_ALIGN_g = 1; ++ H5T_NATIVE_DOUBLE_COMP_ALIGN_g = 8; ++ ++ /* ++ * 7 6 5 4 ++ * SEEEEEEE EEEEMMMM MMMMMMMM MMMMMMMM ++ * 3 2 1 0 ++ * MMMMMMMM MMMMMMMM MMMMMMMM MMMMMMMM ++ * Implicit bit? yes ++ * Alignment: none ++ */ ++ if(NULL == (dt = H5T__alloc())) ++ HGOTO_ERROR(H5E_DATATYPE, H5E_NOSPACE, FAIL, "datatype allocation failed") ++ dt->shared->state = H5T_STATE_IMMUTABLE; ++ dt->shared->type = H5T_FLOAT; ++ dt->shared->size = 8; ++ dt->shared->u.atomic.order = H5T_ORDER_LE; ++ dt->shared->u.atomic.offset = 0; ++ dt->shared->u.atomic.prec = 64; ++ dt->shared->u.atomic.lsb_pad = H5T_PAD_ZERO; ++ dt->shared->u.atomic.msb_pad = H5T_PAD_ZERO; ++ dt->shared->u.atomic.u.f.sign = 63; ++ dt->shared->u.atomic.u.f.epos = 52; ++ dt->shared->u.atomic.u.f.esize = 11; ++ dt->shared->u.atomic.u.f.ebias = 0x000003ff; ++ dt->shared->u.atomic.u.f.mpos = 0; ++ dt->shared->u.atomic.u.f.msize = 52; ++ dt->shared->u.atomic.u.f.norm = H5T_NORM_IMPLIED; ++ dt->shared->u.atomic.u.f.pad = H5T_PAD_ZERO; ++ if((H5T_NATIVE_LDOUBLE_g = H5I_register(H5I_DATATYPE, dt, FALSE)) < 0) ++ HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "can't register ID for built-in datatype") ++ H5T_NATIVE_LDOUBLE_ALIGN_g = 1; ++ H5T_NATIVE_LDOUBLE_COMP_ALIGN_g = 8; ++ ++ /* Set the native order for this machine */ ++ H5T_native_order_g = H5T_ORDER_LE; ++ ++ /* Structure alignment for pointers, hvl_t, hobj_ref_t, hdset_reg_ref_t */ ++ H5T_POINTER_COMP_ALIGN_g = 4; ++ H5T_HVL_COMP_ALIGN_g = 4; ++ H5T_HOBJREF_COMP_ALIGN_g = 8; ++ H5T_HDSETREGREF_COMP_ALIGN_g = 1; ++ ++done: ++ if(ret_value < 0) { ++ if(dt != NULL) { ++ dt->shared = H5FL_FREE(H5T_shared_t, dt->shared); ++ dt = H5FL_FREE(H5T_t, dt); ++ } /* end if */ ++ } /* end if */ ++ ++ FUNC_LEAVE_NOAPI(ret_value); ++} /* end H5TN_init_interface() */ ++ ++/****************************************/ ++/* ALIGNMENT and signal-handling status */ ++/****************************************/ ++/* Signal() support: yes */ ++/* setjmp() support: yes */ ++/* longjmp() support: yes */ ++/* sigsetjmp() support: no */ ++/* siglongjmp() support: yes */ ++/* sigprocmask() support: yes */ ++ ++/******************************/ ++/* signal handlers statistics */ ++/******************************/ ++/* signal_handlers tested: 15 times */ ++/* sigbus_handler called: 5 times */ ++/* sigsegv_handler called: 5 times */ ++/* sigill_handler called: 5 times */ +diff --git a/H5lib_settings.c b/H5lib_settings.c +new file mode 100644 +index 0000000..0af36e0 +--- /dev/null ++++ b/H5lib_settings.c +@@ -0,0 +1,101 @@ ++/* Generated automatically by H5make_libsettings -- do not edit */ ++ ++ ++ ++/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ++ * Copyright by The HDF Group. * ++ * Copyright by the Board of Trustees of the University of Illinois. * ++ * All rights reserved. * ++ * * ++ * This file is part of HDF5. The full HDF5 copyright notice, including * ++ * terms governing use, modification, and redistribution, is contained in * ++ * the files COPYING and Copyright.html. COPYING can be found at the root * ++ * of the source code distribution tree; Copyright.html can be found at the * ++ * root level of an installed copy of the electronic HDF5 document set and * ++ * is linked from the top-level documents page. It can also be found at * ++ * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * ++ * access to either file, you may request a copy from help@hdfgroup.org. * ++ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ++ * ++ * Created: Nov 30, 2015 ++ * root ++ * ++ * Purpose: This machine-generated source code contains ++ * information about the library build configuration ++ * ++ * Modifications: ++ * ++ * DO NOT MAKE MODIFICATIONS TO THIS FILE! ++ * It was generated by code in `H5make_libsettings.c'. ++ * ++ *------------------------------------------------------------------------- ++ */ ++ ++char H5libhdf5_settings[]= ++ " SUMMARY OF THE HDF5 CONFIGURATION\n" ++ " =================================\n" ++ "\n" ++ "General Information:\n" ++ "-------------------\n" ++ " HDF5 Version: 1.8.16\n" ++ " Configured on: Mon Nov 30 02:44:24 UTC 2015\n" ++ " Configured by: norxander@debian\n" ++ " Configure mode: production\n" ++ " Host system: arm-poky-linux-gnueabi\n" ++ " Uname information: Linux debian 3.16.0-4-amd64 #1 SMP Debian 3.16.7-ckt11-1+deb8u6 (2015-11-09) x86_64 GNU/Linux\n" ++ " Byte sex: little-endian\n" ++ " Libraries: static, shared\n" ++ " Installation point: /media/dataLinux/Work/Git/build/tmp/work/cortexa9hf-vfp-neon-poky-linux-gnueabi/hdf5/1.8.16-r0/image/usr\n" ++ "\n" ++ "Compiling Options:\n" ++ "------------------\n" ++ " Compilation Mode: production\n" ++ " C Compiler: /media/dataLinux/Work/Git/build/tmp/sysroots/x86_64-linux/usr/bin/arm-poky-linux-gnueabi/arm-poky-linux-gnueabi-gcc -march=armv7-a -mfloat-abi=hard -mfpu=neon -mtune=cortex-a9 --sysroot=/media/dataLinux/Work/Git/build/tmp/sysroots/cyclone5\n" ++ " CFLAGS: -O2 -pipe -g -feliminate-unused-debug-types\n" ++ " H5_CFLAGS: \n" ++ " AM_CFLAGS: \n" ++ " CPPFLAGS: \n" ++ " H5_CPPFLAGS: -D_GNU_SOURCE -D_POSIX_C_SOURCE=200112L -DNDEBUG -UH5_DEBUG_API\n" ++ " AM_CPPFLAGS: -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -I/media/dataLinux/Work/Git/build/tmp/sysroots/cyclone5/usr/include\n" ++ " Shared C Library: yes\n" ++ " Static C Library: yes\n" ++ " Statically Linked Executables: no\n" ++ " LDFLAGS: -Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed\n" ++ " H5_LDFLAGS: \n" ++ " AM_LDFLAGS: -L/media/dataLinux/Work/Git/build/tmp/sysroots/cyclone5/usr/lib\n" ++ " Extra libraries: -lz -ldl -lm \n" ++ " Archiver: arm-poky-linux-gnueabi-ar\n" ++ " Ranlib: arm-poky-linux-gnueabi-ranlib\n" ++ " Debugged Packages: \n" ++ " API Tracing: no\n" ++ "\n" ++ "Languages:\n" ++ "----------\n" ++ " Fortran: no\n" ++ "\n" ++ " C++: yes\n" ++ " C++ Compiler: /media/dataLinux/Work/Git/build/tmp/sysroots/x86_64-linux/usr/bin/arm-poky-linux-gnueabi/arm-poky-linux-gnueabi-g++ -march=armv7-a -mfloat-abi=hard -mfpu=neon -mtune=cortex-a9 --sysroot=/media/dataLinux/Work/Git/build/tmp/sysroots/cyclone5\n" ++ " C++ Flags: -O2 -pipe -g -feliminate-unused-debug-types -fvisibility-inlines-hidden\n" ++ " H5 C++ Flags: \n" ++ " AM C++ Flags: \n" ++ " Shared C++ Library: yes\n" ++ " Static C++ Library: yes\n" ++ "\n" ++ "Features:\n" ++ "---------\n" ++ " Parallel HDF5: no\n" ++ " High Level library: yes\n" ++ " Threadsafety: no\n" ++ " Default API Mapping: v18\n" ++ " With Deprecated Public Symbols: yes\n" ++ " I/O filters (external): deflate(zlib)\n" ++ " MPE: no\n" ++ " Direct VFD: no\n" ++ " dmalloc: no\n" ++ "Clear file buffers before write: yes\n" ++ " Using memory checker: no\n" ++ " Function Stack Tracing: no\n" ++ " Strict File Format Checks: no\n" ++ " Optimization Instrumentation: no\n" ++; ++ diff --git a/meta-refkit-extra/recipes-convnet/hdf5/files/copy_generated.patch b/meta-refkit-extra/recipes-convnet/hdf5/files/copy_generated.patch new file mode 100644 index 0000000000..ce6999c936 --- /dev/null +++ b/meta-refkit-extra/recipes-convnet/hdf5/files/copy_generated.patch @@ -0,0 +1,15 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index fa3c971..f1ec7e2 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -797,4 +797,10 @@ endif (EXISTS "${HDF5_SOURCE_DIR}/c++" AND IS_DIRECTORY "${HDF5_SOURCE_DIR}/c++" + #----------------------------------------------------------------------------- + configure_file (${HDF_RESOURCES_DIR}/H5pubconf.h.in ${HDF5_BINARY_DIR}/H5pubconf.h @ONLY) + ++#----------------------------------------------------------------------------- ++# Copy the pre-generated files in place ++#----------------------------------------------------------------------------- ++configure_file(H5Tinit.c H5Tinit.c COPYONLY) ++configure_file(H5lib_settings.c H5lib_settings.c COPYONLY) ++ + include (CMakeInstallation.cmake) diff --git a/meta-refkit-extra/recipes-convnet/hdf5/files/fix-configure.patch b/meta-refkit-extra/recipes-convnet/hdf5/files/fix-configure.patch new file mode 100644 index 0000000000..e72b43c6ce --- /dev/null +++ b/meta-refkit-extra/recipes-convnet/hdf5/files/fix-configure.patch @@ -0,0 +1,65 @@ +--- configure 2015-10-17 14:26:17.833073633 -0600 ++++ configure 2015-10-17 14:25:35.569071000 -0600 +@@ -425,7 +425,7 @@ + $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + $as_echo "$as_me: error: $2" >&2 +- as_fn_exit $as_status ++ #as_fn_exit $as_status + } # as_fn_error + + if expr a : '\(a\)' >/dev/null 2>&1 && +@@ -4358,7 +4358,7 @@ + $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 + set X $ac_compile + ac_compiler=$2 +-for ac_option in --version -v -V -qversion; do ++for ac_option in --version -v; do + { { ac_try="$ac_compiler $ac_option >&5" + case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +@@ -5294,7 +5294,7 @@ + $as_echo "$as_me:${as_lineno-$LINENO}: checking for Fortran compiler version" >&5 + set X $ac_compile + ac_compiler=$2 +-for ac_option in --version -v -V -qversion; do ++for ac_option in --version -v; do + { { ac_try="$ac_compiler $ac_option >&5" + case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +@@ -5567,7 +5567,7 @@ + $as_echo "$as_me:${as_lineno-$LINENO}: checking for Fortran compiler version" >&5 + set X $ac_compile + ac_compiler=$2 +-for ac_option in --version -v -V -qversion; do ++for ac_option in --version -v; do + { { ac_try="$ac_compiler $ac_option >&5" + case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +@@ -6790,7 +6790,7 @@ + $as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5 + set X $ac_compile + ac_compiler=$2 +-for ac_option in --version -v -V -qversion; do ++for ac_option in --version -v; do + { { ac_try="$ac_compiler $ac_option >&5" + case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +@@ -28589,7 +28589,7 @@ + $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + $as_echo "$as_me: error: $2" >&2 +- as_fn_exit $as_status ++ #as_fn_exit $as_status + } # as_fn_error + + +@@ -30725,7 +30725,7 @@ + $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + $as_echo "$as_me: error: $2" >&2 +- as_fn_exit $as_status ++ #as_fn_exit $as_status + } # as_fn_error + + diff --git a/meta-refkit-extra/recipes-convnet/hdf5/files/fix-src-make.patch b/meta-refkit-extra/recipes-convnet/hdf5/files/fix-src-make.patch new file mode 100644 index 0000000000..f89cfab974 --- /dev/null +++ b/meta-refkit-extra/recipes-convnet/hdf5/files/fix-src-make.patch @@ -0,0 +1,36 @@ +--- src/Makefile.in 2015-11-10 14:01:06.000000000 +0000 ++++ src/Makefile.in 2015-11-30 03:07:13.550699106 +0000 +@@ -1674,11 +1674,11 @@ + # Things should have been all set during H5detect making. + # Remove the generated .c file if errors occur unless HDF5_Make_Ignore + # is set to ignore the error. +-H5Tinit.c: H5detect$(EXEEXT) +- LD_LIBRARY_PATH="$$LD_LIBRARY_PATH`echo $(LDFLAGS) | \ +- sed -e 's/-L/:/g' -e 's/ //g'`" \ +- $(RUNSERIAL) ./H5detect$(EXEEXT) > $@ || \ +- (test $$HDF5_Make_Ignore && echo "*** Error ignored") || \ ++H5Tinit.c: $(top_srcdir)/../H5Tinit.c ++ LD_LIBRARY_PATH="$$LD_LIBRARY_PATH`echo $(LDFLAGS) | \ ++ sed -e 's/-L/:/g' -e 's/ //g'`" \ ++ $(RUNSERIAL) cat $< > $@ || \ ++ (test $$HDF5_Make_Ignore && echo "*** Error ignored") || \ + ($(RM) $@ ; exit 1) + + # Build configuration header file generation +@@ -1686,11 +1686,11 @@ + # Things should have been all set during H5make_libsettings making. + # Remove the generated .c file if errors occur unless HDF5_Make_Ignore + # is set to ignore the error. +-H5lib_settings.c: H5make_libsettings$(EXEEXT) libhdf5.settings +- LD_LIBRARY_PATH="$$LD_LIBRARY_PATH`echo $(LDFLAGS) | \ +- sed -e 's/-L/:/g' -e 's/ //g'`" \ +- $(RUNSERIAL) ./H5make_libsettings$(EXEEXT) > $@ || \ +- (test $$HDF5_Make_Ignore && echo "*** Error ignored") || \ ++H5lib_settings.c: $(top_srcdir)/../H5lib_settings.c libhdf5.settings ++ LD_LIBRARY_PATH="$$LD_LIBRARY_PATH`echo $(LDFLAGS) | \ ++ sed -e 's/-L/:/g' -e 's/ //g'`" \ ++ $(RUNSERIAL) cat $< > $@ || \ ++ (test $$HDF5_Make_Ignore && echo "*** Error ignored") || \ + ($(RM) $@ ; exit 1) + + # Error header generation diff --git a/meta-refkit-extra/recipes-convnet/hdf5/files/fix-test-make.patch b/meta-refkit-extra/recipes-convnet/hdf5/files/fix-test-make.patch new file mode 100644 index 0000000000..1c473e2a4e --- /dev/null +++ b/meta-refkit-extra/recipes-convnet/hdf5/files/fix-test-make.patch @@ -0,0 +1,12 @@ +--- test/Makefile.in 2015-11-10 14:01:06.000000000 +0000 ++++ test/Makefile.in 2015-11-30 03:12:14.150696333 +0000 +@@ -1058,8 +1058,7 @@ + unregister_filter_1.h5 unregister_filter_2.h5 + + # Test script for error_test and err_compat +-TEST_SCRIPT = testerror.sh testlibinfo.sh testcheck_version.sh \ +- testlinks_env.sh $(am__append_1) ++TEST_SCRIPT = testerror.sh testlibinfo.sh testcheck_version.sh testlinks_env.sh $(am__append_1) + SCRIPT_DEPEND = error_test$(EXEEXT) err_compat$(EXEEXT) \ + links_env$(EXEEXT) $(am__append_2) + check_SCRIPTS = $(TEST_SCRIPT) diff --git a/meta-refkit-extra/recipes-convnet/hdf5/files/generation.patch b/meta-refkit-extra/recipes-convnet/hdf5/files/generation.patch new file mode 100644 index 0000000000..9767acc531 --- /dev/null +++ b/meta-refkit-extra/recipes-convnet/hdf5/files/generation.patch @@ -0,0 +1,44 @@ +diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt +index 9fcb28d..b58bf18 100644 +--- a/src/CMakeLists.txt ++++ b/src/CMakeLists.txt +@@ -606,39 +606,6 @@ set (H5_PRIVATE_HEADERS + ${HDF5_SRC_DIR}/H5win32defs.h + ) + +-#----------------------------------------------------------------------------- +-# Setup the H5Detect utility which generates H5Tinit with platform +-# specific type checks inside +-#----------------------------------------------------------------------------- +-add_executable (H5detect ${HDF5_SRC_DIR}/H5detect.c) +-TARGET_C_PROPERTIES (H5detect STATIC " " " ") +-if (MSVC OR MINGW) +- target_link_libraries (H5detect "ws2_32.lib") +-endif (MSVC OR MINGW) +- +-set (CMD $) +-add_custom_command ( +- OUTPUT ${HDF5_BINARY_DIR}/H5Tinit.c +- COMMAND ${CMD} +- ARGS > ${HDF5_BINARY_DIR}/H5Tinit.c +- DEPENDS H5detect +-) +- +-add_executable (H5make_libsettings ${HDF5_SRC_DIR}/H5make_libsettings.c) +-TARGET_C_PROPERTIES (H5make_libsettings STATIC " " " ") +-if (MSVC OR MINGW) +- target_link_libraries (H5make_libsettings "ws2_32.lib") +-endif (MSVC OR MINGW) +- +-set (CMD $) +-add_custom_command ( +- OUTPUT ${HDF5_BINARY_DIR}/H5lib_settings.c +- COMMAND ${CMD} +- ARGS > ${HDF5_BINARY_DIR}/H5lib_settings.c +- DEPENDS H5make_libsettings +- WORKING_DIRECTORY ${HDF5_BINARY_DIR} +-) +- + if (GENERATE_ERROR_HEADERS) + find_package (Perl) + if (PERL_FOUND) diff --git a/meta-refkit-extra/recipes-convnet/hdf5/hdf5_1.8.18.bb b/meta-refkit-extra/recipes-convnet/hdf5/hdf5_1.8.18.bb new file mode 100644 index 0000000000..14d53dd210 --- /dev/null +++ b/meta-refkit-extra/recipes-convnet/hdf5/hdf5_1.8.18.bb @@ -0,0 +1,69 @@ +DESCRIPTION = "Unique technology suite that makes possible the management of extremely large and complex data collections" +AUTHOR = "Alexander Leiva " +SUMMARY = "HDF5 is a data model, library, and file format for storing and managing data" +HOMEPAGE = "http://caffe.berkeleyvision.org/" +LICENSE = "BSD" +PRIORITY= "optional" +SECTION = "libs" +PR = "r0" + +RDEPENDS_${PN} = "zlib" + +LIC_FILES_CHKSUM = "file://COPYING;md5=57e5351b17591e659eedae107265c606" + +inherit cmake + +SRC_URI = " \ + https://support.hdfgroup.org/ftp/HDF5/current18/src/${PN}-${PV}.tar.bz2 \ + file://configuration.patch \ + file://generation.patch \ + file://copy_generated.patch \ +" + +SRC_URI[md5sum] = "29117bf488887f89888f9304c8ebea0b" +SRC_URI[sha256sum] = "01c6deadf4211f86922400da82c7a8b5b50dc8fc1ce0b5912de3066af316a48c" + +PACKAGES += "${PN}-extra" +FILES_${PN} += "/usr/lib/libhdf5.settings" +FILES_${PN}-extra = "/usr/share/hdf5_examples/" + +# EXTRA_OECONF = "--enable-production --enable-cxx --with-zlib=${STAGING_INCDIR},${STAGING_LIBDIR}" +EXTRA_OECMAKE = " \ + -DHAVE_DEFAULT_SOURCE_RUN=0 \ + -DHAVE_DEFAULT_SOURCE_RUN__TRYRUN_OUTPUT= \ + -DTEST_LFS_WORKS_RUN=0 \ + -DTEST_LFS_WORKS_RUN__TRYRUN_OUTPUT=0 \ + -DH5_PRINTF_LL_TEST_RUN=1 \ + -DH5_PRINTF_LL_TEST_RUN__TRYRUN_OUTPUT='8' \ + -DTEST_DIRECT_VFD_WORKS_RUN=0 \ + -DTEST_DIRECT_VFD_WORKS_RUN__TRYRUN_OUTPUT=0 \ + -DH5_LDOUBLE_TO_LONG_SPECIAL_RUN=0 \ + -DH5_LDOUBLE_TO_LONG_SPECIAL_RUN__TRYRUN_OUTPUT= \ + -DH5_LONG_TO_LDOUBLE_SPECIAL_RUN=0 \ + -DH5_LONG_TO_LDOUBLE_SPECIAL_RUN__TRYRUN_OUTPUT= \ + -DH5_LDOUBLE_TO_LLONG_ACCURATE_RUN=0 \ + -DH5_LDOUBLE_TO_LLONG_ACCURATE_RUN__TRYRUN_OUTPUT= \ + -DH5_LLONG_TO_LDOUBLE_CORRECT_RUN=0 \ + -DH5_LLONG_TO_LDOUBLE_CORRECT_RUN__TRYRUN_OUTPUT= \ + -DH5_NO_ALIGNMENT_RESTRICTIONS_RUN=0 \ + -DH5_NO_ALIGNMENT_RESTRICTIONS_RUN__TRYRUN_OUTPUT= \ + -DCMAKE_INSTALL_PREFIX='${D}/usr' \ +" + +do_install() { + oe_runmake install + rm -f ${D}/usr/lib/*la + rm -f ${D}/usr/share/cmake/* + rm -f ${D}/usr/share/COPYING + rm -f ${D}/usr/share/RELEASE.txt + rm -f ${D}/usr/share/USING_HDF5_CMake.txt + rmdir ${D}/usr/share/cmake + rmdir ${D}/usr/share + + ln -sr ${D}/usr/lib/libhdf5_cpp-shared.so ${D}/usr/lib/libhdf5_cpp.so + ln -sr ${D}/usr/lib/libhdf5_hl-shared.so ${D}/usr/lib/libhdf5_hl.so + ln -sr ${D}/usr/lib/libhdf5_hl_cpp-shared.so ${D}/usr/lib/libhdf5_hl_cpp.so + ln -sr ${D}/usr/lib/libhdf5-shared.so ${D}/usr/lib/libhdf5.so + ln -sr ${D}/usr/lib/libhdf5_tools-shared.so ${D}/usr/lib/libhdf5_tools.so +} + diff --git a/meta-refkit-extra/recipes-convnet/leveldb/leveldb_%.bbappend b/meta-refkit-extra/recipes-convnet/leveldb/leveldb_%.bbappend new file mode 100644 index 0000000000..08de50c49d --- /dev/null +++ b/meta-refkit-extra/recipes-convnet/leveldb/leveldb_%.bbappend @@ -0,0 +1 @@ +DEPENDS += "snappy" diff --git a/meta-refkit-extra/recipes-convnet/lmdb/files/0001-Patch-the-main-Makefile.patch b/meta-refkit-extra/recipes-convnet/lmdb/files/0001-Patch-the-main-Makefile.patch new file mode 100644 index 0000000000..80a58131af --- /dev/null +++ b/meta-refkit-extra/recipes-convnet/lmdb/files/0001-Patch-the-main-Makefile.patch @@ -0,0 +1,91 @@ +From: =?UTF-8?q?Andreas=20M=C3=BCller?= +Date: Tue, 1 Sep 2015 22:54:31 +0200 +Subject: [PATCH] Patch the main Makefile to allow for a build that complies to packaging guidelines. +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Taken from [1] + +[1] http://pkgs.fedoraproject.org/cgit/lmdb.git/plain/lmdb-make.patch + +Upstream-Status: Inappropriate [embedded specific] + + +diff --git a/Makefile b/Makefile +--- a/Makefile ++++ b/Makefile +@@ -24,25 +24,30 @@ OPT = -O2 -g + CFLAGS = $(THREADS) $(OPT) $(W) $(XCFLAGS) + LDLIBS = + SOLIBS = ++SOVERSION = 0.0.0 + prefix = /usr/local ++binprefix = $(prefix)/bin ++libprefix = $(prefix)/lib ++includeprefix = $(prefix)/include ++manprefix = $(prefix)/man + + ######################################################################## + + IHDRS = lmdb.h +-ILIBS = liblmdb.a liblmdb.so ++ILIBS = liblmdb.so liblmdb.so.$(SOVERSION) + IPROGS = mdb_stat mdb_copy mdb_dump mdb_load + IDOCS = mdb_stat.1 mdb_copy.1 mdb_dump.1 mdb_load.1 + PROGS = $(IPROGS) mtest mtest2 mtest3 mtest4 mtest5 + all: $(ILIBS) $(PROGS) + + install: $(ILIBS) $(IPROGS) $(IHDRS) +- for f in $(IPROGS); do cp $$f $(DESTDIR)$(prefix)/bin; done +- for f in $(ILIBS); do cp $$f $(DESTDIR)$(prefix)/lib; done +- for f in $(IHDRS); do cp $$f $(DESTDIR)$(prefix)/include; done +- for f in $(IDOCS); do cp $$f $(DESTDIR)$(prefix)/man/man1; done ++ for f in $(IPROGS); do cp $$f $(DESTDIR)$(binprefix); done ++ for f in $(ILIBS); do cp -d $$f $(DESTDIR)$(libprefix); done ++ for f in $(IHDRS); do cp $$f $(DESTDIR)$(includeprefix); done ++ for f in $(IDOCS); do cp $$f $(DESTDIR)$(manprefix)/man1; done + + clean: +- rm -rf $(PROGS) *.[ao] *.[ls]o *~ testdb ++ rm -rf $(PROGS) *.[ao] *.[ls]o* *~ testdb + + test: all + rm -rf testdb && mkdir testdb +@@ -51,20 +56,24 @@ test: all + liblmdb.a: mdb.o midl.o + ar rs $@ mdb.o midl.o + +-liblmdb.so: mdb.lo midl.lo ++liblmdb.so: liblmdb.so.$(SOVERSION) ++ rm -f $@ ++ ln -s $< $@ ++ ++liblmdb.so.$(SOVERSION): mdb.lo midl.lo + # $(CC) $(LDFLAGS) -pthread -shared -Wl,-Bsymbolic -o $@ mdb.o midl.o $(SOLIBS) +- $(CC) $(LDFLAGS) -pthread -shared -o $@ mdb.lo midl.lo $(SOLIBS) ++ $(CC) $(LDFLAGS) -pthread -shared -Wl,-soname,$@ -o $@ mdb.lo midl.lo $(SOLIBS) + +-mdb_stat: mdb_stat.o liblmdb.a +-mdb_copy: mdb_copy.o liblmdb.a +-mdb_dump: mdb_dump.o liblmdb.a +-mdb_load: mdb_load.o liblmdb.a +-mtest: mtest.o liblmdb.a +-mtest2: mtest2.o liblmdb.a +-mtest3: mtest3.o liblmdb.a +-mtest4: mtest4.o liblmdb.a +-mtest5: mtest5.o liblmdb.a +-mtest6: mtest6.o liblmdb.a ++mdb_stat: mdb_stat.o liblmdb.so ++mdb_copy: mdb_copy.o liblmdb.so ++mdb_dump: mdb_dump.o liblmdb.so ++mdb_load: mdb_load.o liblmdb.so ++mtest: mtest.o liblmdb.so ++mtest2: mtest2.o liblmdb.so ++mtest3: mtest3.o liblmdb.so ++mtest4: mtest4.o liblmdb.so ++mtest5: mtest5.o liblmdb.so ++mtest6: mtest6.o liblmdb.so + + mdb.o: mdb.c lmdb.h midl.h + $(CC) $(CFLAGS) $(CPPFLAGS) -c mdb.c diff --git a/meta-refkit-extra/recipes-convnet/lmdb/lmdb_0.9.16.bb b/meta-refkit-extra/recipes-convnet/lmdb/lmdb_0.9.16.bb new file mode 100644 index 0000000000..c18c4a4798 --- /dev/null +++ b/meta-refkit-extra/recipes-convnet/lmdb/lmdb_0.9.16.bb @@ -0,0 +1,28 @@ +SUMMARY = "Symas Lightning Memory-Mapped Database (LMDB)" +HOMEPAGE = "http://symas.com/mdb/" +LICENSE = "OLDAP-2.8" +LIC_FILES_CHKSUM = "file://LICENSE;md5=153d07ef052c4a37a8fac23bc6031972" + +SRC_URI = " \ + https://github.com/LMDB/lmdb/archive/LMDB_${PV}.tar.gz \ + file://0001-Patch-the-main-Makefile.patch \ +" +SRC_URI[md5sum] = "0de89730b8f3f5711c2b3a4ba517b648" +SRC_URI[sha256sum] = "49d7b40949f2ced9bc8b23ea6a89e75471a1c9126537a8b268c318a00b84322b" + +inherit autotools-brokensep + +S = "${WORKDIR}/lmdb-LMDB_${PV}/libraries/liblmdb" + +do_compile() { + oe_runmake "CC=${CC}" +} + +do_install() { + install -d ${D}${bindir} + install -d ${D}${libdir} + install -d ${D}${includedir} + install -d ${D}${mandir} + sed -i 's:\$(prefix)/man:${mandir}:' Makefile + oe_runmake DESTDIR=${D} prefix=${prefix} manprefix=${mandir} install +} diff --git a/meta-refkit-extra/recipes-convnet/openblas/openblas_0.2.19.bb b/meta-refkit-extra/recipes-convnet/openblas/openblas_0.2.19.bb new file mode 100644 index 0000000000..5eef42e540 --- /dev/null +++ b/meta-refkit-extra/recipes-convnet/openblas/openblas_0.2.19.bb @@ -0,0 +1,58 @@ +DESCRIPTION = "OpenBLAS is an optimized BLAS library based on GotoBLAS2 1.13 BSD version." +SUMMARY = "OpenBLAS : An optimized BLAS library" +AUTHOR = "Alexander Leiva " +HOMEPAGE = "http://www.openblas.net/" +PRIORITY= "optional" +SECTION = "libs" +LICENSE = "BSD" +PR = "r0" + +DEPENDS = "make" + +LIC_FILES_CHKSUM = "file://LICENSE;md5=5adf4792c949a00013ce25d476a2abc0" + +SRC_URI = "https://github.com/xianyi/OpenBLAS/archive/v${PV}.tar.gz" +SRC_URI[md5sum] = "28c998054fd377279741c6f0b9ea7941" +SRC_URI[sha256sum] = "9c40b5e4970f27c5f6911cb0a28aa26b6c83f17418b69f8e5a116bb983ca8557" + +S = "${WORKDIR}/OpenBLAS-${PV}" + +def map_arch(a, d): + import re + if re.match('i.86$', a): return 'ATOM' + elif re.match('x86_64$', a): return 'ATOM' + elif re.match('aarch32$', a): return 'CORTEXA9' + elif re.match('aarch64$', a): return 'ARMV8' + return a + +def map_bits(a, d): + import re + if re.match('i.86$', a): return 32 + elif re.match('x86_64$', a): return 64 + elif re.match('aarch32$', a): return 32 + elif re.match('aarch64$', a): return 64 + return 32 + +do_compile () { + oe_runmake HOSTCC="${BUILD_CC}" \ + CC="${TARGET_PREFIX}gcc ${TOOLCHAIN_OPTIONS}" \ + ONLY_CBLAS=1 BINARY='${@map_bits(d.getVar('TARGET_ARCH', True), d)}' \ + TARGET='${@map_arch(d.getVar('TARGET_ARCH', True), d)}' +} + +do_install() { + oe_runmake HOSTCC="${BUILD_CC}" \ + CC="${TARGET_PREFIX}gcc ${TOOLCHAIN_OPTIONS}" \ + ONLY_CBLAS=1 BINARY='${@map_bits(d.getVar('TARGET_ARCH', True), d)}' \ + TARGET='${@map_arch(d.getVar('TARGET_ARCH', True), d)}' \ + PREFIX=${D}/usr install +} + +do_install_append() { + rm -rf ${D}/usr/bin + rm -rf ${D}/usr/lib/cmake +} + +FILES_${PN} = "${libdir}/*" +FILES_${PN}-dev = "${includedir} ${libdir}/lib${PN}.so" + diff --git a/meta-refkit-extra/recipes-convnet/packagegroup/packagegroup-caffe.bb b/meta-refkit-extra/recipes-convnet/packagegroup/packagegroup-caffe.bb new file mode 100644 index 0000000000..c641dc76d2 --- /dev/null +++ b/meta-refkit-extra/recipes-convnet/packagegroup/packagegroup-caffe.bb @@ -0,0 +1,45 @@ +SUMMARY = "Minimal caffe requirements" +DESCRIPTION = "The minimal set of packages required to build the caffe library" +LICENSE = "MIT" +PR = "r0" + +inherit packagegroup + +RDEPENDS_${PN} = "\ + openssl \ + openssl-dev \ + libffi \ + libffi-dev \ + libxslt \ + libxslt-dev \ + libxml2 \ + libxml2-dev \ + glog \ + glog-dev \ + gflags \ + gflags-dev \ + leveldb \ + leveldb-dev \ + snappy \ + snappy-dev \ + lmdb \ + lmdb-dev \ + jpeg \ + jpeg-dev \ + hdf5 \ + hdf5-dev \ + boost \ + boost-dev \ + protobuf \ + protobuf-dev \ + python-pip \ + python-numpy \ + opencv \ + opencv-dev \ + opencv-apps \ + openblas \ + openblas-dev \ + gstreamer1.0 \ + gstreamer1.0-dev \ + " + diff --git a/meta-refkit-extra/recipes-convnet/snappy/snappy_1.1.4.bb b/meta-refkit-extra/recipes-convnet/snappy/snappy_1.1.4.bb new file mode 100644 index 0000000000..b8c6c9cfbd --- /dev/null +++ b/meta-refkit-extra/recipes-convnet/snappy/snappy_1.1.4.bb @@ -0,0 +1,19 @@ +SUMMARY = "Snappy is a compression/decompression library." +AUTHOR = "Alexander Leiva " +DESCRIPTION = "Snappy is a compression/decompression library. It does not aim for maximum compression, \ + or compatibility with any other compression library; instead, \ + it aims for very high speeds and reasonable compression." +HOMEPAGE="http://google.github.io/snappy/" +SECTION = "console/utils" +PRIORITY= "optional" +LICENSE = "BSD" +PR = "r0" + +LIC_FILES_CHKSUM = "file://COPYING;md5=f62f3080324a97b3159a7a7e61812d0c" + +SRC_URI = "https://github.com/google/snappy/releases/download/${PV}/${PN}-${PV}.tar.gz" +SRC_URI[md5sum] = "c328993b68afe3e5bd87c8ea9bdeb028" +SRC_URI[sha256sum] = "134bfe122fd25599bb807bb8130e7ba6d9bdb851e0b16efcb83ac4f5d0b70057" + +inherit autotools pkgconfig + From 155b9b607a7078c6f4a8cddffd8b89653189dd27 Mon Sep 17 00:00:00 2001 From: Ismo Puustinen Date: Wed, 8 Mar 2017 15:35:11 +0200 Subject: [PATCH 07/10] python3-pyrealsense: add new package. Pyrealsense contains Python bindings for librealsense. Signed-off-by: Ismo Puustinen --- ...p.py-change-to-use-Bitbake-variables.patch | 38 +++++++++++++++++++ ...onstants-change-rs.h-search-location.patch | 28 ++++++++++++++ .../python3-pyrealsense_1.4.bb | 24 ++++++++++++ 3 files changed, 90 insertions(+) create mode 100644 meta-refkit-extra/recipes-convnet/python-realsense/files/0001-setup.py-change-to-use-Bitbake-variables.patch create mode 100644 meta-refkit-extra/recipes-convnet/python-realsense/files/0002-constants-change-rs.h-search-location.patch create mode 100644 meta-refkit-extra/recipes-convnet/python-realsense/python3-pyrealsense_1.4.bb diff --git a/meta-refkit-extra/recipes-convnet/python-realsense/files/0001-setup.py-change-to-use-Bitbake-variables.patch b/meta-refkit-extra/recipes-convnet/python-realsense/files/0001-setup.py-change-to-use-Bitbake-variables.patch new file mode 100644 index 0000000000..16c053daee --- /dev/null +++ b/meta-refkit-extra/recipes-convnet/python-realsense/files/0001-setup.py-change-to-use-Bitbake-variables.patch @@ -0,0 +1,38 @@ +From 74d41ac1b871dbc04d14e311ba7fa30b0b9e3087 Mon Sep 17 00:00:00 2001 +From: Ismo Puustinen +Date: Wed, 8 Mar 2017 15:26:22 +0200 +Subject: [PATCH 1/2] setup.py: change to use Bitbake variables. + +Upstream-status: Inappropriate + +Signed-off-by: Ismo Puustinen +--- + setup.py | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/setup.py b/setup.py +index a8bddfd..df41d35 100644 +--- a/setup.py ++++ b/setup.py +@@ -1,6 +1,6 @@ + from setuptools import setup, Extension + from setuptools import find_packages +-from os import path ++from os import path, environ + import io + + import numpy as np +@@ -12,8 +12,8 @@ with io.open(path.join(here, 'README.rst'), encoding='utf-8') as f: + module = [Extension('pyrealsense.rsutilwrapper', + sources=['pyrealsense/rsutilwrapper.c'], + libraries=['realsense'], +- include_dirs=[np.get_include(), '/usr/local/include/librealsense'], +- library_dirs=['/usr/local/lib'], )] ++ include_dirs=[np.get_include(), environ.get('STAGING_INCDIR'), environ.get('STAGING_INCDIR')+"/librealsense"], ++ library_dirs=[environ.get('STAGING_LIBDIR')], )] + + setup(name='pyrealsense', + version='1.4', +-- +2.9.3 + diff --git a/meta-refkit-extra/recipes-convnet/python-realsense/files/0002-constants-change-rs.h-search-location.patch b/meta-refkit-extra/recipes-convnet/python-realsense/files/0002-constants-change-rs.h-search-location.patch new file mode 100644 index 0000000000..f9223cecd6 --- /dev/null +++ b/meta-refkit-extra/recipes-convnet/python-realsense/files/0002-constants-change-rs.h-search-location.patch @@ -0,0 +1,28 @@ +From bdc96422dc9c1a697264494e7f9e8efe4c48de92 Mon Sep 17 00:00:00 2001 +From: Ismo Puustinen +Date: Wed, 8 Mar 2017 16:32:04 +0200 +Subject: [PATCH 2/2] constants: change rs.h search location. + +Upstream-status: Inappropriate. + +Signed-off-by: Ismo Puustinen +--- + pyrealsense/constants.py | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/pyrealsense/constants.py b/pyrealsense/constants.py +index 9c97739..2b83bca 100644 +--- a/pyrealsense/constants.py ++++ b/pyrealsense/constants.py +@@ -2,7 +2,7 @@ import pycparser + import io + + # Platform dependent +-rs_h_filename = '/usr/local/include/librealsense/rs.h' ++rs_h_filename = '/usr/include/librealsense/rs.h' + + + # Dynamically extract API version +-- +2.9.3 + diff --git a/meta-refkit-extra/recipes-convnet/python-realsense/python3-pyrealsense_1.4.bb b/meta-refkit-extra/recipes-convnet/python-realsense/python3-pyrealsense_1.4.bb new file mode 100644 index 0000000000..cc30793491 --- /dev/null +++ b/meta-refkit-extra/recipes-convnet/python-realsense/python3-pyrealsense_1.4.bb @@ -0,0 +1,24 @@ +SUMMARY = "Python bindings for librealsense" +SECTION = "devel/python" +LICENSE = "Apache-2.0" + +LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=3b83ef96387f14655fc854ddc3c6bd57" + +inherit setuptools3 + +SRC_URI = " \ + https://github.com/toinsson/pyrealsense/archive/v${PV}.tar.gz \ + file://0001-setup.py-change-to-use-Bitbake-variables.patch \ + file://0002-constants-change-rs.h-search-location.patch \ +" +SRC_URI[md5sum] = "a92627a58da523564289187ee05cd937" +SRC_URI[sha256sum] = "f06797af5aa9ca682858a783d42a0e1bc917d5dea50fb340f590d11a21d1a521" + +S = "${WORKDIR}/pyrealsense-${PV}" + +DEPENDS = "python3 python3-numpy-native librealsense python3-setuptools-native" +RDEPENDS_${PN} = "python3-numpy python3-pycparser librealsense-dev" + +# the rs.h header file is parsed in runtime, thus the need for +# librealsense-dev +INSANE_SKIP_${PN} += "dev-deps" From 022c02ce7531f2901a045c80049d7d8ddad117e0 Mon Sep 17 00:00:00 2001 From: Ismo Puustinen Date: Wed, 26 Apr 2017 12:10:14 +0300 Subject: [PATCH 08/10] extras: add caffe etc. to supported recipes. Signed-off-by: Ismo Puustinen --- .../include/refkit-extra-supported-recipes.txt | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/meta-refkit-extra/conf/distro/include/refkit-extra-supported-recipes.txt b/meta-refkit-extra/conf/distro/include/refkit-extra-supported-recipes.txt index e69de29bb2..342cb07a9f 100644 --- a/meta-refkit-extra/conf/distro/include/refkit-extra-supported-recipes.txt +++ b/meta-refkit-extra/conf/distro/include/refkit-extra-supported-recipes.txt @@ -0,0 +1,12 @@ +caffe@refkit-extra +hdf5@refkit-extra +leveldb@openembedded-layer +lmdb@refkit-extra +openblas@refkit-extra +python3-imageio@refkit-extra +python3-pillow@refkit-extra +python3-protobuf@refkit-extra +python3-pycparser@meta-python +python3-pyrealsense@refkit-extra +python3-six@core +snappy@refkit-extra From f0507fc3ab5f7b9d70ad918ed50cb47466eb8141 Mon Sep 17 00:00:00 2001 From: Ismo Puustinen Date: Wed, 26 Apr 2017 13:09:05 +0300 Subject: [PATCH 09/10] extras: security flags for computer vision demos. Signed-off-by: Ismo Puustinen --- .../conf/distro/include/refkit_extra_security_flags.inc | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/meta-refkit-extra/conf/distro/include/refkit_extra_security_flags.inc b/meta-refkit-extra/conf/distro/include/refkit_extra_security_flags.inc index e69de29bb2..ce57f941f9 100644 --- a/meta-refkit-extra/conf/distro/include/refkit_extra_security_flags.inc +++ b/meta-refkit-extra/conf/distro/include/refkit_extra_security_flags.inc @@ -0,0 +1,4 @@ +SECURITY_CFLAGS_pn-python3-pillow = "${SECURITY_NO_PIE_CFLAGS} ${SECURITY_PIC_CFLAGS}" +SECURITY_CFLAGS_pn-snappy = "${SECURITY_NO_PIE_CFLAGS} ${SECURITY_PIC_CFLAGS}" +SECURITY_CFLAGS_pn-leveldb = "${SECURITY_NO_PIE_CFLAGS} ${SECURITY_PIC_CFLAGS}" +SECURITY_CFLAGS_pn-python3-pyrealsense = "${SECURITY_NO_PIE_CFLAGS} ${SECURITY_PIC_CFLAGS}" From 2015b448c936c920b31813b6aa8a5929d383ea98 Mon Sep 17 00:00:00 2001 From: Ismo Puustinen Date: Thu, 27 Apr 2017 07:54:49 +0300 Subject: [PATCH 10/10] extras: added computer vision demo documentation. Added documentation for setting up pyrealsense and Caffe demos. Signed-off-by: Ismo Puustinen --- meta-refkit-extra/doc/computervision.rst | 70 ++++++++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 meta-refkit-extra/doc/computervision.rst diff --git a/meta-refkit-extra/doc/computervision.rst b/meta-refkit-extra/doc/computervision.rst new file mode 100644 index 0000000000..8beaf61faa --- /dev/null +++ b/meta-refkit-extra/doc/computervision.rst @@ -0,0 +1,70 @@ +Setting up computer vision demos +################################ + +Introduction +============ + +This layer contains components such as Caffe deep learning framework and +Python bindings to librealsense (pyrealsense). The components are +scriptable with Python 3, making it relatively easy to construct complex +computer vision demos using only Python. + +Example 1: measuring distance to cats +===================================== + +This is an example how the bindings can be used for measuring distance to cats +using a RealSense camera for taking pictures and distance calculations. OpenCV +does the cat recognition with a pre-configured classifier. You need to +have packages ``python3-pyrealsense`` and ``opencv`` installed and +Intel RealSense R200 camera connected to your device. + +.. code:: python + + #!/usr/bin/python3 + + import sys + + import numpy as np + import cv2 + import pyrealsense as pyrs + + n_devices = pyrs.start() + + if n_devices == 0: + print("No RealSense devices found!") + sys.exit(1) + + cam = pyrs.Device() + + cat_cascade = cv2.CascadeClassifier("/usr/share/OpenCV/haarcascades/haarcascade_frontalcatface.xml") + + for x in range(30): + # stabilize exposure + cam.wait_for_frame() + + while True: + # get image from web cam + cam.wait_for_frame() + img = cam.colour + + cats = cat_cascade.detectMultiScale(img) + + for (x,y,w,h) in cats: + # find center + cx = x+(w/2) + cy = y+(h/2) + + depth = cam.depth[cy][cx] + + print("Cat found, distance " + str(depth/10.0) + " cm") + +Example 2: recognizing objects in images using Caffenet +======================================================= + +Install ``caffe-imagenet-model`` package. Then run ``classify-demo.py +--mean_file=""`` in Caffe's Python directory (``/usr/python``) for an +interactive demo recognizing images in web camera stream. You need to +have a web camera connected. Point the web camera at things and in the +console you will see what the image classifier considers them to be. The +deep neural network which the example uses is Caffenet, which is trained +using the 1.3 million image ImageNet training set.