Blame


1 dcd4a9ec 2018-07-27 powerpc64 # $OpenBSD$
2 540e0ee2 2018-07-27 powerpc64
3 540e0ee2 2018-07-27 powerpc64 # For instructions on building kernels consult the config(8) and options(4)
4 540e0ee2 2018-07-27 powerpc64 # manual pages.
5 540e0ee2 2018-07-27 powerpc64 #
6 540e0ee2 2018-07-27 powerpc64 # N.B.: NO DEPENDENCIES ON FOLLOWING FLAGS ARE VISIBLE TO MAKEFILE
7 540e0ee2 2018-07-27 powerpc64 # IF YOU CHANGE THE DEFINITION OF ANY OF THESE RECOMPILE EVERYTHING
8 540e0ee2 2018-07-27 powerpc64 # DEBUG is set to -g by config if debugging is requested (config -g).
9 540e0ee2 2018-07-27 powerpc64 # PROF is set to -pg by config if profiling is requested (config -p).
10 540e0ee2 2018-07-27 powerpc64
11 540e0ee2 2018-07-27 powerpc64 .include <bsd.own.mk>
12 540e0ee2 2018-07-27 powerpc64
13 540e0ee2 2018-07-27 powerpc64 SIZE?= size
14 540e0ee2 2018-07-27 powerpc64 STRIP?= ctfstrip
15 540e0ee2 2018-07-27 powerpc64
16 540e0ee2 2018-07-27 powerpc64 # source tree is located via $S relative to the compilation directory
17 540e0ee2 2018-07-27 powerpc64 .ifndef S
18 540e0ee2 2018-07-27 powerpc64 S!= cd ../../../..; pwd
19 540e0ee2 2018-07-27 powerpc64 .endif
20 540e0ee2 2018-07-27 powerpc64
21 540e0ee2 2018-07-27 powerpc64 _machdir?= $S/arch/${_mach}
22 540e0ee2 2018-07-27 powerpc64 _archdir?= $S/arch/${_arch}
23 540e0ee2 2018-07-27 powerpc64
24 540e0ee2 2018-07-27 powerpc64 INCLUDES= -nostdinc -I$S -I${.OBJDIR} -I$S/arch
25 540e0ee2 2018-07-27 powerpc64 CPPFLAGS= ${INCLUDES} ${IDENT} ${PARAM} -D_KERNEL -D__${_mach}__ -MD -MP
26 540e0ee2 2018-07-27 powerpc64 CWARNFLAGS= -Werror -Wall -Wimplicit-function-declaration \
27 540e0ee2 2018-07-27 powerpc64 -Wno-main -Wno-uninitialized -Wno-pointer-sign \
28 540e0ee2 2018-07-27 powerpc64 -Wframe-larger-than=2047
29 540e0ee2 2018-07-27 powerpc64
30 540e0ee2 2018-07-27 powerpc64 CMACHFLAGS= -msoft-float -Wa,-many
31 540e0ee2 2018-07-27 powerpc64 CMACHFLAGS+= -fno-builtin-printf -fno-builtin-snprintf \
32 540e0ee2 2018-07-27 powerpc64 -fno-builtin-vsnprintf -fno-builtin-log \
33 540e0ee2 2018-07-27 powerpc64 -fno-builtin-log2 -fno-builtin-malloc ${NOPIE_FLAGS}
34 540e0ee2 2018-07-27 powerpc64 SORTR= sort -R
35 540e0ee2 2018-07-27 powerpc64 .if ${IDENT:M-DNO_PROPOLICE}
36 540e0ee2 2018-07-27 powerpc64 CMACHFLAGS+= -fno-stack-protector
37 540e0ee2 2018-07-27 powerpc64 .endif
38 540e0ee2 2018-07-27 powerpc64 .if ${IDENT:M-DSMALL_KERNEL}
39 540e0ee2 2018-07-27 powerpc64 SORTR= cat
40 540e0ee2 2018-07-27 powerpc64 .endif
41 540e0ee2 2018-07-27 powerpc64
42 540e0ee2 2018-07-27 powerpc64 DEBUG?= -g
43 540e0ee2 2018-07-27 powerpc64 COPTS?= -O2
44 540e0ee2 2018-07-27 powerpc64 CFLAGS= ${DEBUG} ${CWARNFLAGS} ${CMACHFLAGS} ${COPTS} ${PIPE}
45 540e0ee2 2018-07-27 powerpc64 AFLAGS= -D_LOCORE ${CMACHFLAGS}
46 540e0ee2 2018-07-27 powerpc64 LINKFLAGS= -N -Ttext 100114 -e start --warn-common -nopie
47 540e0ee2 2018-07-27 powerpc64
48 540e0ee2 2018-07-27 powerpc64 HOSTCC?= ${CC}
49 540e0ee2 2018-07-27 powerpc64 HOSTED_CPPFLAGS=${CPPFLAGS:S/^-nostdinc$//}
50 540e0ee2 2018-07-27 powerpc64 HOSTED_CFLAGS= ${CFLAGS}
51 540e0ee2 2018-07-27 powerpc64 HOSTED_C= ${HOSTCC} ${HOSTED_CFLAGS} ${HOSTED_CPPFLAGS} -c $<
52 540e0ee2 2018-07-27 powerpc64
53 540e0ee2 2018-07-27 powerpc64 NORMAL_C_NOP= ${CC} ${CFLAGS} ${CPPFLAGS} -c $<
54 540e0ee2 2018-07-27 powerpc64 NORMAL_C= ${CC} ${CFLAGS} ${CPPFLAGS} ${PROF} -c $<
55 540e0ee2 2018-07-27 powerpc64 NORMAL_S= ${CC} ${AFLAGS} ${CPPFLAGS} -c $<
56 540e0ee2 2018-07-27 powerpc64
57 540e0ee2 2018-07-27 powerpc64 %OBJS
58 540e0ee2 2018-07-27 powerpc64
59 540e0ee2 2018-07-27 powerpc64 %CFILES
60 540e0ee2 2018-07-27 powerpc64
61 540e0ee2 2018-07-27 powerpc64 %SFILES
62 540e0ee2 2018-07-27 powerpc64
63 540e0ee2 2018-07-27 powerpc64 # load lines for config "xxx" will be emitted as:
64 540e0ee2 2018-07-27 powerpc64 # xxx: ${SYSTEM_DEP} swapxxx.o
65 540e0ee2 2018-07-27 powerpc64 # ${SYSTEM_LD_HEAD}
66 540e0ee2 2018-07-27 powerpc64 # ${SYSTEM_LD} swapxxx.o
67 540e0ee2 2018-07-27 powerpc64 # ${SYSTEM_LD_TAIL}
68 540e0ee2 2018-07-27 powerpc64 SYSTEM_HEAD= locore0.o gap.o
69 540e0ee2 2018-07-27 powerpc64 SYSTEM_OBJ= ${SYSTEM_HEAD} ${OBJS} param.o ioconf.o
70 540e0ee2 2018-07-27 powerpc64 SYSTEM_DEP= Makefile ${SYSTEM_OBJ} ld.script
71 540e0ee2 2018-07-27 powerpc64 SYSTEM_LD_HEAD= @rm -f $@
72 540e0ee2 2018-07-27 powerpc64 SYSTEM_LD= @echo ${LD} ${LINKFLAGS} -o $@ '$${SYSTEM_HEAD} vers.o $${OBJS}'; \
73 540e0ee2 2018-07-27 powerpc64 umask 007; \
74 540e0ee2 2018-07-27 powerpc64 echo ${OBJS} param.o ioconf.o vers.o | tr " " "\n" | ${SORTR} > lorder; \
75 540e0ee2 2018-07-27 powerpc64 ${LD} ${LINKFLAGS} -o $@ ${SYSTEM_HEAD} `cat lorder`
76 540e0ee2 2018-07-27 powerpc64 SYSTEM_LD_TAIL= @${SIZE} $@
77 540e0ee2 2018-07-27 powerpc64
78 540e0ee2 2018-07-27 powerpc64 .if ${DEBUG} == "-g"
79 540e0ee2 2018-07-27 powerpc64 STRIPFLAGS= -S
80 540e0ee2 2018-07-27 powerpc64 SYSTEM_LD_TAIL+=; umask 007; \
81 540e0ee2 2018-07-27 powerpc64 echo mv $@ $@.gdb; rm -f $@.gdb; mv $@ $@.gdb; \
82 540e0ee2 2018-07-27 powerpc64 echo ${STRIP} ${STRIPFLAGS} -o $@ $@.gdb; \
83 540e0ee2 2018-07-27 powerpc64 ${STRIP} ${STRIPFLAGS} -o $@ $@.gdb
84 540e0ee2 2018-07-27 powerpc64 .else
85 540e0ee2 2018-07-27 powerpc64 LINKFLAGS+= -S
86 540e0ee2 2018-07-27 powerpc64 .endif
87 540e0ee2 2018-07-27 powerpc64
88 540e0ee2 2018-07-27 powerpc64 %LOAD
89 540e0ee2 2018-07-27 powerpc64
90 540e0ee2 2018-07-27 powerpc64 # cc's -MD puts the source and output paths in the dependency file;
91 540e0ee2 2018-07-27 powerpc64 # since those are temp files here we need to fix it up. It also
92 540e0ee2 2018-07-27 powerpc64 # puts the file in /tmp, so we use -MF to put it in the current
93 540e0ee2 2018-07-27 powerpc64 # directory as assym.P and then generate assym.d from it with a
94 540e0ee2 2018-07-27 powerpc64 # good target name
95 540e0ee2 2018-07-27 powerpc64 assym.h: $S/kern/genassym.sh Makefile \
96 540e0ee2 2018-07-27 powerpc64 ${_archdir}/${_arch}/genassym.cf ${_machdir}/${_mach}/genassym.cf
97 540e0ee2 2018-07-27 powerpc64 cat ${_archdir}/${_arch}/genassym.cf ${_machdir}/${_mach}/genassym.cf | \
98 540e0ee2 2018-07-27 powerpc64 sh $S/kern/genassym.sh ${CC} ${CFLAGS} ${CPPFLAGS} -MF assym.P > assym.h.tmp
99 540e0ee2 2018-07-27 powerpc64 sed '1s/.*/assym.h: \\/' assym.P > assym.d
100 540e0ee2 2018-07-27 powerpc64 sort -u assym.h.tmp > assym.h
101 540e0ee2 2018-07-27 powerpc64
102 540e0ee2 2018-07-27 powerpc64 param.c: $S/conf/param.c
103 540e0ee2 2018-07-27 powerpc64 rm -f param.c
104 540e0ee2 2018-07-27 powerpc64 cp $S/conf/param.c .
105 540e0ee2 2018-07-27 powerpc64
106 540e0ee2 2018-07-27 powerpc64 param.o: param.c Makefile
107 540e0ee2 2018-07-27 powerpc64 ${NORMAL_C}
108 540e0ee2 2018-07-27 powerpc64
109 540e0ee2 2018-07-27 powerpc64 mcount.o: $S/lib/libkern/mcount.c Makefile
110 540e0ee2 2018-07-27 powerpc64 ${NORMAL_C_NOP}
111 540e0ee2 2018-07-27 powerpc64
112 540e0ee2 2018-07-27 powerpc64 ioconf.o: ioconf.c
113 540e0ee2 2018-07-27 powerpc64 ${NORMAL_C}
114 540e0ee2 2018-07-27 powerpc64
115 540e0ee2 2018-07-27 powerpc64 ld.script: ${_machdir}/conf/ld.script
116 540e0ee2 2018-07-27 powerpc64 cp ${_machdir}/conf/ld.script $@
117 540e0ee2 2018-07-27 powerpc64
118 540e0ee2 2018-07-27 powerpc64 makegap.sh:
119 540e0ee2 2018-07-27 powerpc64 cp $S/conf/makegap.sh $@
120 540e0ee2 2018-07-27 powerpc64
121 540e0ee2 2018-07-27 powerpc64 MAKE_GAP = LD="${LD}" sh makegap.sh 0x00000000 # guaranteed illegal
122 540e0ee2 2018-07-27 powerpc64
123 540e0ee2 2018-07-27 powerpc64 gap.o: Makefile makegap.sh vers.o
124 540e0ee2 2018-07-27 powerpc64 ${MAKE_GAP}
125 540e0ee2 2018-07-27 powerpc64
126 540e0ee2 2018-07-27 powerpc64 vers.o: ${SYSTEM_DEP:Ngap.o}
127 540e0ee2 2018-07-27 powerpc64 sh $S/conf/newvers.sh
128 540e0ee2 2018-07-27 powerpc64 ${CC} ${CFLAGS} ${CPPFLAGS} ${PROF} -c vers.c
129 540e0ee2 2018-07-27 powerpc64
130 540e0ee2 2018-07-27 powerpc64 clean:
131 540e0ee2 2018-07-27 powerpc64 rm -f *bsd *bsd.gdb *.[dio] [a-z]*.s assym.* \
132 540e0ee2 2018-07-27 powerpc64 gap.link ld.script lorder makegap.sh param.c
133 540e0ee2 2018-07-27 powerpc64
134 540e0ee2 2018-07-27 powerpc64 cleandir: clean
135 540e0ee2 2018-07-27 powerpc64 rm -f Makefile *.h ioconf.c options machine ${_mach} vers.c
136 540e0ee2 2018-07-27 powerpc64
137 540e0ee2 2018-07-27 powerpc64 depend obj:
138 540e0ee2 2018-07-27 powerpc64
139 540e0ee2 2018-07-27 powerpc64 locore0.o: ${_machdir}/${_mach}/locore0.S assym.h
140 540e0ee2 2018-07-27 powerpc64 locore.o: ${_machdir}/${_mach}/locore.S assym.h
141 540e0ee2 2018-07-27 powerpc64 mutex.o: assym.h
142 540e0ee2 2018-07-27 powerpc64
143 540e0ee2 2018-07-27 powerpc64 hardlink-obsd:
144 540e0ee2 2018-07-27 powerpc64 [[ ! -f /bsd ]] || cmp -s bsd /bsd || ln -f /bsd /obsd
145 540e0ee2 2018-07-27 powerpc64
146 540e0ee2 2018-07-27 powerpc64 newinstall:
147 540e0ee2 2018-07-27 powerpc64 umask 077 && cp bsd /nbsd && mv /nbsd /bsd && \
148 540e0ee2 2018-07-27 powerpc64 sha256 -h /var/db/kernel.SHA256 /bsd
149 540e0ee2 2018-07-27 powerpc64
150 540e0ee2 2018-07-27 powerpc64 install: update-link hardlink-obsd newinstall
151 540e0ee2 2018-07-27 powerpc64
152 540e0ee2 2018-07-27 powerpc64 # pull in the dependency information
153 540e0ee2 2018-07-27 powerpc64 .ifnmake clean
154 540e0ee2 2018-07-27 powerpc64 . for o in ${SYSTEM_OBJ:Ngap.o} assym.h
155 540e0ee2 2018-07-27 powerpc64 . if exists(${o:R}.d)
156 540e0ee2 2018-07-27 powerpc64 . include "${o:R}.d"
157 540e0ee2 2018-07-27 powerpc64 . elif exists($o)
158 540e0ee2 2018-07-27 powerpc64 .PHONY: $o
159 540e0ee2 2018-07-27 powerpc64 . endif
160 540e0ee2 2018-07-27 powerpc64 . endfor
161 540e0ee2 2018-07-27 powerpc64 .endif
162 540e0ee2 2018-07-27 powerpc64
163 540e0ee2 2018-07-27 powerpc64 %RULES