1*58b9f456SAndroid Build Coastguard Worker 2*58b9f456SAndroid Build Coastguard Workerinclude(split_list) 3*58b9f456SAndroid Build Coastguard Worker 4*58b9f456SAndroid Build Coastguard Workerset(ASM_TEST_FLAGS "") 5*58b9f456SAndroid Build Coastguard Workercheck_cxx_compiler_flag(-O3 BENCHMARK_HAS_O3_FLAG) 6*58b9f456SAndroid Build Coastguard Workerif (BENCHMARK_HAS_O3_FLAG) 7*58b9f456SAndroid Build Coastguard Worker list(APPEND ASM_TEST_FLAGS -O3) 8*58b9f456SAndroid Build Coastguard Workerendif() 9*58b9f456SAndroid Build Coastguard Worker 10*58b9f456SAndroid Build Coastguard Workercheck_cxx_compiler_flag(-g0 BENCHMARK_HAS_G0_FLAG) 11*58b9f456SAndroid Build Coastguard Workerif (BENCHMARK_HAS_G0_FLAG) 12*58b9f456SAndroid Build Coastguard Worker list(APPEND ASM_TEST_FLAGS -g0) 13*58b9f456SAndroid Build Coastguard Workerendif() 14*58b9f456SAndroid Build Coastguard Worker 15*58b9f456SAndroid Build Coastguard Workercheck_cxx_compiler_flag(-fno-stack-protector BENCHMARK_HAS_FNO_STACK_PROTECTOR_FLAG) 16*58b9f456SAndroid Build Coastguard Workerif (BENCHMARK_HAS_FNO_STACK_PROTECTOR_FLAG) 17*58b9f456SAndroid Build Coastguard Worker list(APPEND ASM_TEST_FLAGS -fno-stack-protector) 18*58b9f456SAndroid Build Coastguard Workerendif() 19*58b9f456SAndroid Build Coastguard Worker 20*58b9f456SAndroid Build Coastguard Workersplit_list(ASM_TEST_FLAGS) 21*58b9f456SAndroid Build Coastguard Workerstring(TOUPPER "${CMAKE_CXX_COMPILER_ID}" ASM_TEST_COMPILER) 22*58b9f456SAndroid Build Coastguard Worker 23*58b9f456SAndroid Build Coastguard Workermacro(add_filecheck_test name) 24*58b9f456SAndroid Build Coastguard Worker cmake_parse_arguments(ARG "" "" "CHECK_PREFIXES" ${ARGV}) 25*58b9f456SAndroid Build Coastguard Worker add_library(${name} OBJECT ${name}.cc) 26*58b9f456SAndroid Build Coastguard Worker set_target_properties(${name} PROPERTIES COMPILE_FLAGS "-S ${ASM_TEST_FLAGS}") 27*58b9f456SAndroid Build Coastguard Worker set(ASM_OUTPUT_FILE "${CMAKE_CURRENT_BINARY_DIR}/${name}.s") 28*58b9f456SAndroid Build Coastguard Worker add_custom_target(copy_${name} ALL 29*58b9f456SAndroid Build Coastguard Worker COMMAND ${PROJECT_SOURCE_DIR}/tools/strip_asm.py 30*58b9f456SAndroid Build Coastguard Worker $<TARGET_OBJECTS:${name}> 31*58b9f456SAndroid Build Coastguard Worker ${ASM_OUTPUT_FILE} 32*58b9f456SAndroid Build Coastguard Worker BYPRODUCTS ${ASM_OUTPUT_FILE}) 33*58b9f456SAndroid Build Coastguard Worker add_dependencies(copy_${name} ${name}) 34*58b9f456SAndroid Build Coastguard Worker if (NOT ARG_CHECK_PREFIXES) 35*58b9f456SAndroid Build Coastguard Worker set(ARG_CHECK_PREFIXES "CHECK") 36*58b9f456SAndroid Build Coastguard Worker endif() 37*58b9f456SAndroid Build Coastguard Worker foreach(prefix ${ARG_CHECK_PREFIXES}) 38*58b9f456SAndroid Build Coastguard Worker add_test(NAME run_${name}_${prefix} 39*58b9f456SAndroid Build Coastguard Worker COMMAND 40*58b9f456SAndroid Build Coastguard Worker ${LLVM_FILECHECK_EXE} ${name}.cc 41*58b9f456SAndroid Build Coastguard Worker --input-file=${ASM_OUTPUT_FILE} 42*58b9f456SAndroid Build Coastguard Worker --check-prefixes=CHECK,CHECK-${ASM_TEST_COMPILER} 43*58b9f456SAndroid Build Coastguard Worker WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}) 44*58b9f456SAndroid Build Coastguard Worker endforeach() 45*58b9f456SAndroid Build Coastguard Workerendmacro() 46*58b9f456SAndroid Build Coastguard Worker 47