new file mode 100644
@@ -0,0 +1,112 @@
+From f8d266b017fd76e2de9d20e0bb3951a5338075d1 Mon Sep 17 00:00:00 2001
+From: Adrian Perez de Castro <aperez@igalia.com>
+Date: Fri, 14 Jan 2022 14:33:21 +0200
+Subject: [PATCH] CMake: Support non-Make generators, e.g. Ninja
+
+---
+ cmake/modules/FindKbuild.cmake | 15 +++++++++++++--
+ cmake/modules/kbuild_system.cmake | 4 ++--
+ cmake/modules/kmodule_files/CMakeLists.txt | 11 +++++++++--
+ core/tests/common_target/CMakeLists.txt | 2 +-
+ 4 files changed, 25 insertions(+), 7 deletions(-)
+
+diff --git a/cmake/modules/FindKbuild.cmake b/cmake/modules/FindKbuild.cmake
+index b79d140..2ba0a78 100644
+--- a/cmake/modules/FindKbuild.cmake
++++ b/cmake/modules/FindKbuild.cmake
+@@ -5,6 +5,7 @@
+ # (often /lib/modules/${KBUILD_VERSION_STRING}/build)
+ # KBUILD_INCLUDE_DIR - not used
+ # KBUILD_FOUND - TRUE if everything is correct, FALSE otherwise
++# KBUILD_MAKE_COMMAND - Command to run for Make invocations.
+
+ if (NOT KBUILD_VERSION_STRING)
+ set(KBUILD_VERSION_STRING ${CMAKE_SYSTEM_VERSION} CACHE STRING
+@@ -18,8 +19,18 @@ endif (NOT KBUILD_BUILD_DIR)
+
+ set(KBUILD_INCLUDE_DIRS "NOT USED")
+
+-# Note: only KBUILD_BUILD_DIR variable is really used in the project.
+-# Other variables defined only for FindModule architecture of CMake.
++# Only makefiles have $(MAKE) defined, in other cases invoke make directly.
++if (CMAKE_GENERATOR STREQUAL "Unix Makefiles")
++ set(KBUILD_MAKE_COMMAND $\(MAKE\))
++else ()
++ find_program(KBUILD_MAKE_COMMAND make REQUIRED)
++ set(KBUILD_MAKE_COMMAND ${KBUILD_MAKE_COMMAND} CC=${CMAKE_C_COMPILER} CFLAGS=${CMAKE_C_FLAGS})
++endif ()
++
++
++# Note: only KBUILD_BUILD_DIR and KBUILD_MAKE_COMMAND variables are really
++# used in the project. Other variables defined only for FindModule
++# architecture of CMake.
+
+ # Handle the QUIETLY and REQUIRED arguments and set KBUILD_FOUND to TRUE if
+ # all listed variables are TRUE
+diff --git a/cmake/modules/kbuild_system.cmake b/cmake/modules/kbuild_system.cmake
+index e28ef33..e4e33df 100644
+--- a/cmake/modules/kbuild_system.cmake
++++ b/cmake/modules/kbuild_system.cmake
+@@ -262,13 +262,13 @@ function(kbuild_add_module name)
+ > "${_dir}.${_name}.o.cmd")
+ endforeach(shipped_source_noext_abs ${shipped_source_noext_abs})
+ endif(shipped_sources_noext_abs)
+-
++
+ # The rule to create module
+ add_custom_command(
+ OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${name}.ko ${symvers_file}
+ ${cmd_create_command}
+ ${symvers_command}
+- COMMAND $(MAKE) -C ${KBUILD_BUILD_DIR}
++ COMMAND ${KBUILD_MAKE_COMMAND} -C ${KBUILD_BUILD_DIR}
+ M=${CMAKE_CURRENT_BINARY_DIR} modules
+ DEPENDS ${depend_files}
+ )
+diff --git a/cmake/modules/kmodule_files/CMakeLists.txt b/cmake/modules/kmodule_files/CMakeLists.txt
+index 1147cc5..6115153 100644
+--- a/cmake/modules/kmodule_files/CMakeLists.txt
++++ b/cmake/modules/kmodule_files/CMakeLists.txt
+@@ -5,7 +5,7 @@ if (NOT KERNELDIR)
+ set(KERNELDIR /lib/modules/${KBUILD_VERSION_STRING}/build)
+ endif (NOT KERNELDIR)
+
+-set(PWD $\(shell pwd\))
++set(PWD $$\(pwd\))
+
+ project(kmodule_try_compile)
+ # Create rule for produce file from another file via copiing
+@@ -27,9 +27,16 @@ if(COPY_FILE)
+ copy_file("${COPY_FILE}" "${CMAKE_CURRENT_BINARY_DIR}/try_compile.ko")
+ endif(COPY_FILE)
+
++# Only makefiles have $(MAKE) defined, in other cases invoke make directly.
++if (CMAKE_GENERATOR STREQUAL "Unix Makefiles")
++ set(KBUILD_MAKE_COMMAND $\(MAKE\))
++else ()
++ find_program(KBUILD_MAKE_COMMAND make REQUIRED)
++endif ()
++
+ # Rule to produce try_compile.ko from try_compile.c
+ add_custom_command(OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/try_compile.ko"
+- COMMAND $(MAKE) -C ${KERNELDIR} M=${PWD} modules
++ COMMAND ${KBUILD_MAKE_COMMAND} -C ${KERNELDIR} M=${PWD} modules
+ DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/try_compile.c")
+
+ # Kbuild system cannot work with out-of-source build,
+diff --git a/core/tests/common_target/CMakeLists.txt b/core/tests/common_target/CMakeLists.txt
+index cf257ad..fe48e68 100644
+--- a/core/tests/common_target/CMakeLists.txt
++++ b/core/tests/common_target/CMakeLists.txt
+@@ -17,7 +17,7 @@ add_custom_target("common_target_module"
+
+ add_custom_command(
+ OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/${KMODULE_NAME}.ko"
+- COMMAND $(MAKE) -f module.makefile
++ COMMAND ${KBUILD_MAKE_COMMAND} -f module.makefile
+ DEPENDS
+ "${CMAKE_CURRENT_BINARY_DIR}/cfake.c"
+ "${CMAKE_CURRENT_BINARY_DIR}/cfake.h"
+--
+2.34.1
+
SSIA. Signed-off-by: Adrian Perez de Castro <aperez@igalia.com> Upstream-Status: https://github.com/euspectre/racehound/pull/6 --- Changes v1 -> v2: - Patch added to call into Kbuild with plain make. --- ...pport-non-Make-generators-e.g.-Ninja.patch | 112 ++++++++++++++++++ 1 file changed, 112 insertions(+) create mode 100644 package/racehound/0002-CMake-Support-non-Make-generators-e.g.-Ninja.patch