Makefile 5.37 KB
Newer Older
Linus Torvalds's avatar
Linus Torvalds committed
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#
# i386/Makefile
#
# This file is included by the global makefile so that you can add your own
# architecture-specific flags and dependencies. Remember to do have actions
# for "archclean" cleaning up for this architecture.
#
# This file is subject to the terms and conditions of the GNU General Public
# License.  See the file "COPYING" in the main directory of this archive
# for more details.
#
# Copyright (C) 1994 by Linus Torvalds
#
# 19990713  Artur Skawina <skawina@geocities.com>
#           Added '-march' and '-mpreferred-stack-boundary' support
#
17
# 20050320  Kianusch Sayah Karadji <kianusch@sk-tech.net>
Linus Torvalds's avatar
Linus Torvalds committed
18
19
#           Added support for GEODE CPU

20
21
22
23
24
25
26
HAS_BIARCH      := $(call cc-option-yn, -m32)
ifeq ($(HAS_BIARCH),y)
AS              := $(AS) --32
LD              := $(LD) -m elf_i386
CC              := $(CC) -m32
endif

Linus Torvalds's avatar
Linus Torvalds committed
27
28
LDFLAGS		:= -m elf_i386
OBJCOPYFLAGS	:= -O binary -R .note -R .comment -S
29
30
31
ifdef CONFIG_RELOCATABLE
LDFLAGS_vmlinux := --emit-relocs
endif
Linus Torvalds's avatar
Linus Torvalds committed
32
33
CHECKFLAGS	+= -D__i386__

34
CFLAGS += -pipe -msoft-float -mregparm=3 -freg-struct-return
Linus Torvalds's avatar
Linus Torvalds committed
35
36

# prevent gcc from keeping the stack 16 byte aligned
37
CFLAGS += $(call cc-option,-mpreferred-stack-boundary=2)
Linus Torvalds's avatar
Linus Torvalds committed
38

39
40
# CPU-specific tuning. Anything which can be shared with UML should go here.
include $(srctree)/arch/i386/Makefile.cpu
Linus Torvalds's avatar
Linus Torvalds committed
41

42
43
44
# temporary until string.h is fixed
cflags-y += -ffreestanding

45
46
47
48
# this works around some issues with generating unwind tables in older gccs
# newer gccs do it by default
cflags-y += -maccumulate-outgoing-args

49
50
51
# Disable unit-at-a-time mode on pre-gcc-4.0 compilers, it makes gcc use
# a lot more stack due to the lack of sharing of stacklots:
CFLAGS				+= $(shell if [ $(call cc-version) -lt 0400 ] ; then echo $(call cc-option,-fno-unit-at-a-time); fi ;)
Linus Torvalds's avatar
Linus Torvalds committed
52

53
# do binutils support CFI?
54
55
cflags-y += $(call as-instr,.cfi_startproc\n.cfi_rel_offset esp${comma}0\n.cfi_endproc,-DCONFIG_AS_CFI=1,)
AFLAGS += $(call as-instr,.cfi_startproc\n.cfi_rel_offset esp${comma}0\n.cfi_endproc,-DCONFIG_AS_CFI=1,)
56
57

# is .cfi_signal_frame supported too?
58
59
cflags-y += $(call as-instr,.cfi_startproc\n.cfi_signal_frame\n.cfi_endproc,-DCONFIG_AS_CFI_SIGNAL_FRAME=1,)
AFLAGS += $(call as-instr,.cfi_startproc\n.cfi_signal_frame\n.cfi_endproc,-DCONFIG_AS_CFI_SIGNAL_FRAME=1,)
60

Linus Torvalds's avatar
Linus Torvalds committed
61
62
63
CFLAGS += $(cflags-y)

# Default subarch .c files
64
mcore-y  := arch/i386/mach-default
Linus Torvalds's avatar
Linus Torvalds committed
65
66
67

# Voyager subarch support
mflags-$(CONFIG_X86_VOYAGER)	:= -Iinclude/asm-i386/mach-voyager
68
mcore-$(CONFIG_X86_VOYAGER)	:= arch/i386/mach-voyager
Linus Torvalds's avatar
Linus Torvalds committed
69
70
71

# VISWS subarch support
mflags-$(CONFIG_X86_VISWS)	:= -Iinclude/asm-i386/mach-visws
72
mcore-$(CONFIG_X86_VISWS)	:= arch/i386/mach-visws
Linus Torvalds's avatar
Linus Torvalds committed
73
74
75

# NUMAQ subarch support
mflags-$(CONFIG_X86_NUMAQ)	:= -Iinclude/asm-i386/mach-numaq
76
mcore-$(CONFIG_X86_NUMAQ)	:= arch/i386/mach-default
Linus Torvalds's avatar
Linus Torvalds committed
77
78
79

# BIGSMP subarch support
mflags-$(CONFIG_X86_BIGSMP)	:= -Iinclude/asm-i386/mach-bigsmp
80
mcore-$(CONFIG_X86_BIGSMP)	:= arch/i386/mach-default
Linus Torvalds's avatar
Linus Torvalds committed
81
82
83

#Summit subarch support
mflags-$(CONFIG_X86_SUMMIT) := -Iinclude/asm-i386/mach-summit
84
mcore-$(CONFIG_X86_SUMMIT)  := arch/i386/mach-default
Linus Torvalds's avatar
Linus Torvalds committed
85
86
87

# generic subarchitecture
mflags-$(CONFIG_X86_GENERICARCH) := -Iinclude/asm-i386/mach-generic
88
mcore-$(CONFIG_X86_GENERICARCH) := arch/i386/mach-default
Linus Torvalds's avatar
Linus Torvalds committed
89
90
91
92
core-$(CONFIG_X86_GENERICARCH) += arch/i386/mach-generic/

# ES7000 subarch support
mflags-$(CONFIG_X86_ES7000)	:= -Iinclude/asm-i386/mach-es7000
93
mcore-$(CONFIG_X86_ES7000)	:= arch/i386/mach-default
Linus Torvalds's avatar
Linus Torvalds committed
94
95
core-$(CONFIG_X86_ES7000)	:= arch/i386/mach-es7000/

96
97
98
# Xen paravirtualization support
core-$(CONFIG_XEN)		+= arch/i386/xen/

Linus Torvalds's avatar
Linus Torvalds committed
99
100
101
# default subarch .h files
mflags-y += -Iinclude/asm-i386/mach-default

102
head-y := arch/i386/kernel/head_32.o arch/i386/kernel/init_task_32.o
Linus Torvalds's avatar
Linus Torvalds committed
103

Thomas Gleixner's avatar
Thomas Gleixner committed
104
libs-y 					+= arch/x86/lib/
Linus Torvalds's avatar
Linus Torvalds committed
105
106
core-y					+= arch/i386/kernel/ \
					   arch/i386/mm/ \
107
					   $(mcore-y)/ \
Thomas Gleixner's avatar
Thomas Gleixner committed
108
					   arch/x86/crypto/
Thomas Gleixner's avatar
Thomas Gleixner committed
109
drivers-$(CONFIG_MATH_EMULATION)	+= arch/x86/math-emu/
Linus Torvalds's avatar
Linus Torvalds committed
110
111
112
drivers-$(CONFIG_PCI)			+= arch/i386/pci/
# must be linked after kernel/
drivers-$(CONFIG_OPROFILE)		+= arch/i386/oprofile/
Thomas Gleixner's avatar
Thomas Gleixner committed
113
drivers-$(CONFIG_PM)			+= arch/x86/power/
114
drivers-$(CONFIG_FB)                    += arch/i386/video/
Linus Torvalds's avatar
Linus Torvalds committed
115
116
117
118
119
120

CFLAGS += $(mflags-y)
AFLAGS += $(mflags-y)

boot := arch/i386/boot

121
PHONY += zImage bzImage compressed zlilo bzlilo \
122
         zdisk bzdisk fdimage fdimage144 fdimage288 isoimage install
Linus Torvalds's avatar
Linus Torvalds committed
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140

all: bzImage

# KBUILD_IMAGE specify target image being built
                    KBUILD_IMAGE := $(boot)/bzImage
zImage zlilo zdisk: KBUILD_IMAGE := arch/i386/boot/zImage

zImage bzImage: vmlinux
	$(Q)$(MAKE) $(build)=$(boot) $(KBUILD_IMAGE)

compressed: zImage

zlilo bzlilo: vmlinux
	$(Q)$(MAKE) $(build)=$(boot) BOOTIMAGE=$(KBUILD_IMAGE) zlilo

zdisk bzdisk: vmlinux
	$(Q)$(MAKE) $(build)=$(boot) BOOTIMAGE=$(KBUILD_IMAGE) zdisk

141
fdimage fdimage144 fdimage288 isoimage: vmlinux
Linus Torvalds's avatar
Linus Torvalds committed
142
143
	$(Q)$(MAKE) $(build)=$(boot) BOOTIMAGE=$(KBUILD_IMAGE) $@

144
install:
145
	$(Q)$(MAKE) $(build)=$(boot) BOOTIMAGE=$(KBUILD_IMAGE) install
Linus Torvalds's avatar
Linus Torvalds committed
146
147
148
149
150
151
152
153
154
155
156
157

archclean:
	$(Q)$(MAKE) $(clean)=arch/i386/boot

define archhelp
  echo  '* bzImage	- Compressed kernel image (arch/$(ARCH)/boot/bzImage)'
  echo  '  install	- Install kernel using'
  echo  '		   (your) ~/bin/installkernel or'
  echo  '		   (distribution) /sbin/installkernel or'
  echo  '		   install to $$(INSTALL_PATH) and run lilo'
  echo  '  bzdisk       - Create a boot floppy in /dev/fd0'
  echo  '  fdimage      - Create a boot floppy image'
158
  echo  '  isoimage     - Create a boot CD-ROM image'
Linus Torvalds's avatar
Linus Torvalds committed
159
160
endef

161
162
163
CLEAN_FILES += arch/$(ARCH)/boot/fdimage \
	       arch/$(ARCH)/boot/image.iso \
	       arch/$(ARCH)/boot/mtools.conf