Danke fuer die Tipps. Das hat soweit funktioniert.
Jetzt habe ich nur leider ein anderes Problem.
Ich habe in den If-Zweig das gesamte Build-Skript gebaut.
Das Skript sieht jetzt wie folgt aus:
ifneq ($(shell find . -type f -name '.config'),)
ifeq ($(shell grep ARCH .config), CONFIG_ARCH_X86_32)
CFLAGS+="-m32 -march=i686"
LDFLAGS+="-Tarch/x86/linker.ld -melf_i386 -o"
KERNEL+="arch/x86"
endif
CFLAGS+=$(shell for i in `cat .config`; do echo " -D$$i"; done)
CFLAGS+="-c -o"
SRC_C:=$(shell find $(KERNEL) -type f -name '*.c')
SRC_ASM:=$(shell find $(KERNEL) -type f -name '*.S')
SRC:="$(SRC_C) $(SRC_ASM)"
OBJ:="$(patsubst %.c,%.o,$(SRC_C)) $(patsubst %.S,%.o,$(SRC_ASM))"
BUILD:=nerdy-kernel
.PHONY: clean
-include $(OBJ:.o=.d)
build: $(BUILD)
$(BUILD): $(OBJ)
@echo " LD " $@
$(LD) $(LDFLAGS) $@ $^
%.o: %.c
@echo " CC " $@
$(GCC) $(CFLAGS) $@ $<
%.o: %.S
@echo " CC " $@
$(GCC) $(CFLAGS) $@ $<
else
build:
@echo "You have to run 'make config' first"
exit 0
endif
Nun bekomme ich die Meldung, dass das Skript es nicht schafft, dass aus einer *.c-Datei eine *.o-Datei wird.
Woran liegt es, dass er die Wildcards nicht trifft?