File: FindPthread.cmake

package info (click to toggle)
fcitx5-bamboo 1.0.2-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 444 kB
  • sloc: cpp: 625; makefile: 3; sh: 1
file content (59 lines) | stat: -rw-r--r-- 2,109 bytes parent folder | download | duplicates (15)
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
# Try to find Pthread functionality
# Once done this will define
#
#  PTHREAD_FOUND - system has Pthread
#  PTHREAD_INCLUDE_DIR - Pthread include directory
#  PTHREAD_LIBRARIES - Libraries needed to use Pthread
#
# TODO: This will enable translations only if Gettext functionality is
# present in libc. Must have more robust system for release, where Gettext
# functionality can also reside in standalone Gettext library, or the one
# embedded within kdelibs (cf. gettext.m4 from Gettext source).
#
# Copyright (c) 2006, Chusslove Illich, <caslav.ilic@gmx.net>
# Copyright (c) 2007, Alexander Neundorf, <neundorf@kde.org>
# Copyright (c) 2016, Xuetian Weng <wengxt@gmail.com>
#
# Redistribution and use is allowed according to the terms of the BSD license.
# For details see the accompanying COPYING-CMAKE-SCRIPTS file.

find_path(PTHREAD_INCLUDE_DIR NAMES pthread.h)

if(PTHREAD_INCLUDE_DIR)
  include(CheckFunctionExists)
  check_function_exists(pthread_create PTHREAD_LIBC_HAS_PTHREAD_CREATE)

  if (PTHREAD_LIBC_HAS_PTHREAD_CREATE)
    set(PTHREAD_LIBRARIES)
    set(PTHREAD_LIB_FOUND TRUE)
  else (PTHREAD_LIBC_HAS_PTHREAD_CREATE)
    find_library(PTHREAD_LIBRARIES NAMES pthread libpthread )
    if(PTHREAD_LIBRARIES)
      set(PTHREAD_LIB_FOUND TRUE)
    endif(PTHREAD_LIBRARIES)
  endif (PTHREAD_LIBC_HAS_PTHREAD_CREATE)

endif(PTHREAD_INCLUDE_DIR)

include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(Pthread
    FOUND_VAR
        PTHREAD_FOUND
    REQUIRED_VARS
        PTHREAD_INCLUDE_DIR  PTHREAD_LIB_FOUND
)

if(PTHREAD_FOUND AND NOT TARGET Pthread::Pthread)
    if (PTHREAD_LIBRARIES)
        add_library(Pthread::Pthread UNKNOWN IMPORTED)
        set_target_properties(Pthread::Pthread PROPERTIES
            IMPORTED_LOCATION "${PTHREAD_LIBRARIES}")
    else()
        add_library(Pthread::Pthread INTERFACE IMPORTED )
    endif()
    set_target_properties(Pthread::Pthread PROPERTIES
        INTERFACE_INCLUDE_DIRECTORIES "${PTHREAD_INCLUDE_DIR}"
    )
endif()

mark_as_advanced(PTHREAD_INCLUDE_DIR  PTHREAD_LIBRARIES  PTHREAD_LIBC_HAS_PTHREAD_CREATE  PTHREAD_LIB_FOUND)