Ciao,
sono poco ferrato co i makefile.
Sto sviluppando un
driver linux ma ho diversi problemi nel realizzare il makefile.
Questo è quello che ho fatto, ma (ovviamente) non funziona.
CONFIG_MODULE_SIG=n
CFILES:= $(notdir $(wildcard $M/src/mylib/.*c)) \
$(notdir $(wildcard $M/src/mylib/device_drivers/chip1/.*c)) \
$(notdir $(wildcard $M/src/mylib/device_drivers/chip2/.*c)) \
$(notdir $(wildcard $M/src/mylib/device_drivers/chip3/.*c)) \
$(notdir $(wildcard $M/src/mylib/device_drivers/chip4/.*c)) \
OBJS := $(CFILES:.c=.o)
KSRC := /lib/modules/$(shell uname -r)/build
obj-m += mylib_api.o
proslic_api-y := $(OBJS)
all:
$(MAKE) -C $(KSRC) M=$(PWD) modules
clean:
$(MAKE) -C $(KSRC) M=$(PWD) clean
.PHONY: clean
Vi spiego un com'è fatta la struttura del progetto:
basedir:
|- Makefile
|- src
|- main.c
|- main.h
|- vendor_lib
|- Makefile (Questo è il makefile che mi sta dando diverse noie)
|- lots_of_files.h
|- lots_of_files.c
|- vendor_subdir
|- vendror_subdir_nested
|- vendror_subdir_file.h
|- vendror_subdir_file.c
Il problema si presenta quando nei file
lots_of_files.c vengono importati dei file .h che sono in realtà nelle cartelle sottostanti. ( Senza il percorso,
#include "example.h", example.h è sotto
./vendor_subdir/vendror_subdir_nested/example.h)
L'idea è quella di copiare tutti i file della vendor lib in una unica cartella "build" da cui poi compilare i vari file con la wildcard.
Essendo la libreria di terze parti vorrei evitare il più possibile di modificare il codice visto che effettua un sacco di operazioni abbastanza sconoscute.
Se qualcuno ha qualche suggerimento, è ben accetto.