linux/arch/x86/boot/Makefile
<<
>>
Prefs
   1#
   2# arch/x86/boot/Makefile
   3#
   4# This file is subject to the terms and conditions of the GNU General Public
   5# License.  See the file "COPYING" in the main directory of this archive
   6# for more details.
   7#
   8# Copyright (C) 1994 by Linus Torvalds
   9# Changed by many, many contributors over the years.
  10#
  11
  12# ROOT_DEV specifies the default root-device when making the image.
  13# This can be either FLOPPY, CURRENT, /dev/xxxx or empty, in which case
  14# the default of FLOPPY is used by 'build'.
  15
  16ROOT_DEV        := CURRENT
  17
  18# If you want to preset the SVGA mode, uncomment the next line and
  19# set SVGA_MODE to whatever number you want.
  20# Set it to -DSVGA_MODE=NORMAL_VGA if you just want the EGA/VGA mode.
  21# The number is the same as you would ordinarily press at bootup.
  22
  23SVGA_MODE       := -DSVGA_MODE=NORMAL_VGA
  24
  25targets         := vmlinux.bin setup.bin setup.elf bzImage
  26targets         += fdimage fdimage144 fdimage288 image.iso mtools.conf
  27subdir-         := compressed
  28
  29setup-y         += a20.o cmdline.o copy.o cpu.o cpucheck.o edd.o
  30setup-y         += header.o main.o mca.o memory.o pm.o pmjump.o
  31setup-y         += printf.o string.o tty.o video.o video-mode.o version.o
  32setup-$(CONFIG_X86_APM_BOOT) += apm.o
  33
  34# The link order of the video-*.o modules can matter.  In particular,
  35# video-vga.o *must* be listed first, followed by video-vesa.o.
  36# Hardware-specific drivers should follow in the order they should be
  37# probed, and video-bios.o should typically be last.
  38setup-y         += video-vga.o
  39setup-y         += video-vesa.o
  40setup-y         += video-bios.o
  41
  42targets         += $(setup-y)
  43hostprogs-y     := mkcpustr tools/build
  44
  45HOST_EXTRACFLAGS += $(LINUXINCLUDE)
  46
  47$(obj)/cpu.o: $(obj)/cpustr.h
  48
  49quiet_cmd_cpustr = CPUSTR  $@
  50      cmd_cpustr = $(obj)/mkcpustr > $@
  51targets         += cpustr.h
  52$(obj)/cpustr.h: $(obj)/mkcpustr FORCE
  53        $(call if_changed,cpustr)
  54
  55# ---------------------------------------------------------------------------
  56
  57# How to compile the 16-bit code.  Note we always compile for -march=i386,
  58# that way we can complain to the user if the CPU is insufficient.
  59KBUILD_CFLAGS   := $(LINUXINCLUDE) -g -Os -D_SETUP -D__KERNEL__ \
  60                   -DDISABLE_BRANCH_PROFILING \
  61                   -Wall -Wstrict-prototypes \
  62                   -march=i386 -mregparm=3 \
  63                   -include $(srctree)/$(src)/code16gcc.h \
  64                   -fno-strict-aliasing -fomit-frame-pointer \
  65                   $(call cc-option, -ffreestanding) \
  66                   $(call cc-option, -fno-toplevel-reorder,\
  67                        $(call cc-option, -fno-unit-at-a-time)) \
  68                   $(call cc-option, -fno-stack-protector) \
  69                   $(call cc-option, -mpreferred-stack-boundary=2)
  70KBUILD_CFLAGS   += $(call cc-option, -m32)
  71KBUILD_AFLAGS   := $(KBUILD_CFLAGS) -D__ASSEMBLY__
  72
  73$(obj)/bzImage: asflags-y  := $(SVGA_MODE)
  74
  75quiet_cmd_image = BUILD   $@
  76cmd_image = $(obj)/tools/build $(obj)/setup.bin $(obj)/vmlinux.bin \
  77        $(ROOT_DEV) > $@
  78
  79$(obj)/bzImage: $(obj)/setup.bin $(obj)/vmlinux.bin $(obj)/tools/build FORCE
  80        $(call if_changed,image)
  81        @echo 'Kernel: $@ is ready' ' (#'`cat .version`')'
  82
  83OBJCOPYFLAGS_vmlinux.bin := -O binary -R .note -R .comment -S
  84$(obj)/vmlinux.bin: $(obj)/compressed/vmlinux FORCE
  85        $(call if_changed,objcopy)
  86
  87SETUP_OBJS = $(addprefix $(obj)/,$(setup-y))
  88
  89sed-offsets := -e 's/^00*/0/' \
  90        -e 's/^\([0-9a-fA-F]*\) . \(input_data\|input_data_end\)$$/\#define \2 0x\1/p'
  91
  92quiet_cmd_offsets = OFFSETS $@
  93      cmd_offsets = $(NM) $< | sed -n $(sed-offsets) > $@
  94
  95$(obj)/offsets.h: $(obj)/compressed/vmlinux FORCE
  96        $(call if_changed,offsets)
  97
  98targets += offsets.h
  99
 100AFLAGS_header.o += -I$(obj)
 101$(obj)/header.o: $(obj)/offsets.h
 102
 103LDFLAGS_setup.elf       := -T
 104$(obj)/setup.elf: $(src)/setup.ld $(SETUP_OBJS) FORCE
 105        $(call if_changed,ld)
 106
 107OBJCOPYFLAGS_setup.bin  := -O binary
 108$(obj)/setup.bin: $(obj)/setup.elf FORCE
 109        $(call if_changed,objcopy)
 110
 111$(obj)/compressed/vmlinux: FORCE
 112        $(Q)$(MAKE) $(build)=$(obj)/compressed $@
 113
 114# Set this if you want to pass append arguments to the
 115# bzdisk/fdimage/isoimage kernel
 116FDARGS =
 117# Set this if you want an initrd included with the
 118# bzdisk/fdimage/isoimage kernel
 119FDINITRD =
 120
 121image_cmdline = default linux $(FDARGS) $(if $(FDINITRD),initrd=initrd.img,)
 122
 123$(obj)/mtools.conf: $(src)/mtools.conf.in
 124        sed -e 's|@OBJ@|$(obj)|g' < $< > $@
 125
 126# This requires write access to /dev/fd0
 127bzdisk: $(obj)/bzImage $(obj)/mtools.conf
 128        MTOOLSRC=$(obj)/mtools.conf mformat a:                  ; sync
 129        syslinux /dev/fd0                                       ; sync
 130        echo '$(image_cmdline)' | \
 131                MTOOLSRC=$(src)/mtools.conf mcopy - a:syslinux.cfg
 132        if [ -f '$(FDINITRD)' ] ; then \
 133                MTOOLSRC=$(obj)/mtools.conf mcopy '$(FDINITRD)' a:initrd.img ; \
 134        fi
 135        MTOOLSRC=$(obj)/mtools.conf mcopy $(obj)/bzImage a:linux        ; sync
 136
 137# These require being root or having syslinux 2.02 or higher installed
 138fdimage fdimage144: $(obj)/bzImage $(obj)/mtools.conf
 139        dd if=/dev/zero of=$(obj)/fdimage bs=1024 count=1440
 140        MTOOLSRC=$(obj)/mtools.conf mformat v:                  ; sync
 141        syslinux $(obj)/fdimage                                 ; sync
 142        echo '$(image_cmdline)' | \
 143                MTOOLSRC=$(obj)/mtools.conf mcopy - v:syslinux.cfg
 144        if [ -f '$(FDINITRD)' ] ; then \
 145                MTOOLSRC=$(obj)/mtools.conf mcopy '$(FDINITRD)' v:initrd.img ; \
 146        fi
 147        MTOOLSRC=$(obj)/mtools.conf mcopy $(obj)/bzImage v:linux        ; sync
 148
 149fdimage288: $(obj)/bzImage $(obj)/mtools.conf
 150        dd if=/dev/zero of=$(obj)/fdimage bs=1024 count=2880
 151        MTOOLSRC=$(obj)/mtools.conf mformat w:                  ; sync
 152        syslinux $(obj)/fdimage                                 ; sync
 153        echo '$(image_cmdline)' | \
 154                MTOOLSRC=$(obj)/mtools.conf mcopy - w:syslinux.cfg
 155        if [ -f '$(FDINITRD)' ] ; then \
 156                MTOOLSRC=$(obj)/mtools.conf mcopy '$(FDINITRD)' w:initrd.img ; \
 157        fi
 158        MTOOLSRC=$(obj)/mtools.conf mcopy $(obj)/bzImage w:linux        ; sync
 159
 160isoimage: $(obj)/bzImage
 161        -rm -rf $(obj)/isoimage
 162        mkdir $(obj)/isoimage
 163        for i in lib lib64 share end ; do \
 164                if [ -f /usr/$$i/syslinux/isolinux.bin ] ; then \
 165                        cp /usr/$$i/syslinux/isolinux.bin $(obj)/isoimage ; \
 166                        break ; \
 167                fi ; \
 168                if [ $$i = end ] ; then exit 1 ; fi ; \
 169        done
 170        cp $(obj)/bzImage $(obj)/isoimage/linux
 171        echo '$(image_cmdline)' > $(obj)/isoimage/isolinux.cfg
 172        if [ -f '$(FDINITRD)' ] ; then \
 173                cp '$(FDINITRD)' $(obj)/isoimage/initrd.img ; \
 174        fi
 175        mkisofs -J -r -o $(obj)/image.iso -b isolinux.bin -c boot.cat \
 176                -no-emul-boot -boot-load-size 4 -boot-info-table \
 177                $(obj)/isoimage
 178        isohybrid $(obj)/image.iso 2>/dev/null || true
 179        rm -rf $(obj)/isoimage
 180
 181bzlilo: $(obj)/bzImage
 182        if [ -f $(INSTALL_PATH)/vmlinuz ]; then mv $(INSTALL_PATH)/vmlinuz $(INSTALL_PATH)/vmlinuz.old; fi
 183        if [ -f $(INSTALL_PATH)/System.map ]; then mv $(INSTALL_PATH)/System.map $(INSTALL_PATH)/System.old; fi
 184        cat $(obj)/bzImage > $(INSTALL_PATH)/vmlinuz
 185        cp System.map $(INSTALL_PATH)/
 186        if [ -x /sbin/lilo ]; then /sbin/lilo; else /etc/lilo/install; fi
 187
 188install:
 189        sh $(srctree)/$(src)/install.sh $(KERNELRELEASE) $(obj)/bzImage \
 190                System.map "$(INSTALL_PATH)"
 191
lxr.linux.no kindly hosted by Redpill Linpro AS, provider of Linux consulting and operations services since 1995.