1 #
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.
6 #
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.
10 #
11
12 #
13 # Copyright 2016 Toomas Soome <tsoome@me.com>
14 #
15
16 include $(SRC)/Makefile.master
17
18 CC= $(GCC_ROOT)/bin/gcc
19 LD= $(GNU_ROOT)/bin/gld
20 OBJCOPY= $(GNU_ROOT)/bin/gobjcopy
21 OBJDUMP= $(GNU_ROOT)/bin/gobjdump
22 OBJCOPY= /code/binutils-gdb/binutils/objcopy
23 OBJDUMP= /code/binutils-gdb/binutils/objdump
24
25 PROG= boot1.sym
26 MACHINE=$(MACH64)
27
28 # need to update this to trigger installboot updates.
29 BUILDDATE :sh = TZ=UTC date +%Y%m%dT%H%M%SZ
30 BOOT1_VERSION= 1.1:$(BUILDDATE)
31
32 # architecture-specific loader code
33 SRCS= boot1.c self_reloc.c start.S ufs_module.c zfs_module.c devopen.c
49
50 CPPFLAGS += -I./../../zfs/
51 CPPFLAGS += -I./../../../cddl/boot/zfs/
52 CPPFLAGS += -DEFI_ZFS_BOOT
53
54 # Always add MI sources and REGULAR efi loader bits
55 CPPFLAGS += -I./../../common
56
57 include ../Makefile.inc
58
59 FILES= boot1.efi
60 FILEMODE= 0555
61 ROOT_BOOT= $(ROOT)/boot
62 ROOTBOOTFILES=$(FILES:%=$(ROOT_BOOT)/%)
63
64 LDSCRIPT= ./../loader/arch/${MACHINE}/ldscript.${MACHINE}
65 LDFLAGS= -nostdlib --eh-frame-hdr -znocombreloc
66 LDFLAGS += -shared --hash-style=both --enable-new-dtags
67 LDFLAGS += -T${LDSCRIPT} -Bsymbolic
68
69 all: machine x86 boot1.efi
70 install: all $(ROOTBOOTFILES)
71
72 #
73 # Add libstand for the runtime functions used by the compiler - for example
74 # __aeabi_* (arm) or __divdi3 (i386).
75 # as well as required string and memory functions for all platforms.
76 #
77 LIBSTAND= ../../libstand/$(MACH64)/libstand.a
78 LIBZFSBOOT= ../../zfs/$(MACH64)/libzfsboot.a
79 DPADD= ${LIBSTAND} ${LIBZFSBOOT}
80 LDADD= -L../../zfs/$(MACH64) -lzfsboot -L../../libstand/$(MACH64) -lstand
81
82 DPADD += ${LDSCRIPT}
83
84 EFI_TARGET= pei-x86-64
85
86 boot1.efi: ${PROG}
87 if [ `${OBJDUMP} -t ${PROG} | fgrep '*UND*' | wc -l` != 0 ]; then \
88 ${OBJDUMP} -t ${PROG} | fgrep '*UND*'; \
89 exit 1; \
92 -j .dynamic -j .dynsym -j .rel.dyn \
93 -j .rela.dyn -j .reloc -j .eh_frame \
94 --output-target=${EFI_TARGET} --subsystem efi-app ${PROG} $@
95
96 boot1.o: ./../../common/ufsread.c
97
98 CLEANFILES= boot1.efi ${PROG}
99
100 ${PROG}: $(OBJS) $(DPADD)
101 $(LD) $(LDFLAGS) -o $@ $(OBJS) $(LDADD)
102
103 CLEANFILES += machine x86
104
105 machine:
106 $(RM) machine
107 $(SYMLINK) ./../../../${MACHINE}/include machine
108
109 x86:
110 $(RM) x86
111 $(SYMLINK) ./../../../x86/include x86
112
113 clean clobber:
114 $(RM) $(CLEANFILES) $(OBJS)
115
116 %.o: ../loader/arch/${MACHINE}/%.S
117 $(COMPILE.S) $<
118
119 %.o: ../loader/%.c
120 $(COMPILE.c) $<
121
122 %.o: ../../common/%.c
123 $(COMPILE.c) $<
124
125 $(ROOT_BOOT)/%: %
126 $(INS.file)
|
1 #
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.
6 #
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.
10 #
11
12 #
13 # Copyright 2016 Toomas Soome <tsoome@me.com>
14 # Copyright 2016 RackTop Systems.
15 #
16
17 include $(SRC)/Makefile.master
18
19 CC= $(GCC_ROOT)/bin/gcc
20 LD= $(GNU_ROOT)/bin/gld
21 OBJCOPY= $(GNU_ROOT)/bin/gobjcopy
22 OBJDUMP= $(GNU_ROOT)/bin/gobjdump
23 OBJCOPY= /code/binutils-gdb/binutils/objcopy
24 OBJDUMP= /code/binutils-gdb/binutils/objdump
25
26 PROG= boot1.sym
27 MACHINE=$(MACH64)
28
29 # need to update this to trigger installboot updates.
30 BUILDDATE :sh = TZ=UTC date +%Y%m%dT%H%M%SZ
31 BOOT1_VERSION= 1.1:$(BUILDDATE)
32
33 # architecture-specific loader code
34 SRCS= boot1.c self_reloc.c start.S ufs_module.c zfs_module.c devopen.c
50
51 CPPFLAGS += -I./../../zfs/
52 CPPFLAGS += -I./../../../cddl/boot/zfs/
53 CPPFLAGS += -DEFI_ZFS_BOOT
54
55 # Always add MI sources and REGULAR efi loader bits
56 CPPFLAGS += -I./../../common
57
58 include ../Makefile.inc
59
60 FILES= boot1.efi
61 FILEMODE= 0555
62 ROOT_BOOT= $(ROOT)/boot
63 ROOTBOOTFILES=$(FILES:%=$(ROOT_BOOT)/%)
64
65 LDSCRIPT= ./../loader/arch/${MACHINE}/ldscript.${MACHINE}
66 LDFLAGS= -nostdlib --eh-frame-hdr -znocombreloc
67 LDFLAGS += -shared --hash-style=both --enable-new-dtags
68 LDFLAGS += -T${LDSCRIPT} -Bsymbolic
69
70 all: boot1.efi
71
72 install: all $(ROOTBOOTFILES)
73
74 #
75 # Add libstand for the runtime functions used by the compiler - for example
76 # __aeabi_* (arm) or __divdi3 (i386).
77 # as well as required string and memory functions for all platforms.
78 #
79 LIBSTAND= ../../libstand/$(MACH64)/libstand.a
80 LIBZFSBOOT= ../../zfs/$(MACH64)/libzfsboot.a
81 DPADD= ${LIBSTAND} ${LIBZFSBOOT}
82 LDADD= -L../../zfs/$(MACH64) -lzfsboot -L../../libstand/$(MACH64) -lstand
83
84 DPADD += ${LDSCRIPT}
85
86 EFI_TARGET= pei-x86-64
87
88 boot1.efi: ${PROG}
89 if [ `${OBJDUMP} -t ${PROG} | fgrep '*UND*' | wc -l` != 0 ]; then \
90 ${OBJDUMP} -t ${PROG} | fgrep '*UND*'; \
91 exit 1; \
94 -j .dynamic -j .dynsym -j .rel.dyn \
95 -j .rela.dyn -j .reloc -j .eh_frame \
96 --output-target=${EFI_TARGET} --subsystem efi-app ${PROG} $@
97
98 boot1.o: ./../../common/ufsread.c
99
100 CLEANFILES= boot1.efi ${PROG}
101
102 ${PROG}: $(OBJS) $(DPADD)
103 $(LD) $(LDFLAGS) -o $@ $(OBJS) $(LDADD)
104
105 CLEANFILES += machine x86
106
107 machine:
108 $(RM) machine
109 $(SYMLINK) ./../../../${MACHINE}/include machine
110
111 x86:
112 $(RM) x86
113 $(SYMLINK) ./../../../x86/include x86
114
115 $(OBJS): machine x86
116
117 clean clobber:
118 $(RM) $(CLEANFILES) $(OBJS)
119
120 %.o: ../loader/arch/${MACHINE}/%.S
121 $(COMPILE.S) $<
122
123 %.o: ../loader/%.c
124 $(COMPILE.c) $<
125
126 %.o: ../../common/%.c
127 $(COMPILE.c) $<
128
129 $(ROOT_BOOT)/%: %
130 $(INS.file)
|