blob: f7f495ee9dd77dd392b3c2db29b8e663f2a7d538 [file] [log] [blame]
Jeffrey Yasskinf91ae522011-02-19 18:06:01 +00001include(LLVMParseArguments)
2
3# add_clang_unittest(test_dirname file1.cpp file2.cpp ...
4# [USED_LIBS lib1 lib2]
5# [LINK_COMPONENTS component1 component2])
6#
7# Will compile the list of files together and link against the clang
8# libraries in the USED_LIBS list and the llvm-config components in
9# the LINK_COMPONENTS list. Produces a binary named
10# 'basename(test_dirname)Tests'.
11function(add_clang_unittest)
12 PARSE_ARGUMENTS(CLANG_UNITTEST "USED_LIBS;LINK_COMPONENTS" "" ${ARGN})
13 set(LLVM_LINK_COMPONENTS ${CLANG_UNITTEST_LINK_COMPONENTS})
14 set(LLVM_USED_LIBS ${CLANG_UNITTEST_USED_LIBS})
15 list(GET CLANG_UNITTEST_DEFAULT_ARGS 0 test_dirname)
16 list(REMOVE_AT CLANG_UNITTEST_DEFAULT_ARGS 0)
17
Jeffrey Yasskin718b01d2011-02-15 07:54:28 +000018 string(REGEX MATCH "([^/]+)$" test_name ${test_dirname})
19 if (CMAKE_BUILD_TYPE)
20 set(CMAKE_RUNTIME_OUTPUT_DIRECTORY
21 ${CLANG_BINARY_DIR}/unittests/${test_dirname}/${CMAKE_BUILD_TYPE})
22 else()
23 set(CMAKE_RUNTIME_OUTPUT_DIRECTORY
24 ${CLANG_BINARY_DIR}/unittests/${test_dirname})
25 endif()
26 if( NOT LLVM_BUILD_TESTS )
27 set(EXCLUDE_FROM_ALL ON)
28 endif()
Jeffrey Yasskinf91ae522011-02-19 18:06:01 +000029 add_clang_executable(${test_name}Tests ${CLANG_UNITTEST_DEFAULT_ARGS})
Jeffrey Yasskin718b01d2011-02-15 07:54:28 +000030 add_dependencies(ClangUnitTests ${test_name}Tests)
Oscar Fuentesa3f787c2011-02-20 22:06:44 +000031 set_target_properties(${test_name}Tests PROPERTIES FOLDER "Clang tests")
Jeffrey Yasskin718b01d2011-02-15 07:54:28 +000032endfunction()
33
34add_custom_target(ClangUnitTests)
Oscar Fuentesa3f787c2011-02-20 22:06:44 +000035set_target_properties(ClangUnitTests PROPERTIES FOLDER "Clang tests")
Jeffrey Yasskin718b01d2011-02-15 07:54:28 +000036
37include_directories(${LLVM_MAIN_SRC_DIR}/utils/unittest/googletest/include)
38add_definitions(-DGTEST_HAS_RTTI=0)
39if( CMAKE_COMPILER_IS_GNUCXX )
40 llvm_replace_compiler_option(CMAKE_CXX_FLAGS "-frtti" "-fno-rtti")
41elseif( MSVC )
42 llvm_replace_compiler_option(CMAKE_CXX_FLAGS "/GR" "/GR-")
43endif()
44
45if (NOT LLVM_ENABLE_THREADS)
46 add_definitions(-DGTEST_HAS_PTHREAD=0)
47endif()
48
49if(SUPPORTS_NO_VARIADIC_MACROS_FLAG)
50 add_definitions("-Wno-variadic-macros")
51endif()
52
Zhanyong Wanc515d182011-02-16 05:45:20 +000053add_clang_unittest(Basic
Zhanyong Wanc515d182011-02-16 05:45:20 +000054 Basic/FileManagerTest.cpp
Jeffrey Yasskinf91ae522011-02-19 18:06:01 +000055 USED_LIBS gtest gtest_main clangBasic
Zhanyong Wanc515d182011-02-16 05:45:20 +000056 )
57
Jeffrey Yasskin718b01d2011-02-15 07:54:28 +000058add_clang_unittest(Frontend
Jeffrey Yasskin718b01d2011-02-15 07:54:28 +000059 Frontend/FrontendActionTest.cpp
Jeffrey Yasskinf91ae522011-02-19 18:06:01 +000060 USED_LIBS gtest gtest_main clangFrontend
Jeffrey Yasskin718b01d2011-02-15 07:54:28 +000061 )
Manuel Klimekcf3ce5d2011-04-21 18:37:41 +000062
63add_clang_unittest(Tooling
64 Tooling/ToolingTest.cpp
65 USED_LIBS gtest gtest_main clangTooling
66 )
Manuel Klimek9a05fa92011-04-27 16:39:14 +000067
68add_clang_unittest(JsonCompileCommandLineDatabase
69 Tooling/JsonCompileCommandLineDatabaseTest.cpp
70 USED_LIBS gtest gtest_main clangTooling
71 )