loader: updates from review
[unleashed.git] / usr / src / boot / sys / boot / i386 / loader / Makefile
blob1e967c9993e76a3b2a8ae7560fbf48dc5a84f397
2 # This file and its contents are supplied under the terms of the
3 # Common Development and Distribution License ("CDDL"), version 1.0.
4 # You may only use this file in accordance with the terms of version
5 # 1.0 of the CDDL.
7 # A full copy of the text of the CDDL should have accompanied this
8 # source. A copy of the CDDL is also available via the Internet at
9 # http://www.illumos.org/license/CDDL.
13 # Copyright 2015 Toomas Soome <tsoome@me.com>
16 include $(SRC)/Makefile.master
18 CFLAGS= -O2
19 CPPFLAGS= -DSTAND -nostdinc -I../../../../include -I../../..
20 LOADER= zfsloader
21 NEWVERSWHAT= "ZFS enabled bootstrap loader" x86
22 MAN=
24 # Set by zfsloader Makefile
25 CPPFLAGS += -DLOADER_ZFS_SUPPORT -I../../zfs
26 CPPFLAGS += -I../libi386
27 LIBZFSBOOT= ../../zfs/i386/libzfsboot.a
28 LIBI386= ../libi386/libi386.a
30 # loader.help build needs better awk
31 AWK= /usr/xpg4/bin/awk
32 LD= $(GNU_ROOT)/bin/gld
33 CC= $(GCC_ROOT)/bin/gcc
34 OBJCOPY= $(GNU_ROOT)/bin/gobjcopy
35 GSTRIP= $(GNU_ROOT)/bin/gstrip
36 ROOT_BOOT= $(ROOT)/boot
37 ROOT_BOOT_DEFAULTS= $(ROOT)/boot/defaults
38 ROOT_BOOT_FORTH= $(ROOT)/boot/forth
39 ROOT_BOOT_CONF= $(ROOT)/boot/conf.d
40 ROOTBOOTFILES=$(FILES:%=$(ROOT_BOOT)/%)
41 ROOTBOOTFORTH=$(FORTH:%=$(ROOT_BOOT_FORTH)/%)
42 ROOTBOOTDEFAULTS=$(DEFFILES:%=$(ROOT_BOOT_DEFAULTS)/%)
43 FILEMODE=0444
45 all: machine x86 ${LOADER} loader.help
47 install: all $(ROOTBOOTLOADER)
49 PROG= ${LOADER}.sym
50 INTERNALPROG=
52 # architecture-specific loader code
53 SRCS= main.c conf.c vers.c chain.c
55 CPPFLAGS += -DLOADER_TFTP_SUPPORT -DLOADER_GZIP_SUPPORT
57 # Enable BootForth
58 CPPFLAGS += -DBOOT_FORTH -I$(SRC)/common/ficl -I../../ficl
59 LIBFICL= ../../ficl/i386/libficl.a
61 # Always add MI sources
62 SRCS += boot.c commands.c console.c devopen.c interp.c
63 SRCS += interp_backslash.c interp_parse.c ls.c misc.c
64 SRCS += module.c panic.c linenoise.c
66 SRCS += load_elf32.c load_elf32_obj.c reloc_elf32.c
67 SRCS += load_elf64.c load_elf64_obj.c reloc_elf64.c
69 SRCS += dev_net.c
71 SRCS += disk.c part.c
72 CPPFLAGS += -DLOADER_DISK_SUPPORT
73 SRCS += crc32.c
74 CPPFLAGS += -DLOADER_GPT_SUPPORT
75 CPPFLAGS += -DLOADER_MBR_SUPPORT
77 SRCS += bcache.c
79 SRCS += isapnp.c
80 SRCS += pnp.c
82 # Forth interpreter
83 SRCS += interp_forth.c
85 MAN += loader.8
86 MAN += zfsloader.8
87 CPPFLAGS += -I../../common
88 CPPFLAGS += -I.
90 CLEANFILES= vers.c ${LOADER} ${LOADER}.sym ${LOADER}.bin loader.help
92 CFLAGS += -Wall
93 LDFLAGS= -m elf_i386_sol2 -static -Ttext 0x0
95 # i386 standalone support library
96 CPPFLAGS += -I.. -I../../../../lib/libstand
97 LIBSTAND= ../../libstand/i386/libstand.a
99 # BTX components
100 CPPFLAGS += -I../btx/lib
102 # Debug me!
103 #CFLAGS+= -g
104 #LDFLAGS+= -g
106 include ../Makefile.inc
108 vers.c: ../../common/newvers.sh version
109 $(SH) ../../common/newvers.sh version ${NEWVERSWHAT}
111 ${LOADER}: ${LOADER}.bin ${BTXLDR} ${BTXKERN}
112 $(BTXLD) -v -f aout -e ${LOADER_ADDRESS} -o $@ -l ${BTXLDR} \
113 -b ${BTXKERN} ${LOADER}.bin
115 ${LOADER}.bin: ${LOADER}.sym
116 $(CP) $^ $@
117 $(GSTRIP) -R .comment -R .note $@
119 loader.help: ../../common/help.common help.i386
120 $(CAT) $^ | $(AWK) -f ../../common/merge_help.awk > $@
122 FILES= ${LOADER} loader.help
124 include ../../forth/Makefile.inc
125 FORTH += pcibios.4th
127 FILES += loader.rc
128 FORTH += menu.rc
130 # XXX crt0.o needs to be first for pxeboot(8) to work
132 DPADD= ${LIBFICL} ${LIBZFSBOOT} ${LIBI386} ${LIBSTAND}
133 LDADD= ${LIBFICL} ${LIBZFSBOOT} ${LIBI386} ${LIBSTAND}
135 CLEANFILES += machine x86
136 CFLAGS += -DLOADER_PREFER_AMD64
138 machine:
139 $(RM) machine
140 $(SYMLINK) ../../../i386/include machine
142 x86:
143 $(RM) x86
144 $(SYMLINK) ../../../x86/include x86
146 OBJS= $(SRCS:%.c=%.o)
148 ${PROG}: ${OBJS} $(LDADD)
149 $(LD) $(LDFLAGS) -o $@ $(BTXCRT) $(OBJS) $(LDADD)
151 clean: clobber
152 clobber:
153 $(RM) $(CLEANFILES) $(OBJS)
155 install: all $(ROOT_BOOT_DEFAULTS) $(ROOT_BOOT_FORTH) \
156 $(ROOTBOOTFILES) $(ROOTBOOTDEFAULTS) $(ROOT_BOOT_CONF) $(ROOTBOOTFORTH)
158 %.o: ../../common/%.c
159 $(COMPILE.c) -o $@ $<
161 %.o: ../../common/linenoise/%.c
162 $(COMPILE.c) -o $@ $<
164 $(ROOT_BOOT)/%: ../../forth/%
165 $(INS.file)
167 $(ROOT_BOOT_DEFAULTS)/%: ../../forth/%
168 $(INS.file)
170 $(ROOT_BOOT_FORTH)/%: ../../forth/%
171 $(INS.file)
173 $(ROOT_BOOT_DEFAULTS) $(ROOT_BOOT_CONF) $(ROOT_BOOT_FORTH):
174 $(INS.dir)