Makefile 4 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 17 18
#
# 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" and "archdep" for cleaning up and making dependencies 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
#

19
LDFLAGS		:= -m elf_i386
20
OBJCOPYFLAGS	:= -O binary -R .note -R .comment -S
21
LDFLAGS_vmlinux := -e stext
22
LDFLAGS_BLOB	:= --format binary --oformat elf32-i386
Linus Torvalds's avatar
Linus Torvalds committed
23 24 25

CFLAGS += -pipe

26 27
check_gcc = $(shell if $(CC) $(1) -S -o /dev/null -xc /dev/null > /dev/null 2>&1; then echo "$(1)"; else echo "$(2)"; fi)

Linus Torvalds's avatar
Linus Torvalds committed
28
# prevent gcc from keeping the stack 16 byte aligned
29
CFLAGS += $(call check_gcc,-mpreferred-stack-boundary=2,)
Linus Torvalds's avatar
Linus Torvalds committed
30

31 32 33 34
cflags-$(CONFIG_M386)		+= -march=i386
cflags-$(CONFIG_M486)		+= -march=i486
cflags-$(CONFIG_M586)		+= -march=i586
cflags-$(CONFIG_M586TSC)	+= -march=i586
35
cflags-$(CONFIG_M586MMX)	+= $(call check_gcc,-march=pentium-mmx,-march=i586)
36
cflags-$(CONFIG_M686)		+= -march=i686
37 38 39 40
cflags-$(CONFIG_MPENTIUMIII)	+= $(call check_gcc,-march=pentium3,-march=i686)
cflags-$(CONFIG_MPENTIUM4)	+= $(call check_gcc,-march=pentium4,-march=i686)
cflags-$(CONFIG_MK6)		+= $(call check_gcc,-march=k6,-march=i586)
cflags-$(CONFIG_MK7)		+= $(call check_gcc,-march=athlon,-march=i686 -malign-functions=4)
41
cflags-$(CONFIG_MK8)		+= $(call check_gcc,-march=k8,$(call check_gcc,-march=athlon,-march=i686 -malign-functions=4))
42
cflags-$(CONFIG_MCRUSOE)	+= -march=i686 -malign-functions=0 -malign-jumps=0 -malign-loops=0
43 44
cflags-$(CONFIG_MWINCHIPC6)	+= $(call check_gcc,-march=winchip-c6,-march=i586)
cflags-$(CONFIG_MWINCHIP2)	+= $(call check_gcc,-march=winchip2,-march=i586)
45
cflags-$(CONFIG_MWINCHIP3D)	+= -march=i586
46 47 48
cflags-$(CONFIG_MCYRIXIII)	+= $(call check_gcc,-march=c3,-march=i486)
# The alignment flags change with gcc 3.2
cflags-$(CONFIG_MCYRIXIII)	+= $(call check_gcc,-falign-functions=0 -falign-jumps=0 -falign-loops=0,-malign-functions=0 -malign-jumps=0 -malign-loops=0)
49 50

CFLAGS += $(cflags-y)
Linus Torvalds's avatar
Linus Torvalds committed
51

52
# Default subarch .c files
53 54
mcore-y  := mach-default

55 56 57
# Voyager subarch support
mflags-$(CONFIG_X86_VOYAGER)	:= -Iinclude/asm-i386/mach-voyager
mcore-$(CONFIG_X86_VOYAGER)	:= mach-voyager
58

59 60 61
# VISWS subarch support
mflags-$(CONFIG_X86_VISWS)	:= -Iinclude/asm-i386/mach-visws
mcore-$(CONFIG_X86_VISWS)	:= mach-visws
62

63 64 65
# NUMAQ subarch support
mflags-$(CONFIG_X86_NUMAQ)	:= -Iinclude/asm-i386/mach-numaq
mcore-$(CONFIG_X86_NUMAQ)	:= mach-default
66

67
# default subarch .h files
68
mflags-y += -Iinclude/asm-i386/mach-default
69

Linus Torvalds's avatar
Linus Torvalds committed
70 71
HEAD := arch/i386/kernel/head.o arch/i386/kernel/init_task.o

72
libs-y 					+= arch/i386/lib/
73 74
core-y					+= arch/i386/kernel/ \
					   arch/i386/mm/ \
75
					   arch/i386/$(mcore-y)/
76 77
drivers-$(CONFIG_MATH_EMULATION)	+= arch/i386/math-emu/
drivers-$(CONFIG_PCI)			+= arch/i386/pci/
John Levon's avatar
John Levon committed
78 79
# FIXME: is drivers- right ?
drivers-$(CONFIG_OPROFILE)		+= arch/i386/oprofile/
80

81 82
CFLAGS += $(mflags-y)
AFLAGS += $(mflags-y)
83

84
boot := arch/i386/boot
Linus Torvalds's avatar
Linus Torvalds committed
85 86

.PHONY: zImage bzImage compressed zlilo bzlilo zdisk bzdisk install \
Kai Germaschewski's avatar
Kai Germaschewski committed
87
		clean archclean archmrproper
Linus Torvalds's avatar
Linus Torvalds committed
88

89 90
all: bzImage

91 92
BOOTIMAGE=arch/i386/boot/bzImage
zImage zlilo zdisk: BOOTIMAGE=arch/i386/boot/zImage
Linus Torvalds's avatar
Linus Torvalds committed
93

94
zImage bzImage: vmlinux
95
	$(Q)$(MAKE) $(build)=$(boot) $(BOOTIMAGE)
Linus Torvalds's avatar
Linus Torvalds committed
96 97 98

compressed: zImage

99
zlilo bzlilo: vmlinux
100
	$(Q)$(MAKE) $(build)=$(boot) BOOTIMAGE=$(BOOTIMAGE) zlilo
Linus Torvalds's avatar
Linus Torvalds committed
101

102
zdisk bzdisk: vmlinux
103
	$(Q)$(MAKE) $(build)=$(boot) BOOTIMAGE=$(BOOTIMAGE) zdisk
Linus Torvalds's avatar
Linus Torvalds committed
104 105

install: vmlinux
106
	$(Q)$(MAKE) $(build)=$(boot) BOOTIMAGE=$(BOOTIMAGE) install
Linus Torvalds's avatar
Linus Torvalds committed
107 108

archclean:
109
	$(Q)$(MAKE) $(clean)=arch/i386/boot
110 111 112 113 114 115 116 117 118

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'
endef