Index: CMakeLists.txt =================================================================== --- CMakeLists.txt +++ CMakeLists.txt @@ -10,6 +10,7 @@ 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 ) Index: cmake/modules/LLDBConfig.cmake =================================================================== --- cmake/modules/LLDBConfig.cmake +++ cmake/modules/LLDBConfig.cmake @@ -25,7 +25,7 @@ "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.") Index: gtest/CMakeLists.txt =================================================================== --- /dev/null +++ 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) Index: gtest/include/gtest_common.h =================================================================== --- /dev/null +++ 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 Index: gtest/unittest/CMakeLists.txt =================================================================== --- /dev/null +++ gtest/unittest/CMakeLists.txt @@ -0,0 +1,3 @@ +add_subdirectory(Host) +add_subdirectory(Plugins) +add_subdirectory(Utility) Index: gtest/unittest/Host/CMakeLists.txt =================================================================== --- /dev/null +++ gtest/unittest/Host/CMakeLists.txt @@ -0,0 +1,5 @@ +add_lldb_unittest(HostTests + SocketAddressTest.cpp + SocketTest.cpp + SocketTestMock.cpp + ) Index: gtest/unittest/Plugins/CMakeLists.txt =================================================================== --- /dev/null +++ gtest/unittest/Plugins/CMakeLists.txt @@ -0,0 +1 @@ +add_subdirectory(Process) Index: gtest/unittest/Plugins/Process/CMakeLists.txt =================================================================== --- /dev/null +++ gtest/unittest/Plugins/Process/CMakeLists.txt @@ -0,0 +1,3 @@ +if (CMAKE_SYSTEM_NAME MATCHES "Linux") + add_subdirectory(Linux) +endif() Index: gtest/unittest/Plugins/Process/Linux/CMakeLists.txt =================================================================== --- /dev/null +++ gtest/unittest/Plugins/Process/Linux/CMakeLists.txt @@ -0,0 +1,4 @@ +add_lldb_unittest(ProcessLinuxTests + ThreadStateCoordinatorTest.cpp + ThreadStatecoordinatorMock.cpp + ) Index: gtest/unittest/Utility/CMakeLists.txt =================================================================== --- /dev/null +++ gtest/unittest/Utility/CMakeLists.txt @@ -0,0 +1,4 @@ +add_lldb_unittest(UtilityTests + StringExtractorTest.cpp + UriParserTest.cpp + )