diff mbox

[PATCHv1.0] hdf5: new package

Message ID 1420416771-3098-1-git-send-email-ernesto@slac.stanford.edu
State Changes Requested
Headers show

Commit Message

Ernesto L. Williams Jr Jan. 5, 2015, 12:12 a.m. UTC
Signed-off-by: Ernesto L. Williams Jr <ernesto@slac.stanford.edu>
---
 package/Config.in                                 |   1 +
 package/hdf5/Config.in                            |  19 +
 package/hdf5/hdf5-Makefile-configs.patch          | 147 ++++
 package/hdf5/hdf5-generate-H5Tinit.c.patch        | 995 ++++++++++++++++++++++
 package/hdf5/hdf5-generate-H5lib_settings.c.patch | 100 +++
 package/hdf5/hdf5.hash                            |   2 +
 package/hdf5/hdf5.mk                              |  58 ++
 7 files changed, 1322 insertions(+)
 create mode 100644 package/hdf5/Config.in
 create mode 100644 package/hdf5/hdf5-Makefile-configs.patch
 create mode 100644 package/hdf5/hdf5-generate-H5Tinit.c.patch
 create mode 100644 package/hdf5/hdf5-generate-H5lib_settings.c.patch
 create mode 100644 package/hdf5/hdf5.hash
 create mode 100644 package/hdf5/hdf5.mk

Comments

Ernesto L. Williams Jr Jan. 6, 2015, 3:44 a.m. UTC | #1
Hi Thomas,
Did I submit this patch correctly?
I have not seen a reply to this one.

Cheers,
Ernest

On Sun, Jan 4, 2015 at 4:12 PM, Ernesto L. Williams Jr <
realcontrols@gmail.com> wrote:

> Signed-off-by: Ernesto L. Williams Jr <ernesto@slac.stanford.edu>
> ---
>  package/Config.in                                 |   1 +
>  package/hdf5/Config.in                            |  19 +
>  package/hdf5/hdf5-Makefile-configs.patch          | 147 ++++
>  package/hdf5/hdf5-generate-H5Tinit.c.patch        | 995
> ++++++++++++++++++++++
>  package/hdf5/hdf5-generate-H5lib_settings.c.patch | 100 +++
>  package/hdf5/hdf5.hash                            |   2 +
>  package/hdf5/hdf5.mk                              |  58 ++
>  7 files changed, 1322 insertions(+)
>  create mode 100644 package/hdf5/Config.in
>  create mode 100644 package/hdf5/hdf5-Makefile-configs.patch
>  create mode 100644 package/hdf5/hdf5-generate-H5Tinit.c.patch
>  create mode 100644 package/hdf5/hdf5-generate-H5lib_settings.c.patch
>  create mode 100644 package/hdf5/hdf5.hash
>  create mode 100644 package/hdf5/hdf5.mk
>
> diff --git a/package/Config.in b/package/Config.in
> index 8d91b04..897c1a9 100644
> --- a/package/Config.in
> +++ b/package/Config.in
> @@ -597,6 +597,7 @@ menu "Audio/Sound"
>  endmenu
>
>  menu "Compression and decompression"
> +       source "package/hdf5/Config.in"
>         source "package/libarchive/Config.in"
>         source "package/lzo/Config.in"
>         source "package/snappy/Config.in"
> diff --git a/package/hdf5/Config.in b/package/hdf5/Config.in
> new file mode 100644
> index 0000000..e8ba072
> --- /dev/null
> +++ b/package/hdf5/Config.in
> @@ -0,0 +1,19 @@
> +config BR2_PACKAGE_HDF5
> +       bool "hdf5"
> +       help
> +         HDF (Hierarchical Data Format) is a data model, library,
> +         and file format: for storing, analyzing and managing data.
> +         The HDF5 data model, file format, API, library, and tools
> +         are open and distributed without charge.
> +
> +         HDF5 uses the zlib library to support the HDF5 deflate
> +         data compression filter.
> +         If you want to use HDF5 to optionally compress/encode data,
> +         you will also need Szip. The HDF5 Library must be
> +         configured and built using the Szip Library.
> +         Make sure that the szip package is installed prior to
> +         building HDF5.
> +         For Szip please refer to the following URL:
> +         http://hdfgroup.org/doc_resource/SZIP
> +
> +         http://www.hdfgroup.org
> diff --git a/package/hdf5/hdf5-Makefile-configs.patch
> b/package/hdf5/hdf5-Makefile-configs.patch
> new file mode 100644
> index 0000000..035cf6e
> --- /dev/null
> +++ b/package/hdf5/hdf5-Makefile-configs.patch
> @@ -0,0 +1,147 @@
> +diff -urN hdf5-1.8.14.orig/src/Makefile.am hdf5-1.8.14/src/Makefile.am
> +--- hdf5-1.8.14.orig/src/Makefile.am   2015-01-04 08:01:46.267979169 -0800
> ++++ hdf5-1.8.14/src/Makefile.am        2015-01-04 08:25:33.523856257 -0800
> +@@ -26,6 +26,12 @@
> + # Use -g to force no optimization since many compilers (e.g., Intel)
> takes
> + # a long time to compile it with any optimization on.  H5detect is used
> + # to generate H5Tinit.c once. So, optimization is not critical.
> ++
> ++
> ++# Modified by ELW: This autogeneration should be done by PERL or
> ++# configure to support portability and cross compiling.
> ++# For now, I will take these files from a host only build
> ++# and used them for a cross very similar to the x86_64 architecture
> + noinst_PROGRAMS = H5detect H5make_libsettings
> +
> + # Our main target, the HDF5 library
> +@@ -34,8 +40,13 @@
> + # Add libtool numbers to the HDF5 library (from config/lt_vers.am)
> + libhdf5_la_LDFLAGS= -version-info
> $(LT_VERS_INTERFACE):$(LT_VERS_REVISION):$(LT_VERS_AGE) $(AM_LDFLAGS)
> +
> ++# Modified by ELW: This autogeneration should be done by PERL or
> ++# configure to support portability
> ++# and cross compiling. For now, I will take these files from a host only
> build
> ++# and used them for a cross very similar to the x86_64 architecture
> + # H5Tinit.c and H5lib_settings.c are generated files and should be
> cleaned.
> +-MOSTLYCLEANFILES=H5Tinit.c H5lib_settings.c
> ++#MOSTLYCLEANFILES=H5Tinit.c H5lib_settings.c
> ++
> + # H5pubconf.h is generated by configure, and should be cleaned.
> + DISTCLEANFILES=H5pubconf.h
> +
> +@@ -127,24 +138,36 @@
> + # 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") ||
>     \
> +-          ($(RM) $@ ; exit 1)
> ++
> ++# Modified by ELW: This autogeneration should be done by PERL or
> ++# configure to support portability and cross compiling.
> ++# For now, I will take these files from a host only build
> ++# and used them for a cross very similar to the x86_64 architecture
> ++
> ++#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") ||
>     \
> ++#         ($(RM) $@ ; exit 1)
> +
> + # Build configuration header file generation
> + # The LD_LIBRARY_PATH setting is a kludge.
> + # 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") ||
>     \
> +-          ($(RM) $@ ; exit 1)
> ++
> ++# Modified by ELW: This autogeneration should be done by PERL or
> ++# configure to support portability and cross compiling.
> ++# For now, I will take these files from a host only build
> ++# and used them for a cross very similar to the x86_64 architecture
> ++
> ++#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") ||
>     \
> ++#         ($(RM) $@ ; exit 1)
> +
> + # Error header generation
> + #
> +diff -urN hdf5-1.8.14.orig/src/Makefile.in hdf5-1.8.14/src/Makefile.in
> +--- hdf5-1.8.14.orig/src/Makefile.in   2015-01-04 08:01:46.269979148 -0800
> ++++ hdf5-1.8.14/src/Makefile.in        2015-01-04 08:30:31.140015990 -0800
> +@@ -738,8 +738,14 @@
> + # Add libtool numbers to the HDF5 library (from config/lt_vers.am)
> + libhdf5_la_LDFLAGS = -version-info
> $(LT_VERS_INTERFACE):$(LT_VERS_REVISION):$(LT_VERS_AGE) $(AM_LDFLAGS)
> +
> ++# Modified by ELW: This autogeneration should be done by PERL or
> ++# configure to support portability and cross compiling.
> ++# For now, I will take these files from a host only build
> ++# and used them for a cross very similar to the x86_64 architecture
> ++
> + # H5Tinit.c and H5lib_settings.c are generated files and should be
> cleaned.
> +-MOSTLYCLEANFILES = H5Tinit.c H5lib_settings.c
> ++#MOSTLYCLEANFILES = H5Tinit.c H5lib_settings.c
> ++
> + # H5pubconf.h is generated by configure, and should be cleaned.
> + DISTCLEANFILES = H5pubconf.h
> +
> +@@ -1666,24 +1672,35 @@
> + # 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") ||
>     \
> +-          ($(RM) $@ ; exit 1)
> ++
> ++# Modified by ELW: This autogeneration should be done by PERL or
> ++# configure to support portability and cross compiling.
> ++# For now, I will take these files from a host only build
> ++# and used them for a cross very similar to the x86_64 architecture
> ++#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") ||
>     \
> ++#         ($(RM) $@ ; exit 1)
> +
> + # Build configuration header file generation
> + # The LD_LIBRARY_PATH setting is a kludge.
> + # 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") ||
>     \
> +-          ($(RM) $@ ; exit 1)
> ++
> ++# Modified by ELW: This autogeneration should be done by PERL or
> ++# configure to support portability and cross compiling.
> ++# For now, I will take these files from a host only build
> ++# and used them for a cross very similar to the x86_64 architecture
> ++
> ++#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") ||
>     \
> ++#         ($(RM) $@ ; exit 1)
> +
> + # Error header generation
> + #
> diff --git a/package/hdf5/hdf5-generate-H5Tinit.c.patch
> b/package/hdf5/hdf5-generate-H5Tinit.c.patch
> new file mode 100644
> index 0000000..a963d74
> --- /dev/null
> +++ b/package/hdf5/hdf5-generate-H5Tinit.c.patch
> @@ -0,0 +1,995 @@
> +--- /dev/null  2015-01-03 19:14:44.831833329 -0800
> ++++ hdf5-1.8.14/src/H5Tinit.c  2015-01-04 07:42:00.880427296 -0800
> +@@ -0,0 +1,992 @@
> ++/* 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:           Jan  2, 2015
> ++ *                    Ernest L Williams <ernesto@localhost.localdomain>
> ++ *
> ++ * 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: no */
> ++/* siglongjmp() support: yes */
> ++/* sigprocmask() support: yes */
> ++
> ++/******************************/
> ++/* signal handlers statistics */
> ++/******************************/
> ++/* signal_handlers tested: 10 times */
> ++/* sigbus_handler called: 5 times */
> ++/* sigsegv_handler called: 5 times */
> diff --git a/package/hdf5/hdf5-generate-H5lib_settings.c.patch
> b/package/hdf5/hdf5-generate-H5lib_settings.c.patch
> new file mode 100644
> index 0000000..e356689
> --- /dev/null
> +++ b/package/hdf5/hdf5-generate-H5lib_settings.c.patch
> @@ -0,0 +1,100 @@
> +--- /dev/null  2015-01-03 19:14:44.831833329 -0800
> ++++ hdf5-1.8.14/src/H5lib_settings.c   2015-01-04 07:42:00.879427306 -0800
> +@@ -0,0 +1,97 @@
> ++/* 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:           Jan  2, 2015
> ++ *                    Ernest L Williams <ernesto@localhost.localdomain>
> ++ *
> ++ * 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.14\n"
> ++      "                 Configured on: Tue Dec 30 10:18:41 PST 2014\n"
> ++      "                 Configured by: ernesto@localhost.localdomain\n"
> ++      "                Configure mode: development\n"
> ++      "                   Host system: x86_64-unknown-linux-gnu\n"
> ++      "             Uname information: Linux localhost.localdomain
> 3.17.4-301.fc21.x86_64 #1 SMP Thu Nov 27 19:09:10 UTC 2014 x86_64 x86_64
> x86_64 GNU/Linux\n"
> ++      "                      Byte sex: little-endian\n"
> ++      "                     Libraries: static, shared\n"
> ++      "            Installation point:
> /home/ernesto/packages/install/hdf5-1.8.14\n"
> ++      "\n"
> ++      "Compiling Options:\n"
> ++      "------------------\n"
> ++      "               Compilation Mode: development\n"
> ++      "                     C Compiler: /usr/bin/gcc ( gcc (GCC) 4.9.2
> 20141101 )\n"
> ++      "                         CFLAGS: \n"
> ++      "                      H5_CFLAGS: -std=c99 -pedantic -Wall -Wextra
> -Wundef -Wshadow -Wpointer-arith -Wbad-function-cast -Wcast-qual
> -Wcast-align -Wwrite-strings -Wconversion -Waggregate-return
> -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations
> -Wredundant-decls -Wnested-externs -Winline -Wfloat-equal
> -Wmissing-format-attribute -Wmissing-noreturn -Wpacked
> -Wdisabled-optimization -Wformat=2 -Wunreachable-code -Wendif-labels
> -Wdeclaration-after-statement -Wold-style-definition -Winvalid-pch
> -Wvariadic-macros -Winit-self -Wmissing-include-dirs -Wswitch-default
> -Wswitch-enum -Wunused-macros -Wunsafe-loop-optimizations -Wc++-compat
> -Wstrict-overflow -Wlogical-op -Wlarger-than=2048 -Wvla -Wsync-nand
> -Wframe-larger-than=16384 -Wpacked-bitfield-compat -Wstrict-overflow=5
> -Wjump-misses-init -Wunsuffixed-float-constants -Wdouble-promotion
> -Wsuggest-attribute=const -Wtrampolines -Wstack-usage=8192
> -Wvector-operation-performance -Wsuggest-attribute=pure
> -Wsuggest-attribute=noreturn -Wsuggest-attribute=format -Wdate-time
> -Wopenmp-simd -g -fverbose-asm\n"
> ++      "                      AM_CFLAGS: \n"
> ++      "                       CPPFLAGS: \n"
> ++      "                    H5_CPPFLAGS: -D_POSIX_C_SOURCE=199506L
>  -UNDEBUG -DH5D_DEBUG -DH5E_DEBUG -DH5F_DEBUG -DH5G_DEBUG -DH5HG_DEBUG
> -DH5I_DEBUG -DH5MM_DEBUG -DH5O_DEBUG -DH5P_DEBUG -DH5S_DEBUG -DH5T_DEBUG
> -DH5V_DEBUG -DH5Z_DEBUG -DH5_DEBUG_API\n"
> ++      "                    AM_CPPFLAGS:
> -I/home/ernesto/packages/install/szip-2.1/include -D_LARGEFILE_SOURCE
> -D_LARGEFILE64_SOURCE -D_BSD_SOURCE \n"
> ++      "               Shared C Library: yes\n"
> ++      "               Static C Library: yes\n"
> ++      "  Statically Linked Executables: no\n"
> ++      "                        LDFLAGS: \n"
> ++      "                     H5_LDFLAGS: \n"
> ++      "                     AM_LDFLAGS:
> -L/home/ernesto/packages/install/hdf5-1.8.14/lib
> -L/home/ernesto/packages/install/szip-2.1/lib\n"
> ++      "               Extra libraries:  -lpthread -lsz -lz -ldl -lm \n"
> ++      "                      Archiver: ar\n"
> ++      "                        Ranlib: ranlib\n"
> ++      "             Debugged Packages: d,e,f,g,hg,i,mm,o,p,s,t,v,z\n"
> ++      "                   API Tracing: yes\n"
> ++      "\n"
> ++      "Languages:\n"
> ++      "----------\n"
> ++      "                        Fortran: no\n"
> ++      "\n"
> ++      "                            C++: no\n"
> ++      "\n"
> ++      "Features:\n"
> ++      "---------\n"
> ++      "                  Parallel HDF5: no\n"
> ++      "             High Level library: yes\n"
> ++      "                   Threadsafety: yes\n"
> ++      "            Default API Mapping: v18\n"
> ++      " With Deprecated Public Symbols: yes\n"
> ++      "         I/O filters (external): deflate(zlib),szip(encoder)\n"
> ++      "         I/O filters (internal):
> shuffle,fletcher32,nbit,scaleoffset\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: yes\n"
> ++      "   Optimization Instrumentation: yes\n"
> ++      "       Large File Support (LFS): yes\n"
> ++;
> ++
> diff --git a/package/hdf5/hdf5.hash b/package/hdf5/hdf5.hash
> new file mode 100644
> index 0000000..d3dce7c
> --- /dev/null
> +++ b/package/hdf5/hdf5.hash
> @@ -0,0 +1,2 @@
> +# Locally computed by Ernesto Williams
> +sha256 1dbefeeef7f591897c632b2b090db96bb8d35ad035beaa36bc39cb2bc67e0639
> hdf5-1.8.14.tar.gz
> diff --git a/package/hdf5/hdf5.mk b/package/hdf5/hdf5.mk
> new file mode 100644
> index 0000000..1ef0059
> --- /dev/null
> +++ b/package/hdf5/hdf5.mk
> @@ -0,0 +1,58 @@
> +####################################################################
> +#
> +# hdf5
> +#
> +####################################################################
> +
> +HDF5_VERSION = 1.8.14
> +HDF5_SITE = http://www.hdfgroup.org/ftp/HDF5/current/src
> +HDF5_LICENSE = hdf5 license
> +HDF5_LICENSE_FILES = COPYING
> +HDF5_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) install
> +HDF5_INSTALL_STAGING = YES
> +
> +HDF5_DEPENDENCIES += szip
> +
> +# For now give the correct answers to the configure stage:
> +# need to fix this
> +HDF5_CONF_ENV = hdf5_cv_have_lfs=yes \
> +        hdf5_cv_gettimeofday_tz=yes \
> +        hdf5_cv_szlib_can_encode=yes \
> +        hdf5_cv_vsnprintf_works=yes \
> +        hdf5_cv_printf_ll=ll \
> +        hdf5_cv_system_scope_threads=yes \
> +        hdf5_cv_direct_io=yes \
> +        hdf5_cv_ldouble_to_integer_works=yes \
> +        hdf5_cv_ulong_to_float_accurate=yes \
> +        hdf5_cv_ulong_to_fp_bottom_bit_accurate=yes \
> +        hdf5_cv_fp_to_ullong_accurate=yes \
> +        hdf5_cv_fp_to_ullong_right_maximum=yes \
> +        hdf5_cv_ldouble_to_uint_accurate=yes \
> +        hdf5_cv_ullong_to_ldouble_precision=yes \
> +        hdf5_cv_fp_to_integer_overflow_works=yes \
> +        hdf5_cv_ldouble_to_long_special=no \
> +        hdf5_cv_long_to_ldouble_special=no \
> +        hdf5_cv_ldouble_to_llong_accurate=yes \
> +        hdf5_cv_llong_to_ldouble_correct=yes
> +
> +# Needs this to support: O_DIRECT
> +
> +ifeq ($(BR2_PACKAGE_SZIP),y)
> +     HDF5_CONF_ENV +=  \
> +     CFLAGS="-D_GNU_SOURCE -I${STAGING_DIR}/usr/include" \
> +     CPPFLAGS="-D_GNU_SOURCE -I${STAGING_DIR}/usr/include " \
> +     LDFLAGS="-L${STAGING_DIR}/usr/lib -lsz"
> +else
> +     HDF5_CONF_ENV +=  \
> +     CFLAGS="-D_GNU_SOURCE " \
> +     CPPFLAGS="-D_GNU_SOURCE "
> +endif
> +
> +ifeq ($(BR2_PACKAGE_SZIP),y)
> +  HDF5_CONF_OPTS += --enable-threadsafe \
> +  --with-szlib="${STAGING_DIR}/usr/lib" --enable-static-exec
> +else
> +  HDF5_CONF_OPTS += --enable-threadsafe --enable-static-exec
> +endif
> +
> +$(eval $(autotools-package))
> --
> 2.1.0
>
>
Thomas Petazzoni Jan. 7, 2015, 9:56 p.m. UTC | #2
Dear Ernesto L. Williams Jr,

Thanks for this new version. From a patch formatting perspective, it
looks OK (the patch is not line-wrapped, and has the proper format).

However, there are a number of other issues, see below for comments.

On Sun,  4 Jan 2015 16:12:51 -0800, Ernesto L. Williams Jr wrote:

> diff --git a/package/Config.in b/package/Config.in
> index 8d91b04..897c1a9 100644
> --- a/package/Config.in
> +++ b/package/Config.in
> @@ -597,6 +597,7 @@ menu "Audio/Sound"
>  endmenu
>  
>  menu "Compression and decompression"
> +	source "package/hdf5/Config.in"

I'm not sure it really fits in there. I don't really understand what
HDF5 is, but I don't think it's a compression/decompression library.

>  	source "package/libarchive/Config.in"
>  	source "package/lzo/Config.in"
>  	source "package/snappy/Config.in"
> diff --git a/package/hdf5/Config.in b/package/hdf5/Config.in
> new file mode 100644
> index 0000000..e8ba072
> --- /dev/null
> +++ b/package/hdf5/Config.in
> @@ -0,0 +1,19 @@
> +config BR2_PACKAGE_HDF5
> +	bool "hdf5"

Really no toolchain dependency? Can you try to build with the following
toolchain configurations, and see if it builds fine:

http://autobuild.buildroot.org/toolchains/configs/br-arm-basic.config
http://autobuild.buildroot.org/toolchains/configs/br-arm-full-nothread.config
http://autobuild.buildroot.org/toolchains/configs/bfin-linux-uclibc.config
http://autobuild.buildroot.org/toolchains/configs/bfin-uclinux.config

> +	help
> +	  HDF (Hierarchical Data Format) is a data model, library,
> +	  and file format: for storing, analyzing and managing data.
> +	  The HDF5 data model, file format, API, library, and tools
> +	  are open and distributed without charge.
> +	  
> +	  HDF5 uses the zlib library to support the HDF5 deflate
> +	  data compression filter. 
> +	  If you want to use HDF5 to optionally compress/encode data,
> +	  you will also need Szip. The HDF5 Library must be
> +	  configured and built using the Szip Library.

So szip is mandatory? But you make it an optional dependency in
your .mk file. Can you clarify.

> +	  Make sure that the szip package is installed prior to
> +	  building HDF5.
> +	  For Szip please refer to the following URL:
> +	  http://hdfgroup.org/doc_resource/SZIP

Those lines about szip look unnecessary: Buildroot already takes care
of dependencies.

> +	    
> +	  http://www.hdfgroup.org
> diff --git a/package/hdf5/hdf5-Makefile-configs.patch b/package/hdf5/hdf5-Makefile-configs.patch
> new file mode 100644
> index 0000000..035cf6e
> --- /dev/null
> +++ b/package/hdf5/hdf5-Makefile-configs.patch

Patch naming is wrong. See the Buildroot manual on how to name patches
properly. It should be 0001-<some-title>.patch.

Also, all patches must have a description and a SoB line.

> @@ -0,0 +1,147 @@
> +diff -urN hdf5-1.8.14.orig/src/Makefile.am hdf5-1.8.14/src/Makefile.am
> +--- hdf5-1.8.14.orig/src/Makefile.am	2015-01-04 08:01:46.267979169 -0800
> ++++ hdf5-1.8.14/src/Makefile.am	2015-01-04 08:25:33.523856257 -0800
> +@@ -26,6 +26,12 @@
> + # Use -g to force no optimization since many compilers (e.g., Intel) takes
> + # a long time to compile it with any optimization on.  H5detect is used
> + # to generate H5Tinit.c once. So, optimization is not critical.
> ++
> ++
> ++# Modified by ELW: This autogeneration should be done by PERL or
> ++# configure to support portability and cross compiling. 
> ++# For now, I will take these files from a host only build
> ++# and used them for a cross very similar to the x86_64 architecture

So just a comment, on nothing changed?

> + noinst_PROGRAMS = H5detect H5make_libsettings
> + 
> + # Our main target, the HDF5 library
> +@@ -34,8 +40,13 @@
> + # Add libtool numbers to the HDF5 library (from config/lt_vers.am)
> + libhdf5_la_LDFLAGS= -version-info $(LT_VERS_INTERFACE):$(LT_VERS_REVISION):$(LT_VERS_AGE) $(AM_LDFLAGS)
> + 
> ++# Modified by ELW: This autogeneration should be done by PERL or
> ++# configure to support portability
> ++# and cross compiling. For now, I will take these files from a host only build
> ++# and used them for a cross very similar to the x86_64 architecture
> + # H5Tinit.c and H5lib_settings.c are generated files and should be cleaned.
> +-MOSTLYCLEANFILES=H5Tinit.c H5lib_settings.c
> ++#MOSTLYCLEANFILES=H5Tinit.c H5lib_settings.c

Ah, the same comment is here, and now there is a real change.

> ++
> + # H5pubconf.h is generated by configure, and should be cleaned.
> + DISTCLEANFILES=H5pubconf.h
> + 
> +@@ -127,24 +138,36 @@
> + # 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") ||          \
> +-	    ($(RM) $@ ; exit 1)
> ++
> ++# Modified by ELW: This autogeneration should be done by PERL or
> ++# configure to support portability and cross compiling. 
> ++# For now, I will take these files from a host only build
> ++# and used them for a cross very similar to the x86_64 architecture
> ++
> ++#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") ||          \
> ++#	    ($(RM) $@ ; exit 1)
> + 
> + # Build configuration header file generation
> + # The LD_LIBRARY_PATH setting is a kludge.
> + # 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") ||          \
> +-	    ($(RM) $@ ; exit 1)
> ++
> ++# Modified by ELW: This autogeneration should be done by PERL or
> ++# configure to support portability and cross compiling. 
> ++# For now, I will take these files from a host only build
> ++# and used them for a cross very similar to the x86_64 architecture
> ++
> ++#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") ||          \
> ++#	    ($(RM) $@ ; exit 1)

Don't comment, remove the code.

> +diff -urN hdf5-1.8.14.orig/src/Makefile.in hdf5-1.8.14/src/Makefile.in
> +--- hdf5-1.8.14.orig/src/Makefile.in	2015-01-04 08:01:46.269979148 -0800
> ++++ hdf5-1.8.14/src/Makefile.in	2015-01-04 08:30:31.140015990 -0800

Why do you modify both Makefile.am and Makefile.in? Ideally, please
modify only Makefile.am, and use <pkg>_AUTORECONF = YES in the .mk file.

> diff --git a/package/hdf5/hdf5-generate-H5Tinit.c.patch b/package/hdf5/hdf5-generate-H5Tinit.c.patch
> new file mode 100644
> index 0000000..a963d74
> --- /dev/null
> +++ b/package/hdf5/hdf5-generate-H5Tinit.c.patch

Patch naming is wrong. I must say I'm not too happy to have a 995 lines
file. Can't we instead generate it at build time, by building the
necessary tools for the host? It seems like all is needed is to
build ./H5make_libsettings and ./H5detect for the host, no?

Also:

> ++ * 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.

This looks scary, because it means we should really generate this file
on the target architecture. I'm not sure how to handle that, to be
honest. Can you work this out with the upstream HDF5 developers?

> diff --git a/package/hdf5/hdf5.hash b/package/hdf5/hdf5.hash
> new file mode 100644
> index 0000000..d3dce7c
> --- /dev/null
> +++ b/package/hdf5/hdf5.hash
> @@ -0,0 +1,2 @@
> +# Locally computed by Ernesto Williams

Just "Locally computed".

> +sha256 1dbefeeef7f591897c632b2b090db96bb8d35ad035beaa36bc39cb2bc67e0639  hdf5-1.8.14.tar.gz
> diff --git a/package/hdf5/hdf5.mk b/package/hdf5/hdf5.mk
> new file mode 100644
> index 0000000..1ef0059
> --- /dev/null
> +++ b/package/hdf5/hdf5.mk
> @@ -0,0 +1,58 @@
> +####################################################################
> +#
> +# hdf5
> +#
> +####################################################################
> +
> +HDF5_VERSION = 1.8.14
> +HDF5_SITE = http://www.hdfgroup.org/ftp/HDF5/current/src
> +HDF5_LICENSE = hdf5 license
> +HDF5_LICENSE_FILES = COPYING
> +HDF5_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) install

Not needed, that's the default.

> +HDF5_INSTALL_STAGING = YES
> +
> +HDF5_DEPENDENCIES += szip

So, you always have szip as a dependency, so it's not an optional
dependency. Therefore, please add 'select BR2_PACKAGE_SZIP' to this
package Config.in.

> +# For now give the correct answers to the configure stage: 
> +# need to fix this

So, fix it before submitting the patch, maybe? :-)

> +HDF5_CONF_ENV = hdf5_cv_have_lfs=yes \
> +        hdf5_cv_gettimeofday_tz=yes \
> +        hdf5_cv_szlib_can_encode=yes \
> +        hdf5_cv_vsnprintf_works=yes \
> +        hdf5_cv_printf_ll=ll \
> +        hdf5_cv_system_scope_threads=yes \
> +        hdf5_cv_direct_io=yes \
> +        hdf5_cv_ldouble_to_integer_works=yes \
> +        hdf5_cv_ulong_to_float_accurate=yes \
> +        hdf5_cv_ulong_to_fp_bottom_bit_accurate=yes \
> +        hdf5_cv_fp_to_ullong_accurate=yes \
> +        hdf5_cv_fp_to_ullong_right_maximum=yes \
> +        hdf5_cv_ldouble_to_uint_accurate=yes \
> +        hdf5_cv_ullong_to_ldouble_precision=yes \
> +        hdf5_cv_fp_to_integer_overflow_works=yes \
> +        hdf5_cv_ldouble_to_long_special=no \
> +        hdf5_cv_long_to_ldouble_special=no \
> +        hdf5_cv_ldouble_to_llong_accurate=yes \
> +        hdf5_cv_llong_to_ldouble_correct=yes  
> +
> +# Needs this to support: O_DIRECT

Hum?

> +
> +ifeq ($(BR2_PACKAGE_SZIP),y)

If szip is mandatory, it should be selected, so this condition will
always be true.

> +     HDF5_CONF_ENV +=  \
> +     CFLAGS="-D_GNU_SOURCE -I${STAGING_DIR}/usr/include" \
> +     CPPFLAGS="-D_GNU_SOURCE -I${STAGING_DIR}/usr/include " \
> +     LDFLAGS="-L${STAGING_DIR}/usr/lib -lsz"

Indentation is not good, it should be:

HD5_CONF_ENV = \
	FOO=bar \
	BAR=baz

Also, $() should be used instead of ${} to reference make variables.

However, -I$(STAGING_DIR)/usr/include and -L$(STAGING_DIR)/usr/lib are
not needed: the Buildroot cross-compiler already looks in those
locations by default.

> +else
> +     HDF5_CONF_ENV +=  \
> +     CFLAGS="-D_GNU_SOURCE " \
> +     CPPFLAGS="-D_GNU_SOURCE " 
> +endif

Not needed.

> +
> +ifeq ($(BR2_PACKAGE_SZIP),y)

Condition not needed, it's always true.

> +  HDF5_CONF_OPTS += --enable-threadsafe \
> +  --with-szlib="${STAGING_DIR}/usr/lib" --enable-static-exec

Indentation is wrong, it should be:

HDF5_CONF_OPTS = \
	--enable-threadsafe \
	--with-szlib=$(STAGING_DIR)/usr/lib \
	--enable-static-exec

With a few comments:

 * --enable-threadsafe probably indicates that HDF5 requires thread
   support in the toolchain, so maybe you need a "depends on
   BR2_TOOLCHAIN_HAS_THREADS" in Config.in. See how other packages are
   doing this.

 * --enable-static-exec seems to indicate we want to statically link
   the executables. This is generally not what we do in Buildroot. Any
   reason to do this?

> +else
> +  HDF5_CONF_OPTS += --enable-threadsafe --enable-static-exec
> +endif

Not needed.

So all in all, the major remaining point is this issue of generated
files that are different from one architecture to the other. This
really needs to be solved with upstream.

Thanks!

Thomas
diff mbox

Patch

diff --git a/package/Config.in b/package/Config.in
index 8d91b04..897c1a9 100644
--- a/package/Config.in
+++ b/package/Config.in
@@ -597,6 +597,7 @@  menu "Audio/Sound"
 endmenu
 
 menu "Compression and decompression"
+	source "package/hdf5/Config.in"
 	source "package/libarchive/Config.in"
 	source "package/lzo/Config.in"
 	source "package/snappy/Config.in"
diff --git a/package/hdf5/Config.in b/package/hdf5/Config.in
new file mode 100644
index 0000000..e8ba072
--- /dev/null
+++ b/package/hdf5/Config.in
@@ -0,0 +1,19 @@ 
+config BR2_PACKAGE_HDF5
+	bool "hdf5"
+	help
+	  HDF (Hierarchical Data Format) is a data model, library,
+	  and file format: for storing, analyzing and managing data.
+	  The HDF5 data model, file format, API, library, and tools
+	  are open and distributed without charge.
+	  
+	  HDF5 uses the zlib library to support the HDF5 deflate
+	  data compression filter. 
+	  If you want to use HDF5 to optionally compress/encode data,
+	  you will also need Szip. The HDF5 Library must be
+	  configured and built using the Szip Library.
+	  Make sure that the szip package is installed prior to
+	  building HDF5.
+	  For Szip please refer to the following URL:
+	  http://hdfgroup.org/doc_resource/SZIP
+	    
+	  http://www.hdfgroup.org
diff --git a/package/hdf5/hdf5-Makefile-configs.patch b/package/hdf5/hdf5-Makefile-configs.patch
new file mode 100644
index 0000000..035cf6e
--- /dev/null
+++ b/package/hdf5/hdf5-Makefile-configs.patch
@@ -0,0 +1,147 @@ 
+diff -urN hdf5-1.8.14.orig/src/Makefile.am hdf5-1.8.14/src/Makefile.am
+--- hdf5-1.8.14.orig/src/Makefile.am	2015-01-04 08:01:46.267979169 -0800
++++ hdf5-1.8.14/src/Makefile.am	2015-01-04 08:25:33.523856257 -0800
+@@ -26,6 +26,12 @@
+ # Use -g to force no optimization since many compilers (e.g., Intel) takes
+ # a long time to compile it with any optimization on.  H5detect is used
+ # to generate H5Tinit.c once. So, optimization is not critical.
++
++
++# Modified by ELW: This autogeneration should be done by PERL or
++# configure to support portability and cross compiling. 
++# For now, I will take these files from a host only build
++# and used them for a cross very similar to the x86_64 architecture
+ noinst_PROGRAMS = H5detect H5make_libsettings
+ 
+ # Our main target, the HDF5 library
+@@ -34,8 +40,13 @@
+ # Add libtool numbers to the HDF5 library (from config/lt_vers.am)
+ libhdf5_la_LDFLAGS= -version-info $(LT_VERS_INTERFACE):$(LT_VERS_REVISION):$(LT_VERS_AGE) $(AM_LDFLAGS)
+ 
++# Modified by ELW: This autogeneration should be done by PERL or
++# configure to support portability
++# and cross compiling. For now, I will take these files from a host only build
++# and used them for a cross very similar to the x86_64 architecture
+ # H5Tinit.c and H5lib_settings.c are generated files and should be cleaned.
+-MOSTLYCLEANFILES=H5Tinit.c H5lib_settings.c
++#MOSTLYCLEANFILES=H5Tinit.c H5lib_settings.c
++
+ # H5pubconf.h is generated by configure, and should be cleaned.
+ DISTCLEANFILES=H5pubconf.h
+ 
+@@ -127,24 +138,36 @@
+ # 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") ||          \
+-	    ($(RM) $@ ; exit 1)
++
++# Modified by ELW: This autogeneration should be done by PERL or
++# configure to support portability and cross compiling. 
++# For now, I will take these files from a host only build
++# and used them for a cross very similar to the x86_64 architecture
++
++#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") ||          \
++#	    ($(RM) $@ ; exit 1)
+ 
+ # Build configuration header file generation
+ # The LD_LIBRARY_PATH setting is a kludge.
+ # 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") ||          \
+-	    ($(RM) $@ ; exit 1)
++
++# Modified by ELW: This autogeneration should be done by PERL or
++# configure to support portability and cross compiling. 
++# For now, I will take these files from a host only build
++# and used them for a cross very similar to the x86_64 architecture
++
++#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") ||          \
++#	    ($(RM) $@ ; exit 1)
+ 
+ # Error header generation
+ #
+diff -urN hdf5-1.8.14.orig/src/Makefile.in hdf5-1.8.14/src/Makefile.in
+--- hdf5-1.8.14.orig/src/Makefile.in	2015-01-04 08:01:46.269979148 -0800
++++ hdf5-1.8.14/src/Makefile.in	2015-01-04 08:30:31.140015990 -0800
+@@ -738,8 +738,14 @@
+ # Add libtool numbers to the HDF5 library (from config/lt_vers.am)
+ libhdf5_la_LDFLAGS = -version-info $(LT_VERS_INTERFACE):$(LT_VERS_REVISION):$(LT_VERS_AGE) $(AM_LDFLAGS)
+ 
++# Modified by ELW: This autogeneration should be done by PERL or
++# configure to support portability and cross compiling. 
++# For now, I will take these files from a host only build
++# and used them for a cross very similar to the x86_64 architecture
++
+ # H5Tinit.c and H5lib_settings.c are generated files and should be cleaned.
+-MOSTLYCLEANFILES = H5Tinit.c H5lib_settings.c
++#MOSTLYCLEANFILES = H5Tinit.c H5lib_settings.c
++
+ # H5pubconf.h is generated by configure, and should be cleaned.
+ DISTCLEANFILES = H5pubconf.h
+ 
+@@ -1666,24 +1672,35 @@
+ # 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") ||          \
+-	    ($(RM) $@ ; exit 1)
++
++# Modified by ELW: This autogeneration should be done by PERL or
++# configure to support portability and cross compiling. 
++# For now, I will take these files from a host only build
++# and used them for a cross very similar to the x86_64 architecture
++#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") ||          \
++#	    ($(RM) $@ ; exit 1)
+ 
+ # Build configuration header file generation
+ # The LD_LIBRARY_PATH setting is a kludge.
+ # 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") ||          \
+-	    ($(RM) $@ ; exit 1)
++
++# Modified by ELW: This autogeneration should be done by PERL or
++# configure to support portability and cross compiling. 
++# For now, I will take these files from a host only build
++# and used them for a cross very similar to the x86_64 architecture
++
++#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") ||          \
++#	    ($(RM) $@ ; exit 1)
+ 
+ # Error header generation
+ #
diff --git a/package/hdf5/hdf5-generate-H5Tinit.c.patch b/package/hdf5/hdf5-generate-H5Tinit.c.patch
new file mode 100644
index 0000000..a963d74
--- /dev/null
+++ b/package/hdf5/hdf5-generate-H5Tinit.c.patch
@@ -0,0 +1,995 @@ 
+--- /dev/null	2015-01-03 19:14:44.831833329 -0800
++++ hdf5-1.8.14/src/H5Tinit.c	2015-01-04 07:42:00.880427296 -0800
+@@ -0,0 +1,992 @@
++/* 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:		Jan  2, 2015
++ *			Ernest L Williams <ernesto@localhost.localdomain>
++ *
++ * 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: no */
++/* siglongjmp() support: yes */
++/* sigprocmask() support: yes */
++
++/******************************/
++/* signal handlers statistics */
++/******************************/
++/* signal_handlers tested: 10 times */
++/* sigbus_handler called: 5 times */
++/* sigsegv_handler called: 5 times */
diff --git a/package/hdf5/hdf5-generate-H5lib_settings.c.patch b/package/hdf5/hdf5-generate-H5lib_settings.c.patch
new file mode 100644
index 0000000..e356689
--- /dev/null
+++ b/package/hdf5/hdf5-generate-H5lib_settings.c.patch
@@ -0,0 +1,100 @@ 
+--- /dev/null	2015-01-03 19:14:44.831833329 -0800
++++ hdf5-1.8.14/src/H5lib_settings.c	2015-01-04 07:42:00.879427306 -0800
+@@ -0,0 +1,97 @@
++/* 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:		Jan  2, 2015
++ *			Ernest L Williams <ernesto@localhost.localdomain>
++ *
++ * 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.14\n"
++	"		  Configured on: Tue Dec 30 10:18:41 PST 2014\n"
++	"		  Configured by: ernesto@localhost.localdomain\n"
++	"		 Configure mode: development\n"
++	"		    Host system: x86_64-unknown-linux-gnu\n"
++	"	      Uname information: Linux localhost.localdomain 3.17.4-301.fc21.x86_64 #1 SMP Thu Nov 27 19:09:10 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux\n"
++	"		       Byte sex: little-endian\n"
++	"		      Libraries: static, shared\n"
++	"	     Installation point: /home/ernesto/packages/install/hdf5-1.8.14\n"
++	"\n"
++	"Compiling Options:\n"
++	"------------------\n"
++	"               Compilation Mode: development\n"
++	"                     C Compiler: /usr/bin/gcc ( gcc (GCC) 4.9.2 20141101 )\n"
++	"                         CFLAGS: \n"
++	"                      H5_CFLAGS: -std=c99 -pedantic -Wall -Wextra -Wundef -Wshadow -Wpointer-arith -Wbad-function-cast -Wcast-qual -Wcast-align -Wwrite-strings -Wconversion -Waggregate-return -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations -Wredundant-decls -Wnested-externs -Winline -Wfloat-equal -Wmissing-format-attribute -Wmissing-noreturn -Wpacked -Wdisabled-optimization -Wformat=2 -Wunreachable-code -Wendif-labels -Wdeclaration-after-statement -Wold-style-definition -Winvalid-pch -Wvariadic-macros -Winit-self -Wmissing-include-dirs -Wswitch-default -Wswitch-enum -Wunused-macros -Wunsafe-loop-optimizations -Wc++-compat -Wstrict-overflow -Wlogical-op -Wlarger-than=2048 -Wvla -Wsync-nand -Wframe-larger-than=16384 -Wpacked-bitfield-compat -Wstrict-overflow=5 -Wjump-misses-init -Wunsuffixed-float-constants -Wdouble-promotion -Wsuggest-attribute=const -Wtrampolines -Wstack-usage=8192 -Wvector-operation-performance -Wsuggest-attribute=pure -Wsuggest-attribute
 =noreturn -Wsuggest-attribute=format -Wdate-time -Wopenmp-simd -g -fverbose-asm\n"
++	"                      AM_CFLAGS: \n"
++	"                       CPPFLAGS: \n"
++	"                    H5_CPPFLAGS: -D_POSIX_C_SOURCE=199506L   -UNDEBUG -DH5D_DEBUG -DH5E_DEBUG -DH5F_DEBUG -DH5G_DEBUG -DH5HG_DEBUG -DH5I_DEBUG -DH5MM_DEBUG -DH5O_DEBUG -DH5P_DEBUG -DH5S_DEBUG -DH5T_DEBUG -DH5V_DEBUG -DH5Z_DEBUG -DH5_DEBUG_API\n"
++	"                    AM_CPPFLAGS: -I/home/ernesto/packages/install/szip-2.1/include -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_BSD_SOURCE \n"
++	"               Shared C Library: yes\n"
++	"               Static C Library: yes\n"
++	"  Statically Linked Executables: no\n"
++	"                        LDFLAGS: \n"
++	"                     H5_LDFLAGS: \n"
++	"                     AM_LDFLAGS:  -L/home/ernesto/packages/install/hdf5-1.8.14/lib -L/home/ernesto/packages/install/szip-2.1/lib\n"
++	" 	 	Extra libraries:  -lpthread -lsz -lz -ldl -lm \n"
++	" 		       Archiver: ar\n"
++	" 		 	 Ranlib: ranlib\n"
++	" 	      Debugged Packages: d,e,f,g,hg,i,mm,o,p,s,t,v,z\n"
++	"		    API Tracing: yes\n"
++	"\n"
++	"Languages:\n"
++	"----------\n"
++	"                        Fortran: no\n"
++	"\n"
++	"                            C++: no\n"
++	"\n"
++	"Features:\n"
++	"---------\n"
++	"                  Parallel HDF5: no\n"
++	"             High Level library: yes\n"
++	"                   Threadsafety: yes\n"
++	"            Default API Mapping: v18\n"
++	" With Deprecated Public Symbols: yes\n"
++	"         I/O filters (external): deflate(zlib),szip(encoder)\n"
++	"         I/O filters (internal): shuffle,fletcher32,nbit,scaleoffset\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: yes\n"
++	"   Optimization Instrumentation: yes\n"
++	"       Large File Support (LFS): yes\n"
++;
++
diff --git a/package/hdf5/hdf5.hash b/package/hdf5/hdf5.hash
new file mode 100644
index 0000000..d3dce7c
--- /dev/null
+++ b/package/hdf5/hdf5.hash
@@ -0,0 +1,2 @@ 
+# Locally computed by Ernesto Williams
+sha256 1dbefeeef7f591897c632b2b090db96bb8d35ad035beaa36bc39cb2bc67e0639  hdf5-1.8.14.tar.gz
diff --git a/package/hdf5/hdf5.mk b/package/hdf5/hdf5.mk
new file mode 100644
index 0000000..1ef0059
--- /dev/null
+++ b/package/hdf5/hdf5.mk
@@ -0,0 +1,58 @@ 
+####################################################################
+#
+# hdf5
+#
+####################################################################
+
+HDF5_VERSION = 1.8.14
+HDF5_SITE = http://www.hdfgroup.org/ftp/HDF5/current/src
+HDF5_LICENSE = hdf5 license
+HDF5_LICENSE_FILES = COPYING
+HDF5_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) install
+HDF5_INSTALL_STAGING = YES
+
+HDF5_DEPENDENCIES += szip
+
+# For now give the correct answers to the configure stage: 
+# need to fix this
+HDF5_CONF_ENV = hdf5_cv_have_lfs=yes \
+        hdf5_cv_gettimeofday_tz=yes \
+        hdf5_cv_szlib_can_encode=yes \
+        hdf5_cv_vsnprintf_works=yes \
+        hdf5_cv_printf_ll=ll \
+        hdf5_cv_system_scope_threads=yes \
+        hdf5_cv_direct_io=yes \
+        hdf5_cv_ldouble_to_integer_works=yes \
+        hdf5_cv_ulong_to_float_accurate=yes \
+        hdf5_cv_ulong_to_fp_bottom_bit_accurate=yes \
+        hdf5_cv_fp_to_ullong_accurate=yes \
+        hdf5_cv_fp_to_ullong_right_maximum=yes \
+        hdf5_cv_ldouble_to_uint_accurate=yes \
+        hdf5_cv_ullong_to_ldouble_precision=yes \
+        hdf5_cv_fp_to_integer_overflow_works=yes \
+        hdf5_cv_ldouble_to_long_special=no \
+        hdf5_cv_long_to_ldouble_special=no \
+        hdf5_cv_ldouble_to_llong_accurate=yes \
+        hdf5_cv_llong_to_ldouble_correct=yes  
+
+# Needs this to support: O_DIRECT
+
+ifeq ($(BR2_PACKAGE_SZIP),y)
+     HDF5_CONF_ENV +=  \
+     CFLAGS="-D_GNU_SOURCE -I${STAGING_DIR}/usr/include" \
+     CPPFLAGS="-D_GNU_SOURCE -I${STAGING_DIR}/usr/include " \
+     LDFLAGS="-L${STAGING_DIR}/usr/lib -lsz"
+else
+     HDF5_CONF_ENV +=  \
+     CFLAGS="-D_GNU_SOURCE " \
+     CPPFLAGS="-D_GNU_SOURCE " 
+endif
+
+ifeq ($(BR2_PACKAGE_SZIP),y)
+  HDF5_CONF_OPTS += --enable-threadsafe \
+  --with-szlib="${STAGING_DIR}/usr/lib" --enable-static-exec
+else
+  HDF5_CONF_OPTS += --enable-threadsafe --enable-static-exec
+endif
+
+$(eval $(autotools-package))