FindHDF5: Fix regression in per-configuration library selection

When FindHDF5 was first added in commit e6734068 (Add HDF5 find
module..., 2009-08-24) it contained a workaround for a bug in
SelectLibraryConfigurations that did not transform lists correctly.
That bug was fixed by commit 5797512c (SelectLibraryConfiguration:
generate correct output when input vars are lists, 2012-07-28).  Then
refactoring in commit 04d4dc33 (SelectLibraryConfigurations: Use
-NOTFOUND instead of copying the vars, 2013-07-08) changed undocumented
behavior on which the original workaround relied.  The result puts
entries like HDF5_hdf5_LIBRARY_DEBUG-NOTFOUND in HDF5_LIBRARIES.

Fix this by dropping the original workaround since the underlying issue
has been fixed anyway.  Use the HDF5_${LIB}_LIBRARY selected by the call
to select_library_configurations directly.
This commit is contained in:
Brad King 2013-09-19 13:29:02 -04:00
parent 5e2b499485
commit 0f05961f03
1 changed files with 2 additions and 36 deletions

View File

@ -289,27 +289,13 @@ if( NOT HDF5_FOUND )
ENV HDF5_ROOT ENV HDF5_ROOT
PATH_SUFFIXES lib Lib ) PATH_SUFFIXES lib Lib )
select_library_configurations( HDF5_${LIB} ) select_library_configurations( HDF5_${LIB} )
# even though we adjusted the individual library names in list(APPEND HDF5_${LANGUAGE}_LIBRARIES ${HDF5_${LIB}_LIBRARY})
# select_library_configurations, we still need to distinguish
# between debug and release variants because HDF5_LIBRARIES will
# need to specify different lists for debug and optimized builds.
# We can't just use the HDF5_${LIB}_LIBRARY variable (which was set
# up by the selection macro above) because it may specify debug and
# optimized variants for a particular library, but a list of
# libraries is allowed to specify debug and optimized only once.
list( APPEND HDF5_${LANGUAGE}_LIBRARIES_DEBUG
${HDF5_${LIB}_LIBRARY_DEBUG} )
list( APPEND HDF5_${LANGUAGE}_LIBRARIES_RELEASE
${HDF5_${LIB}_LIBRARY_RELEASE} )
endforeach() endforeach()
list( APPEND HDF5_LIBRARY_DIRS ${HDF5_${LANGUAGE}_LIBRARY_DIRS} ) list( APPEND HDF5_LIBRARY_DIRS ${HDF5_${LANGUAGE}_LIBRARY_DIRS} )
# Append the libraries for this language binding to the list of all # Append the libraries for this language binding to the list of all
# required libraries. # required libraries.
list( APPEND HDF5_LIBRARIES_DEBUG list(APPEND HDF5_LIBRARIES ${HDF5_${LANGUAGE}_LIBRARIES})
${HDF5_${LANGUAGE}_LIBRARIES_DEBUG} )
list( APPEND HDF5_LIBRARIES_RELEASE
${HDF5_${LANGUAGE}_LIBRARIES_RELEASE} )
endforeach() endforeach()
# We may have picked up some duplicates in various lists during the above # We may have picked up some duplicates in various lists during the above
@ -329,30 +315,10 @@ if( NOT HDF5_FOUND )
if( HDF5_INCLUDE_DIRS ) if( HDF5_INCLUDE_DIRS )
_remove_duplicates_from_beginning( HDF5_INCLUDE_DIRS ) _remove_duplicates_from_beginning( HDF5_INCLUDE_DIRS )
endif() endif()
if( HDF5_LIBRARIES_DEBUG )
_remove_duplicates_from_beginning( HDF5_LIBRARIES_DEBUG )
endif()
if( HDF5_LIBRARIES_RELEASE )
_remove_duplicates_from_beginning( HDF5_LIBRARIES_RELEASE )
endif()
if( HDF5_LIBRARY_DIRS ) if( HDF5_LIBRARY_DIRS )
_remove_duplicates_from_beginning( HDF5_LIBRARY_DIRS ) _remove_duplicates_from_beginning( HDF5_LIBRARY_DIRS )
endif() endif()
# Construct the complete list of HDF5 libraries with debug and optimized
# variants when the generator supports them.
if( CMAKE_CONFIGURATION_TYPES OR CMAKE_BUILD_TYPE )
set( HDF5_LIBRARIES )
foreach( _lib ${HDF5_LIBRARIES_DEBUG} )
list( APPEND HDF5_LIBRARIES debug ${_lib} )
endforeach()
foreach( _lib ${HDF5_LIBRARIES_RELEASE} )
list( APPEND HDF5_LIBRARIES optimized ${_lib} )
endforeach()
else()
set( HDF5_LIBRARIES ${HDF5_LIBRARIES_RELEASE} )
endif()
# If the HDF5 include directory was found, open H5pubconf.h to determine if # If the HDF5 include directory was found, open H5pubconf.h to determine if
# HDF5 was compiled with parallel IO support # HDF5 was compiled with parallel IO support
set( HDF5_IS_PARALLEL FALSE ) set( HDF5_IS_PARALLEL FALSE )