darknet/cmake/Modules/FindPThreads_windows.cmake

84 lines
3.7 KiB
CMake

# 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()