1
- #Allow the source files to find headers in src /
1
+ # Allow the source files to find headers in src /
2
2
include (GNUInstallDirs)
3
3
include_directories (${PROJECT_SOURCE_DIR} /src)
4
4
5
- if (DEFINED BENCHMARK_CXX_LINKER_FLAGS)
5
+ if (DEFINED BENCHMARK_CXX_LINKER_FLAGS)
6
6
list (APPEND CMAKE_SHARED_LINKER_FLAGS ${BENCHMARK_CXX_LINKER_FLAGS} )
7
7
list (APPEND CMAKE_MODULE_LINKER_FLAGS ${BENCHMARK_CXX_LINKER_FLAGS} )
8
8
endif ()
9
9
10
- file (GLOB
11
- SOURCE_FILES
12
- *.cc
13
- ${PROJECT_SOURCE_DIR} /include /benchmark/*.h
14
- ${CMAKE_CURRENT_SOURCE_DIR} /*.h)
10
+ file (GLOB SOURCE_FILES *.cc ${PROJECT_SOURCE_DIR} /include /benchmark/*.h
11
+ ${CMAKE_CURRENT_SOURCE_DIR} /*.h)
15
12
file (GLOB BENCHMARK_MAIN "benchmark_main.cc" )
16
13
foreach (item ${BENCHMARK_MAIN} )
17
14
list (REMOVE_ITEM SOURCE_FILES "${item} " )
18
15
endforeach ()
19
16
20
17
add_library (benchmark ${SOURCE_FILES} )
21
18
add_library (benchmark::benchmark ALIAS benchmark)
22
- set_target_properties (benchmark PROPERTIES
23
- OUTPUT_NAME "benchmark"
24
- VERSION ${GENERIC_LIB_VERSION}
25
- SOVERSION ${GENERIC_LIB_SOVERSION}
26
- )
27
- target_include_directories (benchmark PUBLIC
28
- $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR} /include >
29
- )
19
+ set_target_properties (
20
+ benchmark
21
+ PROPERTIES OUTPUT_NAME "benchmark"
22
+ VERSION ${GENERIC_LIB_VERSION}
23
+ SOVERSION ${GENERIC_LIB_SOVERSION} )
24
+ target_include_directories (
25
+ benchmark PUBLIC $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR} /include >)
30
26
31
27
set_property (
32
28
SOURCE benchmark.cc
33
29
APPEND
34
- PROPERTY COMPILE_DEFINITIONS
35
- BENCHMARK_VERSION="${VERSION} "
36
- )
30
+ PROPERTY COMPILE_DEFINITIONS BENCHMARK_VERSION="${VERSION} " )
37
31
38
32
# libpfm, if available
39
- if (PFM_FOUND)
33
+ if (PFM_FOUND)
40
34
target_link_libraries (benchmark PRIVATE PFM::libpfm)
41
35
target_compile_definitions (benchmark PRIVATE -DHAVE_LIBPFM)
42
36
endif ()
@@ -55,7 +49,6 @@ if(HAVE_LIB_RT)
55
49
target_link_libraries (benchmark PRIVATE rt)
56
50
endif (HAVE_LIB_RT)
57
51
58
-
59
52
# We need extra libraries on Windows
60
53
if (${CMAKE_SYSTEM_NAME} MATCHES "Windows" )
61
54
target_link_libraries (benchmark PRIVATE shlwapi)
@@ -67,24 +60,23 @@ if(${CMAKE_SYSTEM_NAME} MATCHES "SunOS")
67
60
set (BENCHMARK_PRIVATE_LINK_LIBRARIES -lkstat)
68
61
endif ()
69
62
70
- if (NOT BUILD_SHARED_LIBS )
63
+ if (NOT BUILD_SHARED_LIBS )
71
64
target_compile_definitions (benchmark PUBLIC -DBENCHMARK_STATIC_DEFINE)
72
65
endif ()
73
66
74
67
# Benchmark main library
75
68
add_library (benchmark_main "benchmark_main.cc" )
76
69
add_library (benchmark::benchmark_main ALIAS benchmark_main)
77
- set_target_properties (benchmark_main PROPERTIES
78
- OUTPUT_NAME " benchmark_main"
79
- VERSION ${GENERIC_LIB_VERSION}
80
- SOVERSION ${GENERIC_LIB_SOVERSION }
81
- DEFINE_SYMBOL benchmark_EXPORTS
82
- )
70
+ set_target_properties (
71
+ benchmark_main
72
+ PROPERTIES OUTPUT_NAME "benchmark_main"
73
+ VERSION ${GENERIC_LIB_VERSION }
74
+ SOVERSION ${GENERIC_LIB_SOVERSION}
75
+ DEFINE_SYMBOL benchmark_EXPORTS )
83
76
target_link_libraries (benchmark_main PUBLIC benchmark::benchmark)
84
77
85
- add_subdirectory (${PROJECT_SOURCE_DIR} /../core codspeed)
86
-
87
- target_link_libraries (benchmark PRIVATE codspeed)
78
+ # TODO: Find a way to not expose codspeed headers to downstream users
79
+ target_link_libraries (benchmark PUBLIC codspeed)
88
80
89
81
set (generated_dir "${PROJECT_BINARY_DIR} " )
90
82
@@ -100,57 +92,57 @@ set(namespace "${PROJECT_NAME}::")
100
92
101
93
include (CMakePackageConfigHelpers)
102
94
103
- configure_package_config_file (
104
- ${PROJECT_SOURCE_DIR} /cmake/Config.cmake.in
105
- ${project_config}
95
+ configure_package_config_file(
96
+ ${PROJECT_SOURCE_DIR} /cmake/Config.cmake.in ${project_config}
106
97
INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR} /cmake/${PROJECT_NAME}
107
- NO_SET_AND_CHECK_MACRO
108
- NO_CHECK_REQUIRED_COMPONENTS_MACRO
109
- )
98
+ NO_SET_AND_CHECK_MACRO NO_CHECK_REQUIRED_COMPONENTS_MACRO)
110
99
write_basic_package_version_file(
111
- "${version_config} " VERSION ${GENERIC_LIB_VERSION} COMPATIBILITY SameMajorVersion
112
- )
100
+ "${version_config} "
101
+ VERSION ${GENERIC_LIB_VERSION}
102
+ COMPATIBILITY SameMajorVersion)
113
103
114
- configure_file ("${PROJECT_SOURCE_DIR} /cmake/benchmark.pc.in" "${pkg_config} " @ONLY)
115
- configure_file ("${PROJECT_SOURCE_DIR} /cmake/benchmark_main.pc.in" "${pkg_config_main} " @ONLY)
104
+ configure_file ("${PROJECT_SOURCE_DIR} /cmake/benchmark.pc.in" "${pkg_config} "
105
+ @ONLY)
106
+ configure_file ("${PROJECT_SOURCE_DIR} /cmake/benchmark_main.pc.in"
107
+ "${pkg_config_main} " @ONLY)
116
108
117
- export (
109
+ export (
118
110
TARGETS ${targets_to_export}
119
111
NAMESPACE "${namespace} "
120
- FILE ${generated_dir} /${targets_export_name} .cmake
121
- )
112
+ FILE ${generated_dir} /${targets_export_name} .cmake)
122
113
123
- if (BENCHMARK_ENABLE_INSTALL)
124
- # Install target (will install the library to specified CMAKE_INSTALL_PREFIX variable)
114
+ if (BENCHMARK_ENABLE_INSTALL)
115
+ # Install target (will install the library to specified CMAKE_INSTALL_PREFIX
116
+ # variable)
125
117
install (
126
118
TARGETS ${targets_to_export}
127
119
EXPORT ${targets_export_name}
128
120
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
129
121
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
130
122
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
131
- INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} )
123
+ INCLUDES
124
+ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} )
132
125
133
126
install (
134
127
DIRECTORY "${PROJECT_SOURCE_DIR} /include/benchmark"
135
128
"${PROJECT_BINARY_DIR} /include/benchmark"
136
129
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
137
- FILES_MATCHING PATTERN "*.*h" )
130
+ FILES_MATCHING
131
+ PATTERN "*.*h" )
138
132
139
- install (
140
- FILES "${project_config} " "${version_config} "
141
- DESTINATION "${CMAKE_INSTALL_LIBDIR} /cmake/${PROJECT_NAME} " )
133
+ install (FILES "${project_config} " "${version_config} "
134
+ DESTINATION "${CMAKE_INSTALL_LIBDIR} /cmake/${PROJECT_NAME} " )
142
135
143
- install (
144
- FILES "${pkg_config} " "${pkg_config_main} "
145
- DESTINATION "${CMAKE_INSTALL_LIBDIR} /pkgconfig" )
136
+ install (FILES "${pkg_config} " "${pkg_config_main} "
137
+ DESTINATION "${CMAKE_INSTALL_LIBDIR} /pkgconfig" )
146
138
147
139
install (
148
- EXPORT "${targets_export_name} "
149
- NAMESPACE "${namespace} "
150
- DESTINATION "${CMAKE_INSTALL_LIBDIR} /cmake/${PROJECT_NAME} " )
140
+ EXPORT "${targets_export_name} "
141
+ NAMESPACE "${namespace} "
142
+ DESTINATION "${CMAKE_INSTALL_LIBDIR} /cmake/${PROJECT_NAME} " )
151
143
endif ()
152
144
153
- if (BENCHMARK_ENABLE_DOXYGEN)
145
+ if (BENCHMARK_ENABLE_DOXYGEN)
154
146
find_package (Doxygen REQUIRED)
155
147
set (DOXYGEN_QUIET YES )
156
148
set (DOXYGEN_RECURSIVE YES )
@@ -164,22 +156,17 @@ if (BENCHMARK_ENABLE_DOXYGEN)
164
156
set (DOXYGEN_BINARY_TOC YES )
165
157
set (DOXYGEN_TOC_EXPAND YES )
166
158
set (DOXYGEN_USE_MDFILE_AS_MAINPAGE "index.md" )
167
- doxygen_add_docs(benchmark_doxygen
168
- docs
169
- include
170
- src
171
- ALL
159
+ doxygen_add_docs(
160
+ benchmark_doxygen docs include src ALL
172
161
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
173
162
COMMENT "Building documentation with Doxygen." )
174
- if (BENCHMARK_ENABLE_INSTALL AND BENCHMARK_INSTALL_DOCS)
175
- install (
176
- DIRECTORY "${CMAKE_CURRENT_BINARY_DIR} /html/"
177
- DESTINATION ${CMAKE_INSTALL_DOCDIR} )
163
+ if (BENCHMARK_ENABLE_INSTALL AND BENCHMARK_INSTALL_DOCS)
164
+ install (DIRECTORY "${CMAKE_CURRENT_BINARY_DIR} /html/"
165
+ DESTINATION ${CMAKE_INSTALL_DOCDIR} )
178
166
endif ()
179
167
else ()
180
- if (BENCHMARK_ENABLE_INSTALL AND BENCHMARK_INSTALL_DOCS)
181
- install (
182
- DIRECTORY "${PROJECT_SOURCE_DIR} /docs/"
183
- DESTINATION ${CMAKE_INSTALL_DOCDIR} )
168
+ if (BENCHMARK_ENABLE_INSTALL AND BENCHMARK_INSTALL_DOCS)
169
+ install (DIRECTORY "${PROJECT_SOURCE_DIR} /docs/"
170
+ DESTINATION ${CMAKE_INSTALL_DOCDIR} )
184
171
endif ()
185
172
endif ()
0 commit comments