Skip to content

Commit

Permalink
Make sure find_library() finds static/shared libraries correctly base…
Browse files Browse the repository at this point in the history
…d on BUILD_SHARED_LIBS
  • Loading branch information
DavidAce committed Jun 2, 2021
1 parent 9185156 commit adaffc4
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 11 deletions.
22 changes: 11 additions & 11 deletions cmake/SetupDependenciesCMake.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -122,19 +122,19 @@ if(H5PP_PACKAGE_MANAGER MATCHES "cmake")
find_package(HDF5 1.8 COMPONENTS C HL)
if(NOT TARGET hdf5::all)
message(STATUS "HDF5 will be installed into ${H5PP_DEPS_INSTALL_DIR}")
find_library(SZIP_LIBRARY NAMES sz HINTS ${H5PP_DEPS_INSTALL_DIR} PATH_SUFFIXES aec lib aec/lib NO_DEFAULT_PATH)
find_library(AEC_LIBRARY NAMES aec HINTS ${H5PP_DEPS_INSTALL_DIR} PATH_SUFFIXES aec lib aec/lib NO_DEFAULT_PATH)
find_library(ZLIB_LIBRARY NAMES z HINTS ${H5PP_DEPS_INSTALL_DIR} PATH_SUFFIXES zlib lib zlib/lib NO_DEFAULT_PATH)
find_path(SZIP_ROOT NAMES include/szlib.h HINTS ${H5PP_DEPS_INSTALL_DIR} PATH_SUFFIXES aec NO_DEFAULT_PATH)
find_path(SZIP_INCLUDE_DIR NAMES szlib.h HINTS ${H5PP_DEPS_INSTALL_DIR} PATH_SUFFIXES aec/include NO_DEFAULT_PATH)
find_path(ZLIB_ROOT NAMES include/zlib.h HINTS ${H5PP_DEPS_INSTALL_DIR} PATH_SUFFIXES zlib NO_DEFAULT_PATH)
find_path(ZLIB_INCLUDE_DIR NAMES zlib.h HINTS ${H5PP_DEPS_INSTALL_DIR} PATH_SUFFIXES zlib/include NO_DEFAULT_PATH)
find_library(SZIP_LIBRARY NAMES sz szip HINTS ${H5PP_DEPS_INSTALL_DIR} PATH_SUFFIXES aec lib aec/lib NO_DEFAULT_PATH)
find_library(AEC_LIBRARY NAMES aec HINTS ${H5PP_DEPS_INSTALL_DIR} PATH_SUFFIXES aec lib aec/lib NO_DEFAULT_PATH)
find_library(ZLIB_LIBRARY NAMES z HINTS ${H5PP_DEPS_INSTALL_DIR} PATH_SUFFIXES zlib lib zlib/lib NO_DEFAULT_PATH)
find_path(SZIP_ROOT NAMES include/szlib.h HINTS ${H5PP_DEPS_INSTALL_DIR} PATH_SUFFIXES aec NO_DEFAULT_PATH)
find_path(SZIP_INCLUDE_DIR NAMES szlib.h HINTS ${H5PP_DEPS_INSTALL_DIR} PATH_SUFFIXES aec/include NO_DEFAULT_PATH)
find_path(ZLIB_ROOT NAMES include/zlib.h HINTS ${H5PP_DEPS_INSTALL_DIR} PATH_SUFFIXES zlib NO_DEFAULT_PATH)
find_path(ZLIB_INCLUDE_DIR NAMES zlib.h HINTS ${H5PP_DEPS_INSTALL_DIR} PATH_SUFFIXES zlib/include NO_DEFAULT_PATH)
if(NOT SZIP_LIBRARY OR NOT AEC_LIBRARY)
install_package(aec "${H5PP_DEPS_INSTALL_DIR}" "")
find_library(SZIP_LIBRARY NAMES sz HINTS ${H5PP_DEPS_INSTALL_DIR} PATH_SUFFIXES aec lib aec/lib NO_DEFAULT_PATH REQUIRED)
find_library(AEC_LIBRARY NAMES aec HINTS ${H5PP_DEPS_INSTALL_DIR} PATH_SUFFIXES aec lib aec/lib NO_DEFAULT_PATH REQUIRED)
find_path(SZIP_ROOT NAMES include/szlib.h HINTS ${H5PP_DEPS_INSTALL_DIR} PATH_SUFFIXES aec NO_DEFAULT_PATH REQUIRED)
find_path(SZIP_INCLUDE_DIR NAMES szlib.h HINTS ${H5PP_DEPS_INSTALL_DIR} PATH_SUFFIXES aec/include NO_DEFAULT_PATH REQUIRED)
find_library(SZIP_LIBRARY NAMES sz szip HINTS ${H5PP_DEPS_INSTALL_DIR} PATH_SUFFIXES aec lib aec/lib NO_DEFAULT_PATH REQUIRED)
find_library(AEC_LIBRARY NAMES aec HINTS ${H5PP_DEPS_INSTALL_DIR} PATH_SUFFIXES aec lib aec/lib NO_DEFAULT_PATH REQUIRED)
find_path(SZIP_ROOT NAMES include/szlib.h HINTS ${H5PP_DEPS_INSTALL_DIR} PATH_SUFFIXES aec NO_DEFAULT_PATH REQUIRED)
find_path(SZIP_INCLUDE_DIR NAMES szlib.h HINTS ${H5PP_DEPS_INSTALL_DIR} PATH_SUFFIXES aec/include NO_DEFAULT_PATH REQUIRED)
endif()
if(NOT ZLIB_LIBRARY)
install_package(zlib "${H5PP_DEPS_INSTALL_DIR}" "")
Expand Down
11 changes: 11 additions & 0 deletions cmake/SetupSearchPaths.cmake
Original file line number Diff line number Diff line change
@@ -1,6 +1,17 @@
# Append search paths for find_package and find_library calls
list(APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake)

# Make sure find_library prefers static/shared library depending on BUILD_SHARED_LIBS
# This is important when finding dependencies such as zlib which provides both shared and static libraries.
if(BUILD_SHARED_LIBS AND NOT DEFINED CMAKE_FIND_LIBRARY_SUFFIXES)
# This is order is the default
set(CMAKE_FIND_LIBRARY_SUFFIXES ${CMAKE_SHARED_LIBRARY_SUFFIX};${CMAKE_STATIC_LIBRARY_SUFFIX} CACHE STRING "Prefer finding shared libraries" FORCE )
else()
set(CMAKE_FIND_LIBRARY_SUFFIXES ${CMAKE_STATIC_LIBRARY_SUFFIX};${CMAKE_SHARED_LIBRARY_SUFFIX} CACHE STRING "Prefer finding static libraries" FORCE )
endif()





# Setup build and install directories for dependencies
Expand Down

0 comments on commit adaffc4

Please sign in to comment.