From 26d7fcfc38044cf6a939cadb390528d60a1cb9d7 Mon Sep 17 00:00:00 2001 From: Zachary Turner Date: Fri, 13 Mar 2015 20:54:21 +0000 Subject: [PATCH] Create a CMake build for the gtest unit tests. llvm-svn: 232210 --- lldb/CMakeLists.txt | 1 + lldb/cmake/modules/LLDBConfig.cmake | 2 +- lldb/gtest/CMakeLists.txt | 21 ++++++++++++++ lldb/gtest/include/gtest_common.h | 32 ++++++++++++++++++++++ lldb/gtest/unittest/CMakeLists.txt | 3 ++ lldb/gtest/unittest/Host/CMakeLists.txt | 5 ++++ lldb/gtest/unittest/Plugins/CMakeLists.txt | 1 + lldb/gtest/unittest/Plugins/Process/CMakeLists.txt | 3 ++ .../unittest/Plugins/Process/Linux/CMakeLists.txt | 4 +++ lldb/gtest/unittest/Utility/CMakeLists.txt | 4 +++ 10 files changed, 75 insertions(+), 1 deletion(-) create mode 100644 lldb/gtest/CMakeLists.txt create mode 100644 lldb/gtest/include/gtest_common.h create mode 100644 lldb/gtest/unittest/CMakeLists.txt create mode 100644 lldb/gtest/unittest/Host/CMakeLists.txt create mode 100644 lldb/gtest/unittest/Plugins/CMakeLists.txt create mode 100644 lldb/gtest/unittest/Plugins/Process/CMakeLists.txt create mode 100644 lldb/gtest/unittest/Plugins/Process/Linux/CMakeLists.txt create mode 100644 lldb/gtest/unittest/Utility/CMakeLists.txt diff --git a/lldb/CMakeLists.txt b/lldb/CMakeLists.txt index fa98bd3..4629f40 100644 --- a/lldb/CMakeLists.txt +++ b/lldb/CMakeLists.txt @@ -10,6 +10,7 @@ endif () add_subdirectory(source) add_subdirectory(test) add_subdirectory(tools) +add_subdirectory(gtest) if ( LLDB_ENABLE_PYTHON_SCRIPTS_SWIG_API_GENERATION AND NOT LLDB_DISABLE_PYTHON ) diff --git a/lldb/cmake/modules/LLDBConfig.cmake b/lldb/cmake/modules/LLDBConfig.cmake index adfe804..a678eb5 100644 --- a/lldb/cmake/modules/LLDBConfig.cmake +++ b/lldb/cmake/modules/LLDBConfig.cmake @@ -25,7 +25,7 @@ set(LLDB_ENABLE_PYTHON_SCRIPTS_SWIG_API_GENERATION ${LLDB_DEFAULT_ENABLE_PYTHON_ "Enables using new Python scripts for SWIG API generation .") set(LLDB_SOURCE_ROOT "${CMAKE_CURRENT_SOURCE_DIR}/source") -set(LLDB_INCLUDE_ROOT "${LLDB_INCLUDE_ROOT}/include") +set(LLDB_INCLUDE_ROOT "${CMAKE_CURRENT_SOURCE_DIR}/include") set(LLDB_DISABLE_PYTHON 0 CACHE BOOL "Disables the Python scripting integration.") diff --git a/lldb/gtest/CMakeLists.txt b/lldb/gtest/CMakeLists.txt new file mode 100644 index 0000000..467dd12 --- /dev/null +++ b/lldb/gtest/CMakeLists.txt @@ -0,0 +1,21 @@ +add_custom_target(LLDBUnitTests) +set_target_properties(LLDBUnitTests PROPERTIES FOLDER "LLDB tests") + +include_directories(${LLDB_SOURCE_ROOT}) + +set(LLDB_GTEST_COMMON_INCLUDE ${CMAKE_CURRENT_SOURCE_DIR}/include/gtest_common.h) +if (MSVC) + list(APPEND LLVM_COMPILE_FLAGS /FI ${LLDB_GTEST_COMMON_INCLUDE}) +else () + list(APPEND LLVM_COMPILE_FLAGS -include ${LLDB_GTEST_COMMON_INCLUDE}) +endif () + +# add_lldb_unittest(test_dirname file1.cpp file2.cpp) +# +# Will compile the list of files together and link against the liblldb +function(add_lldb_unittest test_name) + add_unittest(LLDBUnitTests ${test_name} ${ARGN}) + target_link_libraries(${test_name} liblldb) +endfunction() + +add_subdirectory(unittest) diff --git a/lldb/gtest/include/gtest_common.h b/lldb/gtest/include/gtest_common.h new file mode 100644 index 0000000..228dfb0 --- /dev/null +++ b/lldb/gtest/include/gtest_common.h @@ -0,0 +1,32 @@ +//===-- gtest_common.h ------------------------------------------*- C++ -*-===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +#if defined(LLDB_GTEST_COMMON_H) +#error "gtest_common.h should not be included manually." +#else +#define LLDB_GTEST_COMMON_H +#endif + +// This header file is force included by all of LLDB's unittest compilation +// units. Be very leary about putting anything in this file. + +#if defined(_MSC_VER) && (_HAS_EXCEPTIONS == 0) +// MSVC's STL implementation tries to work well with /EHs-c- and +// _HAS_EXCEPTIONS=0. But in particular doesn't work with it, because +// it relies on which tries to throw an exception without checking +// for _HAS_EXCEPTIONS=0. This causes the linker to require a definition of +// __uncaught_exception(), but the STL doesn't define this function when +// _HAS_EXCEPTIONS=0. The workaround here is to just provide a stub +// implementation to get it to link. +inline bool +__uncaught_exception() +{ + return true; +} +#endif diff --git a/lldb/gtest/unittest/CMakeLists.txt b/lldb/gtest/unittest/CMakeLists.txt new file mode 100644 index 0000000..fd57dd9 --- /dev/null +++ b/lldb/gtest/unittest/CMakeLists.txt @@ -0,0 +1,3 @@ +add_subdirectory(Host) +add_subdirectory(Plugins) +add_subdirectory(Utility) diff --git a/lldb/gtest/unittest/Host/CMakeLists.txt b/lldb/gtest/unittest/Host/CMakeLists.txt new file mode 100644 index 0000000..227e48c --- /dev/null +++ b/lldb/gtest/unittest/Host/CMakeLists.txt @@ -0,0 +1,5 @@ +add_lldb_unittest(HostTests + SocketAddressTest.cpp + SocketTest.cpp + SocketTestMock.cpp + ) diff --git a/lldb/gtest/unittest/Plugins/CMakeLists.txt b/lldb/gtest/unittest/Plugins/CMakeLists.txt new file mode 100644 index 0000000..422f203 --- /dev/null +++ b/lldb/gtest/unittest/Plugins/CMakeLists.txt @@ -0,0 +1 @@ +add_subdirectory(Process) diff --git a/lldb/gtest/unittest/Plugins/Process/CMakeLists.txt b/lldb/gtest/unittest/Plugins/Process/CMakeLists.txt new file mode 100644 index 0000000..bf3426c --- /dev/null +++ b/lldb/gtest/unittest/Plugins/Process/CMakeLists.txt @@ -0,0 +1,3 @@ +if (CMAKE_SYSTEM_NAME MATCHES "Linux") + add_subdirectory(Linux) +endif() diff --git a/lldb/gtest/unittest/Plugins/Process/Linux/CMakeLists.txt b/lldb/gtest/unittest/Plugins/Process/Linux/CMakeLists.txt new file mode 100644 index 0000000..3d71f9a --- /dev/null +++ b/lldb/gtest/unittest/Plugins/Process/Linux/CMakeLists.txt @@ -0,0 +1,4 @@ +add_lldb_unittest(ProcessLinuxTests + ThreadStateCoordinatorTest.cpp + ThreadStatecoordinatorMock.cpp + ) diff --git a/lldb/gtest/unittest/Utility/CMakeLists.txt b/lldb/gtest/unittest/Utility/CMakeLists.txt new file mode 100644 index 0000000..fea0f53f --- /dev/null +++ b/lldb/gtest/unittest/Utility/CMakeLists.txt @@ -0,0 +1,4 @@ +add_lldb_unittest(UtilityTests + StringExtractorTest.cpp + UriParserTest.cpp + ) -- 2.7.4