diff options
author | Carlo Zancanaro <carlo@pc-4w14-0.cs.usyd.edu.au> | 2012-10-15 17:10:06 +1100 |
---|---|---|
committer | Carlo Zancanaro <carlo@pc-4w14-0.cs.usyd.edu.au> | 2012-10-15 17:10:06 +1100 |
commit | be1de4be954c80875ad4108e0a33e8e131b2f2c0 (patch) | |
tree | 1fbbecf276bf7c7bdcbb4dd446099d6d90eaa516 /clang/unittests/CMakeLists.txt | |
parent | c4626a62754862d20b41e8a46a3574264ea80e6d (diff) | |
parent | f1bd2e48c5324d3f7cda4090c87f8a5b6f463ce2 (diff) |
Merge branch 'master' of ssh://bitbucket.org/czan/honours
Diffstat (limited to 'clang/unittests/CMakeLists.txt')
-rw-r--r-- | clang/unittests/CMakeLists.txt | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/clang/unittests/CMakeLists.txt b/clang/unittests/CMakeLists.txt new file mode 100644 index 0000000..0b3eac9 --- /dev/null +++ b/clang/unittests/CMakeLists.txt @@ -0,0 +1,73 @@ +include(LLVMParseArguments) + +# add_clang_unittest(test_dirname file1.cpp file2.cpp ... +# [USED_LIBS lib1 lib2] +# [LINK_COMPONENTS component1 component2]) +# +# Will compile the list of files together and link against the clang +# libraries in the USED_LIBS list and the llvm-config components in +# the LINK_COMPONENTS list. Produces a binary named +# 'basename(test_dirname)Tests'. +function(add_clang_unittest) + PARSE_ARGUMENTS(CLANG_UNITTEST "USED_LIBS;LINK_COMPONENTS" "" ${ARGN}) + set(LLVM_LINK_COMPONENTS ${CLANG_UNITTEST_LINK_COMPONENTS}) + set(LLVM_USED_LIBS ${CLANG_UNITTEST_USED_LIBS}) + list(GET CLANG_UNITTEST_DEFAULT_ARGS 0 test_dirname) + list(REMOVE_AT CLANG_UNITTEST_DEFAULT_ARGS 0) + + string(REGEX MATCH "([^/]+)$" test_name ${test_dirname}) + if (CMAKE_BUILD_TYPE) + set(CMAKE_RUNTIME_OUTPUT_DIRECTORY + ${CLANG_BINARY_DIR}/unittests/${test_dirname}/${CMAKE_BUILD_TYPE}) + else() + set(CMAKE_RUNTIME_OUTPUT_DIRECTORY + ${CLANG_BINARY_DIR}/unittests/${test_dirname}) + endif() + if( NOT LLVM_BUILD_TESTS ) + set(EXCLUDE_FROM_ALL ON) + endif() + add_clang_executable(${test_name}Tests ${CLANG_UNITTEST_DEFAULT_ARGS}) + add_dependencies(ClangUnitTests ${test_name}Tests) + set_target_properties(${test_name}Tests PROPERTIES FOLDER "Clang tests") +endfunction() + +add_custom_target(ClangUnitTests) +set_target_properties(ClangUnitTests PROPERTIES FOLDER "Clang tests") + +include_directories(${LLVM_MAIN_SRC_DIR}/utils/unittest/googletest/include) +add_definitions(-DGTEST_HAS_RTTI=0) +if( LLVM_COMPILER_IS_GCC_COMPATIBLE ) + llvm_replace_compiler_option(CMAKE_CXX_FLAGS "-frtti" "-fno-rtti") +elseif( MSVC ) + llvm_replace_compiler_option(CMAKE_CXX_FLAGS "/GR" "/GR-") +endif() + +if (NOT LLVM_ENABLE_THREADS) + add_definitions(-DGTEST_HAS_PTHREAD=0) +endif() + +if(SUPPORTS_NO_VARIADIC_MACROS_FLAG) + add_definitions("-Wno-variadic-macros") +endif() + +add_clang_unittest(Basic + Basic/FileManagerTest.cpp + Basic/SourceManagerTest.cpp + USED_LIBS gtest gtest_main clangLex + ) + +add_clang_unittest(Lex + Lex/LexerTest.cpp + USED_LIBS gtest gtest_main clangLex + ) + +add_clang_unittest(Frontend + Frontend/FrontendActionTest.cpp + USED_LIBS gtest gtest_main clangFrontend + ) + +add_clang_unittest(Tooling + Tooling/CompilationDatabaseTest.cpp + Tooling/ToolingTest.cpp + USED_LIBS gtest gtest_main clangTooling + ) |