зеркало из https://github.com/microsoft/clang-1.git
68 строки
2.2 KiB
CMake
68 строки
2.2 KiB
CMake
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
|
|
)
|