Merge from Etherboot 5.4
[people/dverkamp/gpxe.git] / src / arch / i386 / Makefile
1 # i386-specific directories containing source files
2 #
3 SRCDIRS         += arch/i386/core arch/i386/transitions arch/i386/prefix
4 SRCDIRS         += arch/i386/firmware/pcbios
5 SRCDIRS         += arch/i386/image
6 SRCDIRS         += arch/i386/drivers/bus
7 SRCDIRS         += arch/i386/drivers/net
8 SRCDIRS         += arch/i386/drivers/disk
9
10 # The various xxx_loader.c files are #included into core/loader.c and
11 # should not be compiled directly.
12 #
13 NON_AUTO_SRCS   += arch/i386/core/aout_loader.c
14 NON_AUTO_SRCS   += arch/i386/core/freebsd_loader.c
15 NON_AUTO_SRCS   += arch/i386/core/multiboot_loader.c
16 NON_AUTO_SRCS   += arch/i386/core/tagged_loader.c
17 NON_AUTO_SRCS   += arch/i386/core/wince_loader.c
18
19 # setup.S and unnrv2b.S are both used to generate 16-bit as well as
20 # 32-bit objects.
21 #
22 OBJS_setup              = setup setup16
23 CFLAGS_setup16          = -DCODE16
24 OBJS_unnrv2b            = unnrv2b unnrv2b16
25 CFLAGS_unnrv2b16        = -DCODE16
26
27 # We need to undefine the default macro "i386" when compiling .S
28 # files, otherwise ".arch i386" translates to ".arch 1"...
29 #
30 CFLAGS_S                += -Ui386
31
32 # The i386 linker script
33 #
34 LDSCRIPT                = arch/i386/scripts/i386.lds
35
36 # Media types.
37
38 # It's ugly that we have to define these repetitive combinations by
39 # hand.  Unforunately, $(eval ...) is available only in make >= 3.80,
40 # and using an external Makefile fragment doesn't work because
41 # OBJS_xxx need to be defined *before* the external Makefile fragments
42 # for the source files are generated...
43
44 CFLAGS_ZPREFIX          = -DCOMPRESS
45
46 MEDIA                   += rom
47 OBJS_romprefix          = isaprefix zisaprefix pciprefix zpciprefix
48 CFLAGS_isaprefix        =
49 CFLAGS_zisaprefix       = $(CFLAGS_ZPREFIX)
50 CFLAGS_pciprefix        = -DPCI_PNP_HEADER
51 CFLAGS_zpciprefix       = $(CFLAGS_pciprefix) $(CFLAGS_ZPREFIX)
52
53 MEDIA                   += pxe
54 OBJS_pxeprefix          = pxeprefix zpxeprefix
55 CFLAGS_zpxeprefix       = $(CFLAGS_ZPREFIX)
56
57 MEDIA                   += elf
58 OBJS_elfprefix          = elfprefix zelfprefix
59 CFLAGS_zelfprefix       = $(CFLAGS_ZPREFIX)
60
61 MEDIA                   += elfd
62 OBJS_elfdprefix         = elfdprefix zelfdprefix
63 CFLAGS_zelfdprefix      = $(CFLAGS_ZPREFIX)
64
65 MEDIA                   += lmelf
66 OBJS_lmelfprefix        = lmelfprefix zlmelfprefix
67 CFLAGS_zlmelfprefix     = $(CFLAGS_ZPREFIX)
68
69 MEDIA                   += lmelfd
70 OBJS_lmelfdprefix       = lmelfdprefix zlmelfdprefix
71 CFLAGS_zlmelfdprefix    = $(CFLAGS_ZPREFIX)
72
73 MEDIA                   += lilo
74 OBJS_liloprefix         = liloprefix zliloprefix
75 CFLAGS_zliloprefix      = $(CFLAGS_ZPREFIX)
76
77 MEDIA                   += bImage
78 OBJS_bImageprefix       = bImageprefix zbImageprefix
79 CFLAGS_zbImageprefix    = $(CFLAGS_ZPREFIX)
80
81 MEDIA                   += dsk
82 OBJS_dskprefix          = dskprefix zdskprefix
83 CFLAGS_zdskprefix       = $(CFLAGS_ZPREFIX)
84
85 MEDIA                   += hd
86 OBJS_hdprefix           = hdprefix zhdprefix
87 CFLAGS_zhdprefix        = $(CFLAGS_ZPREFIX)
88
89 MEDIA                   += raw
90 OBJS_rawprefix          = rawprefix zrawprefix
91 CFLAGS_zrawprefix       = $(CFLAGS_ZPREFIX)
92
93 # These media cannot handle compressed payloads
94
95 MEDIA                   += com
96
97 MEDIA                   += exe
98
99 # Some suffixes (e.g. %.zfd0) are generated directly from other
100 # finished files (e.g. %.zdsk), rather than having their own prefix.
101
102 # rule to write disk images to /dev/fd0
103 NON_AUTO_MEDIA          += fd0
104 %fd0 : %dsk
105         dd if=$< bs=512 conv=sync of=/dev/fd0
106         sync
107
108 # rule to make a non-emulation ISO boot image
109 NON_AUTO_MEDIA          += iso
110 %iso:   %lilo util/geniso
111         ISOLINUX_BIN=$(ISOLINUX_BIN) bash util/geniso $@ $<
112
113 # rule to make a floppy emulation ISO boot image
114 NON_AUTO_MEDIA          += liso
115 %liso:  %lilo util/genliso
116         bash util/genliso $@ $<
117
118 # Add NON_AUTO_MEDIA to the media list, so that they show up in the
119 # output of "make"
120 #
121 MEDIA           += $(NON_AUTO_MEDIA)
122
123 # Shortcut to allow typing just
124 #   make bin-kir/%
125 # rather than
126 #   make -f arch/i386/kir-Makefile bin-kir/%
127 # for building a KEEP_IT_REAL flavour.
128 #
129 $(BIN)-kir/% : kir-target
130         $(MAKE) -f arch/i386/kir-Makefile $(MAKECMDGOALS)
131
132 .PHONY : kir-target