[PATCH] x86_64 merge: arch + asm
[opensuse:kernel.git] / arch / x86_64 / Makefile
1 #
2 # x86_64/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 # Copyright (C) 1994 by Linus Torvalds
14 #
15 # 19990713  Artur Skawina <skawina@geocities.com>
16 #           Added '-march' and '-mpreferred-stack-boundary' support
17 # 20000913  Pavel Machek <pavel@suse.cz>
18 #           Converted for x86_64 architecture
19 # 20010105  Andi Kleen, add IA32 compiler.
20 #
21 # $Id: Makefile,v 1.28 2001/06/29 17:47:43 aj Exp $
22
23
24 #
25 # boot system currently needs IA32 tools to link (to be fixed) 
26 #
27 # Change this to your i386 compiler/binutils
28 IA32_PREFIX := /usr/bin/
29 IA32_CC := $(IA32_PREFIX)gcc -O2 -fomit-frame-pointer -nostdinc -I $(HPATH)
30 IA32_LD := $(IA32_PREFIX)ld
31 IA32_AS := $(IA32_PREFIX)gcc -D__ASSEMBLY__ -traditional -c -nostdinc -I $(HPATH) 
32 IA32_OBJCOPY := $(IA32_PREFIX)objcopy
33 IA32_CPP := $(IA32_PREFIX)gcc -E
34 export IA32_CC IA32_LD IA32_AS IA32_OBJCOPY IA32_CPP
35
36
37 LD=$(CROSS_COMPILE)ld -m elf_x86_64
38 OBJCOPY=$(CROSS_COMPILE)objcopy -O binary -R .note -R .comment -S
39 LDFLAGS=-e stext
40 LINKFLAGS =-T $(TOPDIR)/arch/x86_64/vmlinux.lds $(LDFLAGS)
41
42 CFLAGS += $(shell if $(CC) -mno-red-zone -S -o /dev/null -xc /dev/null >/dev/null 2>&1; then echo "-mno-red-zone"; fi ) 
43 CFLAGS += -mcmodel=kernel
44 CFLAGS += -pipe
45 # generates worse code, but makes the assembly much more readable:
46 CFLAGS += -fno-reorder-blocks   
47 # work around early gcc 3.1 bugs. Later snapshots should this already fixed.
48 CFLAGS += -fno-strength-reduce
49 # make sure all inline functions are inlined
50 CFLAGS += -finline-limit=3000
51
52 #CFLAGS += -g
53
54 # prevent gcc from keeping the stack 16 byte aligned (FIXME)
55 #CFLAGS += -mpreferred-stack-boundary=2
56
57 HEAD := arch/x86_64/kernel/head.o arch/x86_64/kernel/head64.o arch/x86_64/kernel/init_task.o
58
59 SUBDIRS := arch/x86_64/tools $(SUBDIRS) arch/x86_64/kernel arch/x86_64/mm arch/x86_64/lib
60 CORE_FILES := arch/x86_64/kernel/kernel.o $(CORE_FILES)
61 CORE_FILES +=  arch/x86_64/mm/mm.o
62 LIBS := $(TOPDIR)/arch/x86_64/lib/lib.a $(LIBS)
63
64 CLEAN_FILES += include/asm-x86_64/offset.h
65
66 ifdef CONFIG_IA32_EMULATION
67 SUBDIRS += arch/x86_64/ia32
68 CORE_FILES += arch/x86_64/ia32/ia32.o
69 endif
70
71 ifdef CONFIG_HOSTFS
72 SUBDIRS += arch/x86_64/hostfs
73 core-$(CONFIG_HOSTFS) += arch/x86_64/hostfs/hostfs.o
74 endif
75
76 CORE_FILES += $(core-y)
77
78 arch/x86_64/tools: dummy
79         $(MAKE) linuxsubdirs SUBDIRS=arch/x86_64/tools 
80
81 arch/x86_64/kernel: dummy 
82         $(MAKE) linuxsubdirs SUBDIRS=arch/x86_64/kernel
83
84 arch/x86_64/mm: dummy
85         $(MAKE) linuxsubdirs SUBDIRS=arch/x86_64/mm
86
87 MAKEBOOT = $(MAKE) -C arch/$(ARCH)/boot
88
89 vmlinux: arch/x86_64/vmlinux.lds
90
91 checkoffset: FORCE
92         make -C arch/$(ARCH)/tools $(TOPDIR)/include/asm-x86_64/offset.h
93
94 FORCE: ;
95
96 .PHONY: zImage bzImage compressed zlilo bzlilo zdisk bzdisk install \
97                 clean archclean archmrproper archdep checkoffset
98
99 bzImage: checkoffset vmlinux
100         @$(MAKEBOOT) bzImage
101
102 bzImage-padded: checkoffset vmlinux
103         @$(MAKEBOOT) bzImage-padded
104
105 tmp:
106         @$(MAKEBOOT) BOOTIMAGE=bzImage zlilo
107 bzlilo: checkoffset vmlinux
108         @$(MAKEBOOT) BOOTIMAGE=bzImage zlilo
109
110 zdisk: checkoffset vmlinux
111         @$(MAKEBOOT) BOOTIMAGE=zImage zdisk
112
113 bzdisk: checkoffset vmlinux
114         @$(MAKEBOOT) BOOTIMAGE=bzImage zdisk
115
116 install: checkoffset vmlinux
117         @$(MAKEBOOT) BOOTIMAGE=bzImage install
118
119 archclean:
120         @$(MAKEBOOT) clean
121         $(MAKE) -C $(TOPDIR)/arch/x86_64/tools clean
122
123 archmrproper:
124         rm -f $(TOPDIR)/arch/x86_64/tools/offset.h
125         rm -f $(TOPDIR)/arch/x86_64/tools/offset.tmp
126         rm -f $(TOPDIR)/include/asm-x86_64/offset.h
127
128 archdep:
129         @$(MAKE) -C $(TOPDIR)/arch/x86_64/tools all
130         @$(MAKEBOOT) dep