1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- # Distributed under the OSI-approved BSD 3-Clause License.
- # Copyright Stefano Sinigardi
- #.rst:
- # FindPThreads
- # ------------
- #
- # Find the PThreads includes and library.
- #
- # Result Variables
- # ^^^^^^^^^^^^^^^^
- #
- # This module defines the following variables:
- #
- # ``PThreads_windows_FOUND``
- # True if PThreads_windows library found
- #
- # ``PThreads_windows_INCLUDE_DIR``
- # Location of PThreads_windows headers
- #
- # ``PThreads_windows_LIBRARY``
- # List of libraries to link with when using PThreads_windows
- #
- include(${CMAKE_ROOT}/Modules/FindPackageHandleStandardArgs.cmake)
- include(${CMAKE_ROOT}/Modules/SelectLibraryConfigurations.cmake)
- if(NOT PThreads_windows_INCLUDE_DIR)
- find_path(PThreads_windows_INCLUDE_DIR NAMES pthread.h PATHS ${PThreads_windows_DIR} PATH_SUFFIXES include)
- endif()
- # Allow libraries to be set manually
- if(NOT PThreads_windows_LIBRARY)
- find_library(PThreads_windows_LIBRARY_RELEASE NAMES pthreadsVC2 pthreadVC2 PATHS ${PThreads_windows_DIR} PATH_SUFFIXES lib)
- find_library(PThreads_windows_LIBRARY_DEBUG NAMES pthreadsVC2d pthreadVC2d PATHS ${PThreads_windows_DIR} PATH_SUFFIXES lib)
- select_library_configurations(PThreads_windows)
- endif()
- find_package_handle_standard_args(PThreads_windows DEFAULT_MSG PThreads_windows_LIBRARY PThreads_windows_INCLUDE_DIR)
- mark_as_advanced(PThreads_windows_INCLUDE_DIR PThreads_windows_LIBRARY)
- set(PThreads_windows_DLL_DIR ${PThreads_windows_INCLUDE_DIR})
- list(TRANSFORM PThreads_windows_DLL_DIR APPEND "/../bin")
- message(STATUS "PThreads_windows_DLL_DIR: ${PThreads_windows_DLL_DIR}")
- find_file(PThreads_windows_LIBRARY_RELEASE_DLL NAMES pthreadVC2.dll PATHS ${PThreads_windows_DLL_DIR})
- find_file(PThreads_windows_LIBRARY_DEBUG_DLL NAMES pthreadVC2d.dll PATHS ${PThreads_windows_DLL_DIR})
- # Register imported libraries:
- # 1. If we can find a Windows .dll file (or if we can find both Debug and
- # Release libraries), we will set appropriate target properties for these.
- # 2. However, for most systems, we will only register the import location and
- # include directory.
- if( PThreads_windows_FOUND AND NOT TARGET PThreads_windows::PThreads_windows )
- if( EXISTS "${PThreads_windows_LIBRARY_RELEASE_DLL}" )
- add_library( PThreads_windows::PThreads_windows SHARED IMPORTED )
- set_target_properties( PThreads_windows::PThreads_windows PROPERTIES
- IMPORTED_LOCATION_RELEASE "${PThreads_windows_LIBRARY_RELEASE_DLL}"
- IMPORTED_IMPLIB "${PThreads_windows_LIBRARY_RELEASE}"
- INTERFACE_INCLUDE_DIRECTORIES "${PThreads_windows_INCLUDE_DIR}"
- IMPORTED_CONFIGURATIONS Release
- IMPORTED_LINK_INTERFACE_LANGUAGES "C" )
- if( EXISTS "${PThreads_windows_LIBRARY_DEBUG_DLL}" )
- set_property( TARGET PThreads_windows::PThreads_windows APPEND PROPERTY IMPORTED_CONFIGURATIONS Debug )
- set_target_properties( PThreads_windows::PThreads_windows PROPERTIES
- IMPORTED_LOCATION_DEBUG "${PThreads_windows_LIBRARY_DEBUG_DLL}"
- IMPORTED_IMPLIB_DEBUG "${PThreads_windows_LIBRARY_DEBUG}" )
- endif()
- else()
- add_library( PThreads_windows::PThreads_windows UNKNOWN IMPORTED )
- set_target_properties( PThreads_windows::PThreads_windows PROPERTIES
- IMPORTED_LOCATION_RELEASE "${PThreads_windows_LIBRARY_RELEASE}"
- INTERFACE_INCLUDE_DIRECTORIES "${PThreads_windows_INCLUDE_DIR}"
- IMPORTED_CONFIGURATIONS Release
- IMPORTED_LINK_INTERFACE_LANGUAGES "C" )
- if( EXISTS "${PThreads_windows_LIBRARY_DEBUG}" )
- set_property( TARGET PThreads_windows::PThreads_windows APPEND PROPERTY IMPORTED_CONFIGURATIONS Debug )
- set_target_properties( PThreads_windows::PThreads_windows PROPERTIES
- IMPORTED_LOCATION_DEBUG "${PThreads_windows_LIBRARY_DEBUG}" )
- endif()
- endif()
- endif()
|