Передача параметра при компиляции модуля

Взгляд изнутри

Модератор: Модераторы разделов

IMB
Сообщения: 2563
ОС: Debian

Передача параметра при компиляции модуля

Сообщение IMB »

Доброго дня!
По работе приходится периодически писать/править модули Linux и что бы облегчить себе и пользователям жизнь появилась идея, что бы драйвер выводил ревизию файла при загрузке. Для этого сделал следующее:
Makefile

Код: Выделить всё

$(MAKE) \
    CONFIG_MODULE_REVISION=\"$(shell git log -n1 --format=%H $(CURDIR))\" \
    --directory=$(LINUX_DIR) M=$(shell pwd) ARCH=arm \
    CROSS_COMPILE=$(CROSS) modules

код

Код: Выделить всё

dev_info(&client->dev, "File revision: %s\n", CONFIG_MODULE_REVISION);

Увы, при компиляции получаю ошибку:

Код: Выделить всё

make \
             CONFIG_MODULE_REVISION=\"2b31da94d4bee4c5cfd56ea81a7d86b8dc69000f\" \
             --directory=/home/kirill/Projects/MobileCam/src/linux-2.6.35.3 M=/home/kirill/Projects/MobileCam/src/OV2715 ARCH=arm \
             CROSS_COMPILE=/opt/freescale/usr/local/gcc-4.4.4-glibc-2.11.1-multilib-1.0/arm-fsl-linux-gnueabi/bin/arm-fsl-linux-gnueabi- modules
....................
/home/kirill/Projects/MobileCam/src/OV2715/ov2715.c: In function 'ov2715_probe':
/home/kirill/Projects/MobileCam/src/OV2715/ov2715.c:988: error: 'CONFIG_MODULE_REVISION' undeclared (first use in this function)
..................

Возможно ли реализовать задуманное или нет?
Спасибо.
Спасибо сказали:
FlySnake
Сообщения: 992
ОС: openSUSE

Re: Передача параметра при компиляции модуля

Сообщение FlySnake »

Я использую отдельный хидер, который генерируется руби скриптом, вызываемым перед сборкой. Есть ещё вариант git hooks использовать для вызова скрипта.
Руби т.к. используется и на виндах в т.ч.

Код: Выделить всё

Dir.chdir(File.expand_path(File.dirname(__FILE__)))

filename = "git_revision.h"
git_exec = "git log --pretty=oneline -n1"

file_included = filename.gsub(".h", "_H").upcase

file = File.new(filename, "w")

file.puts("#ifndef #{file_included}")
file.puts("#define #{file_included}")

file.print "static volatile const char *GIT_REVISION = "
file.print %x[#{git_exec}].chomp.inspect
file.puts ";"

file.puts("#endif")

file.close

puts "************************************"
puts "Git revision written to #{filename} "
puts "************************************"

В коде проекта соответственно #include "../git_revision.h" и после каждой сборки в GIT_REVISION крайний коммит.

В своём варианте попробуйте

Код: Выделить всё

CONFIG_MODULE_REVISION=\""$(shell git log -n1 --format=%H $(CURDIR))\""

Ещё одни кавычки чтобы строка была уже с кавычками
Спасибо сказали:
IMB
Сообщения: 2563
ОС: Debian

Re: Передача параметра при компиляции модуля

Сообщение IMB »

Спасибо, сделал через отдельный файл, хотя это и не так изящно, но пока остановимся на этом.
Спасибо сказали: