Files
hdf5/config
Larry Knox 13a9a82757 Sync develop changes July 29 - August 21 to hdf5_1_14. (#4742)
* Warning fix (#4682)

* warning fix

* warning fix

* CMake link line needs to use new HDF5_ENABLE_THREADS (#4685)

* Correct the properties for using THREADS library (#4690)

* Bump the github-actions group with 5 updates (#4688)

Bumps the github-actions group with 5 updates:

| Package | From | To |
| --- | --- | --- |
| [actions/download-artifact](https://github.com/actions/download-artifact) | `4.1.7` | `4.1.8` |
| [DoozyX/clang-format-lint-action](https://github.com/doozyx/clang-format-lint-action) | `0.13` | `0.17` |
| [softprops/action-gh-release](https://github.com/softprops/action-gh-release) | `2.0.6` | `2.0.8` |
| [ossf/scorecard-action](https://github.com/ossf/scorecard-action) | `2.3.3` | `2.4.0` |
| [github/codeql-action](https://github.com/github/codeql-action) | `3.25.11` | `3.25.15` |


Updates `actions/download-artifact` from 4.1.7 to 4.1.8
- [Release notes](https://github.com/actions/download-artifact/releases)
- [Commits](https://github.com/actions/download-artifact/compare/65a9edc5881444af0b9093a5e628f2fe47ea3b2e...fa0a91b85d4f404e444e00e005971372dc801d16)

Updates `DoozyX/clang-format-lint-action` from 0.13 to 0.17
- [Release notes](https://github.com/doozyx/clang-format-lint-action/releases)
- [Commits](https://github.com/doozyx/clang-format-lint-action/compare/v0.13...v0.17)

Updates `softprops/action-gh-release` from 2.0.6 to 2.0.8
- [Release notes](https://github.com/softprops/action-gh-release/releases)
- [Changelog](https://github.com/softprops/action-gh-release/blob/master/CHANGELOG.md)
- [Commits](https://github.com/softprops/action-gh-release/compare/a74c6b72af54cfa997e81df42d94703d6313a2d0...c062e08bd532815e2082a85e87e3ef29c3e6d191)

Updates `ossf/scorecard-action` from 2.3.3 to 2.4.0
- [Release notes](https://github.com/ossf/scorecard-action/releases)
- [Changelog](https://github.com/ossf/scorecard-action/blob/main/RELEASE.md)
- [Commits](https://github.com/ossf/scorecard-action/compare/dc50aa9510b46c811795eb24b2f1ba02a914e534...62b2cac7ed8198b15735ed49ab1e5cf35480ba46)

Updates `github/codeql-action` from 3.25.11 to 3.25.15
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/codeql-action/compare/b611370bb5703a7efb587f9d136a52ea24c5c38c...afb54ba388a7dca6ecae48f608c4ff05ff4cc77a)

---
updated-dependencies:
- dependency-name: actions/download-artifact
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: github-actions
- dependency-name: DoozyX/clang-format-lint-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: github-actions
- dependency-name: softprops/action-gh-release
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: github-actions
- dependency-name: ossf/scorecard-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: github-actions
- dependency-name: github/codeql-action
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: github-actions
...

* Fix segfault when closing datatype during failure in H5Topen2 (#4683)

* Rework Dynamic Analysis and sanitize testing (#4681)

* Ignore predetermined failing test and check pointer before use

* Rework Analysis process

* Remove another H5E_BEGIN/END_TRY within the library (#4675)

* Update logic for (deprecated) H5Gget_objinfo() call to eliminate H5E_BEGIN_TRY

* Handle case for '.' at the end of a path

* Drop H5E_BEGIN/END_TRY and just check the error return from H5I_clear_types() (#4694)

Original case that the change in commit 2dc738a321
no longer applies.

* Add check of returned value from API calls. (#4702)

These were found while investigating GH-4672, but they were not related
to GH-4672.

* Add mac dmg binary and remove old macos-13 workflows (#4699)

* Add Windows SHLWAPI lib to public interface (#4701)

* Use local variable in btree2 and print value (#4679)

* Correct logic

* Technically, level 1 Express could skip tests

* Add windows signing (#4703)

* Add tests for H5R get name APIs (#4657)

Added functionality tests for the following APIs:
H5Rget_file_name
H5Rget_obj_name
H5Rget_attr_name

Also removed "+1" when returning a name length in H5R__get_attr_name().
The exter "+1" gave an incorrect value for the length of the referenced
object's attribute name.

Fixed GH-4447

* Fix Fortran test

The C API H5Rget_attr_name incorrectly added 1 to the length of the
referenced object's attribute name, so the Fortran API h5rget_attr_name_f
removed 1 from the returned value to accommodate the incorrectness.
This PR fixes H5Rget_attr_name so this workaround in h5rget_attr_name_f
is no longer needed.

* Add test H5Aget_name against H5Rget_attr_name

* Replace Visual Studio ???? with 2022 in MSI README file (#4709)

* Change logic for checking secrets exists (#4711)

* Change osx refs to macos (#4707)

* Replace alias \Code with \TText (#4714)

Fixed GH-2151

* Correct signing names and variables (#4713)

* Add secrets to release workflow (#4719)

* Add missing blosc2 info (#4717)

* Fix error return types in H5Rdeprec.c (#4722)

Copy-pasted code from elsewhere used FAIL instead of H5G_UNKNOWN
and H5I_INVALID_HID.

* Fix the release reference name (#4721)

* Test creating unseekable file (#4720)

* Cleanup up tests (#4724)

* Add arch name to dmg file name (#4732)

The binaries in snapshot dmg file do not work on x86_64.

* Fix snapshot CI failure by adding arch name to dmg file (#4734)

See also #4732.

* Fix incorrect VOL vs. non-VOL calls partially (#4733)

* Fix incorrect VOL vs. non-VOL calls

H5Lget_info2() called H5I_object() instead of H5VL_vol_object() crashed
user application.
This is a wide-spread issue (GH-4730) but this PR only addresses GH-4705.

* Remove an incorrect change

* Fix segfault in ROS3 credential parsing (#4736)

* Fix segfault in s3 credential parsing

* Fix AWS cred parsing when >1 profile provided

* Revert gh-pages action hash to fix daily build (#4735)

* Revert gh-pages action hash to fix daily build

See also #4734

* Revert gh-pages action hash to fix daily build

* Eliminate another use of H5E_clear_stack() within the library (#4726)

* Remove call to H5E_clear_stack()

Also clean up a bunch of error macros and the return value from H5B_valid()
2024-08-22 08:12:30 -05:00
..
2023-10-20 18:08:49 -07:00
2023-10-24 19:36:18 -05:00
2021-02-17 08:52:36 -06:00
2021-02-17 08:52:36 -06:00
2022-11-01 16:02:27 -05:00
2022-11-01 16:02:27 -05:00
2024-01-08 07:52:11 -06:00
2022-11-01 16:02:27 -05:00
2023-04-21 23:25:12 -07:00
2022-11-01 16:02:27 -05:00
2022-11-01 16:02:27 -05:00
2023-10-20 18:08:49 -07:00
2023-10-24 19:36:18 -05:00
2023-10-24 19:36:18 -05:00
2023-10-24 19:36:18 -05:00
2023-10-24 19:36:18 -05:00
2021-06-15 08:49:05 -05:00
2022-11-01 16:02:27 -05:00
2022-11-01 16:02:27 -05:00
2022-11-01 16:02:27 -05:00

The config directory

Intro

HDF5 can be configured using both the GNU Autotools and CMake. We try to keep them in sync, but you can expect minor differences to crop up. Please create a GitHub issue for any differences noted. Note that with the Autotools, we do NOT check generated files into GitHub until release time, so you will need to generate configure, Makefile.in(s), etc. via autogen.sh in the project root if you want to build with that system.

Configuration information for the HDF5 library and tools is (unfortunately) spread across the repository. Basic library configuration will generally be found in configure.ac (Autotools) and the root's CMakeLists.txt (CMake). Each subdirectory of the project also has its own Makefile.am or CMake build and test files.

This directory contains a few important things:

  • Autotools OS- and compiler-specific configuration
  • CMake support files (in cmake)
  • Warning files shared between the two systems (in *-warnings directories)
  • CMake toolchain files (in toolchain)
  • CMake sanitizer files (in sanitizer)

CMake will be documented elsewhere. This document focuses on the Autotools files and the shared warning files.

Autotools

An Autotools build will first use $host_cpu, $host_os, etc. to try to find a suitable platform file in config to source and start checking compilers. The code that does this is in configure.ac (search for host_os). For example, MacOS will source the apple file and FreeBSD will source the freebsd file.

If you dig into one of these files, the way that they check for compilers is rather crude. Each OS script will simply source the various C, C++, and Fortran compiler files that are listed inside. Each compiler file checks the designated compiler's version output to see if there's a match, and if so, the flag processing proceeds, and a variable like cc_flags_set will be set at the end.

In case it's not obvious, the C files end in -flags, C++ in -cxxflags, and Fortran in -fflags.

When a compiler matches, the script will attempt to set the CFLAGS, etc. variables based on the platform and compiler's properties. There are typically a large number of flag categories (e.g., DEBUG_OPT_CFLAGS) that are conditionally appended to the canonical variables, like AM_FLAGS, by the remainder of the configure script.

For the major compilers, like Clang and gcc, there will be a section at the end where we append version-specific flags, mainly for warnings. These are imported via a function in the script (load_gnu_arguments() for gcc). See below for more detail.

Warnings files

Keeping the Autotools and CMake build files in sync has always been a bit of a struggle. One way that we help to ensure that the same flags are used in each build system is to import the warnings settings from text files that are maintained separately from the Autotools and CMake build files. We like to configure the compiler to be as crabby as possible so as to catch subtle bugs, so there are a LOT of warning flags for popular compilers like Clang and gcc.

We've located these files in config/*-warnings directories. Each file represents a compiler version and contains the warning flags we set, one to a line. Lines that start with # are considered comment lines. You'll also see developer and no-developer flavors of compiler version files. The former corresponds to "developer flags" that are usually either only semi-useful and/or generate a lot of (usually unfixable) noise. The latter corresponds to things that we want to ensure do NOT appear in non-developer builds of the library. These might involve a different level setting (-Wfoo=x) or something that gets incorporated in a "conglomerate" flag like -Wextra so we need to set -Wno-foo in non-developer builds. Developer warnings can be turned on via a configure option. You will also sometimes see error files. Those are files that include warnings that will be considered errors if you have enabled the "warnings as errors" configure option set. Now that the library is largely warning-free, these are less useful than in the past as you can now just set -Werror directly in many cases (our configure script is smart about not running configure checks with -Werror).

For anyone interested, we are always interested in improving both the OS and compiler files, so pull requests for those are always welcome, especially for platforms we don't have routine access to. If you are a compiler or platform expert/aficionado, please help us out!