File: FindGMock.cmake

package info (click to toggle)
ycmd 0%2B20230103%2Bgitf53e7ac%2Bds-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 5,904 kB
  • sloc: python: 41,740; cpp: 6,055; java: 295; sh: 271; cs: 194; javascript: 150; ansic: 82; makefile: 46; xml: 18; objc: 10
file content (129 lines) | stat: -rw-r--r-- 4,607 bytes parent folder | download | duplicates (6)
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
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
# Locate the Google C++ Mocking Framework.
# (This file is almost an identical copy of the original FindGTest.cmake file,
#  feel free to use it as it is or modify it for your own needs.)
#
#
# Defines the following variables:
#
#   GMOCK_FOUND - Found the Google Testing framework
#   GMOCK_INCLUDE_DIRS - Include directories
#
# Also defines the library variables below as normal
# variables. These contain debug/optimized keywords when
# a debugging library is found.
#
#   GMOCK_BOTH_LIBRARIES - Both libgmock & libgmock-main
#   GMOCK_LIBRARIES - libgmock
#   GMOCK_MAIN_LIBRARIES - libgmock-main
#
# Accepts the following variables as input:
#
#   GMOCK_ROOT - (as a CMake or environment variable)
#                The root directory of the gmock install prefix
#
#   GMOCK_MSVC_SEARCH - If compiling with MSVC, this variable can be set to
#                       "MD" or "MT" to enable searching a gmock build tree
#                       (defaults: "MD")
#
#-----------------------
# Example Usage:
#
#    find_package(GMock REQUIRED)
#    include_directories(${GMOCK_INCLUDE_DIRS})
#
#    add_executable(foo foo.cc)
#    target_link_libraries(foo ${GMOCK_BOTH_LIBRARIES})
#
#=============================================================================
# This file is released under the MIT licence:
#
# Copyright (c) 2011 Matej Svec
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to
# deal in the Software without restriction, including without limitation the
# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
# sell copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in
# all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
# IN THE SOFTWARE.
#=============================================================================


function( _gmock_append_debugs _endvar _library )
  if( ${_library} AND ${_library}_DEBUG )
    set( _output optimized ${${_library}} debug ${${_library}_DEBUG} )
  else()
    set( _output ${${_library}} )
  endif()
  set( ${_endvar} ${_output} PARENT_SCOPE )
endfunction()

function( _gmock_find_library _name )
  find_library( ${_name}
    NAMES ${ARGN}
    HINTS
      $ENV{GMOCK_ROOT}
      ${GMOCK_ROOT}
    PATH_SUFFIXES ${_gmock_libpath_suffixes}
  )
  mark_as_advanced( ${_name} )
endfunction()


if( NOT DEFINED GMOCK_MSVC_SEARCH )
  set( GMOCK_MSVC_SEARCH MD )
endif()

set( _gmock_libpath_suffixes lib )
if( MSVC )
  if( GMOCK_MSVC_SEARCH STREQUAL "MD" )
    list( APPEND _gmock_libpath_suffixes
      msvc/gmock-md/Debug
      msvc/gmock-md/Release )
  elseif( GMOCK_MSVC_SEARCH STREQUAL "MT" )
    list( APPEND _gmock_libpath_suffixes
      msvc/gmock/Debug
      msvc/gmock/Release )
  endif()
endif()

find_path( GMOCK_INCLUDE_DIR gmock/gmock.h
  HINTS
    $ENV{GMOCK_ROOT}/include
    ${GMOCK_ROOT}/include
)
mark_as_advanced( GMOCK_INCLUDE_DIR )

if( MSVC AND GMOCK_MSVC_SEARCH STREQUAL "MD" )
  # The provided /MD project files for Google Mock add -md suffixes to the
  # library names.
  _gmock_find_library( GMOCK_LIBRARY            gmock-md  gmock )
  _gmock_find_library( GMOCK_LIBRARY_DEBUG      gmock-mdd gmockd )
  _gmock_find_library( GMOCK_MAIN_LIBRARY       gmock_main-md  gmock_main )
  _gmock_find_library( GMOCK_MAIN_LIBRARY_DEBUG gmock_main-mdd gmock_maind )
else()
  _gmock_find_library( GMOCK_LIBRARY            gmock )
  _gmock_find_library( GMOCK_LIBRARY_DEBUG      gmockd )
  _gmock_find_library( GMOCK_MAIN_LIBRARY       gmock_main )
  _gmock_find_library( GMOCK_MAIN_LIBRARY_DEBUG gmock_maind )
endif()

FIND_PACKAGE_HANDLE_STANDARD_ARGS( GMock DEFAULT_MSG GMOCK_LIBRARY GMOCK_INCLUDE_DIR GMOCK_MAIN_LIBRARY )

if( GMOCK_FOUND )
  set( GMOCK_INCLUDE_DIRS ${GMOCK_INCLUDE_DIR} )
  _gmock_append_debugs( GMOCK_LIBRARIES      GMOCK_LIBRARY )
  _gmock_append_debugs( GMOCK_MAIN_LIBRARIES GMOCK_MAIN_LIBRARY )
  set( GMOCK_BOTH_LIBRARIES ${GMOCK_LIBRARIES} ${GMOCK_MAIN_LIBRARIES} )
endif()