aboutsummaryrefslogtreecommitdiff
path: root/sdk/compiler/cmake/modules/FindGoogleTestNV.cmake
blob: 2634f1a845979eb41845275fff6f7d4114b54fa2 (plain) (blame)
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
130
131
132
133
# - Try to find GoogleTest SDK
# - Sets GOOGLETEST_LIBRARIES - lists of the libraries found
# - Sets GOOGLETEST_INCLUDE_DIRS 

include(FindPackageHandleStandardArgs)

# Find the includes

# TODO: Do the version stuff properly!
find_path(GOOGLETEST_PATH include/gtest/gtest.h
	PATHS 
	$ENV{PM_googletest_PATH}
	${GW_DEPS_ROOT}/$ENV{PM_googletest_NAME}/${GoogleTestNV_FIND_VERSION}
)

if (TARGET_BUILD_PLATFORM STREQUAL "Windows")
	# If the project pulling in this dependency needs the static crt, then append that to the path.

	if (STATIC_WINCRT)
		SET(GOOGLETEST_CRT_SUFFIX "-staticcrt")
	else()
		SET(GOOGLETEST_CRT_SUFFIX "")
	endif()

	if (CMAKE_CL_64)
		SET(GOOGLETEST_ARCH_FOLDER "win64")
	else()
		SET(GOOGLETEST_ARCH_FOLDER "win32")
	endif()
	
	if (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 18.0.0.0 AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS 19.0.0.0)
		SET(VS_STR "vc12")
	elseif(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 19.0.0.0)
		SET(VS_STR "vc14")
	else()
		MESSAGE(FATAL_ERROR "Failed to find compatible FBXSDK - Only supporting VS2013 and VS2015")
	endif()


	# Now find all of the PhysX libs in the lib directory

	SET(LIB_PATH ${GOOGLETEST_PATH}/lib/${VS_STR}${GOOGLETEST_ARCH_FOLDER}-cmake${GOOGLETEST_CRT_SUFFIX})

elseif(TARGET_BUILD_PLATFORM STREQUAL "PS4")
	SET(LIB_PATH ${GOOGLETEST_PATH}/lib/PS4)
	SET(CMAKE_FIND_LIBRARY_SUFFIXES ".a")
	SET(CMAKE_FIND_LIBRARY_PREFIXES "lib")
elseif(TARGET_BUILD_PLATFORM STREQUAL "XboxOne")
	SET(LIB_PATH ${GOOGLETEST_PATH}/lib/xboxone-${XDK_VERSION})
	SET(CMAKE_FIND_LIBRARY_SUFFIXES ".a")
	SET(CMAKE_FIND_LIBRARY_PREFIXES "lib")
elseif(TARGET_BUILD_PLATFORM STREQUAL "linux")
	if(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 5.0)
		SET(LIB_PATH ${GOOGLETEST_PATH}/lib/gcc-5.4)
	else()
		SET(LIB_PATH ${GOOGLETEST_PATH}/lib/gcc-4.8)
	endif()
	SET(CMAKE_FIND_LIBRARY_SUFFIXES ".a")
	SET(CMAKE_FIND_LIBRARY_PREFIXES "lib")
endif()

MESSAGE("GTEst libpath:" ${LIB_PATH})

if(TARGET_BUILD_PLATFORM STREQUAL "linux")
	find_library(GTEST_LIB
		NAMES gtest
		PATHS ${LIB_PATH}
	)

	find_library(GTEST_MAIN_LIB
		NAMES gtest_main
		PATHS ${LIB_PATH}
	)

    SET(GTEST_LIB_DEBUG ${GTEST_LIB})
    SET(GTEST_MAIN_LIB_DEBUG ${GTEST_MAIN_LIB})
else()
    find_library(GTEST_LIB
        NAMES gtest
        PATHS ${LIB_PATH}/Release
    )

    find_library(GTEST_LIB_DEBUG
        NAMES gtest
        PATHS ${LIB_PATH}/Debug
    )

    find_library(GTEST_MAIN_LIB
        NAMES gtest_main
        PATHS ${LIB_PATH}/Release
    )

    find_library(GTEST_MAIN_LIB_DEBUG
        NAMES gtest_main
        PATHS ${LIB_PATH}/Debug
    )
endif()

FIND_PACKAGE_HANDLE_STANDARD_ARGS(GOOGLETEST
	DEFAULT_MSG
	GOOGLETEST_PATH

    GTEST_LIB 
    GTEST_MAIN_LIB 
    GTEST_LIB_DEBUG 
    GTEST_MAIN_LIB_DEBUG 
)

if (GOOGLETEST_FOUND)
	# NOTE: This include list is way too long and reaches into too many internals.
	# Also may not be good enough for all users.
	SET(GOOGLETEST_INCLUDE_DIRS 
		${GOOGLETEST_PATH}/include 
		${GOOGLETEST_PATH}/include/gtest 
	)
	
	SET(GOOGLETEST_LIBS_RELEASE ${GTEST_LIB} ${GTEST_MAIN_LIB}
		CACHE STRING ""
	)
	SET(GOOGLETEST_LIBS_DEBUG ${GTEST_LIB_DEBUG} ${GTEST_MAIN_LIB_DEBUG}
		CACHE STRING ""
	)
	
	SET(GOOGLETEST_LIBRARIES "" CACHE STRING "")
	
	foreach(x ${GOOGLETEST_LIBS_RELEASE})
		list(APPEND GOOGLETEST_LIBRARIES optimized ${x})
	endforeach()
	
	foreach(x ${GOOGLETEST_LIBS_DEBUG})
		list(APPEND GOOGLETEST_LIBRARIES debug ${x})
	endforeach()
endif()