summaryrefslogtreecommitdiff
path: root/tiff/cmake/FindCMath.cmake
blob: 2da3b7f1bdb8d61ae0f6bbd04808e32492b3ca4c (plain)
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
# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
# file Copyright.txt or https://cmake.org/licensing for details.

#[=======================================================================[.rst:
FindCMath
--------

Find the native CMath includes and library.

IMPORTED Targets
^^^^^^^^^^^^^^^^

This module defines :prop_tgt:`IMPORTED` target ``CMath::CMath``, if
CMath has been found.

Result Variables
^^^^^^^^^^^^^^^^

This module defines the following variables:

::

  CMath_INCLUDE_DIRS   - Where to find math.h
  CMath_LIBRARIES      - List of libraries when using CMath.
  CMath_FOUND          - True if CMath found.

#]=======================================================================]


include(CheckSymbolExists)
include(CheckLibraryExists)

check_symbol_exists(pow "math.h" CMath_HAVE_LIBC_POW)
if(NOT CMath_HAVE_LIBC_POW)
    find_library(CMath_LIBRARY NAMES m)

    set(CMAKE_REQUIRED_LIBRARIES_SAVE ${CMAKE_REQUIRED_LIBRARIES})
    set(CMAKE_REQUIRED_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES} ${CMath_LIBRARY})
    check_symbol_exists(pow "math.h" CMath_HAVE_LIBM_POW)
    set(CMAKE_REQUIRED_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES_SAVE})
endif()

set(CMath_pow FALSE)
if(CMath_HAVE_LIBC_POW OR CMath_HAVE_LIBM_POW)
    set(CMath_pow TRUE)
endif()

set(CMath_INCLUDE_DIRS)

include(FindPackageHandleStandardArgs)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(CMath REQUIRED_VARS CMath_pow)

if(CMath_FOUND)
    if(NOT CMath_INCLUDE_DIRS)
        set(CMath_INCLUDE_DIRS)
    endif()
    if(NOT CMath_LIBRARIES)
        if (CMath_LIBRARY)
            set(CMath_LIBRARIES ${CMath_LIBRARY})
        endif()
    endif()

    if(NOT TARGET CMath::CMath)
        if(CMath_LIBRARIES)
            add_library(CMath::CMath UNKNOWN IMPORTED)
            set_target_properties(CMath::CMath PROPERTIES
                  IMPORTED_LOCATION "${CMath_LIBRARY}")
        else()
            add_library(CMath::CMath INTERFACE IMPORTED)
        endif()
    endif()
endif()