Index: lib/xray/CMakeLists.txt =================================================================== --- lib/xray/CMakeLists.txt +++ lib/xray/CMakeLists.txt @@ -85,6 +85,33 @@ xray_utils.h xray_x86_64.inc) +# Create list of all source files for +# consumption by tests. +set(XRAY_ALL_SOURCE_FILES + ${XRAY_SOURCES} + ${XRAY_FDR_MODE_SOURCES} + ${XRAY_BASIC_MODE_SOURCES} + ${XRAY_PROFILING_MODE_SOURCES} + ${x86_64_SOURCES} + ${arm_SOURCES} + ${armhf_SOURCES} + ${mips_SOURCES} + ${mipsel_SOURCES} + ${mips64_SOURCES} + ${mips64el_SOURCES} + ${powerpc64le_SOURCES} + ${XRAY_IMPL_HEADERS} +) +list(REMOVE_DUPLICATES XRAY_ALL_SOURCE_FILES) +# Make list that uses absolute paths +set(XRAY_ALL_SOURCE_FILES_ABS_PATHS "") +foreach (src_file ${XRAY_ALL_SOURCE_FILES}) + list(APPEND + XRAY_ALL_SOURCE_FILES_ABS_PATHS + "${CMAKE_CURRENT_SOURCE_DIR}/${src_file}") +endforeach() + + # Now put it all together... include_directories(..) include_directories(../../include) Index: lib/xray/tests/CMakeLists.txt =================================================================== --- lib/xray/tests/CMakeLists.txt +++ lib/xray/tests/CMakeLists.txt @@ -3,45 +3,17 @@ add_custom_target(XRayUnitTests) set_target_properties(XRayUnitTests PROPERTIES FOLDER "XRay unittests") -# Create an XRAY_IMPL_FILES variable which must include all the implementation -# files that are in the lib directory. We *must* keep this list up-to-date. -set(XRAY_IMPL_FILES - ../../xray_AArch64.cc - ../../xray_allocator.h - ../../xray_arm.cc - ../../xray_basic_flags.cc - ../../xray_basic_flags.h - ../../xray_basic_logging.cc - ../../xray_basic_logging.h - ../../xray_buffer_queue.cc - ../../xray_buffer_queue.h - ../../xray_defs.h - ../../xray_fdr_flags.cc - ../../xray_fdr_flags.h - ../../xray_fdr_logging.cc - ../../xray_fdr_logging.h - ../../xray_fdr_log_records.h - ../../xray_flags.cc - ../../xray_flags.h - ../../xray_function_call_trie.h - ../../xray_init.cc - ../../xray_interface.cc - ../../xray_interface_internal.h - ../../xray_log_interface.cc - ../../xray_mips64.cc - ../../xray_mips.cc - ../../xray_powerpc64.cc - ../../xray_profile_collector.cc - ../../xray_profile_collector.h - ../../xray_profiling_flags.cc - ../../xray_profiling_flags.h - ../../xray_recursion_guard.h - ../../xray_segmented_array.h - ../../xray_trampoline_powerpc64.cc - ../../xray_tsc.h - ../../xray_utils.cc - ../../xray_utils.h - ../../xray_x86_64.cc) +# Sanity check XRAY_ALL_SOURCE_FILES_ABS_PATHS +list(LENGTH XRAY_ALL_SOURCE_FILES_ABS_PATHS XASFAP_LENGTH) +if (${XASFAP_LENGTH} EQUAL 0) + message(FATAL_ERROR "XRAY_ALL_SOURCE_FILES_ABS_PATHS cannot be empty") +endif() +unset(XASFAP_LENGTH) +foreach (src_file ${XRAY_ALL_SOURCE_FILES_ABS_PATHS}) + if (NOT EXISTS "${src_file}") + message(FATAL_ERROR "Source file \"${src_file}\" does not exist") + endif() +endforeach() set(XRAY_UNITTEST_CFLAGS ${XRAY_CFLAGS} @@ -94,7 +66,7 @@ # tests to be re-built. This is by design, but may be cumbersome during # the build/test cycle. COMPILE_DEPS ${TEST_SOURCES} ${COMPILER_RT_GTEST_SOURCE} - ${XRAY_HEADERS} ${XRAY_IMPL_FILES} + ${XRAY_HEADERS} ${XRAY_ALL_SOURCE_FILES_ABS_PATHS} RUNTIME "${XRAY_RUNTIME_LIBS}" DEPS gtest xray CFLAGS ${XRAY_UNITTEST_CFLAGS}