diff options
-rw-r--r-- | Makefile | 15 | ||||
-rw-r--r-- | devices/Makefile | 9 | ||||
-rw-r--r-- | i686/Makefile | 9 | ||||
-rw-r--r-- | lib/Makefile | 9 | ||||
-rw-r--r-- | rules.mk | 21 | ||||
-rw-r--r-- | src/Makefile | 13 |
6 files changed, 37 insertions, 39 deletions
@@ -36,13 +36,14 @@ src/kernel.a: ${MAKE} ARCH=${ARCH} -C src kernel.a glitch.elf: ${ARCH}/arch.a src/kernel.a devices/devs.a lib/libk.a - ${LD} ${LDFLAGS} -T ${ARCH}/linker.ld -o $@ $^ + @echo ' LD $@' + @${LD} ${LDFLAGS} -T ${ARCH}/linker.ld -o $@ $^ glitch.iso: glitch.elf grub/grub.cfg - grub-file --is-x86-multiboot2 glitch.elf - mkdir -p isodir/boot/grub - mkdir -p isodir/boot/glitch - cp grub/grub.cfg isodir/boot/grub/grub.cfg - cp glitch.elf isodir/boot/glitch/glitch.elf - grub-mkrescue -o glitch.iso isodir + @grub-file --is-x86-multiboot2 glitch.elf + @mkdir -p isodir/boot/grub + @mkdir -p isodir/boot/glitch + @cp grub/grub.cfg isodir/boot/grub/grub.cfg + @cp glitch.elf isodir/boot/glitch/glitch.elf + @grub-mkrescue -o glitch.iso isodir diff --git a/devices/Makefile b/devices/Makefile index 578a0f6..41edaaa 100644 --- a/devices/Makefile +++ b/devices/Makefile @@ -1,15 +1,10 @@ include ../${ARCH}/toolchain.mk -include ../rules.mk CCFLAGS += -I. -I../${ARCH} all: devs.a devs,SRCS = pic_8259.c uart_16550.c vga.c -devs,OBJS = $(filter %.o,$(devs,SRCS:%.S=%.o) $(devs,SRCS:%.s=%.o) $(devs,SRCS:%.c=%.o)) -devs.a: ${devs,OBJS} - @echo ' AR $@' - @${AR} ${ARFLAGS} $@ $^ -clean: - @rm -rf ${devs,OBJS} +include ../rules.mk + diff --git a/i686/Makefile b/i686/Makefile index 52295a8..e77f1c6 100644 --- a/i686/Makefile +++ b/i686/Makefile @@ -1,5 +1,4 @@ include ../${ARCH}/toolchain.mk -include ../rules.mk CCFLAGS += -I../grub/include @@ -8,10 +7,6 @@ all: arch.a arch,SRCS = boot.S init.s \ gdt.c lgdt.c \ lidt.c -arch,OBJS = $(filter %.o,$(arch,SRCS:%.S=%.o) $(arch,SRCS:%.s=%.o) $(arch,SRCS:%.c=%.o)) -arch.a: ${arch,OBJS} - @echo ' AR $@' - @${AR} ${ARFLAGS} $@ $^ -clean: - @rm -rf ${arch,OBJS} +include ../rules.mk + diff --git a/lib/Makefile b/lib/Makefile index c34790d..85d1f34 100644 --- a/lib/Makefile +++ b/lib/Makefile @@ -1,15 +1,10 @@ include ../${ARCH}/toolchain.mk -include ../rules.mk CCFLAGS += -I. -I.. all: libk.a libk,SRCS = memcpy.c memset.c stdio/printf.c string/itoa.c -libk,OBJS = $(libk,SRCS:%.c=%.o) -libk.a: ${libk,OBJS} - @echo ' AR $@' - @${AR} ${ARFLAGS} $@ $^ -clean: - @rm -rf ${libk,OBJS} +include ../rules.mk + @@ -1,7 +1,20 @@ +# generate ,OBJS variable for each ,SRCS +, = , +$(foreach V,$(filter %$(,)SRCS, ${.VARIABLES}),\ + $(eval $(V:$(,)SRCS=$(,)OBJS) += $(foreach f,$($(V)),$(addsuffix .o,$(basename $(f))))) \ + $(eval $(V:$(,)SRCS=.a): $($(V:$(,)SRCS=$(,)OBJS))) \ + $(eval clean: $($(V:$(,)SRCS=$(,)OBJS))) \ +) + +# Suffix rules +%.a: + @echo ' AR $@' + @${AR} ${ARFLAGS} $@ $(filter %.o,$^) + .SUFFIXES: .s .S .c .o .s.o: - @echo ' CC $^' - @$(CC) $(CCFLAGS) -c -o $@ $^ + @echo ' AS $^' + @$(AS) $(ASFLAGS) -c -o $@ $^ .S.o: @echo ' CC $^' @@ -11,3 +24,7 @@ @echo ' CC $^' @$(CC) $(CCFLAGS) -c -o $@ $^ +# clean target +.PHONY: clean +clean: + @rm -rf $^ diff --git a/src/Makefile b/src/Makefile index f9d3a28..e93d337 100644 --- a/src/Makefile +++ b/src/Makefile @@ -1,21 +1,16 @@ include ../${ARCH}/toolchain.mk -include ../rules.mk CCFLAGS += -I. -isystem../grub/include -I../${ARCH} -I../lib -I.. all: kernel.a -kernel,SRCS = multiboot2.c mmap.c kernel.c isr.c mem/vmm.c -kernel,OBJS = $(kernel,SRCS:%.c=%.o) -kernel.a: conf.h ${kernel,OBJS} - @echo ' AR $@' - @${AR} ${ARFLAGS} $@ ${kernel,OBJS} - conf.h: conf.h.in @cp conf.h.in conf.h @sed -i 's/@VERSION@/$(shell git describe)/' conf.h @sed -i 's/@CC@/$(shell ${CC} --version | head -n1)/' conf.h -clean: - @rm -rf ${kernel,OBJS} +kernel,SRCS := multiboot2.c mmap.c kernel.c isr.c mem/vmm.c +kernel,OBJS := conf.h + +include ../rules.mk |