blob: d762aaf7f49bdc4ce864dff087b05a5262ce8adf [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)
31endfunction()
32
33add_custom_target(ClangUnitTests)
34
35include_directories(${LLVM_MAIN_SRC_DIR}/utils/unittest/googletest/include)
36add_definitions(-DGTEST_HAS_RTTI=0)
37if( CMAKE_COMPILER_IS_GNUCXX )
38 llvm_replace_compiler_option(CMAKE_CXX_FLAGS "-frtti" "-fno-rtti")
39elseif( MSVC )
40 llvm_replace_compiler_option(CMAKE_CXX_FLAGS "/GR" "/GR-")
41endif()
42
43if (NOT LLVM_ENABLE_THREADS)
44 add_definitions(-DGTEST_HAS_PTHREAD=0)
45endif()
46
47if(SUPPORTS_NO_VARIADIC_MACROS_FLAG)
48 add_definitions("-Wno-variadic-macros")
49endif()
50
Zhanyong Wanc515d182011-02-16 05:45:20 +000051add_clang_unittest(Basic
Zhanyong Wanc515d182011-02-16 05:45:20 +000052 Basic/FileManagerTest.cpp
Jeffrey Yasskinf91ae522011-02-19 18:06:01 +000053 USED_LIBS gtest gtest_main clangBasic
Zhanyong Wanc515d182011-02-16 05:45:20 +000054 )
55
Jeffrey Yasskin718b01d2011-02-15 07:54:28 +000056add_clang_unittest(Frontend
Jeffrey Yasskin718b01d2011-02-15 07:54:28 +000057 Frontend/FrontendActionTest.cpp
Jeffrey Yasskinf91ae522011-02-19 18:06:01 +000058 USED_LIBS gtest gtest_main clangFrontend
Jeffrey Yasskin718b01d2011-02-15 07:54:28 +000059 )