Commit Graph

95 Commits

Author SHA1 Message Date
Kris Thielemans
4150048a3b FindHDF5: unset some variables
prefixed some local variables with _hdf5 and unset them at the end
(still more of these to do)
2017-08-03 09:49:47 -04:00
Kris Thielemans
9310d00822 FindHDF5: for a static imported config, use CONFIG-specific library
first check the LOCATION_<CONFIG> propertiy to find the library, then
LOCATION
2017-08-03 09:49:47 -04:00
Kris Thielemans
fc9828448d FindHDF5: fix hdf5-config case with more than one configuration
Select a configuration as the first of the following available:

* MAP_IMPORTED_CONFIG_<CONFIG>
* ${CMAKE_BUILD_TYPE}, RELWITHDEBINFO, RELEASE, DEBUG
* First entry in IMPORTED_CONFIGURATIONS

Fixes: #17039
2017-08-03 09:48:19 -04:00
Kris Thielemans
6848ff4ce5 FindHDF5: Define H5_BUILT_AS_DYNAMIC_LIB when using Windows DLLs
When searching for shared libraries on Windows, add
H5_BUILT_AS_DYNAMIC_LIB to HDF5_DEFINITIONS so that the header file
knows how to dllimport the symbols.
2017-07-07 08:58:57 -04:00
Kris Thielemans
6f131f49ee FindHDF5: Add support for HDF5_USE_STATIC_LIBRARIES on Windows
Also add the `_D` suffix for debug libraries.
2017-07-07 08:58:37 -04:00
Chuck Atkins
8b9d8c4ddc FindHDF5: Fix parallel detection when primary compiler is an HDF5 wrapper
This is covering a different use case where your primary compilers are
HDF5 wrappers, as is the case when using the Cray Programming
Environment. The existing code tries to query the compiler using options
only available to h5cc and friends, which doesn't work when your wrapper
is not h5cc, as is the case with the CrayPE. This change instead pulls
strings out of a test binary when testing for "is your regular compiler
an HDF5 wrapper" while the "query wrapper for options" is reserved for
the "I found the hdf5 wrappers but they're not your main compiler" mode.
2017-06-16 11:40:02 -04:00
Christian Pfeiffer
28d8383797 separgs: Use NATIVE_COMMAND where appropriate 2017-04-26 20:34:23 +02:00
Brad King
2c55c143c8 Merge branch 'backport-FindHDF5-optional-no-config' into FindHDF5-optional-no-config 2017-03-21 13:12:16 -04:00
Brad King
63c0ba5ff1 FindHDF5: Improve HDF5_ROOT and HDF5_FIND_DEBUG documentation 2017-03-21 13:11:36 -04:00
Brad King
9753d4c27e FindHDF5: Add option to skip finding package configuration file
Some projects may not be prepared to use the imported targets defined by
the HDF5 package configuration file.  Give users a way to skip this part
of the search.

Issue: #16718
2017-03-21 13:07:07 -04:00
Brad King
2df8aa0c80 FindHDF5: Improve HDF5_ROOT variable documentation 2017-03-21 13:02:36 -04:00
Brad King
0e8b83a1b7 Merge topic 'FindHDF5-fix-quoting'
8214061d FindHDF5: fix quoting

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !587
2017-03-21 09:58:18 -04:00
Ben Boeckel
8214061d1a FindHDF5: fix quoting 2017-03-15 12:54:19 -04:00
Kris Thielemans
c6bef559f3 FindHDF5: set HDF5_<lang>_INCLUDE_DIRS in all cases
In the case that we're using `find_path` to find the include directory,
only the `_DIR` variable was set, while in all other cases only the
`_DIRS` variable was set.  Set the `_DIRS` variable in all cases (while
keeping `_DIR` as result of `find_path`).  Also document the `_DIRS`
variable.

Fixes: #16694
2017-03-06 13:09:49 -05:00
Brad King
add3b1ee4f Merge topic 'FindHDF5-fix-definitions'
ea2a8dd2 FindHDF5: Restore `-D` in HDF5_DEFINITIONS

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !554
2017-03-06 12:56:51 -05:00
Kris Thielemans
ea2a8dd268 FindHDF5: Restore -D in HDF5_DEFINITIONS
Changes in commit v3.8.0-rc1~7^2~5 (FindHDF5: Fix command-line parsing
argument extraction order, 2017-02-02) accidentally dropped `-D` from
preprocessor definition flags extracted from the HDF5 compiler wrappers.

Fixes: #16693
2017-03-06 12:48:49 -05:00
Kris Thielemans
2186b323c0 FindHDF5: initialize HDF5_DEFINITIONS when using hdf5-config.cmake 2017-03-01 08:13:58 -05:00
Kris Thielemans
16f1dd0d16 FindHDF5: document HDF5_<LANG>_DEFINITIONS 2017-03-01 08:13:58 -05:00
Kris Thielemans
b2de6da2f1 FindHDF5: use import libraries when using hdf5-config.cmake on Windows
The `LOCATION` of imported shared libraries on Windows is that of the
`.dll`.  Use the import library instead to get the `.lib` to be linked.

Fixes: #16534
2017-03-01 08:12:56 -05:00
Kris Thielemans
003c91385a FindHDF5: do not cache library locations when using hdf5-config.cmake
The imported targets provide a persistent reference of their location,
so we do not need to cache the values.
2017-03-01 08:11:37 -05:00
Kris Thielemans
bf67fff035 FindHDF5: recognize hdf5:: prefix when using hdf5-config.cmake
Some versions of HDF5 use this prefix on their imported targets.
2017-03-01 08:11:22 -05:00
Kris Thielemans
e629be4a7a FindHDF5: fix typo in comment 2017-03-01 08:06:26 -05:00
Kris Thielemans
1c7a9119d2 FindHDF5: remove mark_as_advanced for non-cached variables 2017-03-01 08:06:26 -05:00
Kris Thielemans
8250a520aa FindHDF5: add HDF5_FIND_DEBUG variable to get debugging output 2017-02-28 16:10:11 -05:00
Kris Thielemans
4b847f12f6 FindHDF5: hide HDF5_DIR if HDF5 was found in another way 2017-02-28 16:01:04 -05:00
Brad King
96d6139386 FindHDF5: Fix search for language-specific header file
Refactoring in commit v3.6.0-rc1~85^2 (HDF5: Refactor the use of
compiler wrappers, 2016-04-04) converted code of the form

    if(${LANGUAGE} MATCHES ...)

to

    if(LANGUAGE MATCHES ...)

However, `LANGUAGE` is a foreach() loop variable and not a normal
variable so auto-dereference does not occur.  Restore the explicit `${}`
syntax and use the new name of the loop variable that has changed since
then too.

Fixes: #16651
2017-02-17 09:25:46 -05:00
Brad King
28bb68e347 FindHDF5: Restore HDF5_<LANG>_INCLUDE_DIR advanced cache entry mark
Refactoring in commit v3.6.0-rc1~72^2 (HDF5: Rework component searching
to correctly find HL for all bindings, 2016-05-12) renamed the language
loop variable used to construct the name of `HDF5_<LANG>_INCLUDE_DIR`
but forgot to update it in the `mark_as_advanced` call.  Fix it now.

Issue: #16651
2017-02-17 09:10:03 -05:00
Brad King
cf0d8f1fd6 FindHDF5: Restore HDF5_INCLUDE_DIR in all code paths
This compatibility variable should be set no matter which method was
used to find HDF5.  Even if `HDF5_INCLUDE_DIRS` was set by copying the
`HDF5_INCLUDE_DIR` value from `hdf5-config.cmake` it will not hurt to
copy the same value back.

Issue: #16566
2017-02-03 10:57:10 -05:00
Brad King
5564c01703 FindHDF5: Restore fallback to static libraries
Since commit v3.6.1~6^2~2 (FindHDF5: Fix h5cc arg parsing to work with
homebrew on Mac, 2016-07-11) we treated `HDF5_USE_STATIC_LIBRARIES` OFF
as a requirement for shared libraries.  It is just supposed to be a
preference.  Even if `HDF5_USE_STATIC_LIBRARIES` is not set we should
still fall back to finding static libraries if shared libraries are not
available.

Issue: #16566
2017-02-03 09:12:06 -05:00
Brad King
4908969f57 FindHDF5: Fix search with HDF5_ROOT
Refactoring in commit v3.6.0-rc1~72^2 (HDF5: Rework component searching
to correctly find HL for all bindings, 2016-05-12) turned off a large
amount of its logic when HDF5_ROOT is set.  This caused use of the hdf5
compiler wrapper to extract all needed libraries (e.g. z, dl as
dependencies of hdf5 static libraries) to be skipped when using
HDF5_ROOT.

Fix the search logic to honor HDF5_ROOT in all code paths.  Restrict the
search for hdf5-specific components to this root, but allow external
libraries to be found anywhere.

Fixes: #16566
2017-02-03 09:12:05 -05:00
Brad King
77f6d22ad1 FindHDF5: Use keywords in find_library calls
Clarify the purpose of each argument.
2017-02-03 09:12:05 -05:00
Brad King
3d5ad7236c FindHDF5: Initialize/finalize internal search options variable
While at it, use a more private name.
2017-02-03 09:12:05 -05:00
Brad King
ae89967f9d FindHDF5: Fix command-line parsing argument extraction order
Re-implement our internal `_HDF5_parse_compile_line` helper to process
command line arguments all at once and in order.  Otherwise the
libraries named by absolute path and those named by `-l` arguments are
not kept in order.

The new implementation will not handle separate arguments like
`-I /path/to/include/dir` but I have not seen the HDF5 compiler
wrappers produce this form.  If necessary the parsing loop can
be extended with a state variable to keep track of such pairs.
2017-02-03 09:12:04 -05:00
Ben Boeckel
5201a3065b FindHDF5: use the target rather than the path
On Windows, the `LOCATION` property gets the path to the `.dll` rather
than the `.lib` which is unsuitable for linking.
2017-01-16 11:13:48 -05:00
Brad King
acc2e03d79 Merge topic 'FindHDF5-restore-default-C'
ff3ccc1f FindHDF5: Restore pre-3.6 behavior of finding only C by default
2016-11-03 08:54:43 -04:00
Brad King
ff3ccc1f23 FindHDF5: Restore pre-3.6 behavior of finding only C by default
Refactoring in commit v3.6.0-rc1~72^2 (HDF5: Rework component searching
to correctly find HL for all bindings, 2016-05-12) changed the default
behavior from finding only the C bindings to finding everything for the
enabled languages.  Restore the original behavior for compatibility and
because many projects need only the C bindings.

Closes: #16397
2016-11-02 09:06:56 -04:00
Brad King
86578eccf2 Simplify CMake per-source license notices
Per-source copyright/license notice headers that spell out copyright holder
names and years are hard to maintain and often out-of-date or plain wrong.
Precise contributor information is already maintained automatically by the
version control tool.  Ultimately it is the receiver of a file who is
responsible for determining its licensing status, and per-source notices are
merely a convenience.  Therefore it is simpler and more accurate for
each source to have a generic notice of the license name and references to
more detailed information on copyright holders and full license terms.

Our `Copyright.txt` file now contains a list of Contributors whose names
appeared source-level copyright notices.  It also references version control
history for more precise information.  Therefore we no longer need to spell
out the list of Contributors in each source file notice.

Replace CMake per-source copyright/license notice headers with a short
description of the license and links to `Copyright.txt` and online information
available from "https://cmake.org/licensing".  The online URL also handles
cases of modules being copied out of our source into other projects, so we
can drop our notices about replacing links with full license text.

Run the `Utilities/Scripts/filter-notices.bash` script to perform the majority
of the replacements mechanically.  Manually fix up shebang lines and trailing
newlines in a few files.  Manually update the notices in a few files that the
script does not handle.
2016-09-27 15:14:44 -04:00
Brad King
44efb0a747 Merge topic 'FindHDF5-is-parallel'
b61eab24 FindHDF5: Fix regression in providing HDF5_IS_PARALLEL
2016-09-03 08:10:12 -04:00
Brad King
61b99cdeaa Merge topic 'FindHDF5-fix-hl-fortran'
befe8648 FindHDF5: Fix regression in finding hdf5hl_fortran
2016-09-03 08:10:09 -04:00
Brad King
0fd54137ae Merge branch 'FindHDF5-fix-hl-fortran' into release 2016-09-02 15:18:38 -04:00
Brad King
befe8648a3 FindHDF5: Fix regression in finding hdf5hl_fortran
Refactoring in commit v3.6.0-rc1~72^2 (HDF5: Rework component searching
to correctly find HL for all bindings, 2016-05-12) accidentally dropped
the name `hdf5hl_fortran` from the list of library names and replaced it
with `hdf5_hl_fortran`.  IIUC the latter name is when HDF5 is built with
CMake and the former name is for other build systems.  Since this is the
non-CMake code path, user the former name.

Closes: #16233
2016-09-02 15:09:47 -04:00
Brad King
b61eab249f FindHDF5: Fix regression in providing HDF5_IS_PARALLEL
Since commit v3.6.0-rc1~85^2 (HDF5: Refactor the use of compiler
wrappers, 2016-04-01) we have additional code paths that find HDF5 and
suppress the original search logic.  Report HDF5_IS_PARALLEL from these
other code paths too.

Closes: #16257
2016-09-02 15:06:52 -04:00
Ben Boeckel
2bdba83e4b issues: update references to the CMake issue tracker
References to specific comments are left as-is since comments were not
migrated.
2016-08-15 09:34:06 -04:00
Chuck Atkins
8eb0b56c2a FindHDF5: Make sure compile definition vars keep the -D flag 2016-08-02 10:34:51 -04:00
Chuck Atkins
d5e4516ec2 FindHDF5: Cleanup inconsistent use of HDF5_ROOT 2016-07-12 15:32:10 -04:00
Chuck Atkins
4ece8bdd0f FindHDF5: Properly fail when required components are not found. 2016-07-12 13:40:41 -04:00
Chuck Atkins
87c1cd9c51 FindHDF5: Fix h5cc arg parsing to work with homebrew on Mac 2016-07-12 11:08:11 -04:00
Robert Maynard
234deec2ea FindHDF5: create all the *_LIBRARIES when using hdf5-config.cmake 2016-06-24 15:28:23 -04:00
Robert Maynard
963b576fd2 FindHDF5: cache the correct path to the high level libraries 2016-06-24 15:26:22 -04:00
Robert Maynard
9f2728cef3 FindHDF5: When component targets not found fallback to compiler wrappers 2016-06-23 12:31:26 -04:00