Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

HDF5 cross compile for macOS M1 and Windows #6602

Draft
wants to merge 65 commits into
base: master
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
65 commits
Select commit Hold shift + click to select a range
3be7ccb
HDF5: Cross-compile
eschnett Apr 8, 2023
56deb07
HDF5: Simplify setting up H5Tinit.c
eschnett Apr 8, 2023
096c0da
HDF5: Roll back simplification
eschnett Apr 9, 2023
99d0ca0
HDF5: Correct architecture detection
eschnett Apr 9, 2023
7d12ae7
HDF5: Try cmake
eschnett Apr 9, 2023
4ee7f8b
HDF5: Use cmake's HDF5_USE_PREGEN
eschnett Apr 9, 2023
ce562c1
HDF5: Correct location of pregenerated H5Tinit.c
eschnett Apr 9, 2023
6a498b8
HDF5: Point cmake to H5Tinit.c
eschnett Apr 9, 2023
63a8179
HDF5: Fight HDF5's cmake
eschnett Apr 9, 2023
fa9f5c5
HDF5: More fighting
eschnett Apr 9, 2023
9b07b3b
HDF5: Debugging
eschnett Apr 9, 2023
f9a8ff8
HDF5: Patch CMakeLists.txt
eschnett Apr 9, 2023
87699f7
HDF5: Patch before cd
eschnett Apr 9, 2023
52f772b
HDF5: Generate `H5lib_settings.c` as well
eschnett Apr 9, 2023
ed87ab2
HDF5: Make guesses for the Windows build
eschnett Apr 9, 2023
ed2a773
HDF5: Make it build on Windows
eschnett Apr 10, 2023
2929fee
HDF5: Re-enable `h5redeploy`
eschnett Apr 10, 2023
4179f8f
HDF5: Handle missing CLOCK_MONOTONIC
eschnett Apr 10, 2023
e4c58a8
HDF5: Add h5redeploy on Windows
eschnett Apr 10, 2023
7ec64d5
HDF5: Enable C++ and Fortran bindings
eschnett Apr 15, 2023
cb9d5a0
HDF5: Generalize download url
eschnett Apr 15, 2023
e20cbb6
HDF5: Enable C++11
eschnett Apr 15, 2023
fe855f3
HDF5: Pre-determine more Fortran type information
eschnett Apr 15, 2023
75bbda0
HDF5: Reorganize files with pre-recorded config information
eschnett Apr 15, 2023
605b249
HDF5: Correct Fortran Makefile patch
eschnett Apr 15, 2023
6180e6f
HDF5: Extract more configuration information
eschnett Apr 15, 2023
8fe4869
HDF5: Correct Makefile patch
eschnett Apr 15, 2023
eadce0a
HDF5: Correct HL Fortran library name
eschnett Apr 15, 2023
69173cd
HDF5: Correct HL Fortran library name
eschnett Apr 15, 2023
b31be06
HDF5: Add pre-generated config info for i386
eschnett Apr 15, 2023
d664e81
HDF5: Add FreeBSD config files
eschnett Apr 15, 2023
344f38f
HDF5: Enable ros3-vfd, threadsafe, szlib
eschnett Apr 16, 2023
37d72c4
HDF5: Use older version for libcurl to make things build on *-musl
eschnett Apr 16, 2023
a1f8df5
Merge branch 'master' into eschnett/hdf5-cross
eschnett Apr 16, 2023
91dabe1
HDF5: Try LibCURL v8
eschnett Apr 17, 2023
a6cbfd7
HDF5: Allow multiple LibCURL versions
eschnett Apr 17, 2023
c40c78b
HDF5: Use LibCURL 8
eschnett Apr 17, 2023
2c228dd
Add msys2 config via mingw32 and mingw64
mkitti Apr 17, 2023
677c1a3
HDF5: Work around a LibCURL x86_64-linux-musl issue
eschnett Apr 17, 2023
138ad7f
Get configuration for macOS on aarch64 (M1)
mkitti Apr 17, 2023
5d21231
Overwrite darwin-arm64v8 with macos-aarch64 files
mkitti Apr 18, 2023
0d7a697
Modify HDF5 build_tarballs.jl for msys2-mingw{32,64}
mkitti Apr 18, 2023
c229edc
Merge branch 'mkitti/hdf5-cross-macos-aarch64' into mkitti/hdf5-cross
mkitti Apr 18, 2023
9b813d7
Merge pull request #3 from mkitti/mkitti/hdf5-cross
eschnett Apr 18, 2023
f934aee
HDF5: Update Dockerfile and scripts
eschnett Apr 18, 2023
2ee048a
HDF5: Make our `strncpy` C++-ready
eschnett Apr 18, 2023
9192e9c
HDF5: Simplify strndup patch
eschnett Apr 18, 2023
c04e011
HDF5: Make strncpy work on Windows
eschnett Apr 18, 2023
1a88e4e
HDF5: Disable thread-safety
eschnett Apr 18, 2023
dbbed23
Try a clean msys2_mingw32 build
mkitti Apr 18, 2023
924ea8b
Merge pull request #4 from mkitti/mkitti/hdf5_cross_msys2_mingw32
eschnett Apr 18, 2023
17277e8
HDF5: Build with MPI
eschnett Apr 18, 2023
e81135d
HDF5: Build with GCC 6
eschnett Apr 18, 2023
b50c3c0
HDF5: Disable subfiling VFD
eschnett Apr 18, 2023
b36f0b8
HDF5: Require GCC 6
eschnett Apr 18, 2023
b72b4a8
HDF5: Work on MPI and VFD
eschnett Apr 19, 2023
de14f24
HDF5: Clean up pthreads patch
eschnett Apr 19, 2023
9e328fa
HDF5: Clean up
eschnett Apr 20, 2023
59ce113
Merge branch 'master' into eschnett/hdf5-cross
eschnett Apr 20, 2023
c49ee51
HDF5: Require at least MPItrampoline 5.3.0
eschnett Apr 20, 2023
8d2fcc6
Merge branch 'master' into eschnett/hdf5-cross
eschnett Apr 20, 2023
21e96db
HDF5: Trigger rebuild
eschnett Apr 20, 2023
925a9eb
Temporarily restrict to Windows
mkitti Apr 26, 2023
a7047e6
Temporarily disable MPI
mkitti Apr 26, 2023
6c3f3e8
Successful HDF5 cross to x86_64-w64-mingw32
mkitti Apr 27, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
680 changes: 621 additions & 59 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