1130 Commits

Author SHA1 Message Date
Allen Byrne
47973f73ec
Improve install and documentation (#5438) 2025-04-17 09:24:33 -05:00
Allen Byrne
2494459101
Add Developer build mode workflow (#5396)
* Add Linux only Developer workflow
* Add Windows job
* -Og already set in GNUFlags file for Debug/Developer mode
* Skip fheap test that times out
* Add mac and clang jobs
* Control version of CMake when building with plugins
2025-04-08 11:26:00 -05:00
Allen Byrne
047b6e04ef
Improve the default plugin path #5399 (#5407) 2025-03-28 10:51:41 -05:00
Allen Byrne
af34892134
Update java test jars (#5385) 2025-03-18 11:09:10 -05:00
Allen Byrne
1602e1fbfe
Remove autotools files and docs (#5358) 2025-03-14 13:28:44 -05:00
Atri Bhattacharya
41a7ef8e1e
Fixes for compiler wrappers and cmake config file dirs. (#5361)
* h5cc: Fix location of settings and pkgconfig files

In h5cc and other compiler wrappers, drop hardcoded 'lib' as the dir for
libhdf5.settings and pkgconfig scripts and use cmake computed values for
HDF5_INSTALL_LIB_DIR. This fixes issues on systems where the libdir is
'lib64' for instance, as on 64-bit Linux OSes, and 'lib' in the
wrappers point to incorrect locations of the settings and pkgconfig
files.

* h5cc: Drop -show from output when calling command.

When calling `h5cc -show FOO`, the output should not repeat the '-show'
argument itself. This commit fixes the '-show' command invoked from a
cmake built h5cc to be consistent with an (previously) autotools built
one.
2025-03-12 13:17:41 -05:00
Allen Byrne
3448276452
Fix last linkcheck issues and linkchecker must pass (#5350)
* Ignore warnings so only errors fail
2025-03-04 09:35:40 -06:00
Allen Byrne
d81ae5586a
Add presets cookbook and use cases (#5323)
* RPM has issue with packaging RPM of a parallel library
2025-02-27 09:58:03 -06:00
Allen Byrne
d4200dc689
Fix the rpath with option - plugins fail without (#5298)
* Only need loader_path
2025-02-14 16:07:04 -06:00
Allen Byrne
aa02a83ba3
Correct the version of zlib used by plugins (#5311) 2025-02-11 08:44:01 -06:00
Allen Byrne
d667869991
Update files based on issues discovered during release (#5294) 2025-02-10 07:43:59 -06:00
Harmen Stoppels
55bfec8f41
cmake: remove outdated rpath handling (#5271) 2025-01-29 08:48:25 -06:00
Allen Byrne
1f62484a93
Updates for updated filters (#5269) 2025-01-24 11:03:03 -06:00
Allen Byrne
3777724e58
Exclude test files from coverage command (#5232)
* Exclude test files from coverage command

* Exlude compression sources
2025-01-14 11:47:12 -08:00
Allen Byrne
58ae0ae200
Develop libaec fix (#5182)
* Use the ${LIBAEC_PACKAGE_NAME} variable instead of SZIP
2025-01-10 15:49:59 -06:00
Allen Byrne
85bef9d1a7
Fix cygwin CI (#5203)
* use mingw generator
* disable ninja
* Disable ZFP and zstd because of C++ issue
2025-01-03 09:59:24 -06:00
Allen Byrne
655403a3b4
Correct CMake option usage and dependencies (#5188) 2024-12-31 16:46:45 -06:00
Quincey Koziol
331193f357
Add new multithreaded concurrency configuration (#5015)
Added infrastructure support for multithreaded concurrency by adding an optional way to switch to using a non-recursive R/W lock for the global API lock. This is enabled with a new 'concurrency' configuration flag for the autotools & CMake builds, which is disabled by default.

When the 'concurrency' build option is chosen, the global API lock will use the R/W lock and all API calls currently will acquire a write lock, ensuring exclusive access by one thread. Over time, the API routines that are converted to support multithreaded concurrency will switch to acquiring a read lock instead.

Reentering the library from application callbacks is managed by the 'disable locking for this thread' (DLFTT) threadsafety protocol. This is internally handled within the H5_API_LOCK / H5_API_UNLOCK macros in H5private.h (as before), which invoke the 'dlftt' routines in H5TSint.c.

To support this change, the threadsafety configuration macros for the library have been updated:
- --enable-threadsafe now defines the H5_HAVE_THREADSAFE macro
- --enable-concurrency defines the H5_HAVE_CONCURRENCY macro
The new H5_HAVE_THREADSAFE_API macro is set if either H5_HAVE_THREADSAFE or H5_HAVE_CONCURRENCY is enabled.

New Github actions are added to include the concurrency configuration in the CI for the develop branch.

To support the new non-recursive R/W locking for API routines, some other changes are necessary:

Added macro wrappers around all callback invocations that could call an
application function, and therefore re-enter the library:
H5_BEFORE_USER_CB* / H5_AFTER_USER_CB*

Added H5_user_cb_prepare / H5_user_cb_restore routines that save the
state of the library when callback leaves the library. Includes error
stack and threadsafe reentry state currently.

There's also some small cleanups to various places in the library:

Moved the H5E_mpi_error_str / H5E_mpi_error_str_len globals to be local for
pushing MPI errors, so that multiple threads can't interfere with each
other.

Added H5TS_rwlock_trywrlock() routine to R/W lock interface.

Emulate R/W locks on MacOS because its implementation of
pthread_rwlock_wrlock() does not conform to the POSIX standard.

Don't acquire the global API lock in H5close, since it's acquired in H5_term_library, which is necessary because H5_term_library is invoked via other code paths that don't hold the global API lock.

Don't call H5Eget_auto2 API routine within H5_term_library.

Switched 'return NULL' in H5allocate_memory to HGOTO_DONE(NULL).

Switched H5Pget_file_space_strategy / H5Pset_file_space_strategy to use
internal routines instead of API routines.

Switched H5Oopen_by_addr & H5Ovisit1 to use internal routines instead of
API routines.

Fixed a few places in src/H5Odeprec.c where a major
error ID was passed as a minor ID.
2024-12-19 01:35:21 -08:00
Allen Byrne
1a9f13a7f1
Rework the compression library search (#5085) 2024-12-13 10:28:27 -06:00
Kai Pastor
40f5f5e64c
Ensure C language when requiring MPI (#5062) 2024-12-02 09:26:36 -08:00
Allen Byrne
778646f506
Update zfp compression lib references (#5141) 2024-11-22 15:44:40 -06:00
Allen Byrne
919d094ed6
Update plugin version refs to match updated plugins repo (#5129) 2024-11-19 03:37:53 -08:00
Allen Byrne
d09ea66934
Rename HDF5_ENABLE_Z_LIB_SUPPORT to HDF5_ENABLE_ZLIB_SUPPORT (#5074) 2024-11-05 15:59:28 -06:00
Allen Byrne
aaf3339596
Cleanup various misspells and syntax (#5073) 2024-11-05 06:12:23 -08:00
Allen Byrne
0b3f1c7ad9
Remove ref to obsolete and removed option (#5068) 2024-11-04 15:14:19 -08:00
Allen Byrne
ad3ea2633a
Move hl example into HDF5Examples (#5057) 2024-11-04 05:22:27 -08:00
jhendersonHDF
90429f5e7d
Implement support for complex number datatypes (#4630)
* Implement support for complex number datatypes

Adds the new datatype class H5T_COMPLEX

Adds the new API function H5Tcomplex_create which creates a complex
number datatype from an ID of a base floating-point datatype

Adds the new feature check macros H5_HAVE_COMPLEX_NUMBERS and
H5_HAVE_C99_COMPLEX_NUMBERS

Adds the new datatype size macros H5_SIZEOF_FLOAT_COMPLEX,
H5_SIZEOF_DOUBLE_COMPLEX and H5_SIZEOF_LONG_DOUBLE_COMPLEX

Adds the new datatype ID macros H5T_NATIVE_FLOAT_COMPLEX,
H5T_NATIVE_DOUBLE_COMPLEX, H5T_NATIVE_LDOUBLE_COMPLEX,
H5T_CPLX_IEEE_F16LE, H5T_CPLX_IEEE_F16BE,
H5T_CPLX_IEEE_F32LE, H5T_CPLX_IEEE_F32BE,
H5T_CPLX_IEEE_F64LE and H5T_CPLX_IEEE_F64BE

Adds hard and soft datatype conversion paths between complex number
datatypes and all the integer and floating-point datatypes, as well as
between other complex number datatypes

Adds a special conversion path between complex number datatypes and
array or compound datatypes where the in-memory layout of data is the
same between the datatypes and data can be converted directly

Adds support for complex number datatypes to the h5dump, h5ls and
h5diff/ph5diff tools. Allows h5dump '-m' option to change floating-point
printing format for float complex and double complex datatypes, as well
as long double complex if it has the same size as double complex

Adds minimal support to the h5watch and h5import tools

Adds support for the predefined complex number datatypes and
H5Tcomplex_create function to the Java wrappers. Also adds initial,
untested support to the JNI for future use with HDFView

Adds support for just the H5T_COMPLEX datatype class to the Fortran
wrappers

Adds support for the predefined complex number datatypes and
H5Tcomplex_create function to the high level library H5LT interface
for use with the H5LTtext_to_dtype and H5LTdtype_to_text functions

Changes some usages of "complex" in the library since it conflicts with
the "complex" keyword from the complex.h header. Also changes various
usages of the word "complex" throughout the library to distinguish
compound datatypes from complex datatypes.
2024-10-31 13:54:25 -07:00
Allen Byrne
f4dbb810c1
Add msys2 workflow for CMake (#4991)
Also updates CMake configure checks to build HDF5 w/ MSYS2
2024-10-28 16:28:29 -07:00
Allen Byrne
5425a571e0
Convert develop to v2.0.0 (#5006)
Switches previous 1.16/17/18 values to 2.0
2024-10-27 21:51:07 -07:00
Allen Byrne
6122828198
Split out compiler flags into specific compiler files (#4974)
* Split CMake HDFCompileFlags into specific compiler files

* Separate out CXX Flags

* Add Fortran compiler specific files

* Merge in #4816 changes and close #4816

* fix hanging endif

---------

Co-authored-by: Larry Knox <lrknox@hdfgroup.org>
2024-10-25 10:03:35 -05:00
Allen Byrne
8efc084646
Updated zlib and libaec compression versions (#4953) 2024-10-23 19:35:34 -07:00
Allen Byrne
1b72a1bca0
Add support for native zlib-ng in the library and compression references (#4935)
* Correct compile defs for zip_perf program
2024-10-23 16:20:15 -05:00
Allen Byrne
baa1e8e292
Prefix remaining CMake options except for CMake BUILD* variables (#4990) 2024-10-22 15:40:54 -07:00
Dana Robinson
245bb2cd23
Remove some Solaris Studio work-arounds (#4979)
Solaris Studio hasn't been updated in almost a decade and the last
version (12.4, circa 2015) doesn't seem to fully support C11.

This PR removes some work-arounds for things like __attribute__()
support.
2024-10-20 12:47:52 -07:00
Dana Robinson
ee6c2eed74
Always check for __attribute__() in CMake (#4980)
The CMake compiler checks skip checking for things like __attribute__()
on Windows. Now that Visual Studio can use clang, we should be checking
for this, even on non-MinGW Windows.
2024-10-20 12:47:38 -07:00
Dana Robinson
7f1e49206d
Renamed COPYING to LICENSE (#4978)
This is where most people will expect to find license information. The
COPYING_LBNL_HDF5 file has also been renamed to LICENSE_LBNL_HDF5.
The licenses are unchanged.
2024-10-18 21:13:04 -07:00
Dana Robinson
478c7d166f
Set the C standard to 11 (#4975)
Ignores some of the older Autotools platform files, since the Autotools
will be dropped in the next major release (and we don't have
compilers on which to test, anyway).

Also drops support for the old, non-compliant MSVC
preprocessor.
2024-10-18 12:04:27 -07:00
Allen Byrne
6e8c7a9597
add analysis and coverage to CDash reports (#4938)
* Add sanitzers and coverage workflows
* add UndefinedBehavior sanitize
2024-10-10 13:16:36 -05:00
Allen Byrne
bcc795fcf6
Add clang cdash reports and fix libaec compile flags (#4937) 2024-10-08 11:11:41 -05:00
Allen Byrne
65dc2ce6de
Update version usage (#4919) 2024-10-03 14:46:48 -05:00
Allen Byrne
07756c87f5 Update develop to 1.18 API 2024-10-02 19:53:38 -05:00
Larry Knox
698ee8e439
Set develop branch version to 1.17.0. (#4912) 2024-10-02 12:28:19 -05:00
Allen Byrne
a8520298e9
Add workflow that reports to CDash (#4864) 2024-09-26 12:06:05 -05:00
H. Joe Lee
e014493ce3
Replace invalid email cdashhelp with help (#4866) 2024-09-23 14:59:50 -05:00
Allen Byrne
3307ff154d
Add windows extra options (#4854) 2024-09-19 01:47:18 -07:00
jhendersonHDF
eeb94a8d5a
Print error stream when cmake greptest fails to match error ref. (#4841) 2024-09-17 10:21:54 -07:00
Allen Byrne
1e9a8ef0e8
Cleanup errors detected during merge compare (#4827) 2024-09-13 10:14:48 -05:00
Allen Byrne
0737d0dbf7
Correct URLs in documentation (#4823) 2024-09-12 22:46:58 -05:00
Allen Byrne
2f2192d677
Convert exec_program to execute_process (#4819) 2024-09-11 07:37:49 -05:00
Allen Byrne
5e94301e71
Add THREADS check to configuration file (#4746)
* Cleanup threads package checks

* Check first if package was found

* Remove unnecessary dependent checks

* Remove Unused options and fix names of option prefix
2024-09-07 20:45:12 -05:00