blob: ecd36cdc9166131126a9a4bb44aff3d4e0135228 [file] [log] [blame]
Chandler Carruth88973312012-06-21 02:04:39 +00001# add_clang_unittest(test_dirname file1.cpp file2.cpp)
Jeffrey Yasskin39a58202011-02-19 18:06:01 +00002#
3# Will compile the list of files together and link against the clang
Chandler Carruth88973312012-06-21 02:04:39 +00004# Produces a binary named 'basename(test_dirname)'.
5function(add_clang_unittest test_dirname)
Jeffrey Yasskincd3858b2011-02-15 07:54:28 +00006 string(REGEX MATCH "([^/]+)$" test_name ${test_dirname})
7 if (CMAKE_BUILD_TYPE)
8 set(CMAKE_RUNTIME_OUTPUT_DIRECTORY
9 ${CLANG_BINARY_DIR}/unittests/${test_dirname}/${CMAKE_BUILD_TYPE})
10 else()
11 set(CMAKE_RUNTIME_OUTPUT_DIRECTORY
12 ${CLANG_BINARY_DIR}/unittests/${test_dirname})
13 endif()
14 if( NOT LLVM_BUILD_TESTS )
15 set(EXCLUDE_FROM_ALL ON)
16 endif()
Chandler Carruth88973312012-06-21 02:04:39 +000017
18 add_clang_executable(${test_name} ${ARGN})
19 target_link_libraries(${test_name}
20 gtest
21 gtest_main
22 LLVMSupport # gtest needs it for raw_ostream.
23 )
24
25 add_dependencies(ClangUnitTests ${test_name})
26 set_target_properties(${test_name} PROPERTIES FOLDER "Clang tests")
Jeffrey Yasskincd3858b2011-02-15 07:54:28 +000027endfunction()
28
29add_custom_target(ClangUnitTests)
Oscar Fuentes15fe1902011-02-20 22:06:44 +000030set_target_properties(ClangUnitTests PROPERTIES FOLDER "Clang tests")
Jeffrey Yasskincd3858b2011-02-15 07:54:28 +000031
32include_directories(${LLVM_MAIN_SRC_DIR}/utils/unittest/googletest/include)
Chandler Carruth4b3d2c82012-06-21 00:40:48 +000033
Jeffrey Yasskincd3858b2011-02-15 07:54:28 +000034add_definitions(-DGTEST_HAS_RTTI=0)
Oscar Fuentescfc9efa2011-05-11 13:53:30 +000035if( LLVM_COMPILER_IS_GCC_COMPATIBLE )
Jeffrey Yasskincd3858b2011-02-15 07:54:28 +000036 llvm_replace_compiler_option(CMAKE_CXX_FLAGS "-frtti" "-fno-rtti")
37elseif( MSVC )
38 llvm_replace_compiler_option(CMAKE_CXX_FLAGS "/GR" "/GR-")
39endif()
40
41if (NOT LLVM_ENABLE_THREADS)
42 add_definitions(-DGTEST_HAS_PTHREAD=0)
43endif()
44
45if(SUPPORTS_NO_VARIADIC_MACROS_FLAG)
46 add_definitions("-Wno-variadic-macros")
47endif()
48
Chandler Carruth88973312012-06-21 02:04:39 +000049add_clang_unittest(BasicTests
Zhanyong Wan5201b662011-02-16 05:45:20 +000050 Basic/FileManagerTest.cpp
Argyrios Kyrtzidis24037972011-12-21 16:56:29 +000051 Basic/SourceManagerTest.cpp
Chandler Carruth88973312012-06-21 02:04:39 +000052 )
53target_link_libraries(BasicTests
54 clangLex
55 )
Zhanyong Wan5201b662011-02-16 05:45:20 +000056
Chandler Carruth88973312012-06-21 02:04:39 +000057add_clang_unittest(LexTests
Argyrios Kyrtzidisd1699112012-01-19 15:59:01 +000058 Lex/LexerTest.cpp
Chandler Carruth88973312012-06-21 02:04:39 +000059 )
60target_link_libraries(LexTests
61 clangLex
62 )
Argyrios Kyrtzidisd1699112012-01-19 15:59:01 +000063
Chandler Carruth88973312012-06-21 02:04:39 +000064add_clang_unittest(FrontendTests
Jeffrey Yasskincd3858b2011-02-15 07:54:28 +000065 Frontend/FrontendActionTest.cpp
Chandler Carruth88973312012-06-21 02:04:39 +000066 )
67target_link_libraries(FrontendTests
68 clangFrontend
69 )
Manuel Klimek47c245a2012-04-04 12:07:46 +000070
Chandler Carruth88973312012-06-21 02:04:39 +000071add_clang_unittest(ToolingTests
Manuel Klimek47c245a2012-04-04 12:07:46 +000072 Tooling/CompilationDatabaseTest.cpp
73 Tooling/ToolingTest.cpp
Manuel Klimek770691b2012-04-19 08:48:53 +000074 Tooling/RecursiveASTVisitorTest.cpp
Manuel Klimek3f001342012-05-23 16:29:20 +000075 Tooling/RefactoringTest.cpp
Manuel Klimek78d084d2012-05-22 17:01:35 +000076 Tooling/RewriterTest.cpp
Chandler Carruth88973312012-06-21 02:04:39 +000077 )
78target_link_libraries(ToolingTests
79 clangAST
80 clangTooling
81 clangRewrite
82 )