summaryrefslogtreecommitdiff
path: root/clang/unittests/CMakeLists.txt
diff options
context:
space:
mode:
authorCarlo Zancanaro <carlo@pc-4w14-0.cs.usyd.edu.au>2012-10-15 17:10:06 +1100
committerCarlo Zancanaro <carlo@pc-4w14-0.cs.usyd.edu.au>2012-10-15 17:10:06 +1100
commitbe1de4be954c80875ad4108e0a33e8e131b2f2c0 (patch)
tree1fbbecf276bf7c7bdcbb4dd446099d6d90eaa516 /clang/unittests/CMakeLists.txt
parentc4626a62754862d20b41e8a46a3574264ea80e6d (diff)
parentf1bd2e48c5324d3f7cda4090c87f8a5b6f463ce2 (diff)
Merge branch 'master' of ssh://bitbucket.org/czan/honours
Diffstat (limited to 'clang/unittests/CMakeLists.txt')
-rw-r--r--clang/unittests/CMakeLists.txt73
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
+ )