1111#
1212# Project-wide settings
1313
14+ set (LLVM_SUBPROJECT_TITLE "Third-Party/Google Test" )
15+
16+ if (GTEST_USE_LLVM)
17+ set (GTEST_LLVM_COMPONENTS "Support" ) # For llvm::raw_ostream
18+ else ()
19+ # Override locally; never install a non-LLVM GTest
20+ set (LLVM_INSTALL_GTEST OFF )
21+ endif ()
22+
1423if (WIN32 )
1524 add_definitions (-DGTEST_OS_WINDOWS=1)
1625endif ()
@@ -48,15 +57,15 @@ if (LLVM_INSTALL_GTEST)
4857 set (BUILDTREE_ONLY "" )
4958endif ()
5059
51- add_llvm_library(llvm_gtest
60+ add_llvm_library(" ${gtest_name} "
5261 googletest/src/gtest-all .cc
5362 googlemock/src/gmock-all .cc
5463
5564 LINK_LIBS
5665 ${LIBS}
5766
5867 LINK_COMPONENTS
59- Support # Depends on llvm::raw_ostream
68+ ${GTEST_LLVM_COMPONENTS}
6069
6170 # This is a library meant only for the build tree.
6271 ${BUILDTREE_ONLY}
@@ -67,15 +76,15 @@ add_llvm_library(llvm_gtest
6776# that warning here for any targets that link to gtest.
6877if (CXX_SUPPORTS_SUGGEST_OVERRIDE_FLAG)
6978 add_definitions ("-Wno-suggest-override" )
70- set_target_properties (llvm_gtest PROPERTIES INTERFACE_COMPILE_OPTIONS "-Wno-suggest-override" )
79+ set_target_properties (" ${gtest_name} " PROPERTIES INTERFACE_COMPILE_OPTIONS "-Wno-suggest-override" )
7180endif ()
7281
7382if (NOT LLVM_ENABLE_THREADS)
74- target_compile_definitions (llvm_gtest PUBLIC GTEST_HAS_PTHREAD=0)
83+ target_compile_definitions (" ${gtest_name} " PUBLIC GTEST_HAS_PTHREAD=0)
7584endif ()
7685
7786# Top-level include directory required for "llvm/Support/raw_os_ostream.h"
78- target_include_directories (llvm_gtest
87+ target_include_directories (" ${gtest_name} "
7988 PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR} /googletest/include >
8089 $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR} /googlemock/include >
8190 $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR} />
@@ -89,16 +98,32 @@ target_include_directories(llvm_gtest
8998# FIXME: Shouldn't this be done for all LLVM libraries? Currently, LLVM uses a
9099# big giant `include_directories( ${LLVM_INCLUDE_DIR} ${LLVM_MAIN_INCLUDE_DIR})`
91100# which CMake does not add to the import library.
92- target_include_directories (llvm_gtest BEFORE
93- PUBLIC $<BUILD_INTERFACE:${LLVM_SOURCE_DIR} /include >
94- $<BUILD_INTERFACE:${LLVM_BINARY_DIR} /include >
95- )
101+ if (GTEST_USE_LLVM)
102+ target_include_directories ("${gtest_name} " BEFORE
103+ PUBLIC $<BUILD_INTERFACE:${LLVM_SOURCE_DIR} /include >
104+ $<BUILD_INTERFACE:${LLVM_BINARY_DIR} /include >
105+ )
106+ else ()
107+ target_compile_definitions ("${gtest_name} " PUBLIC GTEST_NO_LLVM_SUPPORT=1)
108+ endif ()
96109
97- add_subdirectory (UnitTestMain)
110+ # Library that contains main()
111+ if (GTEST_USE_LLVM)
112+ add_subdirectory (UnitTestMain)
113+ else ()
114+ add_llvm_library("${gtest_name} _main"
115+ googletest/src/gtest_main.cc
116+
117+ LINK_LIBS
118+ "${gtest_name} "
119+
120+ ${BUILDTREE_ONLY}
121+ )
122+ endif ()
98123
99124if (LLVM_INSTALL_GTEST)
100- install (DIRECTORY googletest/include /gtest/ DESTINATION "${CMAKE_INSTALL_INCLUDEDIR} /llvm-gtest/gtest/" COMPONENT llvm_gtest )
101- install (DIRECTORY googlemock/include /gmock/ DESTINATION "${CMAKE_INSTALL_INCLUDEDIR} /llvm-gmock/gmock/" COMPONENT llvm_gtest )
125+ install (DIRECTORY googletest/include /gtest/ DESTINATION "${CMAKE_INSTALL_INCLUDEDIR} /llvm-gtest/gtest/" COMPONENT " ${gtest_name} " )
126+ install (DIRECTORY googlemock/include /gmock/ DESTINATION "${CMAKE_INSTALL_INCLUDEDIR} /llvm-gmock/gmock/" COMPONENT " ${gtest_name} " )
102127endif ()
103128
104129# When LLVM_LINK_LLVM_DYLIB is enabled, libLLVM.so is added to the interface
@@ -118,5 +143,5 @@ function (gtest_remove_dylib_from_link_interface target)
118143 endif ()
119144endfunction ()
120145
121- gtest_remove_dylib_from_link_interface(llvm_gtest )
122- gtest_remove_dylib_from_link_interface(llvm_gtest_main )
146+ gtest_remove_dylib_from_link_interface(" ${gtest_name} " )
147+ gtest_remove_dylib_from_link_interface(" ${gtest_name} _main" )
0 commit comments