Есть ли способ использовать 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

0 ответов

Другие вопросы по тегам