BASIS  r3148
FindGMock.cmake
Go to the documentation of this file.
00001 ##############################################################################
00002 # @file  FindGMock.cmake
00003 # @brief Find Google Mock package.
00004 #
00005 # @par Input variables:
00006 # <table border="0">
00007 #   <tr>
00008 #     @tp @b GMock_DIR @endtp
00009 #     <td>The Google Mock package files are searched under the specified
00010 #         root directory. If they are not found there, the default search
00011 #         paths are considered. This variable can also be set as environment
00012 #         variable.</td>
00013 #   </tr>
00014 #   <tr>
00015 #     @tp @b GMOCK_DIR @endtp
00016 #     <td>Alternative environment variable for @p GMock_DIR.</td>
00017 #   </tr>
00018 #   <tr>
00019 #     @tp @b GMock_SHARED_LIBRARIES @endtp
00020 #     <td>Forces this module to search for shared libraries.
00021 #         Otherwise, static libraries are preferred.</td>
00022 #   </tr>
00023 # </table>
00024 #
00025 # @par Output variables:
00026 # <table border="0">
00027 #   <tr>
00028 #     @tp @b GMock_FOUND @endtp
00029 #     <td>Whether the package was found and the following CMake variables are valid.</td>
00030 #   </tr>
00031 #   <tr>
00032 #     @tp @b GMock_INCLUDE_DIR @endtp
00033 #     <td>Package include directories.</td>
00034 #   </tr>
00035 #   <tr>
00036 #     @tp @b GMock_INCLUDES @endtp
00037 #     <td>Include directories including prerequisite libraries.</td>
00038 #   </tr>
00039 #   <tr>
00040 #     @tp @b GMock_LIBRARY @endtp
00041 #     <td>Package libraries.</td>
00042 #   </tr>
00043 #   <tr>
00044 #     @tp @b GMock_LIBRARIES @endtp
00045 #     <td>Package ibraries and prerequisite libraries.</td>
00046 #   </tr>
00047 # </table>
00048 #
00049 # Copyright (c) 2011, 2012 University of Pennsylvania. All rights reserved.<br />
00050 # See https://www.cbica.upenn.edu/sbia/software/license.html or COPYING file.
00051 #
00052 # Contact: SBIA Group <sbia-software at uphs.upenn.edu>
00053 #
00054 # @ingroup CMakeFindModules
00055 ##############################################################################
00056 
00057 # ----------------------------------------------------------------------------
00058 # initialize search
00059 if (NOT GMock_DIR)
00060   if ($ENV{GMOCK_DIR})
00061     set (GMock_DIR "$ENV{GMOCK_DIR}" CACHE PATH "Installation prefix for Google Mock.")
00062   else ()
00063     set (GMock_DIR "$ENV{GMock_DIR}" CACHE PATH "Installation prefix for Google Mock.")
00064   endif ()
00065 endif ()
00066 
00067 set (GMock_ORIG_CMAKE_FIND_LIBRARY_SUFFIXES ${CMAKE_FIND_LIBRARY_SUFFIXES})
00068 
00069 if (GMock_SHARED_LIBRARIES)
00070   if (WIN32)
00071     set (CMAKE_FIND_LIBRARY_SUFFIXES .dll)
00072   else ()
00073     set (CMAKE_FIND_LIBRARY_SUFFIXES .so)
00074   endif()
00075 else ()
00076   if (WIN32)
00077     set (CMAKE_FIND_LIBRARY_SUFFIXES .lib)
00078   else ()
00079     set (CMAKE_FIND_LIBRARY_SUFFIXES .a)
00080   endif()
00081 endif ()
00082 
00083 # ----------------------------------------------------------------------------
00084 # find paths/files
00085 if (GMock_DIR)
00086 
00087   find_path (
00088     GMock_INCLUDE_DIR
00089       NAMES         gmock.h
00090       HINTS         "${GMock_DIR}"
00091       PATH_SUFFIXES "include/gmock"
00092       DOC           "Include directory for Google Mock."
00093       NO_DEFAULT_PATH
00094   )
00095 
00096   find_library (
00097     GMock_LIBRARY
00098       NAMES         gmock
00099       HINTS         "${GMock_DIR}"
00100       PATH_SUFFIXES "lib"
00101       DOC           "Link library for Google Mock (gmock)."
00102       NO_DEFAULT_PATH
00103   )
00104 
00105 else ()
00106 
00107   find_path (
00108     GMock_INCLUDE_DIR
00109       NAMES gmock.h
00110       HINTS ENV C_INCLUDE_PATH ENV CXX_INCLUDE_PATH
00111       DOC   "Include directory for Google Mock."
00112   )
00113 
00114   find_library (
00115     GMock_LIBRARY
00116       NAMES gmock
00117       HINTS ENV LD_LIBRARY_PATH
00118       DOC   "Link library for Google Mock (gmock)."
00119   )
00120 
00121 endif ()
00122 
00123 mark_as_advanced (GMock_INCLUDE_DIR)
00124 mark_as_advanced (GMock_LIBRARY)
00125 
00126 # ----------------------------------------------------------------------------
00127 # prerequisite libraries
00128 set (GMock_INCLUDES  "${GMock_INCLUDE_DIR}")
00129 set (GMock_LIBRARIES "${GMock_LIBRARY}")
00130 
00131 # ----------------------------------------------------------------------------
00132 # reset CMake variables
00133 set (CMAKE_FIND_LIBRARY_SUFFIXES ${GTest_ORIG_CMAKE_FIND_LIBRARY_SUFFIXES})
00134 
00135 # ----------------------------------------------------------------------------
00136 # aliases / backwards compatibility
00137 set (GMock_INCLUDE_DIRS "${GTest_INCLUDES}")
00138 
00139 # ----------------------------------------------------------------------------
00140 # handle the QUIETLY and REQUIRED arguments and set *_FOUND to TRUE
00141 # if all listed variables are found or TRUE
00142 include (FindPackageHandleStandardArgs)
00143 
00144 find_package_handle_standard_args (
00145   GMock
00146   REQUIRED_VARS
00147     GMock_INCLUDE_DIR
00148     GMock_LIBRARY
00149 )
00150 
00151 set (GMock_FOUND "${GMOCK_FOUND}")
00152 
00153 # ----------------------------------------------------------------------------
00154 # set GMock_DIR
00155 if (NOT GMock_DIR AND GMock_FOUND)
00156   string (REGEX REPLACE "include(/gmock)?/?" "" GMock_PREFIX "${GMock_INCLUDE_DIR}")
00157   set (GMock_DIR "${GMock_PREFIX}" CACHE PATH "Installation prefix for GMock." FORCE)
00158   unset (GMock_PREFIX)
00159 endif ()