- Linus: drop support for old-style Makefiles entirely. Big.
[davej-history.git] / arch / mips64 / Makefile
blob917229bfde30b855d11e005adb9706e92e832631
2 # This file is subject to the terms and conditions of the GNU General Public
3 # License. See the file "COPYING" in the main directory of this archive
4 # for more details.
6 # This file is included by the global makefile so that you can add your own
7 # architecture-specific flags and dependencies. Remember to do have actions
8 # for "archclean" and "archdep" for cleaning up and making dependencies for
9 # this architecture
13 # Select the object file format to substitute into the linker script.
15 CPP=$(CC) -E
16 ifdef CONFIG_CPU_LITTLE_ENDIAN
17 tool-prefix = mips64el-linux-
18 else
19 tool-prefix = mips64-linux-
20 endif
22 ifdef CONFIG_CROSSCOMPILE
23 CROSS_COMPILE = $(tool-prefix)
24 endif
27 # The ELF GCC uses -G0 -mabicalls -fpic as default. We don't need PIC
28 # code in the kernel since it only slows down the whole thing. For the
29 # old GCC these options are just the defaults. At some point we might
30 # make use of global pointer optimizations.
32 # The DECStation requires an ECOFF kernel for remote booting, other MIPS
33 # machines may also. Since BFD is incredibly buggy with respect to
34 # crossformat linking we rely on the elf2ecoff tool for format conversion.
36 CFLAGS += -I $(TOPDIR)/include/asm $(CFLAGS)
37 CFLAGS += -mabi=64 -G 0 -mno-abicalls -fno-pic -Wa,--trap -pipe
38 LINKFLAGS += -G 0 -static # -N
39 MODFLAGS += -mlong-calls
41 ifdef CONFIG_REMOTE_DEBUG
42 CFLAGS := $(CFLAGS) -g
43 endif
46 # CPU-dependent compiler/assembler options for optimization.
48 ifdef CONFIG_CPU_R4300
49 CFLAGS := $(CFLAGS) -mcpu=r4300 -mips3
50 endif
51 ifdef CONFIG_CPU_R4X00
52 CFLAGS := $(CFLAGS) -mcpu=r4600 -mips3
53 endif
54 ifdef CONFIG_CPU_R5000
55 CFLAGS := $(CFLAGS) -mcpu=r8000 -mips4
56 endif
57 ifdef CONFIG_CPU_NEVADA
58 CFLAGS := $(CFLAGS) -mcpu=r8000 -mips3 -mmad
59 endif
60 ifdef CONFIG_CPU_R8000
61 CFLAGS := $(CFLAGS) -mcpu=r8000 -mips4
62 endif
63 ifdef CONFIG_CPU_R10000
64 CFLAGS := $(CFLAGS) -mcpu=r8000 -mips4
65 endif
68 # Board-dependent options and extra files
70 ifdef CONFIG_SGI_IP22
71 LIBS += arch/mips64/sgi-ip22/ip22.a arch/mips64/arc/arclib.a
72 SUBDIRS += arch/mips64/sgi-ip22 arch/mips64/arc
74 # Set LOADADDR to >= 0x88069000 if you want to leave space for symmon,
75 # 0x88004000 for production kernels. Note that the value must be
76 # 16kb aligned or the handling of the current variable will break.
78 LOADADDR += 0x88004000
79 endif
81 ifdef CONFIG_SGI_IP27
82 LIBS += arch/mips64/sgi-ip27/ip27.a arch/mips64/arc/arclib.a
83 SUBDIRS += arch/mips64/sgi-ip27 arch/mips64/arc
85 # Set LOADADDR to >= 0xc000000000300000 if you want to leave space for
86 # symmon, 0xc00000000001c000 for production kernels. Note that the value
87 # must be 16kb aligned or the handling of the current variable will break.
89 #LOADADDR += 0xa80000000001c000
90 ifdef CONFIG_MAPPED_KERNEL
91 LOADADDR += 0xc001c000
92 else
93 LOADADDR += 0x8001c000
94 endif
95 endif
98 # Some machines like the Indy need 32-bit ELF binaries for booting purposes.
99 # Other need ECOFF, so we build a 32-bit ELF binary for them which we then
100 # convert to ECOFF using elf2ecoff.
102 ifdef CONFIG_BOOT_ELF32
103 CFLAGS += -Wa,-32
104 LINKFLAGS += -T arch/mips64/ld.script.elf32
105 endif
107 # The 64-bit ELF tools are pretty broken so at this time we generate 64-bit
108 # ELF files from 32-bit files by conversion.
110 ifdef CONFIG_BOOT_ELF64
111 CFLAGS += -Wa,-32
112 LINKFLAGS += -T arch/mips64/ld.script.elf32
113 #AS += -64
114 #LD += -m elf64bmip
115 #LINKFLAGS += -T arch/mips64/ld.script.elf64
116 endif
118 LINKFLAGS += -Ttext $(LOADADDR)
120 HEAD := arch/mips64/kernel/head.o arch/mips64/kernel/init_task.o
122 SUBDIRS := $(addprefix arch/mips64/, tools) $(SUBDIRS) $(addprefix arch/mips64/, kernel mm lib)
123 CORE_FILES := arch/mips64/kernel/kernel.o arch/mips64/mm/mm.o $(CORE_FILES)
124 LIBS := arch/mips64/lib/lib.a $(LIBS)
126 MAKEBOOT = $(MAKE) -C arch/$(ARCH)/boot
128 ifdef CONFIG_CPU_LITTLE_ENDIAN
129 64bit-bfd = elf64-littlemips
130 else
131 64bit-bfd = elf64-bigmips
132 endif
134 vmlinux: arch/mips64/ld.script.elf32
135 arch/mips64/ld.script.elf32: arch/mips64/ld.script.elf32.S
136 $(CPP) -C -P -I$(HPATH) -imacros $(HPATH)/asm-mips64/sn/mapped_kernel.h -Umips arch/mips64/ld.script.elf32.S > arch/mips64/ld.script.elf32
138 ifdef CONFIG_MAPPED_KERNEL
139 vmlinux.64: vmlinux
140 $(OBJCOPY) -O $(64bit-bfd) --change-addresses=0xbfffffff40000000 $< $@
141 else
142 vmlinux.64: vmlinux
143 $(OBJCOPY) -O $(64bit-bfd) --change-addresses=0xa7ffffff80000000 $< $@
144 endif
146 zImage: vmlinux
147 @$(MAKEBOOT) zImage
149 compressed: zImage
151 zdisk: vmlinux
152 @$(MAKEBOOT) zdisk
154 archclean:
155 @$(MAKEBOOT) clean
156 $(MAKE) -C arch/$(ARCH)/kernel clean
157 $(MAKE) -C arch/$(ARCH)/tools clean
158 rm -f vmlinux.64 arch/$(ARCH)/ld.script.elf32
160 archmrproper:
161 @$(MAKEBOOT) mrproper
162 $(MAKE) -C arch/$(ARCH)/tools mrproper
164 archdep:
165 if [ ! -f $(TOPDIR)/include/asm-$(ARCH)/offset.h ]; then \
166 touch $(TOPDIR)/include/asm-$(ARCH)/offset.h; \
168 @$(MAKEBOOT) dep