Pozwól, aby generate_testapi.py
był skryptem w drzewie źródłowym mojego modułu jądra Linux, które pobiera mymod_test.h
i generuje plik źródłowy interfejsu w kierunku przestrzeni użytkownika (ioctl, debugfs, możesz to nazwać) i pozwala nazwać to $(obj)/mymod_test_interfaces.gen.c
.Jak dodać zależność od wygenerowanego pliku źródłowego w Kbuild?
W makefile kbuild niech mymod-y
być zmienna zawierająca listę plików obiektowych, które tworzą moduł, tj
W jaki sposób kbuild-owski reguła wyglądać, że dodaje plik obiektowy kompiluje od generuje jako źródło zależność mymod i opisuje proces generowania.
Następująca moja pierwsza naiwna próba takiego zestawu reguł nie działa.
obj-m := mymod.o
mymod-y := \
mymod_kmod.o \
$(obj)/mymod_test_interfaces.gen.o
$(obj)/mymod_test_interfaces.gen.o: $(src)/mymod_test.h $(src)/generate_testapi.py
$(src)/generate_testapi.py < $(src)/mymod_test.h > $<
Próbując make
z tym, powstały błąd to, że nie ma zasada abymymod_test_interfaces.gen.o
.
Update (ze względu na komentarz Alexandre Belloni)
Tak, próbowałem też regułę generator postaci
$(obj)/mymod_test_interfaces.gen.c: $(src)/mymod_test.h $(src)/generate_testapi.py
$(src)/generate_testapi.py < $(src)/mymod_test.h > $<
z tego samego rezultatu, co znaczy, że to nie działa .
powinnaś t drugi mymod_test_interfaces.gen.o be mymod_test_interfaces.gen.c? –
@AlexandreBelloni: Właśnie tego próbuję się dowiedzieć. Dobry komentarz, ale oczywiście też tego próbowałem i nie, nie dało to pożądanego rezultatu. – datenwolf