File: FindLibPThreadsWin32.cmake

package info (click to toggle)
bladerf 0.2022.11-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 373,752 kB
  • sloc: ansic: 1,186,428; xml: 150,799; vhdl: 24,182; tcl: 15,408; python: 3,409; sh: 1,551; makefile: 1,255; asm: 158; csh: 18; cpp: 9
file content (113 lines) | stat: -rw-r--r-- 4,013 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
# This is file is based off of the FindLibUSB.cmake file written by Hendrik Sattler,
# from the OpenOBEX project (licensed GPLv2/LGPL).  (If this is not correct,
# please contact us so we can attribute the author appropriately.)
#
# https://github.com/zuckschwerdt/openobex/blob/master/CMakeModules/FindLibUSB.cmake
# http://dev.zuckschwerdt.org/openobex/
#
# Find pthreads-win32
#
# This requires the LIBPTHREADSWIN32_PATH variable to be set to the path to the
# a pthreads-win32 release, such as the Pre-built.2 directory from the 2.9.1 release:
#   ftp://sourceware.org/pub/pthreads-win32/pthreads-w32-2-9-1-release.zip
#
# The following standard variables get defined:
#  LIBPTHREADSWIN32_FOUND:        true if LibUSB was found
#  LIBPTHREADSWIN32_HEADER_FILE:  the location of the C header file
#  LIBPTHREADSWIN32_INCLUDE_DIRS: the directories that contain headers
#  LIBPTHREADSWIN32_LIBRARIES:    the library files
#  LIBPTHREADSWIN32_LIB_COPYING:  the license associated with the library
#  LIBPTHREADSWIN32_DLL:          the pthreadVC2.dll file

if(DEFINED __INCLUDED_BLADERF_FINDLIBPTHREADSWIN32_CMAKE)
    return()
endif()
set(__INCLUDED_BLADERF_FINDLIBPTHREADSWIN32_CMAKE TRUE)

include ( CheckLibraryExists )
include ( CheckIncludeFile )

set(LIBPTHREADSWIN32_PATH
        "C:/Program Files (x86)/pthreads-win32"
        CACHE
        PATH
        "Path to win-pthreads files. (This is generally only needed for Windows users who downloaded binary distributions.)"
    )

find_file ( LIBPTHREADSWIN32_HEADER_FILE
    NAMES
      pthread.h
    PATHS
      ${LIBPTHREADSWIN32_PATH}
      PATH_SUFFIXES
      include include
)
mark_as_advanced ( LIBPTHREADSWIN32_HEADER_FILE )
get_filename_component ( LIBPTHREADSWIN32_INCLUDE_DIRS "${LIBPTHREADSWIN32_HEADER_FILE}" PATH )

if ( WIN32 )
    if ( MSVC )
        if ( CMAKE_CL_64 )
            set ( LIBPTHREADSWIN32_LIBRARY_PATH_SUFFIX x64 )
        else ( CMAKE_CL_64 )
            set ( LIBPTHREADSWIN32_LIBRARY_PATH_SUFFIX x86 )
        endif ( CMAKE_CL_64 )
    elseif ( CMAKE_COMPILER_IS_GNUCC )
        if ( CMAKE_SIZEOF_VOID_P EQUAL 8 )
            set ( LIBPTHREADSWIN32_LIBRARY_PATH_SUFFIX x64 )
        else ( CMAKE_SIZEOF_VOID_P EQUAL 8 )
                set ( LIBPTHREADSWIN32_LIBRARY_PATH_SUFFIX x86 )
        endif ( CMAKE_SIZEOF_VOID_P EQUAL 8 )
    endif ( MSVC )

    find_library ( PTHREAD_LIBRARY
      NAMES
        pthreadVC2
      PATHS
        ${LIBPTHREADSWIN32_PATH}
      PATH_SUFFIXES
        lib/${LIBPTHREADSWIN32_LIBRARY_PATH_SUFFIX}
    )

    mark_as_advanced ( PTHREAD_LIBRARY )
    if ( PTHREAD_LIBRARY )
        set ( LIBPTHREADSWIN32_LIBRARIES ${PTHREAD_LIBRARY} )
    endif ( PTHREAD_LIBRARY )

    find_file ( PTHREAD_DLL
      NAMES
        pthreadVC2.dll
      PATHS
        ${LIBPTHREADSWIN32_PATH}
      PATH_SUFFIXES
        dll/${LIBPTHREADSWIN32_LIBRARY_PATH_SUFFIX}
        .
    )

    mark_as_advanced ( PTHREAD_DLL )
    if ( PTHREAD_DLL )
        set ( LIBPTHREADSWIN32_DLL ${PTHREAD_DLL} )
    endif ( PTHREAD_DLL )

else ( WIN32 )
    message(FATAL_ERROR "This file only supports Windows")
endif ( WIN32 )

set ( LIBPTHREADSWIN32_LIB_COPYING
      "${LIBPTHREADSWIN32_PATH}/COPYING.LIB" )
if ( NOT EXISTS ${LIBPTHREADSWIN32_LIB_COPYING} )
    message(FATAL_ERROR "Unable to find pthread-win32 COPYING.LIB file")
endif ()

if ( LIBPTHREADSWIN32_INCLUDE_DIRS AND LIBPTHREADSWIN32_LIBRARIES AND LIBPTHREADSWIN32_DLL )
    set ( LIBPTHREADSWIN32_FOUND true )
endif ( LIBPTHREADSWIN32_INCLUDE_DIRS AND LIBPTHREADSWIN32_LIBRARIES AND LIBPTHREADSWIN32_DLL )

if ( LIBPTHREADSWIN32_FOUND )
    set ( CMAKE_REQUIRED_INCLUDES "${LIBPTHREADSWIN32_INCLUDE_DIRS}" )
    check_include_file ( "{LIBPTHREADSWIN32_HEADER_FILE}" LIBPTHREADSWIN32_FOUND )
endif ( LIBPTHREADSWIN32_FOUND )

if ( NOT LIBPTHREADSWIN32_FOUND )
    message ( FATAL_ERROR "pthreads-win32 not found. If you're using a binary distribution, try setting -DLIBPTHREADSWIN32_PATH=<path_to_win_pthread_files>." )
endif ( NOT LIBPTHREADSWIN32_FOUND )