Skip to content
This repository was archived by the owner on Mar 22, 2023. It is now read-only.

Commit 2df10e8

Browse files
Merge pull request #1000 from lukaszstolarczuk/cmake-source-vars
cmake: add ROOT_DIR and make use of CURRENT_*_DIR variables
2 parents c8742a3 + 2c6c220 commit 2df10e8

File tree

7 files changed

+42
-41
lines changed

7 files changed

+42
-41
lines changed

CMakeLists.txt

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ if(VERSION_PRERELEASE)
2020
set(VERSION ${VERSION}-${VERSION_PRERELEASE})
2121
endif()
2222

23+
set(LIBPMEMOBJCPP_ROOT_DIR ${CMAKE_CURRENT_SOURCE_DIR})
2324
set(LIBPMEMOBJ_REQUIRED_VERSION 1.9)
2425
set(LIBPMEM_REQUIRED_VERSION 1.7)
2526
# Only pmreorder in ver. >= 1.9 guarantees reliable output
@@ -43,7 +44,7 @@ if(NOT CMAKE_BUILD_TYPE)
4344
set(CMAKE_BUILD_TYPE "Debug")
4445
endif()
4546

46-
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_SOURCE_DIR}/cmake)
47+
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${LIBPMEMOBJCPP_ROOT_DIR}/cmake)
4748

4849
# ----------------------------------------------------------------- #
4950
## CMake build options
@@ -94,7 +95,7 @@ include(CheckCXXSourceCompiles)
9495
include(CheckCXXCompilerFlag)
9596
include(GNUInstallDirs)
9697

97-
include(${CMAKE_SOURCE_DIR}/cmake/functions.cmake)
98+
include(${LIBPMEMOBJCPP_ROOT_DIR}/cmake/functions.cmake)
9899
# set SRCVERSION, it's more accurate and "current" than VERSION
99100
set_source_ver(SRCVERSION)
100101

@@ -165,8 +166,8 @@ add_custom_target(cppstyle)
165166
add_custom_target(cppformat)
166167
add_custom_target(check-whitespace)
167168
add_custom_target(check-license
168-
COMMAND ${CMAKE_SOURCE_DIR}/utils/check_license/check-headers.sh
169-
${CMAKE_SOURCE_DIR}
169+
COMMAND ${LIBPMEMOBJCPP_ROOT_DIR}/utils/check_license/check-headers.sh
170+
${LIBPMEMOBJCPP_ROOT_DIR}
170171
BSD-3-Clause)
171172

172173
if(CHECK_CPP_STYLE)
@@ -217,8 +218,8 @@ add_cppstyle(include-container-detail ${CMAKE_CURRENT_SOURCE_DIR}/include/libpme
217218
add_cppstyle(include-detail ${CMAKE_CURRENT_SOURCE_DIR}/include/libpmemobj++/detail/*.hpp)
218219
add_cppstyle(include-experimental ${CMAKE_CURRENT_SOURCE_DIR}/include/libpmemobj++/experimental/*.hpp)
219220

220-
add_check_whitespace(main ${CMAKE_SOURCE_DIR}/utils/check_license/*.sh
221-
${CMAKE_SOURCE_DIR}/README.md)
221+
add_check_whitespace(main ${LIBPMEMOBJCPP_ROOT_DIR}/utils/check_license/*.sh
222+
${LIBPMEMOBJCPP_ROOT_DIR}/*.md)
222223
add_check_whitespace(include ${CMAKE_CURRENT_SOURCE_DIR}/include/libpmemobj++/*.hpp)
223224
add_check_whitespace(include-container ${CMAKE_CURRENT_SOURCE_DIR}/include/libpmemobj++/container/*.hpp)
224225
add_check_whitespace(include-container-detail ${CMAKE_CURRENT_SOURCE_DIR}/include/libpmemobj++/container/detail/*.hpp)
@@ -230,7 +231,7 @@ add_check_whitespace(cmake-helpers ${CMAKE_CURRENT_SOURCE_DIR}/cmake/*.cmake)
230231
# ----------------------------------------------------------------- #
231232
## Configure make install/uninstall and packages
232233
# ----------------------------------------------------------------- #
233-
configure_file(${CMAKE_SOURCE_DIR}/cmake/version.hpp.in
234+
configure_file(${LIBPMEMOBJCPP_ROOT_DIR}/cmake/version.hpp.in
234235
${CMAKE_CURRENT_BINARY_DIR}/version.hpp @ONLY)
235236

236237
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/version.hpp
@@ -242,21 +243,21 @@ install(DIRECTORY include/ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
242243
install(DIRECTORY examples/ DESTINATION ${CMAKE_INSTALL_DOCDIR}/examples
243244
FILES_MATCHING PATTERN "*.*pp")
244245

245-
configure_file(${CMAKE_SOURCE_DIR}/cmake/libpmemobj++.pc.in
246+
configure_file(${LIBPMEMOBJCPP_ROOT_DIR}/cmake/libpmemobj++.pc.in
246247
${CMAKE_CURRENT_BINARY_DIR}/libpmemobj++.pc @ONLY)
247248

248249
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/libpmemobj++.pc
249250
DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
250251

251252
configure_file(
252-
"${CMAKE_SOURCE_DIR}/cmake/cmake_uninstall.cmake.in"
253+
"${LIBPMEMOBJCPP_ROOT_DIR}/cmake/cmake_uninstall.cmake.in"
253254
"${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake"
254255
IMMEDIATE @ONLY)
255256

256257
add_custom_target(uninstall
257258
COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake)
258259

259-
configure_package_config_file(${CMAKE_SOURCE_DIR}/cmake/libpmemobj++-config.cmake.in
260+
configure_package_config_file(${LIBPMEMOBJCPP_ROOT_DIR}/cmake/libpmemobj++-config.cmake.in
260261
${CMAKE_CURRENT_BINARY_DIR}/libpmemobj++-config.cmake
261262
INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/libpmemobj++/cmake
262263
PATH_VARS CMAKE_INSTALL_LIBDIR CMAKE_INSTALL_INCLUDEDIR)
@@ -275,7 +276,7 @@ include_directories(include)
275276
# Run checks for known issues, it's required to enable/disable some tests and examples.
276277
# It has to be executed (included) here, when environment is fully set up,
277278
# all packages are found and all paths/variables are set.
278-
include(${CMAKE_SOURCE_DIR}/cmake/check_compiling_issues.cmake)
279+
include(${LIBPMEMOBJCPP_ROOT_DIR}/cmake/check_compiling_issues.cmake)
279280

280281
# ----------------------------------------------------------------- #
281282
## Add/include sub-directories if build options enabled them
@@ -305,5 +306,5 @@ elseif(BUILD_EXAMPLES)
305306
endif()
306307

307308
if(NOT "${CPACK_GENERATOR}" STREQUAL "")
308-
include(${CMAKE_SOURCE_DIR}/cmake/packages.cmake)
309+
include(${LIBPMEMOBJCPP_ROOT_DIR}/cmake/packages.cmake)
309310
endif()

cmake/check_compiling_issues.cmake

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ if(NOT MSVC_VERSION)
9292
NO_CLANG_BRACE_INITIALIZATION_NEWEXPR_BUG)
9393

9494
# Check for issues with older clang compilers which assert on delete persistent<[][]>.
95-
set(CMAKE_REQUIRED_INCLUDES ${CMAKE_SOURCE_DIR}/include ${LIBPMEMOBJ_INCLUDE_DIRS})
95+
set(CMAKE_REQUIRED_INCLUDES ${LIBPMEMOBJCPP_ROOT_DIR}/include ${LIBPMEMOBJ_INCLUDE_DIRS})
9696
set(CMAKE_REQUIRED_FLAGS "--std=c++11 -Wno-error -c")
9797
CHECK_CXX_SOURCE_COMPILES(
9898
"#include <libpmemobj++/make_persistent_array.hpp>

cmake/functions.cmake

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -68,48 +68,48 @@ function(add_cppstyle name)
6868
endif()
6969

7070
if(${ARGC} EQUAL 1)
71-
add_custom_command(OUTPUT ${CMAKE_BINARY_DIR}/cppstyle-${name}-status
71+
add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/cppstyle-${name}-status
7272
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp
7373
${CMAKE_CURRENT_SOURCE_DIR}/*.hpp
7474
COMMAND ${PERL_EXECUTABLE}
75-
${CMAKE_SOURCE_DIR}/utils/cppstyle
75+
${LIBPMEMOBJCPP_ROOT_DIR}/utils/cppstyle
7676
${CLANG_FORMAT}
7777
check
7878
${CMAKE_CURRENT_SOURCE_DIR}/*.cpp
7979
${CMAKE_CURRENT_SOURCE_DIR}/*.hpp
80-
COMMAND ${CMAKE_COMMAND} -E touch ${CMAKE_BINARY_DIR}/cppstyle-${name}-status
80+
COMMAND ${CMAKE_COMMAND} -E touch ${CMAKE_CURRENT_BINARY_DIR}/cppstyle-${name}-status
8181
)
8282

8383
add_custom_target(cppformat-${name}
8484
COMMAND ${PERL_EXECUTABLE}
85-
${CMAKE_SOURCE_DIR}/utils/cppstyle
85+
${LIBPMEMOBJCPP_ROOT_DIR}/utils/cppstyle
8686
${CLANG_FORMAT}
8787
format
8888
${CMAKE_CURRENT_SOURCE_DIR}/*.cpp
8989
${CMAKE_CURRENT_SOURCE_DIR}/*.hpp
9090
)
9191
else()
92-
add_custom_command(OUTPUT ${CMAKE_BINARY_DIR}/cppstyle-${name}-status
92+
add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/cppstyle-${name}-status
9393
DEPENDS ${ARGN}
9494
COMMAND ${PERL_EXECUTABLE}
95-
${CMAKE_SOURCE_DIR}/utils/cppstyle
95+
${LIBPMEMOBJCPP_ROOT_DIR}/utils/cppstyle
9696
${CLANG_FORMAT}
9797
check
9898
${ARGN}
99-
COMMAND ${CMAKE_COMMAND} -E touch ${CMAKE_BINARY_DIR}/cppstyle-${name}-status
99+
COMMAND ${CMAKE_COMMAND} -E touch ${CMAKE_CURRENT_BINARY_DIR}/cppstyle-${name}-status
100100
)
101101

102102
add_custom_target(cppformat-${name}
103103
COMMAND ${PERL_EXECUTABLE}
104-
${CMAKE_SOURCE_DIR}/utils/cppstyle
104+
${LIBPMEMOBJCPP_ROOT_DIR}/utils/cppstyle
105105
${CLANG_FORMAT}
106106
format
107107
${ARGN}
108108
)
109109
endif()
110110

111111
add_custom_target(cppstyle-${name}
112-
DEPENDS ${CMAKE_BINARY_DIR}/cppstyle-${name}-status)
112+
DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/cppstyle-${name}-status)
113113

114114
add_dependencies(cppstyle cppstyle-${name})
115115
add_dependencies(cppformat cppformat-${name})
@@ -119,14 +119,14 @@ endfunction()
119119
# of global "check-whitespace" target.
120120
# ${name} must be unique.
121121
function(add_check_whitespace name)
122-
add_custom_command(OUTPUT ${CMAKE_BINARY_DIR}/check-whitespace-${name}-status
122+
add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/check-whitespace-${name}-status
123123
DEPENDS ${ARGN}
124124
COMMAND ${PERL_EXECUTABLE}
125-
${CMAKE_SOURCE_DIR}/utils/check_whitespace ${ARGN}
126-
COMMAND ${CMAKE_COMMAND} -E touch ${CMAKE_BINARY_DIR}/check-whitespace-${name}-status)
125+
${LIBPMEMOBJCPP_ROOT_DIR}/utils/check_whitespace ${ARGN}
126+
COMMAND ${CMAKE_COMMAND} -E touch ${CMAKE_CURRENT_BINARY_DIR}/check-whitespace-${name}-status)
127127

128128
add_custom_target(check-whitespace-${name}
129-
DEPENDS ${CMAKE_BINARY_DIR}/check-whitespace-${name}-status)
129+
DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/check-whitespace-${name}-status)
130130
add_dependencies(check-whitespace check-whitespace-${name})
131131
endfunction()
132132

@@ -167,16 +167,16 @@ endfunction()
167167
# unless git is not available, then it's set to the recently released VERSION
168168
function(set_source_ver SRCVERSION)
169169
# if there's version file commited, use it
170-
if(EXISTS "${CMAKE_SOURCE_DIR}/.version")
171-
file(STRINGS ${CMAKE_SOURCE_DIR}/.version FILE_VERSION)
170+
if(EXISTS "${LIBPMEMOBJCPP_ROOT_DIR}/.version")
171+
file(STRINGS ${LIBPMEMOBJCPP_ROOT_DIR}/.version FILE_VERSION)
172172
set(SRCVERSION ${FILE_VERSION} PARENT_SCOPE)
173173
return()
174174
endif()
175175

176176
# otherwise take it from git
177177
execute_process(COMMAND git describe
178178
OUTPUT_VARIABLE GIT_VERSION
179-
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
179+
WORKING_DIRECTORY ${LIBPMEMOBJCPP_ROOT_DIR}
180180
OUTPUT_STRIP_TRAILING_WHITESPACE
181181
ERROR_QUIET)
182182
if(GIT_VERSION)
@@ -206,7 +206,7 @@ function(set_source_ver SRCVERSION)
206206
else()
207207
execute_process(COMMAND git log -1 --format=%h
208208
OUTPUT_VARIABLE GIT_COMMIT
209-
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
209+
WORKING_DIRECTORY ${LIBPMEMOBJCPP_ROOT_DIR}
210210
OUTPUT_STRIP_TRAILING_WHITESPACE)
211211
set(SRCVERSION ${GIT_COMMIT} PARENT_SCOPE)
212212
return()

cmake/packages.cmake

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ set(CPACK_RPM_PACKAGE_GROUP "Development/Libraries")
4141
set(CPACK_RPM_PACKAGE_LICENSE "BSD")
4242
set(CPACK_RPM_PACKAGE_ARCHITECTURE x86_64)
4343
set(CPACK_RPM_PACKAGE_REQUIRES "libpmemobj-devel >= ${LIBPMEMOBJ_REQUIRED_VERSION}")
44-
#set(CPACK_RPM_CHANGELOG_FILE ${CMAKE_SOURCE_DIR}/ChangeLog)
44+
#set(CPACK_RPM_CHANGELOG_FILE ${LIBPMEMOBJCPP_ROOT_DIR}/ChangeLog)
4545

4646
set(CPACK_DEBIAN_PACKAGE_NAME "libpmemobj++-dev")
4747
set(CPACK_DEBIAN_PACKAGE_VERSION ${CPACK_PACKAGE_VERSION})

doc/libpmemobj++.Doxyfile.in

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -90,8 +90,8 @@ COLS_IN_ALPHA_INDEX = 1
9090
# spaces.
9191
# Note: If this tag is empty the current directory is searched.
9292

93-
INPUT = @CMAKE_SOURCE_DIR@/include/libpmemobj++
94-
INPUT += @CMAKE_SOURCE_DIR@/include/libpmemobj++/README.md
93+
INPUT = @LIBPMEMOBJCPP_ROOT_DIR@/include/libpmemobj++
94+
INPUT += @LIBPMEMOBJCPP_ROOT_DIR@/include/libpmemobj++/README.md
9595

9696
# This tag can be used to specify the character encoding of the source files
9797
# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses
@@ -127,14 +127,14 @@ RECURSIVE = YES
127127
# run.
128128

129129
# temp_value.hpp: parsing error
130-
EXCLUDE = @CMAKE_SOURCE_DIR@/include/libpmemobj++/detail/temp_value.hpp
130+
EXCLUDE = @LIBPMEMOBJCPP_ROOT_DIR@/include/libpmemobj++/detail/temp_value.hpp
131131

132132
# The EXAMPLE_PATH tag can be used to specify one or more files or directories
133133
# that contain example code fragments that are included (see the \include
134134
# command).
135135

136-
EXAMPLE_PATH = @CMAKE_SOURCE_DIR@/examples
137-
EXAMPLE_PATH += @CMAKE_SOURCE_DIR@/doc/shared
136+
EXAMPLE_PATH = @LIBPMEMOBJCPP_ROOT_DIR@/examples
137+
EXAMPLE_PATH += @LIBPMEMOBJCPP_ROOT_DIR@/doc/shared
138138

139139
# If the value of the EXAMPLE_PATH tag contains directories, you can use the
140140
# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp and
@@ -165,7 +165,7 @@ IMAGE_PATH =
165165
# This tag requires that the tag FULL_PATH_NAMES is set to YES.
166166

167167
FULL_PATH_NAMES = YES
168-
STRIP_FROM_PATH = @CMAKE_SOURCE_DIR@/include/
168+
STRIP_FROM_PATH = @LIBPMEMOBJCPP_ROOT_DIR@/include/
169169

170170
# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of the
171171
# path mentioned in the documentation of a class, which tells the reader which
@@ -174,7 +174,7 @@ STRIP_FROM_PATH = @CMAKE_SOURCE_DIR@/include/
174174
# should specify the list of include paths that are normally passed to the
175175
# compiler using the -I flag.
176176

177-
STRIP_FROM_INC_PATH = @CMAKE_SOURCE_DIR@/include/
177+
STRIP_FROM_INC_PATH = @LIBPMEMOBJCPP_ROOT_DIR@/include/
178178

179179
#---------------------------------------------------------------------------
180180
# Configuration options related to the LATEX output

tests/compatibility/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
include(../ctest_helpers.cmake)
55
include(ExternalProject)
66

7-
set(COMPATIBILITY_TEST_HEADERS_LOCATION ${CMAKE_BINARY_DIR}/compatibility)
7+
set(COMPATIBILITY_TEST_HEADERS_LOCATION ${CMAKE_CURRENT_BINARY_DIR}/compatibility)
88

99
function(add_libpmemobj_cpp version)
1010
ExternalProject_Add(libpmemobj-cpp-${version}

tests/external/CMakeLists.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,8 @@ function(add_test_expect_failure name)
2020
EXCLUDE_FROM_DEFAULT_BUILD TRUE)
2121

2222
add_test(NAME ${name}_fail_expected
23-
COMMAND ${CMAKE_COMMAND} --build ${CMAKE_BINARY_DIR} --target ${name}_fail_expected
24-
WORKING_DIRECTORY ${CMAKE_BINARY_DIR})
23+
COMMAND ${CMAKE_COMMAND} --build ${CMAKE_CURRENT_BINARY_DIR} --target ${name}_fail_expected
24+
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
2525

2626
set_tests_properties(${name}_fail_expected PROPERTIES WILL_FAIL TRUE)
2727
endfunction()

0 commit comments

Comments
 (0)