| @@ -1,159 +1,159 @@ | | | @@ -1,159 +1,159 @@ |
1 | # $NetBSD: Makefile.boot,v 1.68 2016/01/23 21:22:47 christos Exp $ | | 1 | # $NetBSD: Makefile.boot,v 1.69 2016/01/23 22:29:29 christos Exp $ |
2 | | | 2 | |
3 | S= ${.CURDIR}/../../../../.. | | 3 | S= ${.CURDIR}/../../../../.. |
4 | | | 4 | |
5 | NOMAN= | | 5 | NOMAN= |
6 | PROG?= boot | | 6 | PROG?= boot |
7 | NEWVERSWHAT?= "BIOS Boot" | | 7 | NEWVERSWHAT?= "BIOS Boot" |
8 | VERSIONFILE?= ${.CURDIR}/../version | | 8 | VERSIONFILE?= ${.CURDIR}/../version |
9 | | | 9 | |
10 | AFLAGS.biosboot.S= ${${ACTIVE_CC} == "clang":?-no-integrated-as:} | | 10 | AFLAGS.biosboot.S= ${${ACTIVE_CC} == "clang":?-no-integrated-as:} |
11 | | | 11 | |
12 | SOURCES?= biosboot.S boot2.c conf.c devopen.c exec.c | | 12 | SOURCES?= biosboot.S boot2.c conf.c devopen.c exec.c |
13 | SRCS= ${SOURCES} | | 13 | SRCS= ${SOURCES} |
14 | .if !make(depend) | | 14 | .if !make(depend) |
15 | SRCS+= vers.c | | 15 | SRCS+= vers.c |
16 | .endif | | 16 | .endif |
17 | | | 17 | |
18 | PIE_CFLAGS= | | 18 | PIE_CFLAGS= |
19 | PIE_AFLAGS= | | 19 | PIE_AFLAGS= |
20 | PIE_LDFLAGS= | | 20 | PIE_LDFLAGS= |
21 | | | 21 | |
22 | .include <bsd.own.mk> | | 22 | .include <bsd.own.mk> |
23 | | | 23 | |
24 | STRIPFLAG= # nothing | | 24 | STRIPFLAG= # nothing |
25 | | | 25 | |
26 | LIBCRT0= # nothing | | 26 | LIBCRT0= # nothing |
27 | LIBCRTI= # nothing | | 27 | LIBCRTI= # nothing |
28 | LIBCRTBEGIN= # nothing | | 28 | LIBCRTBEGIN= # nothing |
29 | LIBCRTEND= # nothing | | 29 | LIBCRTEND= # nothing |
30 | LIBC= # nothing | | 30 | LIBC= # nothing |
31 | | | 31 | |
32 | BINDIR=/usr/mdec | | 32 | BINDIR=/usr/mdec |
33 | BINMODE=444 | | 33 | BINMODE=444 |
34 | | | 34 | |
35 | .PATH: ${.CURDIR}/.. ${.CURDIR}/../../lib | | 35 | .PATH: ${.CURDIR}/.. ${.CURDIR}/../../lib |
36 | | | 36 | |
37 | LDFLAGS+= -nostdlib -Wl,-N -Wl,-e,boot_start | | 37 | LDFLAGS+= -nostdlib -Wl,-N -Wl,-e,boot_start |
38 | CPPFLAGS+= -I ${.CURDIR}/.. -I ${.CURDIR}/../../lib -I ${S}/lib/libsa | | 38 | CPPFLAGS+= -I ${.CURDIR}/.. -I ${.CURDIR}/../../lib -I ${S}/lib/libsa |
39 | CPPFLAGS+= -I ${.OBJDIR} -D_KERNTYPES | | 39 | CPPFLAGS+= -I ${.OBJDIR} |
40 | # Make sure we override any optimization options specified by the user | | 40 | # Make sure we override any optimization options specified by the user |
41 | COPTS= -Os | | 41 | COPTS= -Os |
42 | | | 42 | |
43 | .if ${MACHINE_ARCH} == "x86_64" | | 43 | .if ${MACHINE_ARCH} == "x86_64" |
44 | LDFLAGS+= -Wl,-m,elf_i386 | | 44 | LDFLAGS+= -Wl,-m,elf_i386 |
45 | AFLAGS+= -m32 | | 45 | AFLAGS+= -m32 |
46 | CPUFLAGS= -m32 | | 46 | CPUFLAGS= -m32 |
47 | LIBKERN_ARCH=i386 | | 47 | LIBKERN_ARCH=i386 |
48 | KERNMISCMAKEFLAGS="LIBKERN_ARCH=i386" | | 48 | KERNMISCMAKEFLAGS="LIBKERN_ARCH=i386" |
49 | .else | | 49 | .else |
50 | CPUFLAGS= -march=i386 -mtune=i386 | | 50 | CPUFLAGS= -march=i386 -mtune=i386 |
51 | .endif | | 51 | .endif |
52 | | | 52 | |
53 | CFLAGS+= -mno-sse -mno-sse2 -mno-sse3 | | 53 | CFLAGS+= -mno-sse -mno-sse2 -mno-sse3 |
54 | | | 54 | |
55 | COPTS+= -ffreestanding | | 55 | COPTS+= -ffreestanding |
56 | CFLAGS+= -Wall -Wmissing-prototypes -Wstrict-prototypes | | 56 | CFLAGS+= -Wall -Wmissing-prototypes -Wstrict-prototypes |
57 | CPPFLAGS+= -nostdinc -D_STANDALONE | | 57 | CPPFLAGS+= -nostdinc -D_STANDALONE |
58 | CPPFLAGS+= -I$S | | 58 | CPPFLAGS+= -I$S |
59 | | | 59 | |
60 | CPPFLAGS+= -DSUPPORT_PS2 | | 60 | CPPFLAGS+= -DSUPPORT_PS2 |
61 | CPPFLAGS+= -DDIRECT_SERIAL | | 61 | CPPFLAGS+= -DDIRECT_SERIAL |
62 | CPPFLAGS+= -DSUPPORT_SERIAL=boot_params.bp_consdev | | 62 | CPPFLAGS+= -DSUPPORT_SERIAL=boot_params.bp_consdev |
63 | | | 63 | |
64 | CPPFLAGS+= -DCONSPEED=boot_params.bp_conspeed | | 64 | CPPFLAGS+= -DCONSPEED=boot_params.bp_conspeed |
65 | CPPFLAGS+= -DCONSADDR=boot_params.bp_consaddr | | 65 | CPPFLAGS+= -DCONSADDR=boot_params.bp_consaddr |
66 | CPPFLAGS+= -DCONSOLE_KEYMAP=boot_params.bp_keymap | | 66 | CPPFLAGS+= -DCONSOLE_KEYMAP=boot_params.bp_keymap |
67 | | | 67 | |
68 | CPPFLAGS+= -DSUPPORT_CD9660 | | 68 | CPPFLAGS+= -DSUPPORT_CD9660 |
69 | CPPFLAGS+= -DSUPPORT_USTARFS | | 69 | CPPFLAGS+= -DSUPPORT_USTARFS |
70 | CPPFLAGS+= -DSUPPORT_DOSFS | | 70 | CPPFLAGS+= -DSUPPORT_DOSFS |
71 | CPPFLAGS+= -DSUPPORT_EXT2FS | | 71 | CPPFLAGS+= -DSUPPORT_EXT2FS |
72 | #CPPFLAGS+= -DSUPPORT_MINIXFS3 | | 72 | #CPPFLAGS+= -DSUPPORT_MINIXFS3 |
73 | CPPFLAGS+= -DPASS_BIOSGEOM | | 73 | CPPFLAGS+= -DPASS_BIOSGEOM |
74 | CPPFLAGS+= -DPASS_MEMMAP | | 74 | CPPFLAGS+= -DPASS_MEMMAP |
75 | #CPPFLAGS+= -DBOOTPASSWD | | 75 | #CPPFLAGS+= -DBOOTPASSWD |
76 | CPPFLAGS+= -DEPIA_HACK | | 76 | CPPFLAGS+= -DEPIA_HACK |
77 | #CPPFLAGS+= -DDEBUG_MEMSIZE | | 77 | #CPPFLAGS+= -DDEBUG_MEMSIZE |
78 | #CPPFLAGS+= -DBOOT_MSG_COM0 | | 78 | #CPPFLAGS+= -DBOOT_MSG_COM0 |
79 | CPPFLAGS+= -DLIBSA_ENABLE_LS_OP | | 79 | CPPFLAGS+= -DLIBSA_ENABLE_LS_OP |
80 | | | 80 | |
81 | # The biosboot code is linked to 'virtual' address of zero and is | | 81 | # The biosboot code is linked to 'virtual' address of zero and is |
82 | # loaded at physical address 0x10000. | | 82 | # loaded at physical address 0x10000. |
83 | # XXX The heap values should be determined from _end. | | 83 | # XXX The heap values should be determined from _end. |
84 | SAMISCCPPFLAGS+= -DHEAP_START=0x40000 -DHEAP_LIMIT=0x70000 | | 84 | SAMISCCPPFLAGS+= -DHEAP_START=0x40000 -DHEAP_LIMIT=0x70000 |
85 | SAMISCCPPFLAGS+= -DLIBSA_PRINTF_LONGLONG_SUPPORT | | 85 | SAMISCCPPFLAGS+= -DLIBSA_PRINTF_LONGLONG_SUPPORT |
86 | SAMISCMAKEFLAGS+= SA_USE_CREAD=yes # Read compressed kernels | | 86 | SAMISCMAKEFLAGS+= SA_USE_CREAD=yes # Read compressed kernels |
87 | SAMISCMAKEFLAGS+= SA_INCLUDE_NET=no # Netboot via TFTP, NFS | | 87 | SAMISCMAKEFLAGS+= SA_INCLUDE_NET=no # Netboot via TFTP, NFS |
88 | | | 88 | |
89 | CPPFLAGS+= -Wno-pointer-sign | | 89 | CPPFLAGS+= -Wno-pointer-sign |
90 | | | 90 | |
91 | # CPPFLAGS+= -DBOOTXX_RAID1_SUPPORT | | 91 | # CPPFLAGS+= -DBOOTXX_RAID1_SUPPORT |
92 | | | 92 | |
93 | I386_STAND_DIR?= $S/arch/i386/stand | | 93 | I386_STAND_DIR?= $S/arch/i386/stand |
94 | | | 94 | |
95 | ### find out what to use for libi386 | | 95 | ### find out what to use for libi386 |
96 | I386DIR= ${I386_STAND_DIR}/lib | | 96 | I386DIR= ${I386_STAND_DIR}/lib |
97 | .include "${I386DIR}/Makefile.inc" | | 97 | .include "${I386DIR}/Makefile.inc" |
98 | LIBI386= ${I386LIB} | | 98 | LIBI386= ${I386LIB} |
99 | | | 99 | |
100 | ### find out what to use for libsa | | 100 | ### find out what to use for libsa |
101 | SA_AS= library | | 101 | SA_AS= library |
102 | SAMISCMAKEFLAGS+="SA_USE_LOADFILE=yes" | | 102 | SAMISCMAKEFLAGS+="SA_USE_LOADFILE=yes" |
103 | SAMISCMAKEFLAGS+="SA_ENABLE_LS_OP=yes" | | 103 | SAMISCMAKEFLAGS+="SA_ENABLE_LS_OP=yes" |
104 | .include "${S}/lib/libsa/Makefile.inc" | | 104 | .include "${S}/lib/libsa/Makefile.inc" |
105 | LIBSA= ${SALIB} | | 105 | LIBSA= ${SALIB} |
106 | | | 106 | |
107 | ### find out what to use for libkern | | 107 | ### find out what to use for libkern |
108 | KERN_AS= library | | 108 | KERN_AS= library |
109 | .include "${S}/lib/libkern/Makefile.inc" | | 109 | .include "${S}/lib/libkern/Makefile.inc" |
110 | LIBKERN= ${KERNLIB} | | 110 | LIBKERN= ${KERNLIB} |
111 | | | 111 | |
112 | ### find out what to use for libz | | 112 | ### find out what to use for libz |
113 | Z_AS= library | | 113 | Z_AS= library |
114 | .include "${S}/lib/libz/Makefile.inc" | | 114 | .include "${S}/lib/libz/Makefile.inc" |
115 | LIBZ= ${ZLIB} | | 115 | LIBZ= ${ZLIB} |
116 | | | 116 | |
117 | LDSCRIPT ?= $S/arch/i386/conf/stand.ldscript | | 117 | LDSCRIPT ?= $S/arch/i386/conf/stand.ldscript |
118 | | | 118 | |
119 | cleandir distclean: .WAIT cleanlibdir | | 119 | cleandir distclean: .WAIT cleanlibdir |
120 | | | 120 | |
121 | cleanlibdir: | | 121 | cleanlibdir: |
122 | -rm -rf lib | | 122 | -rm -rf lib |
123 | | | 123 | |
124 | LIBLIST= ${LIBI386} ${LIBSA} ${LIBZ} ${LIBKERN} ${LIBI386} ${LIBSA} | | 124 | LIBLIST= ${LIBI386} ${LIBSA} ${LIBZ} ${LIBKERN} ${LIBI386} ${LIBSA} |
125 | # LIBLIST= ${LIBSA} ${LIBKERN} ${LIBI386} ${LIBSA} ${LIBZ} ${LIBKERN} | | 125 | # LIBLIST= ${LIBSA} ${LIBKERN} ${LIBI386} ${LIBSA} ${LIBZ} ${LIBKERN} |
126 | | | 126 | |
127 | CLEANFILES+= ${PROG}.tmp ${PROG}.map ${PROG}.sym vers.c | | 127 | CLEANFILES+= ${PROG}.tmp ${PROG}.map ${PROG}.sym vers.c |
128 | | | 128 | |
129 | vers.c: ${VERSIONFILE} ${SOURCES} ${LIBLIST} ${.CURDIR}/../Makefile.boot | | 129 | vers.c: ${VERSIONFILE} ${SOURCES} ${LIBLIST} ${.CURDIR}/../Makefile.boot |
130 | ${HOST_SH} ${S}/conf/newvers_stand.sh ${VERSIONFILE} x86 ${NEWVERSWHAT} | | 130 | ${HOST_SH} ${S}/conf/newvers_stand.sh ${VERSIONFILE} x86 ${NEWVERSWHAT} |
131 | | | 131 | |
132 | # Anything that calls 'real_to_prot' must have a %pc < 0x10000. | | 132 | # Anything that calls 'real_to_prot' must have a %pc < 0x10000. |
133 | # We link the program, find the callers (all in libi386), then | | 133 | # We link the program, find the callers (all in libi386), then |
134 | # explicitly pull in the required objects before any other library code. | | 134 | # explicitly pull in the required objects before any other library code. |
135 | ${PROG}: ${OBJS} ${LIBLIST} ${LDSCRIPT} ${.CURDIR}/../Makefile.boot | | 135 | ${PROG}: ${OBJS} ${LIBLIST} ${LDSCRIPT} ${.CURDIR}/../Makefile.boot |
136 | ${_MKTARGET_LINK} | | 136 | ${_MKTARGET_LINK} |
137 | bb="$$( ${CC} -o ${PROG}.sym ${LDFLAGS} -Wl,-Ttext,0 -Wl,-cref \ | | 137 | bb="$$( ${CC} -o ${PROG}.sym ${LDFLAGS} -Wl,-Ttext,0 -Wl,-cref \ |
138 | ${OBJS} ${LIBLIST} | ( \ | | 138 | ${OBJS} ${LIBLIST} | ( \ |
139 | while read symbol file; do \ | | 139 | while read symbol file; do \ |
140 | [ -z "$$file" ] && continue; \ | | 140 | [ -z "$$file" ] && continue; \ |
141 | [ "$$symbol" = real_to_prot ] && break; \ | | 141 | [ "$$symbol" = real_to_prot ] && break; \ |
142 | done; \ | | 142 | done; \ |
143 | while \ | | 143 | while \ |
144 | oifs="$$IFS"; \ | | 144 | oifs="$$IFS"; \ |
145 | IFS='()'; \ | | 145 | IFS='()'; \ |
146 | set -- $$file; \ | | 146 | set -- $$file; \ |
147 | IFS="$$oifs"; \ | | 147 | IFS="$$oifs"; \ |
148 | [ -n "$$2" ] && echo "${I386DST}/$$2"; \ | | 148 | [ -n "$$2" ] && echo "${I386DST}/$$2"; \ |
149 | read file rest && [ -z "$$rest" ]; \ | | 149 | read file rest && [ -z "$$rest" ]; \ |
150 | do :; \ | | 150 | do :; \ |
151 | done; \ | | 151 | done; \ |
152 | ) )"; \ | | 152 | ) )"; \ |
153 | ${CC} -o ${PROG}.sym ${LDFLAGS} -Wl,-Ttext,0 -T ${LDSCRIPT} \ | | 153 | ${CC} -o ${PROG}.sym ${LDFLAGS} -Wl,-Ttext,0 -T ${LDSCRIPT} \ |
154 | -Wl,-Map,${PROG}.map -Wl,-cref ${OBJS} $$bb ${LIBLIST} | | 154 | -Wl,-Map,${PROG}.map -Wl,-cref ${OBJS} $$bb ${LIBLIST} |
155 | ${OBJCOPY} -O binary ${PROG}.sym ${PROG} | | 155 | ${OBJCOPY} -O binary ${PROG}.sym ${PROG} |
156 | | | 156 | |
157 | .include <bsd.prog.mk> | | 157 | .include <bsd.prog.mk> |
158 | KLINK_MACHINE= i386 | | 158 | KLINK_MACHINE= i386 |
159 | .include <bsd.klinks.mk> | | 159 | .include <bsd.klinks.mk> |