Summary: The unittest framework function is defined in another CMake file which may not be present if the uesr disabled tests, provide a smaller version here to keep this private. Also respesct the LIBC_INCLUDE_BENCHMARKS variable.
111 lines
3.0 KiB
CMake
111 lines
3.0 KiB
CMake
add_subdirectory(timing)
|
|
|
|
add_custom_target(gpu-benchmark)
|
|
|
|
function(add_benchmark benchmark_name)
|
|
cmake_parse_arguments(
|
|
"BENCHMARK"
|
|
"" # Optional arguments
|
|
"" # Single value arguments
|
|
"LINK_LIBRARIES;DEPENDS" # Multi-value arguments
|
|
${ARGN}
|
|
)
|
|
|
|
if(NOT libc.src.time.clock IN_LIST TARGET_LLVMLIBC_ENTRYPOINTS)
|
|
message(FATAL_ERROR "target does not support clock")
|
|
endif()
|
|
add_libc_hermetic(
|
|
${benchmark_name}
|
|
IS_GPU_BENCHMARK
|
|
LINK_LIBRARIES
|
|
LibcGpuBenchmark.hermetic
|
|
${BENCHMARK_LINK_LIBRARIES}
|
|
DEPENDS
|
|
libc.src.stdio.printf
|
|
${BENCHMARK_DEPENDS}
|
|
${BENCHMARK_UNPARSED_ARGUMENTS}
|
|
COMPILE_OPTIONS
|
|
-flto
|
|
)
|
|
get_fq_target_name(${benchmark_name} fq_target_name)
|
|
set(fq_build_target_name ${fq_target_name}.__build__)
|
|
|
|
add_dependencies(gpu-benchmark ${fq_target_name})
|
|
endfunction(add_benchmark)
|
|
|
|
function(add_benchmark_framework_library name)
|
|
cmake_parse_arguments(
|
|
"TEST_LIB"
|
|
"" # No optional arguments
|
|
"" # No single value arguments
|
|
"SRCS;HDRS;DEPENDS" # Multi value arguments
|
|
${ARGN}
|
|
)
|
|
if(NOT TEST_LIB_SRCS)
|
|
message(FATAL_ERROR "'add_benchmark_framework_library' requires SRCS; for "
|
|
"header only libraries, use 'add_header_library'")
|
|
endif()
|
|
|
|
foreach(lib IN ITEMS ${name}.hermetic)
|
|
add_library(
|
|
${lib}
|
|
STATIC
|
|
EXCLUDE_FROM_ALL
|
|
${TEST_LIB_SRCS}
|
|
${TEST_LIB_HDRS}
|
|
)
|
|
target_include_directories(${lib} PRIVATE ${LIBC_SOURCE_DIR})
|
|
if(TARGET libc.src.time.clock)
|
|
target_compile_definitions(${lib} PRIVATE TARGET_SUPPORTS_CLOCK)
|
|
endif()
|
|
endforeach()
|
|
|
|
_get_hermetic_test_compile_options(compile_options "")
|
|
target_include_directories(${name}.hermetic PRIVATE ${LIBC_INCLUDE_DIR})
|
|
target_compile_options(${name}.hermetic PRIVATE ${compile_options} -nostdinc++)
|
|
|
|
if(TEST_LIB_DEPENDS)
|
|
foreach(dep IN ITEMS ${TEST_LIB_DEPENDS})
|
|
if(TARGET ${dep}.hermetic)
|
|
add_dependencies(${name}.hermetic ${dep}.hermetic)
|
|
else()
|
|
add_dependencies(${name}.hermetic ${dep})
|
|
endif()
|
|
endforeach()
|
|
endif()
|
|
endfunction()
|
|
|
|
add_benchmark_framework_library(
|
|
LibcGpuBenchmark
|
|
SRCS
|
|
LibcGpuBenchmark.cpp
|
|
LibcGpuBenchmarkMain.cpp
|
|
HDRS
|
|
LibcGpuBenchmark.h
|
|
Random.h
|
|
DEPENDS
|
|
libc.benchmarks.gpu.timing.timing
|
|
libc.hdr.stdint_proxy
|
|
libc.src.__support.CPP.string
|
|
libc.src.__support.CPP.string_view
|
|
libc.src.__support.CPP.type_traits
|
|
libc.src.__support.CPP.algorithm
|
|
libc.src.__support.CPP.atomic
|
|
libc.src.__support.CPP.array
|
|
libc.src.__support.CPP.optional
|
|
libc.src.__support.FPUtil.fp_bits
|
|
libc.src.__support.FPUtil.nearest_integer_operations
|
|
libc.src.__support.FPUtil.sqrt
|
|
libc.src.__support.sign
|
|
libc.src.__support.fixedvector
|
|
libc.src.__support.GPU.utils
|
|
libc.src.__support.time.gpu.time_utils
|
|
libc.src.__support.macros.attributes
|
|
libc.src.__support.macros.config
|
|
libc.src.__support.macros.properties.types
|
|
libc.src.stdio.printf
|
|
libc.src.time.clock
|
|
)
|
|
|
|
add_subdirectory(src)
|