From 308e023a85c2832f844641c542078b73eadff606 Mon Sep 17 00:00:00 2001 From: stefan Date: Wed, 9 Feb 2011 19:13:40 +0000 Subject: [PATCH] - use non-recursive Makefiles - this patch based on Florian Zeitz's hint git-svn-id: http://svn.lfbs.rwth-aachen.de/svn/scc/trunk/MetalSVM@400 315a16e6-25f9-4109-90ae-ca3045a26c18 --- Makefile.inc | 20 +++++++++++ arch/Makefile | 14 -------- arch/x86/Makefile | 14 -------- arch/x86/kernel/Makefile | 28 +++------------ arch/x86/mm/Makefile | 22 ++---------- drivers/Makefile | 14 -------- drivers/net/Makefile | 23 ++---------- fs/Makefile | 22 ++---------- kernel/Makefile | 22 ++---------- libgloss/Makefile | 71 ++++++++++++++++++++++--------------- libkern/Makefile | 22 ++---------- lwip/Makefile | 14 -------- lwip/src/Makefile | 14 -------- lwip/src/api/Makefile | 22 ++---------- lwip/src/core/Makefile | 27 ++------------ lwip/src/core/ipv4/Makefile | 22 ++---------- lwip/src/netif/Makefile | 22 ++---------- mm/Makefile | 22 ++---------- 18 files changed, 97 insertions(+), 318 deletions(-) create mode 100644 Makefile.inc delete mode 100644 arch/Makefile delete mode 100644 arch/x86/Makefile delete mode 100644 drivers/Makefile delete mode 100644 lwip/Makefile delete mode 100644 lwip/src/Makefile diff --git a/Makefile.inc b/Makefile.inc new file mode 100644 index 00000000..c0e214dc --- /dev/null +++ b/Makefile.inc @@ -0,0 +1,20 @@ +C_source-$(MODULE) := $(addprefix $(subst _,/,$(MODULE))/,$(filter %.c,$(C_source))) +ASM_source-$(MODULE) := $(addprefix $(subst _,/,$(MODULE))/,$(filter %.asm,$(ASM_source))) +C_source := +ASM_source := + +OBJS-$(MODULE) := $(C_source-$(MODULE):.c=.o) +OBJS-$(MODULE) += $(ASM_source-$(MODULE):.asm=.o) + +$(MODULE): $(OBJS-$(MODULE)) + +$(NAME): $(OBJS-$(MODULE)) + +clean: clean-$(MODULE) +clean-$(MODULE): clean-% : + @echo Cleaning $(subst _,/,$*) + $Q$(RM) $(OBJS-$*) $(C_source-$*:.c=.dep) + +.PHONY: clean-$(MODULE) $(MODULE) + +-include $(C_source-$(MODULE):.c=.dep) diff --git a/arch/Makefile b/arch/Makefile deleted file mode 100644 index d876738d..00000000 --- a/arch/Makefile +++ /dev/null @@ -1,14 +0,0 @@ -SUBDIRS = $(ARCH) - -default: - for i in $(SUBDIRS); do $(MAKE) -C $$i default; done - -all: - for i in $(SUBDIRS); do $(MAKE) -C $$i all; done - -clean: - for i in $(SUBDIRS); do $(MAKE) -C $$i clean; done - -depend: - for i in $(SUBDIRS); do $(MAKE) -C $$i depend; done - diff --git a/arch/x86/Makefile b/arch/x86/Makefile deleted file mode 100644 index 86e1baaf..00000000 --- a/arch/x86/Makefile +++ /dev/null @@ -1,14 +0,0 @@ -SUBDIRS = kernel mm #lib - -default: - for i in $(SUBDIRS); do $(MAKE) -C $$i default; done - -all: - for i in $(SUBDIRS); do $(MAKE) -C $$i all; done - -clean: - for i in $(SUBDIRS); do $(MAKE) -C $$i clean; done - -depend: - for i in $(SUBDIRS); do $(MAKE) -C $$i depend; done - diff --git a/arch/x86/kernel/Makefile b/arch/x86/kernel/Makefile index 17635380..41beceaa 100644 --- a/arch/x86/kernel/Makefile +++ b/arch/x86/kernel/Makefile @@ -1,25 +1,5 @@ -C_source = scc.c gdt.c kb.c timer.c irq.c isrs.c idt.c vga.c multiboot.c apic.c pci.c processor.c -ASM_source = entry.asm string.asm +C_source := scc.c gdt.c kb.c timer.c irq.c isrs.c idt.c vga.c multiboot.c apic.c pci.c processor.c +ASM_source := entry.asm string.asm +MODULE := arch_x86_kernel -OBJS += $(patsubst %.c, %.o, $(filter %.c, $(C_source))) -OBJS += $(patsubst %.asm, %.o, $(filter %.asm, $(ASM_source))) - -# other implicit rules -%.o : %.c - $(CC) -c -D__KERNEL__ $(CFLAGS) -o $@ $< - -%.o : %.asm - $(ASM) $(ASMFLAGS) -o $@ $< - -default: $(OBJS) - -all: $(OBJS) - -clean: - $(RM) *~ *.o $(NAME) - -depend: - $(CC) -MM $(CFLAGS) $(C_source) > Makefile.dep - --include Makefile.dep -# DO NOT DELETE +include $(TOPDIR)/Makefile.inc diff --git a/arch/x86/mm/Makefile b/arch/x86/mm/Makefile index 7829b788..2f9b1834 100644 --- a/arch/x86/mm/Makefile +++ b/arch/x86/mm/Makefile @@ -1,20 +1,4 @@ -C_source = page.c +C_source := page.c +MODULE := arch_x86_mm -OBJS += $(patsubst %.c, %.o, $(filter %.c, $(C_source))) - -# other implicit rules -%.o : %.c - $(CC) -c -D__KERNEL__ $(CFLAGS) -o $@ $< - -default: $(OBJS) - -all: $(OBJS) - -clean: - $(RM) *.o *~ $(NAME) - -depend: - $(CC) -MM $(CFLAGS) $(C_source) > Makefile.dep - --include Makefile.dep -# DO NOT DELETE +include $(TOPDIR)/Makefile.inc diff --git a/drivers/Makefile b/drivers/Makefile deleted file mode 100644 index 3e4b6e45..00000000 --- a/drivers/Makefile +++ /dev/null @@ -1,14 +0,0 @@ -SUBDIRS = net - -default: - for i in $(SUBDIRS); do $(MAKE) -C $$i default; done - -all: - for i in $(SUBDIRS); do $(MAKE) -C $$i all; done - -clean: - for i in $(SUBDIRS); do $(MAKE) -C $$i clean; done - -depend: - for i in $(SUBDIRS); do $(MAKE) -C $$i depend; done - diff --git a/drivers/net/Makefile b/drivers/net/Makefile index 1dc0003d..bee77167 100644 --- a/drivers/net/Makefile +++ b/drivers/net/Makefile @@ -1,21 +1,4 @@ -C_source = rtl8139.c +C_source := rtl8139.c +MODULE := drivers_net -OBJS += $(patsubst %.c, %.o, $(filter %.c, $(C_source))) -ALLOBJS += $(patsubst %.c, %.o, $(filter %.c, $(C_source))) - -# other implicit rules -%.o : %.c - $(CC) -c $(CFLAGS) -o $@ $< - -default: $(OBJS) - -all: $(OBJS) - -clean: - $(RM) *.o *~ $(NAME) - -depend: - $(CC) -MM $(CFLAGS) $(C_source) > Makefile.dep - --include Makefile.dep -# DO NOT DELETE +include $(TOPDIR)/Makefile.inc diff --git a/fs/Makefile b/fs/Makefile index 349e8318..bd4075cf 100644 --- a/fs/Makefile +++ b/fs/Makefile @@ -1,20 +1,4 @@ -C_source = fs.c initrd.c null.c +C_source := fs.c initrd.c null.c +MODULE := fs -OBJS += $(patsubst %.c, %.o, $(filter %.c, $(C_source))) - -# other implicit rules -%.o : %.c - $(CC) -c -D__KERNEL__ $(CFLAGS) -o $@ $< - -default: $(OBJS) - -all: $(OBJS) - -clean: - $(RM) *.o *~ $(NAME) - -depend: - $(CC) -MM $(CFLAGS) $(C_source) > Makefile.dep - --include Makefile.dep -# DO NOT DELETE +include $(TOPDIR)/Makefile.inc diff --git a/kernel/Makefile b/kernel/Makefile index 90d74ecf..fdddee71 100644 --- a/kernel/Makefile +++ b/kernel/Makefile @@ -1,20 +1,4 @@ -C_source = main.c tasks.c syscall.c tests.c echo.c ping.c init.c +C_source := main.c tasks.c syscall.c tests.c echo.c ping.c init.c +MODULE := kernel -OBJS += $(patsubst %.c, %.o, $(filter %.c, $(C_source))) - -# other implicit rules -%.o : %.c - $(CC) -c -D__KERNEL__ $(CFLAGS) -o $@ $< - -default: $(OBJS) - -all: $(OBJS) - -clean: - $(RM) *.o *~ $(NAME) - -depend: - $(CC) -MM $(CFLAGS) $(C_source) > Makefile.dep - --include Makefile.dep -# DO NOT DELETE +include $(TOPDIR)/Makefile.inc diff --git a/libgloss/Makefile b/libgloss/Makefile index 402634c4..c49788b2 100644 --- a/libgloss/Makefile +++ b/libgloss/Makefile @@ -1,35 +1,50 @@ -C_source = init.c chown.c environ.c execve.c fork.c fstat.c getpid.c gettod.c isatty.c link.c sbrk.c stat.c symlink.c times.c unlink.c wait.c kill.c lseek.c open.c close.c write.c read.c _exit.c errno.c -ASM_source = -ASM_FLAGS = -felf32 -LIBNAME = libgloss.a -INC = -I../newlib/current/include +MODULE := libgloss +LIBNAME := libgloss.a -OBJS += $(patsubst %.c, %.o, $(filter %.c, $(C_source))) -OBJS += $(patsubst %.asm, %.o, $(filter %.asm, $(ASM_source))) +C_source := init.c chown.c environ.c execve.c fork.c fstat.c getpid.c gettod.c isatty.c link.c sbrk.c stat.c symlink.c times.c unlink.c wait.c kill.c lseek.c open.c close.c write.c read.c _exit.c errno.c +ASM_source := -# other implicit rules -%.o : %.c - $(CC) -c $(CFLAGS) $(INC) -o $@ $< +C_source-$(MODULE) := $(addprefix $(subst _,/,$(MODULE))/,$(filter %.c,$(C_source))) +ASM_source-$(MODULE) := $(addprefix $(subst _,/,$(MODULE))/,$(filter %.asm,$(ASM_source))) +C_source := +ASM_source := -%.o : %.asm - $(ASM) $(ASMFLAGS) -o $@ $< +OBJS-$(MODULE) := $(C_source-$(MODULE):.c=.lo) +OBJS-$(MODULE) += $(ASM_source-$(MODULE):.asm=.lo) -default: $(OBJS) - $(MAKE) $(LIBNAME) - -all: - $(MAKE) $(LIBNAME) +INC = -I$(TOPDIR)/newlib/current/include -$(LIBNAME): $(OBJS) crt0.o - $(AR) $(ARFLAGS) $(LIBNAME) $(OBJS) - cp $(LIBNAME) ../newlib/current/lib - cp crt0.o ../newlib/current/lib/metalsvm-crt0.o - -clean: - $(RM) *.o *~ $(LIBNAME) +$(MODULE): $(MODULE)/$(LIBNAME) $(MODULE)/.crt -depend: - $(CC) -MM $(CFLAGS) $(C_source) > Makefile.dep +$(MODULE)/$(LIBNAME): $(OBJS-$(MODULE)) + @echo [AR] $@ + $Q$(AR) $(ARFLAGS) $@ $^ $P + @echo [CP] $@ + $Qcp $@ $(TOPDIR)/newlib/current/lib --include Makefile.dep -# DO NOT DELETE +$(MODULE)/.crt: $(MODULE)/crt0.o + @touch $@ + @echo [CP] $< + $Qcp $< $(TOPDIR)/newlib/current/lib/eduos-crt0.o + +%.lo : %.c + @echo [CC] $@ + $Q$(CC) -c $(CFLAGS) $(INC) -o $@ $< + @echo [DEP] $*.dep + $Q$(CC) -MF $*.dep -MT $*.o -MM $(CFLAGS) $< + +%.lo : %.asm + @echo [ASM] $@ + $Q$(ASM) $(ASMFLAGS) -o $@ $< + +clean: clean-$(MODULE) +clean-$(MODULE): clean-% : + @echo Cleaning $(subst _,/,$*) + $Q$(RM) $(OBJS-$*) $(C_source-$*:.c=.dep) $*/.crt $*/crt0.o + $Q$(RM) $(LIBNAME) + +default: $(MODULE) + +.PHONY: clean-$(MODULE) $(MODULE) + +-include $(C_source-$(MODULE):.c=.dep) diff --git a/libkern/Makefile b/libkern/Makefile index 5bcc2212..b302f3e7 100644 --- a/libkern/Makefile +++ b/libkern/Makefile @@ -1,20 +1,4 @@ -C_source = string.c stdio.c printf.c sprintf.c qdivrem.c udivdi3.c umoddi3.c +C_source := string.c stdio.c printf.c sprintf.c qdivrem.c udivdi3.c umoddi3.c +MODULE := libkern -OBJS += $(patsubst %.c, %.o, $(filter %.c, $(C_source))) - -# other implicit rules -%.o : %.c - $(CC) -c -D__KERNEL__ $(CFLAGS) -o $@ $< - -default: $(OBJS) - -all: $(OBJS) - -clean: - $(RM) *.o *~ $(NAME) - -depend: - $(CC) -MM $(CFLAGS) $(C_source) $(CPP_source) > Makefile.dep - --include Makefile.dep -# DO NOT DELETE +include $(TOPDIR)/Makefile.inc diff --git a/lwip/Makefile b/lwip/Makefile deleted file mode 100644 index 214af6e1..00000000 --- a/lwip/Makefile +++ /dev/null @@ -1,14 +0,0 @@ -SUBDIRS = src - -default: - for i in $(SUBDIRS); do $(MAKE) -C $$i default; done - -all: - for i in $(SUBDIRS); do $(MAKE) -C $$i all; done - -clean: - for i in $(SUBDIRS); do $(MAKE) -C $$i clean; done - -depend: - for i in $(SUBDIRS); do $(MAKE) -C $$i depend; done - diff --git a/lwip/src/Makefile b/lwip/src/Makefile deleted file mode 100644 index 76be2a21..00000000 --- a/lwip/src/Makefile +++ /dev/null @@ -1,14 +0,0 @@ -SUBDIRS = api core netif - -default: - $(MAKE) all - -all: - for i in $(SUBDIRS); do $(MAKE) -C $$i all; done - -clean: - for i in $(SUBDIRS); do $(MAKE) -C $$i clean; done - -depend: - for i in $(SUBDIRS); do $(MAKE) -C $$i depend; done - diff --git a/lwip/src/api/Makefile b/lwip/src/api/Makefile index 0f09bd66..bb5170be 100644 --- a/lwip/src/api/Makefile +++ b/lwip/src/api/Makefile @@ -1,20 +1,4 @@ -C_source = err.c +C_source := err.c +MODULE := lwip_src_api -OBJS += $(patsubst %.c, %.o, $(filter %.c, $(C_source))) - -# other implicit rules -%.o : %.c - $(CC) -c $(CFLAGS) -o $@ $< - -default: $(OBJS) - -all: $(OBJS) - -clean: - $(RM) *.o *~ - -depend: - $(CC) -MM $(CFLAGS) $(C_source) $(CPP_source) > Makefile.dep - --include Makefile.dep -# DO NOT DELETE +include $(TOPDIR)/Makefile.inc diff --git a/lwip/src/core/Makefile b/lwip/src/core/Makefile index 4f4c120c..6ee56218 100644 --- a/lwip/src/core/Makefile +++ b/lwip/src/core/Makefile @@ -1,25 +1,4 @@ -C_source = dhcp.c raw.c init.c mem.c memp.c netif.c pbuf.c stats.c udp.c tcp.c tcp_in.c tcp_out.c -SUBDIRS = ipv4 +C_source := dhcp.c raw.c init.c mem.c memp.c netif.c pbuf.c stats.c udp.c tcp.c tcp_in.c tcp_out.c +MODULE := lwip_src_core -OBJS += $(patsubst %.c, %.o, $(filter %.c, $(C_source))) - -# other implicit rules -%.o : %.c - $(CC) -c $(CFLAGS) -o $@ $< - -default: $(OBJS) - for i in $(SUBDIRS); do $(MAKE) -C $$i default; done - -all: $(OBJS) - for i in $(SUBDIRS); do $(MAKE) -C $$i all; done - -clean: - for i in $(SUBDIRS); do $(MAKE) -C $$i clean; done - $(RM) *.o *~ - -depend: - for i in $(SUBDIRS); do $(MAKE) -C $$i depend; done - $(CC) -MM $(CFLAGS) $(C_source) $(CPP_source) > Makefile.dep - --include Makefile.dep -# DO NOT DELETE +include $(TOPDIR)/Makefile.inc diff --git a/lwip/src/core/ipv4/Makefile b/lwip/src/core/ipv4/Makefile index f042189d..a26c956e 100644 --- a/lwip/src/core/ipv4/Makefile +++ b/lwip/src/core/ipv4/Makefile @@ -1,20 +1,4 @@ -C_source = autoip.c inet.c inet_chksum.c ip.c ip_frag.c icmp.c igmp.c ip_addr.c +C_source := autoip.c inet.c inet_chksum.c ip.c ip_frag.c icmp.c igmp.c ip_addr.c +MODULE := lwip_src_core_ipv4 -OBJS += $(patsubst %.c, %.o, $(filter %.c, $(C_source))) - -# other implicit rules -%.o : %.c - $(CC) -c $(CFLAGS) -o $@ $< - -default: $(OBJS) - -all: $(OBJS) - -clean: - $(RM) *.o *~ - -depend: - $(CC) -MM $(CFLAGS) $(C_source) $(CPP_source) > Makefile.dep - --include Makefile.dep -# DO NOT DELETE +include $(TOPDIR)/Makefile.inc diff --git a/lwip/src/netif/Makefile b/lwip/src/netif/Makefile index 1e87c3f6..66b50f27 100644 --- a/lwip/src/netif/Makefile +++ b/lwip/src/netif/Makefile @@ -1,20 +1,4 @@ -C_source = etharp.c +C_source := etharp.c +MODULE := lwip_src_netif -OBJS += $(patsubst %.c, %.o, $(filter %.c, $(C_source))) - -# other implicit rules -%.o : %.c - $(CC) -c $(CFLAGS) -o $@ $< - -default: $(OBJS) - -all: $(OBJS) - -clean: - $(RM) *.o *~ - -depend: - $(CC) -MM $(CFLAGS) $(C_source) $(CPP_source) > Makefile.dep - --include Makefile.dep -# DO NOT DELETE +include $(TOPDIR)/Makefile.inc diff --git a/mm/Makefile b/mm/Makefile index fd383922..0bf26725 100644 --- a/mm/Makefile +++ b/mm/Makefile @@ -1,20 +1,4 @@ -C_source = memory.c +C_source := memory.c +MODULE := mm -OBJS += $(patsubst %.c, %.o, $(filter %.c, $(C_source))) - -# other implicit rules -%.o : %.c - $(CC) -c -D__KERNEL__ $(CFLAGS) -o $@ $< - -default: $(OBJS) - -all: $(OBJS) - -clean: - $(RM) *.o *~ $(NAME) - -depend: - $(CC) -MM $(CFLAGS) $(C_source) > Makefile.dep - --include Makefile.dep -# DO NOT DELETE +include $(TOPDIR)/Makefile.inc