blob: e64fa1c72253f86a6ac1295a547c8e52acc42d47 [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)
Oscar Fuentesc5cd2522011-05-11 13:53:30 +000039if( LLVM_COMPILER_IS_GCC_COMPATIBLE )
Jeffrey Yasskin718b01d2011-02-15 07:54:28 +000040 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
Argyrios Kyrtzidisd7711ec2011-12-21 16:56:29 +000055 Basic/SourceManagerTest.cpp
56 USED_LIBS gtest gtest_main clangLex
Zhanyong Wanc515d182011-02-16 05:45:20 +000057 )
58
Argyrios Kyrtzidis19d5aea2012-01-19 15:59:01 +000059add_clang_unittest(Lex
60 Lex/LexerTest.cpp
61 USED_LIBS gtest gtest_main clangLex
62 )
63
Jeffrey Yasskin718b01d2011-02-15 07:54:28 +000064add_clang_unittest(Frontend
Jeffrey Yasskin718b01d2011-02-15 07:54:28 +000065 Frontend/FrontendActionTest.cpp
Jeffrey Yasskinf91ae522011-02-19 18:06:01 +000066 USED_LIBS gtest gtest_main clangFrontend
Jeffrey Yasskin718b01d2011-02-15 07:54:28 +000067 )