Attention is currently required from: plaisthos.
Hello plaisthos,
I'd like you to do a code review.
Please visit
http://gerrit.openvpn.net/c/openvpn/+/1739?usp=email
to review the following change.
Change subject: CMake: detect cmocka_version.h via include path, not by linking
......................................................................
CMake: detect cmocka_version.h via include path, not by linking
check_include_files() was invoked with cmocka in CMAKE_REQUIRED_LIBRARIES,
which makes the probe link the (shared, imported) cmocka library. On some
platforms that link step fails inside the minimal probe, so the header check
reports failure and HAVE_CMOCKA_VERSION_H is left undefined even though
cmocka_version.h is present.
test_common.h then selects its cmocka 1.x compatibility shims and redefines
macros (check_expected_uint, expect_uint_value, ...) that cmocka 2.x already
provides, which breaks the -Werror build of every unit test driver.
Detecting a header only needs the include search path, so pass cmocka's
INTERFACE_INCLUDE_DIRECTORIES via CMAKE_REQUIRED_INCLUDES and drop the library
link requirement from the probe.
Change-Id: Icc14b286f2409738c73873aa7550dcc005ee8cbb
Signed-off-by: Lev Stipakov <[email protected]>
---
M CMakeLists.txt
1 file changed, 9 insertions(+), 1 deletion(-)
git pull ssh://gerrit.openvpn.net:29418/openvpn refs/changes/39/1739/1
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 4779d69..8de836a 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -385,12 +385,20 @@
find_package(cmocka CONFIG)
if (TARGET cmocka::cmocka)
set(CMOCKA_LIBRARIES cmocka::cmocka)
+ get_target_property(CMOCKA_INCLUDE_DIRS cmocka::cmocka
INTERFACE_INCLUDE_DIRECTORIES)
else ()
pkg_search_module(cmocka cmocka REQUIRED IMPORTED_TARGET)
set(CMOCKA_LIBRARIES PkgConfig::cmocka)
+ set(CMOCKA_INCLUDE_DIRS ${cmocka_INCLUDE_DIRS})
endif ()
- set(CMAKE_REQUIRED_LIBRARIES ${CMOCKA_LIBRARIES})
+ # cmocka_version.h exists since cmocka 2.0; its absence selects the
+ # cmocka 1.x compat shims in test_common.h. Detecting a header only needs
+ # the include path - do NOT add cmocka to CMAKE_REQUIRED_LIBRARIES, as that
+ # makes check_include_files link the shared library, which can fail in the
+ # probe for unrelated reasons and wrongly mis-detect cmocka 2.x as < 2.0.
+ set(CMAKE_REQUIRED_INCLUDES ${CMOCKA_INCLUDE_DIRS})
check_include_files(cmocka_version.h HAVE_CMOCKA_VERSION_H)
+ unset(CMAKE_REQUIRED_INCLUDES)
endif ()
configure_file(config.h.cmake.in config.h)
--
To view, visit http://gerrit.openvpn.net/c/openvpn/+/1739?usp=email
To unsubscribe, or for help writing mail filters, visit
http://gerrit.openvpn.net/settings?usp=email
Gerrit-MessageType: newchange
Gerrit-Project: openvpn
Gerrit-Branch: master
Gerrit-Change-Id: Icc14b286f2409738c73873aa7550dcc005ee8cbb
Gerrit-Change-Number: 1739
Gerrit-PatchSet: 1
Gerrit-Owner: stipa <[email protected]>
Gerrit-Reviewer: plaisthos <[email protected]>
Gerrit-CC: openvpn-devel <[email protected]>
Gerrit-Attention: plaisthos <[email protected]>
_______________________________________________
Openvpn-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/openvpn-devel