[CMake] Allow port specific options on gtest
authordon.olmstead@sony.com <don.olmstead@sony.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 6 Sep 2018 03:46:17 +0000 (03:46 +0000)
committerdon.olmstead@sony.com <don.olmstead@sony.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 6 Sep 2018 03:46:17 +0000 (03:46 +0000)
https://bugs.webkit.org/show_bug.cgi?id=189313

Reviewed by Alex Christensen.

Source/ThirdParty:

Allows a port to configure options within gtest for its platform.
The library type can be set otherwise it defaults to shared. Also the
compile definitions are propogated to TestWebKitAPI through a global
property.

* gtest/CMakeLists.txt:
* gtest/PlatformWin.cmake: Added.

Tools:

Use the global property set by the gtest CMake file to add to the
compilation definitions for TestWebKitAPI rather than repeating the
logic.

* TestWebKitAPI/CMakeLists.txt:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@235718 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Source/ThirdParty/ChangeLog
Source/ThirdParty/gtest/CMakeLists.txt
Source/ThirdParty/gtest/PlatformWin.cmake [new file with mode: 0644]
Tools/ChangeLog
Tools/TestWebKitAPI/CMakeLists.txt

index 9e65e0b..28c7a7f 100644 (file)
@@ -1,3 +1,18 @@
+2018-09-05  Don Olmstead  <don.olmstead@sony.com>
+
+        [CMake] Allow port specific options on gtest
+        https://bugs.webkit.org/show_bug.cgi?id=189313
+
+        Reviewed by Alex Christensen.
+
+        Allows a port to configure options within gtest for its platform.
+        The library type can be set otherwise it defaults to shared. Also the
+        compile definitions are propogated to TestWebKitAPI through a global
+        property.
+
+        * gtest/CMakeLists.txt:
+        * gtest/PlatformWin.cmake: Added.
+
 2018-09-04  Ross Kirsling  <ross.kirsling@sony.com>
 
         Update googletest
index 4307bc8..51043e2 100755 (executable)
@@ -20,14 +20,22 @@ set(GTEST_SOURCES
     ${GTEST_DIR}/src/gtest-typed-test.cc
 )
 
-if (WIN32)
-    # MSVC 2015 requires this definition for INTMAX_MAX to be defined.
-    add_definitions(-D__STDC_LIMIT_MACROS -DGTEST_CREATE_SHARED_LIBRARY=0)
-    # gtest crashes on exit on Windows if it is a dll.
-    add_library(gtest STATIC ${GTEST_SOURCES})
-else ()
-    add_definitions(-DGTEST_CREATE_SHARED_LIBRARY=1)
+set(gtest_DEFINITIONS -DGTEST_HAS_RTTI=0)
+
+# Additional gtest configuration can be added in the port's cmake file
+WEBKIT_INCLUDE_CONFIG_FILES_IF_EXISTS()
+
+# By default use a shared library
+if (NOT DEFINED gtest_LIBRARY_TYPE)
+    set(gtest_LIBRARY_TYPE SHARED)
+endif ()
+
+if (gtest_LIBRARY_TYPE MATCHES SHARED)
+    list(APPEND gtest_DEFINITIONS -DGTEST_CREATE_SHARED_LIBRARY=1)
     add_library(gtest SHARED ${GTEST_SOURCES})
+else ()
+    list(APPEND gtest_DEFINITIONS -DGTEST_CREATE_SHARED_LIBRARY=0)
+    add_library(gtest STATIC ${GTEST_SOURCES})
 endif ()
 
 include_directories(${GTEST_INCLUDE_DIRECTORIES})
@@ -38,7 +46,12 @@ WEBKIT_ADD_TARGET_CXX_FLAGS(gtest -Wno-undef
 
 if (CMAKE_USE_PTHREADS_INIT)
     target_link_libraries(gtest ${CMAKE_THREAD_LIBS_INIT})
-    add_definitions(-DGTEST_HAS_PTHREAD=1)
+    list(APPEND gtest_DEFINITIONS -DGTEST_HAS_PTHREAD=1)
 else ()
-    add_definitions(-DGTEST_HAS_PTHREAD=0)
+    list(APPEND gtest_DEFINITIONS -DGTEST_HAS_PTHREAD=0)
 endif ()
+
+add_definitions(${gtest_DEFINITIONS})
+
+# Create a global property so it can be accessed in TestWebKitAPI
+set_property(GLOBAL PROPERTY gtest_DEFINITIONS ${gtest_DEFINITIONS})
diff --git a/Source/ThirdParty/gtest/PlatformWin.cmake b/Source/ThirdParty/gtest/PlatformWin.cmake
new file mode 100644 (file)
index 0000000..074fc89
--- /dev/null
@@ -0,0 +1,4 @@
+set(gtest_LIBRARY_TYPE STATIC)
+
+# MSVC 2015 requires this definition for INTMAX_MAX to be defined.
+add_definitions(-D__STDC_LIMIT_MACROS)
index 4607bcb..90ac723 100644 (file)
@@ -1,3 +1,16 @@
+2018-09-05  Don Olmstead  <don.olmstead@sony.com>
+
+        [CMake] Allow port specific options on gtest
+        https://bugs.webkit.org/show_bug.cgi?id=189313
+
+        Reviewed by Alex Christensen.
+
+        Use the global property set by the gtest CMake file to add to the
+        compilation definitions for TestWebKitAPI rather than repeating the
+        logic.
+
+        * TestWebKitAPI/CMakeLists.txt:
+
 2018-09-05  Woodrow Wang  <woodrow_wang@apple.com>
 
         Add infrastructure to dump resource load statistics
index 9c51972..caa85fc 100644 (file)
@@ -236,22 +236,13 @@ if (ENABLE_WEBKIT)
     endif ()
 endif ()
 
-if (WIN32)
-    add_definitions(-DGTEST_LINKED_AS_SHARED_LIBRARY=0)
-else ()
-    add_definitions(-DGTEST_LINKED_AS_SHARED_LIBRARY=1)
-endif ()
+get_property(gtest_DEFINITIONS GLOBAL PROPERTY gtest_DEFINITIONS)
 
-add_definitions(-DGTEST_HAS_RTTI=0
+add_definitions(
+    ${gtest_DEFINITIONS}
     -DTEST_WEBKIT2_RESOURCES_DIR=\"${TESTWEBKITAPI_DIR}/Tests/WebKit\"
 )
 
-# FIXME: This works around compatibility problems in the old version of the third-pary
-# googletest source code checkout. It should be removed once we upgrade to a newer version.
-if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
-    add_definitions(-DGTEST_HAS_TR1_TUPLE=0)
-endif ()
-
 add_executable(TestWTF
     ${test_main_SOURCES}
     ${TestWTF_SOURCES}
@@ -277,12 +268,6 @@ if (COMPILER_IS_GCC_OR_CLANG)
                                         -Wno-unused-parameter)
 endif ()
 
-# FIXME: This works around compatibility problems in the old version of the third-pary
-# googletest source code checkout. It should be removed once we upgrade to a newer version.
-if (COMPILER_IS_CLANG)
-    add_definitions(-DGTEST_HAS_TR1_TUPLE=0)
-endif ()
-
 if (ENABLE_WEBKIT)
     add_library(TestWebKitAPIBase
         ${test_main_SOURCES}