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>
14 # Copyright 2016 RackTop Systems.
17 include $(SRC
)/Makefile.master
18 include $(SRC
)/boot
/Makefile.version
20 CFLAGS
= -O2
-fno-reorder-functions
21 CPPFLAGS
= -D_STANDALONE
-nostdinc
-I..
/..
/..
/..
/include -I..
/..
/..
22 CPPFLAGS
+= -I
$(SRC
)/uts
/intel
/sys
/acpi
24 NEWVERSWHAT
= "ZFS enabled bootstrap loader" x86
26 # Set by loader Makefile
27 CPPFLAGS
+= -DLOADER_ZFS_SUPPORT
-I..
/..
/zfs
28 CPPFLAGS
+= -I..
/libi386
29 LIBZFSBOOT
= ..
/..
/zfs
/$(MACH
)/libzfsboot.a
30 LIBI386
= ..
/libi386
/libi386.a
32 # loader.help build needs better awk
33 AWK
= /usr
/xpg4
/bin
/awk
34 LD
= $(GNU_ROOT
)/bin
/gld
35 CC
= $(GNUC_ROOT
)/bin
/gcc
36 OBJCOPY
= $(GNU_ROOT
)/bin
/gobjcopy
37 GSTRIP
= $(GNU_ROOT
)/bin
/gstrip
38 ROOT_BOOT
= $(ROOT
)/boot
39 ROOT_BOOT_DEFAULTS
= $(ROOT
)/boot
/defaults
40 ROOT_BOOT_FORTH
= $(ROOT
)/boot
/forth
41 ROOT_BOOT_CONF
= $(ROOT
)/boot
/conf.d
42 ROOTBOOTFILES
=$(FILES
:%=$(ROOT_BOOT
)/%)
43 ROOTBOOTFORTH
=$(FORTH
:%=$(ROOT_BOOT_FORTH
)/%)
44 ROOTBOOTDEFAULTS
=$(DEFFILES
:%=$(ROOT_BOOT_DEFAULTS
)/%)
47 all: ${LOADER} loader.help
49 install: all $(ROOTBOOTLOADER
)
54 # architecture-specific loader code
55 SRCS
= main.c conf.c vers.c chain.c
57 CPPFLAGS
+= -DLOADER_GZIP_SUPPORT
60 CPPFLAGS
+= -DBOOT_FORTH
-I
$(SRC
)/common
/ficl
-I..
/..
/libficl
61 LIBFICL
= ..
/..
/libficl
/$(MACH
)/libficl.a
63 # Always add MI sources
64 SRCS
+= boot.c commands.c console.c devopen.c interp.c
65 SRCS
+= interp_backslash.c interp_parse.c ls.c misc.c
66 SRCS
+= module.c panic.c linenoise.c multiboot2.c
68 SRCS
+= load_elf32.c load_elf32_obj.c reloc_elf32.c
69 SRCS
+= load_elf64.c load_elf64_obj.c reloc_elf64.c
74 CPPFLAGS
+= -DLOADER_DISK_SUPPORT
76 CPPFLAGS
+= -DLOADER_GPT_SUPPORT
77 CPPFLAGS
+= -DLOADER_MBR_SUPPORT
85 SRCS
+= interp_forth.c
87 CPPFLAGS
+= -I..
/..
/common
90 CLEANFILES
= vers.c
${LOADER} ${LOADER}.sym
${LOADER}.bin loader.help
93 LDFLAGS
= -static
-Ttext
0x0
95 # i386 standalone support library
96 CPPFLAGS
+= -I..
-I..
/..
/..
/..
/lib
/libstand
97 LIBSTAND
= ..
/..
/libstand
/$(MACH
)/libstand.a
100 CPPFLAGS
+= -I..
/btx
/lib
106 include ..
/Makefile.inc
108 # For multiboot2.h, must be last, to avoid conflicts
109 CPPFLAGS
+= -I
$(SRC
)/uts
/common
111 vers.c
: ..
/..
/common
/newvers.sh
$(SRC
)/boot
/Makefile.version
112 $(SH
) ..
/..
/common
/newvers.sh
${LOADER_VERSION} ${NEWVERSWHAT}
114 ${LOADER}: ${LOADER}.bin
${BTXLDR} ${BTXKERN}
115 $(BTXLD
) -f aout
-e
${LOADER_ADDRESS} -o
$@
-l
${BTXLDR} \
116 -b
${BTXKERN} ${LOADER}.bin
118 ${LOADER}.bin
: ${LOADER}.sym
120 $(GSTRIP
) -R .comment
-R .note
$@
122 loader.help
: ..
/..
/common
/help.common help.i386
123 $(CAT
) $^ |
$(AWK
) -f ..
/..
/common
/merge_help.awk
> $@
125 FILES
= ${LOADER} loader.help
127 include ..
/..
/forth
/Makefile.inc
133 # XXX crt0.o needs to be first for pxeboot(8) to work
135 DPADD
= ${LIBFICL} ${LIBZFSBOOT} ${LIBI386} ${LIBSTAND}
136 LDADD
= ${LIBFICL} ${LIBZFSBOOT} ${LIBI386} ${LIBSTAND}
138 CLEANFILES
+= machine x86
142 $(SYMLINK
) ..
/..
/..
/i386
/include machine
146 $(SYMLINK
) ..
/..
/..
/x86
/include x86
148 OBJS
= $(SRCS
:%.c
=%.o
)
152 ${PROG}: ${OBJS} $(LDADD
)
153 $(LD
) $(LDFLAGS
) -o
$@
$(BTXCRT
) $(OBJS
) $(LDADD
)
157 $(RM
) $(CLEANFILES
) $(OBJS
)
159 install: all $(ROOT_BOOT_DEFAULTS
) $(ROOT_BOOT_FORTH
) \
160 $(ROOTBOOTFILES
) $(ROOTBOOTDEFAULTS
) $(ROOT_BOOT_CONF
) $(ROOTBOOTFORTH
)
162 %.o
: ..
/..
/common
/%.c
163 $(COMPILE.c
) -o
$@
$<
165 %.o
: ..
/..
/common
/linenoise
/%.c
166 $(COMPILE.c
) -o
$@
$<
168 $(ROOT_BOOT
)/%: ..
/..
/forth
/%
171 $(ROOT_BOOT_DEFAULTS
)/%: ..
/..
/forth
/%
174 $(ROOT_BOOT_FORTH
)/%: ..
/..
/forth
/%
177 $(ROOT_BOOT_DEFAULTS
) $(ROOT_BOOT_CONF
) $(ROOT_BOOT_FORTH
):