Skip to content

Commit 915e6b0

Browse files
feat(google_benchmark): add very basic codspeed core library
1 parent ef01d2a commit 915e6b0

File tree

5 files changed

+42
-1
lines changed

5 files changed

+42
-1
lines changed

core/CMakeLists.txt

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
cmake_minimum_required(VERSION 3.10)
2+
project(
3+
codspeed
4+
VERSION 1.0
5+
LANGUAGES CXX)
6+
7+
# Specify the C++ standard
8+
set(CMAKE_CXX_STANDARD 17)
9+
set(CMAKE_CXX_STANDARD_REQUIRED True)
10+
11+
# Add the include directory
12+
include_directories(include)
13+
14+
# Add the library
15+
add_library(codspeed src/codspeed.cpp)
16+
17+
# Specify the include directories for users of the library
18+
target_include_directories(
19+
codspeed
20+
PUBLIC $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/include>
21+
)

core/include/codspeed.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
#ifndef CODSPEED_H
2+
#define CODSPEED_H
3+
4+
void hello_codspeed();
5+
6+
#endif // CODSPEED_H

core/src/codspeed.cpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
#include <codspeed.h>
2+
#include <iostream>
3+
4+
void hello_codspeed() {
5+
std::cout << "Hello from CodSpeed core library!" << std::endl;
6+
}

google_benchmark/src/CMakeLists.txt

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,13 +82,18 @@ set_target_properties(benchmark_main PROPERTIES
8282
)
8383
target_link_libraries(benchmark_main PUBLIC benchmark::benchmark)
8484

85+
add_subdirectory(${PROJECT_SOURCE_DIR}/../core codspeed)
86+
87+
target_link_libraries(benchmark PRIVATE codspeed)
88+
8589
set(generated_dir "${PROJECT_BINARY_DIR}")
8690

8791
set(version_config "${generated_dir}/${PROJECT_NAME}ConfigVersion.cmake")
8892
set(project_config "${generated_dir}/${PROJECT_NAME}Config.cmake")
8993
set(pkg_config "${generated_dir}/${PROJECT_NAME}.pc")
9094
set(pkg_config_main "${generated_dir}/${PROJECT_NAME}_main.pc")
91-
set(targets_to_export benchmark benchmark_main)
95+
# TODO: Find a way to not expose codspeed headers to downstream users
96+
set(targets_to_export benchmark benchmark_main codspeed)
9297
set(targets_export_name "${PROJECT_NAME}Targets")
9398

9499
set(namespace "${PROJECT_NAME}::")

google_benchmark/src/benchmark.cc

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616

1717
#include "benchmark_api_internal.h"
1818
#include "benchmark_runner.h"
19+
#include "codspeed.h"
1920
#include "internal_macros.h"
2021

2122
#ifndef BENCHMARK_OS_WINDOWS
@@ -381,6 +382,8 @@ void RunBenchmarks(const std::vector<BenchmarkInstance>& benchmarks,
381382
// Note the file_reporter can be null.
382383
BM_CHECK(display_reporter != nullptr);
383384

385+
hello_codspeed();
386+
384387
// Determine the width of the name field using a minimum width of 10.
385388
bool might_have_aggregates = FLAGS_benchmark_repetitions > 1;
386389
size_t name_field_width = 10;

0 commit comments

Comments
 (0)