Есть ли способ использовать premake для сборки модуля ядра linux?
Я пытаюсь собрать модуль ядра в рамках более крупного проекта, который использует premake5 для генерации Make-файлов. Тем не менее, нет документации по использованию premake для сборки модуля ядра. Возможно ли это в premake? Я хотел бы остаться последовательным с использованием Premake в проекте, если это возможно.
Заранее спасибо за любые идеи.
Моя попытка до сих пор:
project "mymod"
kind "ConsoleApp"
language "C"
location "./"
files { "**.h", "**.c" }
if _ACTION == "clean" then
os.rmdir("obj")
end
buildcommands {
"make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules %{cfg.buildcfg}"
}
rebuildcommands {
"make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules %{cfg.buildcfg} rebuild"
}
cleancommands {
"make clean %{cfg.buildcfg}"
}
buildoptions{ "-Wno-unused-value", "-Wno-sign-compare",
"-Wno-unused-parameter", "-Wno-unused-function",
"-Wno-missing-field-initializers"}
configuration {"Release"}
defines { "NDEBUG" }
flags { "Optimize", "ExtraWarnings", "FatalWarnings", "FloatStrict", "EnableSSE2" }
Ниже приведен пример рабочего Make-файла для сборки модуля ядра. Конечно, он короткий и, вероятно, не стоит использовать Premake, но это потому, что в списке отсутствуют несколько объектных файлов, которые в настоящее время необходимо вводить вручную.
# Note that multiple KBUILD_EXTRA_SYMBOLS Entries are space-separated
KBUILD_EXTRA_SYMBOLS=$(ETHERCAT_TOPDIR)/Module.symvers \
$(HOME_DIR)/shmdrv/Module.symvers \
# the output kernel module
obj-m := corert.o
# the object files used
corert-objs := ctsrt_main.o globals.o ProcessMain.o \
CtsSharedData.o ProcessData.o \
ProcessSdo.o ProcessSimulate.o \
FsmWrite.o
ETHERCAT_TOPDIR = /usr/local/src/ethercat
EXTRA_CFLAGS = -I$(ETHERCAT_TOPDIR)/include -ffast-math -mhard-float
all:
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) \
modules
clean:
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean