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
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
19 CPPFLAGS
= -DSTAND
-nostdinc
-I..
/..
/..
/..
/include -I..
/..
/..
21 NEWVERSWHAT
= "ZFS enabled bootstrap loader" x86
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
)/%)
45 all: machine x86
${LOADER} loader.help
47 install: all $(ROOTBOOTLOADER
)
52 # architecture-specific loader code
53 SRCS
= main.c conf.c vers.c chain.c
55 CPPFLAGS
+= -DLOADER_TFTP_SUPPORT
-DLOADER_GZIP_SUPPORT
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
72 CPPFLAGS
+= -DLOADER_DISK_SUPPORT
74 CPPFLAGS
+= -DLOADER_GPT_SUPPORT
75 CPPFLAGS
+= -DLOADER_MBR_SUPPORT
83 SRCS
+= interp_forth.c
87 CPPFLAGS
+= -I..
/..
/common
90 CLEANFILES
= vers.c
${LOADER} ${LOADER}.sym
${LOADER}.bin loader.help
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
100 CPPFLAGS
+= -I..
/btx
/lib
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
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
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
140 $(SYMLINK
) ..
/..
/..
/i386
/include machine
144 $(SYMLINK
) ..
/..
/..
/x86
/include x86
146 OBJS
= $(SRCS
:%.c
=%.o
)
148 ${PROG}: ${OBJS} $(LDADD
)
149 $(LD
) $(LDFLAGS
) -o
$@
$(BTXCRT
) $(OBJS
) $(LDADD
)
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
/%
167 $(ROOT_BOOT_DEFAULTS
)/%: ..
/..
/forth
/%
170 $(ROOT_BOOT_FORTH
)/%: ..
/..
/forth
/%
173 $(ROOT_BOOT_DEFAULTS
) $(ROOT_BOOT_CONF
) $(ROOT_BOOT_FORTH
):