• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1## -----------------------------------------------------------------------
2##
3##   Copyright 2001-2009 H. Peter Anvin - All Rights Reserved
4##   Copyright 2009 Intel Corporation; author: H. Peter Anvin
5##
6##   This program is free software; you can redistribute it and/or modify
7##   it under the terms of the GNU General Public License as published by
8##   the Free Software Foundation, Inc., 53 Temple Place Ste 330,
9##   Boston MA 02111-1307, USA; either version 2 of the License, or
10##   (at your option) any later version; incorporated herein by reference.
11##
12## -----------------------------------------------------------------------
13
14include $(MAKEDIR)/embedded.mk
15-include $(topdir)/version.mk
16
17INCLUDES = -I$(topdir)/com32/include -I$(objdir)
18CFLAGS  += -D__MEMDISK__ -DDATE='"$(DATE)"' -mregparm=3 -DREGPARM=3
19LDFLAGS  = $(GCCOPT) -g
20NASM     = nasm
21NASMOPT  = -Ox
22NFLAGS   = -dDATE='"$(DATE)"'
23NINCLUDE = -I$(SRC)/
24
25VPATH = $(SRC)
26SRCS	 = $(wildcard *.asm *.c *.h)
27
28# The DATE is set on the make command line when building binaries for
29# official release.  Otherwise, substitute a hex string that is pretty much
30# guaranteed to be unique to be unique from build to build.
31ifndef HEXDATE
32HEXDATE := $(shell $(PERL) $(SRC)/../now.pl $(SRCS))
33endif
34ifndef DATE
35DATE    := $(shell sh $(SRC)/../gen-id.sh $(VERSION) $(HEXDATE))
36endif
37
38# Important: init.o16 must be first!!
39OBJS16   = init.o16 init32.o
40OBJS32   = start32.o setup.o msetup.o e820func.o conio.o memcpy.o memset.o \
41	   memmove.o unzip.o dskprobe.o eltorito.o \
42	   ctypes.o strntoumax.o strtoull.o suffix_number.o \
43	   memdisk_chs_512.o memdisk_edd_512.o \
44	   memdisk_iso_512.o memdisk_iso_2048.o
45
46CSRC     = setup.c msetup.c e820func.c conio.c unzip.c dskprobe.c eltorito.c \
47	   ctypes.c strntoumax.c strtoull.c suffix_number.c
48SSRC     = start32.S memcpy.S memset.S memmove.S
49NASMSRC  = memdisk_chs_512.asm memdisk_edd_512.asm \
50	   memdisk_iso_512.asm memdisk_iso_2048.asm \
51	   memdisk16.asm
52
53all: memdisk # e820test
54
55# tidy, clean removes everything except the final binary
56tidy dist:
57	rm -f *.o *.s *.tmp *.o16 *.s16 *.bin *.lst *.elf e820test .*.d
58	rm -f *.map
59
60clean: tidy
61
62# spotless also removes the product binary
63spotless: clean
64	rm -f memdisk .depend
65
66memdisk16.o: memdisk16.asm
67
68# Cancel rule
69%.o: %.asm
70
71memdisk16.o: memdisk16.asm
72	( $(NASM) -M -DDEPEND $(NFLAGS) $(NINCLUDE) -o $@ $< ; echo '' ) > .$@.d ; true
73	$(NASM) -f elf $(NASMOPT) $(NFLAGS) $(NINCLUDE) -o $@ -l $*.lst $<
74
75.PRECIOUS: %.bin
76%.bin: %.asm
77	( $(NASM) -M -DDEPEND $(NFLAGS) $(NINCLUDE) -o $@ $< ; echo '' ) > .$@.d ; true
78	$(NASM) -f bin $(NASMOPT) $(NFLAGS) $(NINCLUDE) -o $@ -l $*.lst $<
79
80memdisk_%.o: memdisk_%.bin
81	$(LD) -r -b binary -o $@ $<
82
83memdisk16.elf: $(OBJS16)
84	$(LD) -Ttext 0 -o $@ $^
85
86#memdisk32.elf: memdisk.ld $(OBJS32)
87memdisk32.elf: $(ARCH)/memdisk.ld $(OBJS32)
88	$(LD) -o $@ -T $^
89
90%.bin: %.elf
91	$(OBJCOPY) -O binary $< $@
92
93memdisk: memdisk16.bin memdisk32.bin postprocess.pl
94	$(PERL) $(SRC)/postprocess.pl $@ memdisk16.bin memdisk32.bin
95
96e820test: e820test.c e820func.c msetup.c
97	$(CC) -m32 -g $(GCCWARN) -DTEST -o $@ $^
98
99# This file contains the version number, so add a dependency for it
100setup.s: ../version
101
102# Include dependencies file
103-include .*.d
104