blob: b50272cda036b06cd300540d2fc7414d9d1868f5 [file] [log] [blame]
Alexey Samsonov02dcc632012-12-19 12:33:39 +00001include(AddLLVM)
2include(LLVMParseArguments)
3
4set(COMPILER_RT_GTEST_PATH ${LLVM_MAIN_SRC_DIR}/utils/unittest/googletest)
5set(COMPILER_RT_GTEST_SOURCE ${COMPILER_RT_GTEST_PATH}/gtest-all.cc)
6set(COMPILER_RT_GTEST_INCLUDE_CFLAGS
7 -DGTEST_NO_LLVM_RAW_OSTREAM=1
8 -I${COMPILER_RT_GTEST_PATH}/include
9)
10
11# Use Clang to link objects into a single executable with just-built
12# Clang, using specific link flags. Make executable a part of provided
13# test_suite.
14# add_compiler_rt_test(<test_suite> <test_name>
15# OBJECTS <object files>
16# DEPS <deps (e.g. runtime libs)>
17# LINK_FLAGS <link flags>)
18macro(add_compiler_rt_test test_suite test_name)
19 parse_arguments(TEST "OBJECTS;DEPS;LINK_FLAGS" "" ${ARGN})
20 get_unittest_directory(OUTPUT_DIR)
Evgeniy Stepanov49ca9972012-12-20 14:34:09 +000021 file(MAKE_DIRECTORY ${OUTPUT_DIR})
Alexey Samsonov02dcc632012-12-19 12:33:39 +000022 set(output_bin "${OUTPUT_DIR}/${test_name}")
23 add_custom_command(
24 OUTPUT ${output_bin}
25 COMMAND clang ${TEST_OBJECTS} -o "${output_bin}"
26 ${TEST_LINK_FLAGS}
27 DEPENDS clang ${TEST_DEPS} ${TEST_OBJECTS})
28 add_custom_target(${test_name} DEPENDS ${output_bin})
29 # Make the test suite depend on the binary.
30 add_dependencies(${test_suite} ${test_name})
31endmacro()