[Makefile] generische Regele, sind sie möglich?
-
Hallo
ich schreibe einen Mikrokernel für die ARM Architektur und habe ungefähr die Code Struktur von Linux übernommen, allerdings habe ich kbuild aus Komplezität- und Zeitgründen nicht als Build System eingebaut sondern etwas eigenes.
Ich habe im prinzip eine Reihe von Makefile.in Dateien, die von einem configure Skript in Makefile Dateien vervollständigt werden.
In den Makefile.in Dateien habe ich sowas wie
... OBJS=@OBJS@ CFLAGS=@CFLAGS@ all: $(OBJS) main.o: main.c @echo " [K] Building kernel: main.c" @$(CC) $(CFLAGS) -c -o $@ $< utils.o: utils.c @echo " [K] Building kernel: utils.c" @$(CC) $(CFLAGS) -c -o $@ $< ...
Die Regel der Objekt Dateien sind im Prinzip immer gleich. @OBJS@ wird von 'configure' mit den nötigen Objekten ersetzt. Das einzige Blöde daran ist, dass wenn ich eine neue Quelldatei schreibe, muss ich die Makefile.in editieren und die ganze Rule schrieben
newfile.o: newfile.c @echo ..... usw
Gibt es eine Möglichkeit eine generische Regel zu erzeugen, so dass ich nicht für jede neue Quelldatei eine neue Regel schreiben muss, sowas in der Art
*.o: ?????.c echo " [K] Building kernel: $@" @$(CC) $(CFLAGS) -c -o $@ $<
Ist sowas möglich?
Btw: kennt jemand ein Link/Doku, wo ich nachlesen kann, wie man am besten kbuild für seine Zwecke einbaut? Ich hab schon bei anderen Projekten wie z.b. Gumstix Buildroot gesehen, dass sie kbuild benutzen (oder eine sehr gute Nachbildung).
Danke
Gruss
Pablo
-
Was du suchst, sind "Implicit Rules" Google: make implicit rules
Schau dir dazu auch mal das Ultimative Makefile an.
-
danke, guter Tipp