Skip to content
Merged
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
36 changes: 33 additions & 3 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,18 +1,48 @@
cmake_minimum_required(VERSION 3.12)
project(ctrack VERSION 1.0.0 LANGUAGES CXX)
project(ctrack VERSION 1.0.2 LANGUAGES CXX)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

# Option to disable parallel processing
option(DISABLE_PAR "Disable parallel processing" OFF)

# Option to disable building examples
option(DISABLE_EXAMPLES "Disable building examples" 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()
elseif(DISABLE_PAR)
message(STATUS "DISABLE_PAR set. Disabling parallel execution.")
endif()

# Create the ctrack library
add_library(ctrack INTERFACE)
target_include_directories(ctrack INTERFACE
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
$<INSTALL_INTERFACE:include>
)

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

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

# Installation
include(GNUInstallDirs)
Expand Down
17 changes: 16 additions & 1 deletion Config.cmake.in
Original file line number Diff line number Diff line change
@@ -1,3 +1,18 @@
@PACKAGE_INIT@

include("${CMAKE_CURRENT_LIST_DIR}/ctrackTargets.cmake")
include("${CMAKE_CURRENT_LIST_DIR}/ctrackTargets.cmake")

if(NOT MSVC AND NOT CTRACK_DISABLE_EXECUTION_POLICY)
include(CMakeFindDependencyMacro)
find_dependency(TBB QUIET)
if(NOT TBB_FOUND)
message(STATUS "TBB not found. Disabling parallel execution for ctrack.")
set(CTRACK_DISABLE_EXECUTION_POLICY ON)
endif()
endif()

if(CTRACK_DISABLE_EXECUTION_POLICY)
target_compile_definitions(ctrack::ctrack INTERFACE CTRACK_DISABLE_EXECUTION_POLICY)
endif()

check_required_components(ctrack)
30 changes: 0 additions & 30 deletions examples/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,26 +1,3 @@
option(DISABLE_PAR "Disable parallel processing" OFF)
if(NOT MSVC AND NOT DISABLE_PAR)
# For other compilers, check for TBB
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.")
endif()


# Function to enable parallel execution on non msvc
function(enable_parallel_execution target)
if(DISABLE_PAR)
target_compile_definitions(${target} PRIVATE CTRACK_DISABLE_EXECUTION_POLICY)
elseif(NOT MSVC)
target_link_libraries(${target} PRIVATE TBB::tbb)
endif()
endfunction()

# Create executables for each example
add_executable(basic_singlethreaded basic_singlethreaded.cpp)
Expand All @@ -29,13 +6,6 @@ add_executable(ctrack_overhead_test ctrack_overhead_test.cpp)
add_executable(high_variance_pi_estimation high_variance_pi_estimation.cpp)
add_executable(complex_multithreaded_puzzle complex_multithreaded_puzzle.cpp)

#check for paralell
enable_parallel_execution(basic_singlethreaded)
enable_parallel_execution(multithreaded_prime_counter)
enable_parallel_execution(ctrack_overhead_test)
enable_parallel_execution(high_variance_pi_estimation)
enable_parallel_execution(complex_multithreaded_puzzle)

# Link the ctrack library to each example
target_link_libraries(basic_singlethreaded PRIVATE ctrack)
target_link_libraries(multithreaded_prime_counter PRIVATE ctrack)
Expand Down
2 changes: 1 addition & 1 deletion include/ctrack.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@

#define CTRACK_VERSION_MAJOR 1
#define CTRACK_VERSION_MINOR 0
#define CTRACK_VERSION_PATCH 1
#define CTRACK_VERSION_PATCH 2

// Helper macro to convert a numeric value to a string
#define STRINGIFY(x) #x
Expand Down