Skip to content

Commit

Permalink
HDF5: Cross-compile (#6551)
Browse files Browse the repository at this point in the history
* HDF5: Cross-compile

* HDF5: Simplify setting up H5Tinit.c

* HDF5: Roll back simplification

* HDF5: Correct architecture detection

* HDF5: Try cmake

* HDF5: Use cmake's HDF5_USE_PREGEN

* HDF5: Correct location of pregenerated H5Tinit.c

* HDF5: Point cmake to H5Tinit.c

* HDF5: Fight HDF5's cmake

* HDF5: More fighting

* HDF5: Debugging

* HDF5: Patch CMakeLists.txt

* HDF5: Patch before cd

* HDF5: Generate `H5lib_settings.c` as well

* HDF5: Make guesses for the Windows build

* HDF5: Make it build on Windows

* HDF5: Re-enable `h5redeploy`

* HDF5: Handle missing CLOCK_MONOTONIC

* HDF5: Add h5redeploy on Windows

* HDF5: Enable C++ and Fortran bindings

* HDF5: Generalize download url

* HDF5: Enable C++11

* HDF5: Pre-determine more Fortran type information

* HDF5: Reorganize files with pre-recorded config information

* HDF5: Correct Fortran Makefile patch

* HDF5: Extract more configuration information

* HDF5: Correct Makefile patch

* HDF5: Correct HL Fortran library name

* HDF5: Correct HL Fortran library name

* HDF5: Add pre-generated config info for i386

* HDF5: Add FreeBSD config files

* HDF5: Enable ros3-vfd, threadsafe, szlib

* HDF5: Use older version for libcurl to make things build on *-musl

* HDF5: Try LibCURL v8

* HDF5: Allow multiple LibCURL versions

Co-authored-by: Mosè Giordano <giordano@users.noreply.github.com>

* HDF5: Use LibCURL 8

* Add msys2 config via mingw32 and mingw64

* HDF5: Work around a LibCURL x86_64-linux-musl issue

* Get configuration for macOS on aarch64 (M1)

* Overwrite darwin-arm64v8 with macos-aarch64 files

* Modify HDF5 build_tarballs.jl for msys2-mingw{32,64}

* HDF5: Update Dockerfile and scripts

* HDF5: Make our `strncpy` C++-ready

* HDF5: Simplify strndup patch

* HDF5: Make strncpy work on Windows

* HDF5: Disable thread-safety

* Try a clean msys2_mingw32 build

* HDF5: Build with MPI

* HDF5: Build with GCC 6

* HDF5: Disable subfiling VFD

* HDF5: Require GCC 6

* HDF5: Work on MPI and VFD

* HDF5: Clean up pthreads patch

* HDF5: Clean up

* HDF5: Require at least MPItrampoline 5.3.0

* HDF5: Trigger rebuild

* HDF5: Use Conda-built libraries on Windows

* HDF5: Remove list of supported platforms

* HDF5: Correct comments: Windows libraries are from msys

* HDF5: Remove some unnecessary msys packages

---------

Co-authored-by: Mosè Giordano <giordano@users.noreply.github.com>
Co-authored-by: Mark Kittisopikul <kittisopikulm@janelia.hhmi.org>
  • Loading branch information
3 people authored May 24, 2023
1 parent 309a5cf commit bf78a45
Show file tree
Hide file tree
Showing 176 changed files with 371,275 additions and 46 deletions.
448 changes: 402 additions & 46 deletions H/HDF5/build_tarballs.jl

Large diffs are not rendered by default.

6,515 changes: 6,515 additions & 0 deletions H/HDF5/bundled/files/darwin-amd64/H5LTff_gen.F90

Large diffs are not rendered by default.

465 changes: 465 additions & 0 deletions H/HDF5/bundled/files/darwin-amd64/H5TBff_gen.F90

Large diffs are not rendered by default.

246 changes: 246 additions & 0 deletions H/HDF5/bundled/files/darwin-amd64/H5Tinit.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,246 @@
/* Generated automatically by H5detect -- do not edit */



/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* Copyright by The HDF Group. *
* 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 COPYING file, which can be found at the root of the source code *
* distribution tree, or in https://www.hdfgroup.org/licenses. *
* If you do not have access to either file, you may request a copy from *
* help@hdfgroup.org. *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* Created: Apr 14, 2023
* Erik Schnetter <eschnett@redshift.pi.local>
*
* 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 this 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 */
/****************/

#include "H5Tmodule.h" /* This source code file is part of the H5T module */


/***********/
/* 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: H5T__init_native
*
* 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
H5T__init_native(void)
{
H5T_t *dt = NULL;
herr_t ret_value = SUCCEED;

FUNC_ENTER_PACKAGE

/*
* 3 2 1 0
* SEEEEEEE EMMMMMMM MMMMMMMM MMMMMMMM
* Implicit bit? yes
*/
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 = 4;

/*
* 7 6 5 4
* SEEEEEEE EEEEMMMM MMMMMMMM MMMMMMMM
* 3 2 1 0
* MMMMMMMM MMMMMMMM MMMMMMMM MMMMMMMM
* Implicit bit? yes
*/
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 = 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
*/
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 = 16;

/* Set the native order for this machine */
H5T_native_order_g = H5T_ORDER_LE;

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 H5T__init_native() */
Loading

0 comments on commit bf78a45

Please sign in to comment.