"Build LLVM unit tests. If OFF, just generate build targets." OFF)
option(LLVM_INCLUDE_TESTS "Generate build targets for the LLVM unit tests." ON)
+option(LLVM_INSTALL_GTEST
+ "Install the llvm gtest library. This should be on if you want to do
+ stand-alone builds of the other projects and run their unit tests." OFF)
+
option(LLVM_BUILD_BENCHMARKS "Add LLVM benchmark targets to the list of default
targets. If OFF, benchmarks still could be built using Benchmarks target." OFF)
option(LLVM_INCLUDE_BENCHMARKS "Generate benchmark targets. If OFF, benchmarks can't be built." ON)
# Do not build unittest libraries automatically, they will be pulled in
# by unittests if these are built.
-set(EXCLUDE_FROM_ALL ON)
+if (NOT ${LLVM_INSTALL_GTEST})
+ set (BUILDTREE_ONLY BUILDTREE_ONLY)
+ set(EXCLUDE_FROM_ALL ON)
+endif()
add_llvm_library(LLVMTestingAnnotations
Annotations.cpp
- BUILDTREE_ONLY
+ ${BUILDTREE_ONLY}
ADDITIONAL_HEADER_DIRS
${LLVM_MAIN_INCLUDE_DIR}/llvm/Testing/Support
# Do not build unittest libraries automatically, they will be pulled in
# by unittests if these are built.
-set(EXCLUDE_FROM_ALL ON)
+if (NOT ${LLVM_INSTALL_GTEST})
+ set (BUILDTREE_ONLY BUILDTREE_ONLY)
+ set(EXCLUDE_FROM_ALL ON)
+endif()
add_llvm_library(LLVMTestingSupport
Error.cpp
SupportHelpers.cpp
- BUILDTREE_ONLY
+ ${BUILDTREE_ONLY}
ADDITIONAL_HEADER_DIRS
${LLVM_MAIN_INCLUDE_DIR}/llvm/Testing/Support
# Do not build unittest libraries automatically, they will be pulled in
# by unittests if these are built.
+
+set(BUILDTREE_ONLY BUILDTREE_ONLY)
set(EXCLUDE_FROM_ALL ON)
+if (LLVM_INSTALL_GTEST)
+ set(EXCLUDE_FROM_ALL OFF)
+ set(BUILDTREE_ONLY "")
+endif ()
add_llvm_library(llvm_gtest
googletest/src/gtest-all.cc
Support # Depends on llvm::raw_ostream
# This is a library meant only for the build tree.
- BUILDTREE_ONLY
+ ${BUILDTREE_ONLY}
)
# The googletest and googlemock sources don't presently use the 'override'
endif ()
target_include_directories(llvm_gtest
- PUBLIC googletest/include googlemock/include
+ PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/googletest/include>
+ $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/googlemock/include>
+ $<INSTALL_INTERFACE:include/llvm-gtest/>
+ $<INSTALL_INTERFACE:include/llvm-gmock/>
PRIVATE googletest googlemock
)
add_subdirectory(UnitTestMain)
+if (LLVM_INSTALL_GTEST)
+ install(TARGETS llvm_gtest llvm_gtest_main LLVMTestingSupport LLVMTestingAnnotations
+ ARCHIVE DESTINATION "lib${LLVM_LIBDIR_SUFFIX}" COMPONENT llvm_gtest)
+ install(DIRECTORY googletest/include/gtest/ DESTINATION include/llvm-gtest/gtest/ COMPONENT llvm_gtest)
+ install(DIRECTORY googlemock/include/gmock/ DESTINATION include/llvm-gmock/gmock/ COMPONENT llvm_gtest)
+endif()
+
# When LLVM_LINK_LLVM_DYLIB is enabled, libLLVM.so is added to the interface
# link libraries for gtest and gtest_main. This means that any target, like
# unittests for example, that links against gtest will be forced to link