Skip to content

Commit 0a169b4

Browse files
committed
Test no-LLVM gtest
1 parent 1fbfac3 commit 0a169b4

File tree

9 files changed

+70
-24
lines changed

9 files changed

+70
-24
lines changed

cmake/Modules/AddGTest.cmake

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
2+
function (build_gtest gtest_name)
3+
cmake_parse_arguments(ARG "LLVM_SUPPORT" "" "" ${ARGN})
4+
5+
if (ARG_LLVM_SUPPORT)
6+
set(GTEST_USE_LLVM 1)
7+
else ()
8+
set(GTEST_USE_LLVM 0)
9+
endif ()
10+
add_subdirectory("${LLVM_THIRD_PARTY_DIR}/unittest" "${CMAKE_BINARY_DIR}/third-party/${gtest_name}_gtest")
11+
endfunction ()
12+

flang-rt/unittests/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ if (CMAKE_CROSSCOMPILING)
2222
return ()
2323
endif ()
2424

25-
if (NOT TARGET llvm_gtest)
25+
if (NOT TARGET default_gtest)
2626
message(WARNING "Flang-RT unittests disabled due to GTest being unavailable; "
2727
"Try LLVM_INSTALL_GTEST=ON for the LLVM build")
2828
return ()

flang-rt/unittests/Runtime/CrashHandlerFixture.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
char buffer[1000];
1818
std::vsnprintf(buffer, sizeof buffer, message, ap);
1919
va_end(ap);
20-
llvm::errs()
20+
std::cerr
2121
<< "Test "
2222
<< ::testing::UnitTest::GetInstance()->current_test_info()->name()
2323
<< " crashed in file "

libc/benchmarks/CMakeLists.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,8 @@ function(add_libc_benchmark_unittest target_name)
3838
)
3939
target_link_libraries(${target_name}
4040
PRIVATE
41-
llvm_gtest_main
42-
llvm_gtest
41+
default_gtest_main
42+
default_gtest
4343
${LIBC_BENCHMARKS_UNITTEST_DEPENDS}
4444
)
4545
llvm_update_compile_flags(${target_name})

llvm/CMakeLists.txt

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1340,9 +1340,10 @@ if( LLVM_INCLUDE_UTILS )
13401340
add_subdirectory(utils/mlgo-utils)
13411341
add_subdirectory(utils/llvm-test-mustache-spec)
13421342
if( LLVM_INCLUDE_TESTS )
1343-
set(LLVM_SUBPROJECT_TITLE "Third-Party/Google Test")
1344-
add_subdirectory(${LLVM_THIRD_PARTY_DIR}/unittest ${CMAKE_CURRENT_BINARY_DIR}/third-party/unittest)
1345-
set(LLVM_SUBPROJECT_TITLE)
1343+
include(AddGTest)
1344+
build_gtest(llvm_gtest LLVM_SUPPORT)
1345+
add_library(default_gtest ALIAS llvm_gtest)
1346+
add_library(default_gtest_main ALIAS llvm_gtest_main)
13461347
endif()
13471348
else()
13481349
if ( LLVM_INCLUDE_TESTS )

llvm/cmake/modules/AddLLVM.cmake

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1797,7 +1797,7 @@ function(add_unittest test_suite test_name)
17971797
# libpthreads overrides some standard library symbols, so main
17981798
# executable must be linked with it in order to provide consistent
17991799
# API for all shared libaries loaded by this executable.
1800-
target_link_libraries(${test_name} PRIVATE llvm_gtest_main llvm_gtest ${LLVM_PTHREAD_LIB})
1800+
target_link_libraries(${test_name} PRIVATE default_gtest_main default_gtest ${LLVM_PTHREAD_LIB})
18011801

18021802
add_dependencies(${test_suite} ${test_name})
18031803
endfunction()

runtimes/CMakeLists.txt

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -242,6 +242,14 @@ endif()
242242
# This can be used to detect whether we're in the runtimes build.
243243
set(LLVM_RUNTIMES_BUILD ON)
244244

245+
# Make GTest available to all runtimes
246+
if (LLVM_INCLUDE_TESTS)
247+
include(AddGTest)
248+
build_gtest(runtimes_gtest)
249+
add_library(default_gtest ALIAS runtimes_gtest)
250+
add_library(default_gtest_main ALIAS runtimes_gtest_main)
251+
endif ()
252+
245253
foreach(entry ${runtimes})
246254
get_filename_component(projName ${entry} NAME)
247255

third-party/unittest/CMakeLists.txt

Lines changed: 39 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,15 @@
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+
1423
if(WIN32)
1524
add_definitions(-DGTEST_OS_WINDOWS=1)
1625
endif()
@@ -48,15 +57,15 @@ if (LLVM_INSTALL_GTEST)
4857
set(BUILDTREE_ONLY "")
4958
endif ()
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.
6877
if(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")
7180
endif()
7281

7382
if (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)
7584
endif ()
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

99124
if (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}")
102127
endif()
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()
119144
endfunction()
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")

third-party/unittest/UnitTestMain/CMakeLists.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,11 @@ if (LLVM_INSTALL_GTEST)
33
set(BUILDTREE_ONLY "")
44
endif ()
55

6-
add_llvm_library(llvm_gtest_main
6+
add_llvm_library("${gtest_name}_main"
77
TestMain.cpp
88

99
LINK_LIBS
10-
llvm_gtest
10+
"${gtest_name}"
1111

1212
LINK_COMPONENTS
1313
Support # Depends on llvm::cl

0 commit comments

Comments
 (0)