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