From ee6944f4ab4258e6b7b9c91c0c18444193d6f55a Mon Sep 17 00:00:00 2001 From: "Michael J. Spencer" Date: Fri, 24 Sep 2010 09:01:13 +0000 Subject: [PATCH] CMake: Build unittests. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114725 91177308-0d34-0410-b5e6-96231b3b80d8 --- CMakeLists.txt | 7 +- test/CMakeLists.txt | 10 +- unittests/CMakeLists.txt | 95 +++++++++++++++++++ utils/unittest/CMakeLists.txt | 34 +++++++ .../include/gtest/internal/gtest-port.h | 3 +- 5 files changed, 146 insertions(+), 3 deletions(-) create mode 100644 unittests/CMakeLists.txt create mode 100644 utils/unittest/CMakeLists.txt diff --git a/CMakeLists.txt b/CMakeLists.txt index dba292925b8..7959f65647b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -305,7 +305,6 @@ add_subdirectory(lib/Analysis/IPA) add_subdirectory(lib/MC) add_subdirectory(lib/MC/MCParser) add_subdirectory(lib/MC/MCDisassembler) -add_subdirectory(test) add_subdirectory(utils/FileCheck) add_subdirectory(utils/count) @@ -370,6 +369,12 @@ add_subdirectory(tools) option(LLVM_BUILD_EXAMPLES "Build LLVM example programs." OFF) add_subdirectory(examples) +option(LLVM_BUILD_TESTS "Build LLVM unit tests." OFF) +add_subdirectory(test) +add_subdirectory(utils/unittest) +add_subdirectory(unittests) + + add_subdirectory(cmake/modules) install(DIRECTORY include/ diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index eab2992e809..38280573311 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -52,7 +52,15 @@ if(PYTHONINTERP_FOUND) set(LLVM_TOOLS_DIR "${LLVM_TOOLS_BINARY_DIR}/${CMAKE_CFG_INTDIR}") set(LLVMGCCDIR "") set(PYTHON_EXECUTABLE ${PYTHON_EXECUTABLE}) - set(LLVM_BUILD_MODE ${CMAKE_CFG_INTDIR}) + if (CMAKE_CONFIGURATION_TYPES) + # FIXME: We have no idea. It could be any of them... So just output all of + # them. + set(LLVM_BUILD_MODE "${CMAKE_CONFIGURATION_TYPES}") + elseif (CMAKE_BUILD_TYPE) + set(LLVM_BUILD_MODE "${CMAKE_BUILD_TYPE}") + else() + set(LLVM_BUILD_MODE "None") + endif() set(ENABLE_SHARED ${LLVM_SHARED_LIBS_ENABLED}) set(SHLIBPATH_VAR ${SHLIBPATH_VAR}) diff --git a/unittests/CMakeLists.txt b/unittests/CMakeLists.txt new file mode 100644 index 00000000000..595ec21454e --- /dev/null +++ b/unittests/CMakeLists.txt @@ -0,0 +1,95 @@ +function(add_llvm_unittest test_name) + if (CMAKE_BUILD_TYPE) + set(CMAKE_RUNTIME_OUTPUT_DIRECTORY + ${LLVM_BINARY_DIR}/unittests/${test_name}/${CMAKE_BUILD_TYPE}) + else() + set(CMAKE_RUNTIME_OUTPUT_DIRECTORY + ${LLVM_BINARY_DIR}/unittests/${test_name}) + endif() + if( NOT LLVM_BUILD_TESTS ) + set(EXCLUDE_FROM_ALL ON) + endif() + add_llvm_executable(${test_name}Tests ${ARGN}) +endfunction() + +include_directories(${LLVM_MAIN_SRC_DIR}/utils/unittest/googletest/include) + +set(LLVM_LINK_COMPONENTS + jit + interpreter + nativecodegen + BitWriter + BitReader + AsmParser + Core + System + Support + ) + +set(LLVM_USED_LIBS + gtest + gtest_main + ) + +add_llvm_unittest(ADT + ADT/APFloatTest.cpp + ADT/APIntTest.cpp + ADT/BitVectorTest.cpp + ADT/DAGDeltaAlgorithmTest.cpp + ADT/DeltaAlgorithmTest.cpp + ADT/DenseMapTest.cpp + ADT/DenseSetTest.cpp + ADT/ilistTest.cpp + ADT/ImmutableSetTest.cpp + ADT/SmallBitVectorTest.cpp + ADT/SmallStringTest.cpp + ADT/SmallVectorTest.cpp + ADT/SparseBitVectorTest.cpp + ADT/StringMapTest.cpp + ADT/StringRefTest.cpp + ADT/TripleTest.cpp + ADT/TwineTest.cpp + ADT/ValueMapTest.cpp + ) + +add_llvm_unittest(Analysis + Analysis/ScalarEvolutionTest.cpp + ) + +add_llvm_unittest(ExecutionEngine + ExecutionEngine/ExecutionEngineTest.cpp + ) + +add_llvm_unittest(JIT + ExecutionEngine/JIT/JITEventListenerTest.cpp + ExecutionEngine/JIT/JITMemoryManagerTest.cpp + ExecutionEngine/JIT/JITTest.cpp + ExecutionEngine/JIT/MultiJITTest.cpp + ) + +add_llvm_unittest(Support + Support/AllocatorTest.cpp + Support/Casting.cpp + Support/CommandLineTest.cpp + Support/ConstantRangeTest.cpp + Support/LeakDetectorTest.cpp + Support/MathExtrasTest.cpp + Support/raw_ostream_test.cpp + Support/RegexTest.cpp + Support/System.cpp + Support/TypeBuilderTest.cpp + Support/ValueHandleTest.cpp + ) + +add_llvm_unittest(Transforms + Transforms/Utils/Cloning.cpp + ) + +add_llvm_unittest(VMCore + VMCore/ConstantsTest.cpp + VMCore/DerivedTypesTest.cpp + VMCore/InstructionsTest.cpp + VMCore/MetadataTest.cpp + VMCore/PassManagerTest.cpp + VMCore/VerifierTest.cpp + ) diff --git a/utils/unittest/CMakeLists.txt b/utils/unittest/CMakeLists.txt new file mode 100644 index 00000000000..70685463014 --- /dev/null +++ b/utils/unittest/CMakeLists.txt @@ -0,0 +1,34 @@ +######################################################################## +# Experimental CMake build script for Google Test. +# +# Consider this a prototype. It will change drastically. For now, +# this is only for people on the cutting edge. +# +# To run the tests for Google Test itself on Linux, use 'make test' or +# ctest. You can select which tests to run using 'ctest -R regex'. +# For more options, run 'ctest --help'. +######################################################################## +# +# Project-wide settings + +# Where gtest's .h files can be found. +include_directories( + googletest/include + ) + +if(WIN32) + add_definitions(-DGTEST_OS_WINDOWS=1) +endif() + +add_llvm_library(gtest + googletest/gtest.cc + googletest/gtest-death-test.cc + googletest/gtest-filepath.cc + googletest/gtest-port.cc + googletest/gtest-test-part.cc + googletest/gtest-typed-test.cc + ) + +add_llvm_library(gtest_main + UnitTestMain/TestMain.cpp + ) diff --git a/utils/unittest/googletest/include/gtest/internal/gtest-port.h b/utils/unittest/googletest/include/gtest/internal/gtest-port.h index 9683271e48f..3d076eb44c7 100644 --- a/utils/unittest/googletest/include/gtest/internal/gtest-port.h +++ b/utils/unittest/googletest/include/gtest/internal/gtest-port.h @@ -403,7 +403,8 @@ // defining __GNUC__ and friends, but cannot compile GCC's tuple // implementation. MSVC 2008 (9.0) provides TR1 tuple in a 323 MB // Feature Pack download, which we cannot assume the user has. -#if (defined(__GNUC__) && !defined(__CUDACC__) && (GTEST_GCC_VER_ >= 40000)) \ +#if (defined(__GNUC__) && !(defined(__CUDACC__) || defined(__clang__)) \ + && (GTEST_GCC_VER_ >= 40000)) \ || _MSC_VER >= 1600 #define GTEST_USE_OWN_TR1_TUPLE 0 #else -- 2.34.1