diff mbox series

[RFC,v2,7/7] package/racehound: add patch to support building with ninja

Message ID 20220121154235.798255-8-aperez@igalia.com
State Changes Requested
Headers show
Series Use Ninja as build tool for CMake-based packages | expand

Commit Message

Adrian Perez de Castro Jan. 21, 2022, 3:42 p.m. UTC
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
diff mbox series

Patch

diff --git a/package/racehound/0002-CMake-Support-non-Make-generators-e.g.-Ninja.patch b/package/racehound/0002-CMake-Support-non-Make-generators-e.g.-Ninja.patch
new file mode 100644
index 0000000000..7f90fb8c69
--- /dev/null
+++ b/package/racehound/0002-CMake-Support-non-Make-generators-e.g.-Ninja.patch
@@ -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
+