# ---------------------------------------------------------------------------
quiet_cmd_ld = LD $(echo_target)
-cmd_ld = $(LD) $(LDFLAGS) $(EXTRA_LDFLAGS) $(LDFLAGS_$@) \
+cmd_ld = $(LD) $(LDFLAGS) $(EXTRA_LDFLAGS) $(LDFLAGS_$(@F)) \
$(filter-out FORCE,$^) -o $@
# Objcopy
# prevent gcc from keeping the stack 16 byte aligned
CFLAGS += $(shell if $(CC) -mpreferred-stack-boundary=2 -S -o /dev/null -xc /dev/null >/dev/null 2>&1; then echo "-mpreferred-stack-boundary=2"; fi)
-ifdef CONFIG_M386
-CFLAGS += -march=i386
-endif
-
-ifdef CONFIG_M486
-CFLAGS += -march=i486
-endif
-
-ifdef CONFIG_M586
-CFLAGS += -march=i586
-endif
-
-ifdef CONFIG_M586TSC
-CFLAGS += -march=i586
-endif
-
-ifdef CONFIG_M586MMX
-CFLAGS += -march=i586
-endif
-
-ifdef CONFIG_M686
-CFLAGS += -march=i686
-endif
-
-ifdef CONFIG_MPENTIUMIII
-CFLAGS += -march=i686
-endif
-
-ifdef CONFIG_MPENTIUM4
-CFLAGS += -march=i686
-endif
-
-ifdef CONFIG_MK6
-CFLAGS += $(shell if $(CC) -march=k6 -S -o /dev/null -xc /dev/null >/dev/null 2>&1; then echo "-march=k6"; else echo "-march=i586"; fi)
-endif
-
-ifdef CONFIG_MK7
-CFLAGS += $(shell if $(CC) -march=athlon -S -o /dev/null -xc /dev/null >/dev/null 2>&1; then echo "-march=athlon"; else echo "-march=i686 -malign-functions=4"; fi)
-endif
-
-ifdef CONFIG_MCRUSOE
-CFLAGS += -march=i686 -malign-functions=0 -malign-jumps=0 -malign-loops=0
-endif
-
-ifdef CONFIG_MWINCHIPC6
-CFLAGS += -march=i586
-endif
-
-ifdef CONFIG_MWINCHIP2
-CFLAGS += -march=i586
-endif
-
-ifdef CONFIG_MWINCHIP3D
-CFLAGS += -march=i586
-endif
-
-ifdef CONFIG_MCYRIXIII
-CFLAGS += -march=i586
-endif
+cflags-$(CONFIG_M386) += -march=i386
+cflags-$(CONFIG_M486) += -march=i486
+cflags-$(CONFIG_M586) += -march=i586
+cflags-$(CONFIG_M586TSC) += -march=i586
+cflags-$(CONFIG_M586MMX) += -march=i586
+cflags-$(CONFIG_M686) += -march=i686
+cflags-$(CONFIG_MPENTIUMIII) += -march=i686
+cflags-$(CONFIG_MPENTIUM4) += -march=i686
+cflags-$(CONFIG_MK6) += $(shell if $(CC) -march=k6 -S -o /dev/null -xc /dev/null >/dev/null 2>&1; then echo "-march=k6"; else echo "-march=i586"; fi)
+cflags-$(CONFIG_MK7) += $(shell if $(CC) -march=athlon -S -o /dev/null -xc /dev/null >/dev/null 2>&1; then echo "-march=athlon"; else echo "-march=i686 -malign-functions=4"; fi)
+cflags-$(CONFIG_MCRUSOE) += -march=i686 -malign-functions=0 -malign-jumps=0 -malign-loops=0
+cflags-$(CONFIG_MWINCHIPC6) += -march=i586
+cflags-$(CONFIG_MWINCHIP2) += -march=i586
+cflags-$(CONFIG_MWINCHIP3D) += -march=i586
+cflags-$(CONFIG_MCYRIXIII) += -march=i586
+
+CFLAGS += $(cflags-y)
ifdef CONFIG_VISWS
MACHINE := mach-visws
HEAD := arch/i386/kernel/head.o arch/i386/kernel/init_task.o
libs-y += arch/i386/lib/
-core-y += arch/i386/kernel/ arch/i386/mm/ arch/i386/$(MACHINE)/
+core-y += arch/i386/kernel/ arch/i386/mm/ \
+ arch/i386/$(MACHINE)/
drivers-$(CONFIG_MATH_EMULATION) += arch/i386/math-emu/
drivers-$(CONFIG_PCI) += arch/i386/pci/
CFLAGS += -Iarch/i386/$(MACHINE)
AFLAGS += -Iarch/i386/$(MACHINE)
-MAKEBOOT = +$(MAKE) -C arch/$(ARCH)/boot
+makeboot = $(call descend,arch/i386/boot,$(1))
.PHONY: zImage bzImage compressed zlilo bzlilo zdisk bzdisk install \
clean archclean archmrproper
all: bzImage
-zImage: vmlinux
- @$(MAKEBOOT) zImage
+BOOTIMAGE=arch/i386/boot/bzImage
+zImage zlilo zdisk: BOOTIMAGE=arch/i386/boot/zImage
-bzImage: vmlinux
- @$(MAKEBOOT) bzImage
+zImage bzImage: vmlinux
+ @$(call makeboot,$(BOOTIMAGE))
compressed: zImage
-zlilo: vmlinux
- @$(MAKEBOOT) BOOTIMAGE=zImage zlilo
-
-tmp:
- @$(MAKEBOOT) BOOTIMAGE=bzImage zlilo
-bzlilo: vmlinux
- @$(MAKEBOOT) BOOTIMAGE=bzImage zlilo
-
-zdisk: vmlinux
- @$(MAKEBOOT) BOOTIMAGE=zImage zdisk
+zlilo bzlilo: vmlinux
+ @$(call makeboot,BOOTIMAGE=$(BOOTIMAGE) zlilo)
-bzdisk: vmlinux
- @$(MAKEBOOT) BOOTIMAGE=bzImage zdisk
+zdisk bzdisk: vmlinux
+ @$(call makeboot,BOOTIMAGE=$(BOOTIMAGE) zdisk)
install: vmlinux
- @echo 'Cleaning up (arch)'
- @$(MAKEBOOT) BOOTIMAGE=bzImage install
+ @$(call makeboot,BOOTIMAGE=$(BOOTIMAGE) install)
archclean:
- @$(MAKEBOOT) clean
+ @$(call makeboot,clean)
archmrproper:
# ---------------------------------------------------------------------------
-zImage: IMAGE_OFFSET := 0x1000
-zImage: EXTRA_AFLAGS := -traditional $(SVGA_MODE) $(RAMDISK)
-bzImage: IMAGE_OFFSET := 0x100000
-bzImage: EXTRA_AFLAGS := -traditional $(SVGA_MODE) $(RAMDISK) -D__BIG_KERNEL__
-bzImage: BUILDFLAGS := -b
+$(obj)/zImage: IMAGE_OFFSET := 0x1000
+$(obj)/zImage: EXTRA_AFLAGS := -traditional $(SVGA_MODE) $(RAMDISK)
+$(obj)/bzImage: IMAGE_OFFSET := 0x100000
+$(obj)/bzImage: EXTRA_AFLAGS := -traditional $(SVGA_MODE) $(RAMDISK) -D__BIG_KERNEL__
+$(obj)/bzImage: BUILDFLAGS := -b
quiet_cmd_image = BUILD $(echo_target)
-cmd_image = tools/build $(BUILDFLAGS) bootsect setup vmlinux.bin \
- $(ROOT_DEV) > $@
+cmd_image = $(obj)/tools/build $(BUILDFLAGS) $(obj)/bootsect $(obj)/setup \
+ $(obj)/vmlinux.bin $(ROOT_DEV) > $@
-zImage bzImage: bootsect setup vmlinux.bin tools/build FORCE
+$(obj)/zImage $(obj)/bzImage: $(obj)/bootsect $(obj)/setup \
+ $(obj)/vmlinux.bin $(obj)/tools/build FORCE
$(call if_changed,image)
-vmlinux.bin: compressed/vmlinux FORCE
+$(obj)/vmlinux.bin: $(obj)/compressed/vmlinux FORCE
$(call if_changed,objcopy)
LDFLAGS_bootsect := -Ttext 0x0 -s --oformat binary
LDFLAGS_setup := -Ttext 0x0 -s --oformat binary -e begtext
-setup bootsect: %: %.o FORCE
+$(obj)/setup $(obj)/bootsect: %: %.o FORCE
$(call if_changed,ld)
-compressed/vmlinux: FORCE
- @$(MAKE) IMAGE_OFFSET=$(IMAGE_OFFSET) -C compressed vmlinux
+$(obj)/compressed/vmlinux: FORCE
+ @$(call descend,$(obj)/compressed,IMAGE_OFFSET=$(IMAGE_OFFSET) \
+ $(obj)/compressed/vmlinux)
zdisk: $(BOOTIMAGE)
if [ -f $(INSTALL_PATH)/vmlinuz ]; then mv $(INSTALL_PATH)/vmlinuz $(INSTALL_PATH)/vmlinuz.old; fi
if [ -f $(INSTALL_PATH)/System.map ]; then mv $(INSTALL_PATH)/System.map $(INSTALL_PATH)/System.old; fi
cat $(BOOTIMAGE) > $(INSTALL_PATH)/vmlinuz
- cp $(TOPDIR)/System.map $(INSTALL_PATH)/
+ cp System.map $(INSTALL_PATH)/
if [ -x /sbin/lilo ]; then /sbin/lilo; else /etc/lilo/install; fi
install: $(BOOTIMAGE)
- sh -x ./install.sh $(KERNELRELEASE) $(BOOTIMAGE) $(TOPDIR)/System.map "$(INSTALL_PATH)"
+ sh $(src)/install.sh $(KERNELRELEASE) $(BOOTIMAGE) System.map "$(INSTALL_PATH)"
clean:
@echo 'Cleaning up (boot)'
- @rm -f tools/build vmlinux.bin bvmlinux.bin
- @rm -f setup bootsect zImage compressed/vmlinux.out
- @rm -f bsetup bbootsect bzImage compressed/bvmlinux.out
- @$(MAKE) -C compressed clean
+ @rm -f $(addprefix $(obj)/,tools/build vmlinux.bin bvmlinux.bin \
+ bootsect zImage bsetup bbootsect bzImage)
+ @$(call descend,$(obj)/compressed) clean
archhelp:
@echo '* bzImage - Compressed kernel image (arch/$(ARCH)/boot/bzImage)'
LDFLAGS_vmlinux := -Ttext $(IMAGE_OFFSET) -e startup_32
-vmlinux: head.o misc.o piggy.o FORCE
+$(obj)/vmlinux: $(obj)/head.o $(obj)/misc.o $(obj)/piggy.o FORCE
$(call if_changed,ld)
-vmlinux.bin: $(TOPDIR)/vmlinux FORCE
+$(obj)/vmlinux.bin: vmlinux FORCE
$(call if_changed,objcopy)
-vmlinux.bin.gz: vmlinux.bin FORCE
+$(obj)/vmlinux.bin.gz: $(obj)/vmlinux.bin FORCE
$(call if_changed,gzip)
LDFLAGS_piggy.o := -r --format binary --oformat elf32-i386 -T
-piggy.o: vmlinux.scr vmlinux.bin.gz FORCE
+$(obj)/piggy.o: $(obj)/vmlinux.scr $(obj)/vmlinux.bin.gz FORCE
$(call if_changed,ld)
clean:
- @rm -f vmlinux vmlinux.bin vmlinux.bin.gz
+ @echo 'Cleaning up (boot/compressed)'
+ @rm -f $(addprefix $(obj)/,vmlinux vmlinux.bin vmlinux.bin.gz)