Handle gmock without pkgconfig 42/233442/5
authorZofia Abramowska <z.abramowska@samsung.com>
Mon, 11 May 2020 15:58:24 +0000 (17:58 +0200)
committerZofia Abramowska <z.abramowska@samsung.com>
Thu, 25 Jun 2020 17:16:20 +0000 (19:16 +0200)
Googletest and googlemock do not provide libraries on
typical Linux distributions. They need to be built from sources,
preferably during project build.

Change-Id: I2f56ee8bf71f155a577fbbd2d6d72d0d350016b0

test/CMakeLists.txt

index 969ebbb3cd2d9bb2a94f698380f41d9f8d00b490..46f14ec7100a85d110d058bba5612aeb6a5939b6 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (c) 2014-2019 Samsung Electronics Co., Ltd All Rights Reserved
+# Copyright (c) 2014-2020 Samsung Electronics Co., Ltd All Rights Reserved
 #
 #    Licensed under the Apache License, Version 2.0 (the "License");
 #    you may not use this file except in compliance with the License.
 # @author      Radoslaw Bartosiak <r.bartosiak@samsung.com>
 # @brief       Cmake for tests
 #
-PKG_CHECK_MODULES(PKGS REQUIRED gmock)
+SET(GOOGLETEST_DIR
+    "/usr/src/googletest"
+    CACHE PATH
+    "Google test and gmock source directory")
+
+PKG_CHECK_MODULES(GMOCK_PKGS QUIET gmock)
+
+IF (GMOCK_PKGS_FOUND)
+    SET(TEST_DEP_INCLUDE_DIRS ${GMOCK_PKGS_INCLUDE_DIRS})
+    SET(TEST_DEP_LDFLAGS ${GMOCK_PKGS_LDFLAGS})
+    SET(TEST_DEP_LIBRARIES ${GMOCK_PKGS_LIBRARIES})
+ELSE ()
+    SET(TEST_DEP_LIBRARIES "gmock")
+    IF (NOT EXISTS ${GOOGLETEST_DIR})
+        MESSAGE(FATAL_ERROR "No googletest on the system.")
+    ENDIF ()
+    ADD_SUBDIRECTORY(${GOOGLETEST_DIR}
+        ${CMAKE_CURRENT_BINARY_DIR}/googletest-build
+        EXCLUDE_FROM_ALL
+        )
+ENDIF ()
 
 ADD_DEFINITIONS("-DCYNARA_NO_LOGS")
 SET(CYNARA_SRC ${PROJECT_SOURCE_DIR}/src)
@@ -136,7 +156,7 @@ SET(CYNARA_TESTS_SOURCES
 SET(CYNARA_MIGRATION_TOOL_TESTS tools/cynara-db-migration-tests)
 
 INCLUDE_DIRECTORIES(
-    ${PKGS_INCLUDE_DIRS}
+    ${TEST_DEP_INCLUDE_DIRS}
     ${CYNARA_SRC}/common
     ${CYNARA_SRC}/include
     ${CYNARA_SRC}
@@ -152,8 +172,8 @@ ADD_EXECUTABLE(${TARGET_CYNARA_TESTS}
 )
 
 TARGET_LINK_LIBRARIES(${TARGET_CYNARA_TESTS}
-    ${PKGS_LDFLAGS}
-    ${PKGS_LIBRARIES}
+    ${TEST_DEP_LDFLAGS}
+    ${TEST_DEP_LIBRARIES}
     crypt
 )
 INSTALL(TARGETS ${TARGET_CYNARA_TESTS} DESTINATION ${BIN_DIR})