1# $Id: Makefile,v 1.28 2005/03/17 10:44:37 larsv Exp $ 2# cris/Makefile 3# 4# This file is included by the global makefile so that you can add your own 5# architecture-specific flags and dependencies. Remember to do have actions 6# for "archclean" and "archdep" for cleaning up and making dependencies for 7# this architecture 8# 9# This file is subject to the terms and conditions of the GNU General Public 10# License. See the file "COPYING" in the main directory of this archive 11# for more details. 12 13# A bug in ld prevents us from having a (constant-value) symbol in a 14# "ORIGIN =" or "LENGTH =" expression. 15 16arch-y := v10 17arch-$(CONFIG_ETRAX_ARCH_V10) := v10 18arch-$(CONFIG_ETRAX_ARCH_V32) := v32 19 20# No config avaiable for make clean etc 21ifneq ($(arch-y),) 22SARCH := arch-$(arch-y) 23else 24SARCH := 25endif 26 27LD = $(CROSS_COMPILE)ld -mcrislinux 28 29OBJCOPYFLAGS := -O binary -R .note -R .comment -S 30 31CPPFLAGS_vmlinux.lds = -DDRAM_VIRTUAL_BASE=0x$(CONFIG_ETRAX_DRAM_VIRTUAL_BASE) 32KBUILD_AFLAGS += -mlinux 33 34KBUILD_CFLAGS += -mlinux -march=$(arch-y) -pipe 35 36ifdef CONFIG_FRAME_POINTER 37KBUILD_CFLAGS := $(subst -fomit-frame-pointer,,$(KBUILD_CFLAGS)) -g 38KBUILD_CFLAGS += -fno-omit-frame-pointer 39endif 40 41head-y := arch/$(ARCH)/$(SARCH)/kernel/head.o 42 43LIBGCC = $(shell $(CC) $(KBUILD_CFLAGS) -print-file-name=libgcc.a) 44 45core-y += arch/$(ARCH)/kernel/ arch/$(ARCH)/mm/ 46core-y += arch/$(ARCH)/$(SARCH)/kernel/ arch/$(ARCH)/$(SARCH)/mm/ 47drivers-y += arch/$(ARCH)/$(SARCH)/drivers/ 48libs-y += arch/$(ARCH)/$(SARCH)/lib/ $(LIBGCC) 49 50# cris source path 51SRC_ARCH = $(srctree)/arch/$(ARCH) 52# cris object files path 53OBJ_ARCH = $(objtree)/arch/$(ARCH) 54 55target_boot_arch_dir = $(OBJ_ARCH)/$(SARCH)/boot 56target_boot_dir = $(OBJ_ARCH)/boot 57src_boot_dir = $(SRC_ARCH)/boot 58target_compressed_dir = $(OBJ_ARCH)/boot/compressed 59src_compressed_dir = $(SRC_ARCH)/boot/compressed 60target_rescue_dir = $(OBJ_ARCH)/boot/rescue 61src_rescue_dir = $(SRC_ARCH)/boot/rescue 62 63export target_boot_arch_dir target_boot_dir src_boot_dir target_compressed_dir src_compressed_dir target_rescue_dir src_rescue_dir 64 65vmlinux.bin: vmlinux 66 $(OBJCOPY) $(OBJCOPYFLAGS) vmlinux vmlinux.bin 67 68timage: vmlinux.bin 69 cat vmlinux.bin cramfs.img >timage 70 71simimage: timage 72 cp vmlinux.bin simvmlinux.bin 73 74# the following will remake timage without compiling the kernel 75# it does of course require that all object files exist... 76 77cramfs: 78## cramfs - Creates a cramfs image 79 mkcramfs -b 8192 -m romfs_meta.txt root cramfs.img 80 cat vmlinux.bin cramfs.img >timage 81 82clinux: vmlinux.bin decompress.bin rescue.bin 83 84decompress.bin: $(target_boot_dir) 85 @$(MAKE) -f $(src_compressed_dir)/Makefile $(target_compressed_dir)/decompress.bin 86 87$(target_rescue_dir)/rescue.bin: $(target_boot_dir) 88 @$(MAKE) -f $(src_rescue_dir)/Makefile $(target_rescue_dir)/rescue.bin 89 90zImage: $(target_boot_dir) vmlinux.bin $(target_rescue_dir)/rescue.bin 91## zImage - Compressed kernel (gzip) 92 @$(MAKE) -f $(src_boot_dir)/Makefile zImage 93 94$(target_boot_dir): $(target_boot_arch_dir) 95 ln -sfn $< $@ 96 97$(target_boot_arch_dir): 98 mkdir -p $@ 99 100compressed: zImage 101 102archmrproper: 103archclean: 104 @if [ -d arch/$(ARCH)/boot ]; then \ 105 $(MAKE) $(clean)=arch/$(ARCH)/boot ; \ 106 fi 107 rm -f timage vmlinux.bin decompress.bin rescue.bin cramfs.img 108 rm -rf $(LD_SCRIPT).tmp 109 110archprepare: $(SRC_ARCH)/.links $(srctree)/include/asm-$(ARCH)/.arch 111 112# Create some links to make all tools happy 113$(SRC_ARCH)/.links: 114 @rm -rf $(SRC_ARCH)/drivers 115 @ln -sfn $(SRC_ARCH)/$(SARCH)/drivers $(SRC_ARCH)/drivers 116 @rm -rf $(SRC_ARCH)/boot 117 @ln -sfn $(SRC_ARCH)/$(SARCH)/boot $(SRC_ARCH)/boot 118 @rm -rf $(SRC_ARCH)/lib 119 @ln -sfn $(SRC_ARCH)/$(SARCH)/lib $(SRC_ARCH)/lib 120 @ln -sfn $(SRC_ARCH)/$(SARCH) $(SRC_ARCH)/arch 121 @ln -sfn $(SRC_ARCH)/$(SARCH)/vmlinux.lds.S $(SRC_ARCH)/kernel/vmlinux.lds.S 122 @ln -sfn $(SRC_ARCH)/$(SARCH)/kernel/asm-offsets.c $(SRC_ARCH)/kernel/asm-offsets.c 123 @touch $@ 124 125# Create link to sub arch includes 126$(srctree)/include/asm-$(ARCH)/.arch: $(wildcard include/config/arch/*.h) 127 @echo ' Making $(srctree)/include/asm-$(ARCH)/arch -> $(srctree)/include/asm-$(ARCH)/$(SARCH) symlink' 128 @rm -f include/asm-$(ARCH)/arch 129 @ln -sf $(srctree)/include/asm-$(ARCH)/$(SARCH) $(srctree)/include/asm-$(ARCH)/arch 130 @touch $@ 131