Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
48 changes: 24 additions & 24 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -20,15 +20,15 @@ option(ENABLE_WARNINGS "Enable warnings" OFF)

# Check for TBB
if(NOT MSVC AND NOT DISABLE_PAR)
find_package(TBB QUIET)
if(TBB_FOUND)
message(STATUS "TBB found. Enabling parallel execution.")
else()
message(STATUS "TBB not found. Disabling parallel execution.")
set(DISABLE_PAR ON)
endif()
find_package(TBB QUIET)
if(TBB_FOUND)
message(STATUS "TBB found. Enabling parallel execution.")
else()
message(STATUS "TBB not found. Disabling parallel execution.")
set(DISABLE_PAR ON)
endif()
elseif(DISABLE_PAR)
message(STATUS "DISABLE_PAR set. Disabling parallel execution.")
message(STATUS "DISABLE_PAR set. Disabling parallel execution.")
endif()

# Create the ctrack library
Expand All @@ -40,41 +40,41 @@ target_include_directories(ctrack INTERFACE

# Configure ctrack based on TBB availability
if(DISABLE_PAR)
target_compile_definitions(ctrack INTERFACE CTRACK_DISABLE_EXECUTION_POLICY)
target_compile_definitions(ctrack INTERFACE CTRACK_DISABLE_EXECUTION_POLICY)
elseif(NOT MSVC AND TBB_FOUND)
target_link_libraries(ctrack INTERFACE TBB::tbb)
target_link_libraries(ctrack INTERFACE TBB::tbb)
endif()

set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
if(ENABLE_WARNINGS)
if (NOT MSVC)
include(cmake/add_warning.cmake)
include(cmake/warnings.cmake)
endif()
if (NOT MSVC)
include(cmake/add_warning.cmake)
include(cmake/warnings.cmake)
endif()
endif()

# Add the examples subdirectory if not disabled
if(NOT DISABLE_EXAMPLES)
add_subdirectory(examples)
add_subdirectory(examples)
else()
message(STATUS "Building examples disabled.")
message(STATUS "Building examples disabled.")
endif()

# Add the benchmark subdirectory if enabled
if(BUILD_BENCHMARK)
add_subdirectory(benchmark)
message(STATUS "Building benchmark enabled.")
add_subdirectory(benchmark)
message(STATUS "Building benchmark enabled.")
else()
message(STATUS "Building benchmark disabled.")
message(STATUS "Building benchmark disabled.")
endif()

# Add the test subdirectory if enabled
if(BUILD_TESTS)
add_subdirectory(test)
enable_testing()
message(STATUS "Building tests enabled.")
add_subdirectory(test)
enable_testing()
message(STATUS "Building tests enabled.")
else()
message(STATUS "Building tests disabled.")
message(STATUS "Building tests disabled.")
endif()

# Installation
Expand Down Expand Up @@ -109,4 +109,4 @@ install(FILES
"${CMAKE_CURRENT_BINARY_DIR}/ctrackConfig.cmake"
"${CMAKE_CURRENT_BINARY_DIR}/ctrackConfigVersion.cmake"
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/ctrack
)
)
43 changes: 24 additions & 19 deletions benchmark/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,24 +1,29 @@
add_executable(ctrack_benchmark ctrack_benchmark.cpp)
target_link_libraries(ctrack_benchmark PRIVATE ctrack)

# Enable threading support
set(THREADS_PREFER_PTHREAD_FLAG ON)
find_package(Threads REQUIRED)
target_link_libraries(ctrack_benchmark PRIVATE Threads::Threads)

# Add filesystem library if needed (for older compilers)
if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
# Helper macro — avoids repetition
macro(add_ctrack_benchmark target_name clock_define)
add_executable(${target_name} ctrack_benchmark.cpp)
target_link_libraries(${target_name} PRIVATE ctrack)
target_compile_options(${target_name} PRIVATE -O3)
if(NOT "${clock_define}" STREQUAL "")
target_compile_definitions(${target_name} PRIVATE ${clock_define})
endif()
set(THREADS_PREFER_PTHREAD_FLAG ON)
find_package(Threads REQUIRED)
target_link_libraries(${target_name} PRIVATE Threads::Threads)
if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS 9.0)
target_link_libraries(ctrack_benchmark PRIVATE stdc++fs)
target_link_libraries(${target_name} PRIVATE stdc++fs)
endif()
elseif(CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
elseif(CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS 9.0)
target_link_libraries(ctrack_benchmark PRIVATE c++fs)
target_link_libraries(${target_name} PRIVATE c++fs)
endif()
endif()

# Set output directory
set_target_properties(ctrack_benchmark
PROPERTIES
endif()
set_target_properties(${target_name} PROPERTIES
RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/benchmark"
)
)
endmacro()

add_ctrack_benchmark(ctrack_benchmark "")
add_ctrack_benchmark(ctrack_benchmark_rdtsc CTRACK_CLOCK_RDTSC)
add_ctrack_benchmark(ctrack_benchmark_rdtscp CTRACK_CLOCK_RDTSCP)
add_ctrack_benchmark(ctrack_benchmark_rdtscp_lfence CTRACK_CLOCK_RDTSCP_LFENCE)
114 changes: 114 additions & 0 deletions benchmark/bench_results.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading