summaryrefslogtreecommitdiffstats
path: root/cmake/FindKernelHeaders.cmake
diff options
context:
space:
mode:
Diffstat (limited to 'cmake/FindKernelHeaders.cmake')
-rw-r--r--cmake/FindKernelHeaders.cmake45
1 files changed, 45 insertions, 0 deletions
diff --git a/cmake/FindKernelHeaders.cmake b/cmake/FindKernelHeaders.cmake
new file mode 100644
index 0000000..60d2380
--- /dev/null
+++ b/cmake/FindKernelHeaders.cmake
@@ -0,0 +1,45 @@
+# SPDX-License-Identifier: GPL-2.0
+#
+# Copyright (C) 2020 Manuel Bentele <development@manuel-bentele.de>
+#
+
+# check if custom Linux kernel build directory was specified
+if(NOT KERNEL_BUILD_DIR)
+ set(KERNEL_BUILD_DIR "/lib/modules/${CMAKE_SYSTEM_VERSION}/build"
+ CACHE PATH "Path to Linux kernel modules to compile against")
+endif(NOT KERNEL_BUILD_DIR)
+
+# check if custom Linux kernel output directory was specified
+if(NOT KERNEL_INSTALL_DIR)
+ set(KERNEL_INSTALL_DIR "/lib/modules/${CMAKE_SYSTEM_VERSION}/extra"
+ CACHE PATH "Path to install Linux kernel modules")
+endif(NOT KERNEL_INSTALL_DIR)
+
+# find the Linux kernel headers from given KERNEL_BUILD_DIR
+find_path(KernelHeaders_INCLUDE_DIR
+ NAMES linux/user.h
+ PATHS ${KERNEL_BUILD_DIR}/include)
+
+# get Linux kernel headers version
+string(REGEX MATCH "[0-9]+\\.[0-9]+\\.[0-9]+" KernelHeaders_VERSION ${KernelHeaders_INCLUDE_DIR})
+
+include(FindPackageHandleStandardArgs)
+find_package_handle_standard_args(KernelHeaders
+ FOUND_VAR KernelHeaders_FOUND
+ REQUIRED_VARS KernelHeaders_INCLUDE_DIR
+ VERSION_VAR KernelHeaders_VERSION
+ FAIL_MESSAGE "Linux kernel headers are not available! Please install them to build kernel modules!")
+
+if(KernelHeaders_FOUND)
+ set(KernelHeaders_INCLUDE_DIRS ${KernelHeaders_INCLUDE_DIR}/include
+ CACHE PATH "Path to Linux kernel header includes")
+endif(KernelHeaders_FOUND)
+
+mark_as_advanced(KernelHeaders_INCLUDE_DIR KernelHeaders_MODULE_INSTALL_DIR)
+
+# print found information
+message(VERBOSE "KERNEL_BUILD_DIR: ${KERNEL_BUILD_DIR}")
+message(VERBOSE "KERNEL_INSTALL_DIR: ${KERNEL_INSTALL_DIR}")
+message(VERBOSE "KernelHeaders_FOUND: ${KernelHeaders_FOUND}")
+message(VERBOSE "KernelHeaders_VERSION: ${KernelHeaders_VERSION}")
+message(VERBOSE "KernelHeaders_INCLUDE_DIRS: ${KernelHeaders_INCLUDE_DIRS}")