kde-extraapps/amarok/cmake/modules/FindGooglemock.cmake
2014-11-28 15:37:25 +00:00

133 lines
4.4 KiB
CMake

# - Find Googlemock
# Find the google mock includes and the google mock libraries
# This module defines
# GOOGLEMOCK_INCLUDE_DIR, root google mock include dir
# GOOGLEMOCK_LIBRARY, the path to Google Mock library
# GOOGLEMOCK_LIBRARIES, the path to Google Mock and Google Test library
# GOOGLEMOCK_FOUND, whether Google Mock was found
find_program(GMOCK-CONFIG_EXECUTABLE NAMES gmock-config PATHS
${BIN_INSTALL_DIR}
/opt/local/bin
/usr/bin
)
if(GMOCK-CONFIG_EXECUTABLE)
exec_program(${GMOCK-CONFIG_EXECUTABLE} ARGS --includedir OUTPUT_VARIABLE GOOGLEMOCK_INCLUDE_DIR)
exec_program(${GMOCK-CONFIG_EXECUTABLE} ARGS --ldflags OUTPUT_VARIABLE GOOGLEMOCK_LDFLAGS)
exec_program(${GMOCK-CONFIG_EXECUTABLE} ARGS --libs OUTPUT_VARIABLE GOOGLEMOCK_libs_tmp)
set(GOOGLEMOCK_LIBRARIES ${GOOGLEMOCK_LDFLAGS} ${GOOGLEMOCK_libs_tmp})
if(GOOGLEMOCK_INCLUDE_DIR AND GOOGLEMOCK_LIBRARIES)
set(GOOGLEMOCK_FOUND TRUE)
message(STATUS "Found libgmock: ${GOOGLEMOCK_INCLUDE_DIR}, ${GOOGLEMOCK_LIBRARIES}")
else(GOOGLEMOCK_INCLUDE_DIR AND GOOGLEMOCK_LIBRARIES)
set(GOOGLEMOCK_FOUND FALSE)
if (GOOGLEMOCK_FIND_REQUIRED)
message(FATAL_ERROR "Could NOT find required package Googlemock")
endif(GOOGLEMOCK_FIND_REQUIRED)
endif(GOOGLEMOCK_INCLUDE_DIR AND GOOGLEMOCK_LIBRARIES)
else(GMOCK-CONFIG_EXECUTABLE)
find_path(GOOGLEMOCK_INCLUDE_DIR NAMES gmock.h
HINTS
~/usr/include
/opt/local/include
/usr/include
/usr/local/include
/opt/kde4/include
${KDE4_INCLUDE_DIR}
PATH_SUFFIXES gmock
)
find_library( GOOGLEMOCK_LIBRARY NAMES gmock
PATHS
~/usr/lib
/opt/local/lib
/usr/lib
/usr/lib64
/usr/local/lib
/opt/kde4/lib
${KDE4_LIB_DIR}
)
find_library( GOOGLEMOCK_DEP_GTEST_LIBRARY NAMES gtest
PATHS
~/usr/lib
/opt/local/lib
/usr/lib
/usr/lib64
/usr/local/lib
/opt/kde4/lib
${KDE4_LIB_DIR}
)
# google-mock >= 1.5 requires pthread
# see: http://code.google.com/p/googlemock/source/browse/trunk/CHANGES
if( NOT WIN32 AND GOOGLEMOCK_LIBRARY )
find_library( GOOGLEMOCK_DEP_PTHREAD_LIBRARY NAMES pthread
PATHS
~/usr/lib
/opt/local/lib
/usr/lib
/usr/lib64
/usr/local/lib
/opt/kde4/lib
${KDE4_LIB_DIR}
)
endif( NOT WIN32 AND GOOGLEMOCK_LIBRARY )
# Google recommends not to distribute a pre-build libary and ubuntu is following
# this advice with libgtest 1.6.0
# However they are distributing sources, so we are looking if we at least have
# them available
if( NOT GOOGLEMOCK_DEP_GTEST_LIBRARY )
find_path( GOOGLEMOCK_DEP_GTEST_SOURCES NAMES gtest
PATHS /usr/src
NO_DEFAULT_PATH
NO_CMAKE_PATH
)
# in this case we also have to use the static google mock library
set( OLD_CMAKE_FIND_LIBRARY_SUFFIXES ${CMAKE_FIND_LIBRARY_SUFFIXES})
set( CMAKE_FIND_LIBRARY_SUFFIXES .a)
find_library( GOOGLEMOCK_LIBRARY_STATIC NAMES gmock
PATHS
~/usr/lib
/opt/local/lib
/usr/lib
/usr/lib64
/usr/local/lib
/opt/kde4/lib
${KDE4_LIB_DIR}
)
set( CMAKE_FIND_LIBRARY_SUFFIXES ${OLD_CMAKE_FIND_LIBRARY_SUFFIXES})
endif( NOT GOOGLEMOCK_DEP_GTEST_LIBRARY )
# -- googlemock and gtest library available
if(GOOGLEMOCK_INCLUDE_DIR AND GOOGLEMOCK_LIBRARY AND GOOGLEMOCK_DEP_GTEST_LIBRARY)
set(GOOGLEMOCK_FOUND TRUE)
set(GOOGLEMOCK_LIBRARIES ${GOOGLEMOCK_LIBRARY} ${GOOGLEMOCK_DEP_GTEST_LIBRARY} ${GOOGLEMOCK_DEP_PTHREAD_LIBRARY})
message(STATUS "Found libgmock: ${GOOGLEMOCK_INCLUDE_DIR}, ${GOOGLEMOCK_LIBRARIES}")
# -- googlemock and gtest sources available
elseif(GOOGLEMOCK_INCLUDE_DIR AND GOOGLEMOCK_LIBRARY AND GOOGLEMOCK_DEP_GTEST_SOURCES)
set(GOOGLEMOCK_FOUND TRUE)
set(GOOGLEMOCK_LIBRARIES ${GOOGLEMOCK_LIBRARY_STATIC} gtest)
set(GOOGLEMOCK_GTEST_SOURCES "${GOOGLEMOCK_DEP_GTEST_SOURCES}/gtest" CACHE PATH "Path to the gtest sources")
message(STATUS "Found libgmock but need to build gtest: ${GOOGLEMOCK_INCLUDE_DIR}, ${GOOGLEMOCK_LIBRARIES} ${GOOGLEMOCK_DEP_GTEST_SOURCES}")
# -- googlemock but no gtest
else(GOOGLEMOCK_INCLUDE_DIR AND GOOGLEMOCK_LIBRARY AND GOOGLEMOCK_DEP_GTEST_SOURCES)
set(GOOGLEMOCK_FOUND FALSE)
if (GOOGLEMOCK_FIND_REQUIRED)
message(FATAL_ERROR "Could NOT find required package Googlemock or gtest")
endif(GOOGLEMOCK_FIND_REQUIRED)
endif(GOOGLEMOCK_INCLUDE_DIR AND GOOGLEMOCK_LIBRARY AND GOOGLEMOCK_DEP_GTEST_LIBRARY)
endif(GMOCK-CONFIG_EXECUTABLE)
mark_as_advanced(GOOGLEMOCK_INCLUDE_DIR GOOGLEMOCK_LIBRARIES)