From ec101c751a6359483a00c0c3923d502845f45126 Mon Sep 17 00:00:00 2001 From: Romain Forlot Date: Tue, 25 Jul 2017 12:40:02 +0200 Subject: 2 Kernel checks available (warning or mandatory) Use 2 differents checks, one specify a mandatory kernel version and the other will output a warning and position a preprocessing variable that can be used in the code to exclude portions of code that use kernel features not available under a certain version. Change-Id: Ifc6848df1a1a448094f5312ea23e6d4837e8ef14 Signed-off-by: Romain Forlot --- cmake/cmake.d/04-build_options.cmake | 30 +++++++++++++----------------- 1 file changed, 13 insertions(+), 17 deletions(-) (limited to 'cmake/cmake.d/04-build_options.cmake') diff --git a/cmake/cmake.d/04-build_options.cmake b/cmake/cmake.d/04-build_options.cmake index 899505f..bc14ee6 100644 --- a/cmake/cmake.d/04-build_options.cmake +++ b/cmake/cmake.d/04-build_options.cmake @@ -33,27 +33,23 @@ if (gcc_minimal_version) endif() endif(gcc_minimal_version) -# Check Kernel minimal version +# Check Kernel mandatory version, will fail the configuration if required version not matched. +if (kernel_mandatory_version) + message (STATUS "${Cyan}-- Check kernel_mandatory_version (found kernel version ${KERNEL_VERSION})${ColourReset}") + if (KERNEL_VERSION VERSION_LESS ${kernel_mandatory_version}) + message(FATAL_ERROR "${Red}**** FATAL: Require at least ${kernel_mandatory_version} please use a recent kernel or source your SDK environment then clean and reconfigure your CMake project.") + endif (KERNEL_VERSION VERSION_LESS ${kernel_mandatory_version}) +endif(kernel_mandatory_version) + +# Check Kernel minimal version just print a Warning about missing features +# and set a definition to be used as preprocessor condition in code to disable +# incompatibles features. if (kernel_minimal_version) - if(DEFINED ENV{SDKTARGETSYSROOT}) - file(STRINGS $ENV{SDKTARGETSYSROOT}/usr/include/linux/version.h LINUX_VERSION_CODE_LINE REGEX "LINUX_VERSION_CODE") - elseif(DEFINED ENV{PKG_CONFIG_SYSROOT_DIR}) - file(STRINGS $ENV{PKG_CONFIG_SYSROOT_DIR}/usr/include/linux/version.h LINUX_VERSION_CODE_LINE REGEX "LINUX_VERSION_CODE") - else() - file(STRINGS /usr/include/linux/version.h LINUX_VERSION_CODE_LINE REGEX "LINUX_VERSION_CODE") - endif() - - string(REGEX MATCH "[0-9]+" LINUX_VERSION_CODE ${LINUX_VERSION_CODE_LINE}) - math(EXPR a "${LINUX_VERSION_CODE} >> 16") - math(EXPR b "(${LINUX_VERSION_CODE} >> 8) & 255") - math(EXPR c "(${LINUX_VERSION_CODE} & 255)") - - set(KERNEL_VERSION "${a}.${b}.${c}") message (STATUS "${Cyan}-- Check kernel_minimal_version (found kernel version ${KERNEL_VERSION})${ColourReset}") - if (KERNEL_VERSION VERSION_LESS ${kernel_minimal_version}) - message(FATAL_ERROR "${Red}**** FATAL: Require at least ${kernel_minimal_version} please use a recent kernel or source your SDK environment then clean and reconfigure your CMake project.") + message(WARNING "${Yellow}**** Warning: Some feature(s) require at least ${kernel_minimal_version}. Please use a recent kernel or source your SDK environment then clean and reconfigure your CMake project.${ColourReset}") endif (KERNEL_VERSION VERSION_LESS ${kernel_minimal_version}) + add_definitions(-DKERNEL_MINIMAL_VERSION_OK) endif(kernel_minimal_version) INCLUDE(FindPkgConfig) -- cgit 1.2.3-korg