Makefile.mac68k revision 1.17 1 1.17 briggs # $NetBSD: Makefile.mac68k,v 1.17 1995/06/16 04:45:22 briggs Exp $
2 1.12 cgd
3 1.1 briggs # Makefile for NetBSD for the mac
4 1.1 briggs # Derived from makefile for hp300 from NetBSD
5 1.1 briggs #
6 1.1 briggs # This makefile is constructed from a machine description:
7 1.1 briggs # config machineid
8 1.1 briggs # Most changes should be made in the machine description
9 1.1 briggs # /sys/conf/``machineid''
10 1.1 briggs # after which you should do
11 1.1 briggs # config machineid
12 1.1 briggs # Machine generic makefile changes should be made in
13 1.1 briggs # /sys/conf/Makefile.``machinetype''
14 1.1 briggs # after which config should be rerun for all machines of that type.
15 1.1 briggs #
16 1.1 briggs # N.B.: NO DEPENDENCIES ON FOLLOWING FLAGS ARE VISIBLE TO MAKEFILE
17 1.1 briggs # IF YOU CHANGE THE DEFINITION OF ANY OF THESE RECOMPILE EVERYTHING
18 1.1 briggs #
19 1.1 briggs # -DTRACE compile in kernel tracing hooks
20 1.1 briggs # -DQUOTA compile in file system quotas
21 1.1 briggs
22 1.1 briggs
23 1.1 briggs # DEBUG is set to -g by config if debugging is requested (config -g).
24 1.1 briggs # PROF is set to -pg by config if profiling is requested (config -p).
25 1.8 briggs AS= /usr/bin/as ${DEBUG}
26 1.8 briggs CC= /usr/bin/cc ${DEBUG}
27 1.8 briggs LOCAL_CC=${CC}
28 1.1 briggs CPP= /usr/bin/cpp
29 1.8 briggs LD= /usr/bin/ld
30 1.1 briggs TOUCH= touch -f -c
31 1.1 briggs GPROF.EX=/usr/src/lib/libc/csu.mac68k/gmon.ex
32 1.1 briggs
33 1.1 briggs # source tree is located via $S relative to the compilation directory
34 1.1 briggs S= ../../../..
35 1.1 briggs MAC68K= ../..
36 1.17 briggs
37 1.17 briggs INCLUDES= -I. -I$S/arch -I$S -I$S/sys
38 1.17 briggs COPTS= ${INCLUDES} ${IDENT} -D_KERNEL -DREFBIT -Dmac68k
39 1.17 briggs CFLAGS= -O ${COPTS}
40 1.17 briggs
41 1.17 briggs ### Find out what to use for libkern.
42 1.1 briggs .include "$S/lib/libkern/Makefile.inc"
43 1.1 briggs .ifndef PROF
44 1.1 briggs LIBKERN=${KERNLIB}
45 1.1 briggs .else
46 1.1 briggs LIBKERN=${KERNLIB_PROF}
47 1.1 briggs .endif
48 1.1 briggs
49 1.9 briggs ### for the Motorola 68040 Floating Point Software Product
50 1.9 briggs .include "$S/arch/m68k/fpsp/Makefile.inc"
51 1.1 briggs
52 1.1 briggs # compile rules: rules are named ${TYPE}_${SUFFIX}${CONFIG_DEP}
53 1.1 briggs # where TYPE is NORMAL, DRIVER, or PROFILE}; SUFFIX is the file suffix,
54 1.1 briggs # capitalized (e.g. C for a .c file), and CONFIG_DEP is _C if the file
55 1.1 briggs # is marked as config-dependent.
56 1.1 briggs
57 1.1 briggs NORMAL_C= ${CC} -c ${CFLAGS} ${PROF} $<
58 1.1 briggs NORMAL_C_C= ${CC} -c ${CFLAGS} ${PROF} ${PARAM} $<
59 1.1 briggs
60 1.1 briggs DRIVER_C= ${CC} -c ${CFLAGS} ${PROF} $<
61 1.1 briggs DRIVER_C_C= ${CC} -c ${CFLAGS} ${PROF} ${PARAM} $<
62 1.1 briggs
63 1.1 briggs PROFILE_C= ${CC} -S -c ${COPTS} $<; \
64 1.1 briggs ex - $*.s < ${GPROF.EX}; \
65 1.1 briggs ${AS} -o $@ $*.s; \
66 1.1 briggs rm -f $*.s
67 1.1 briggs
68 1.1 briggs # This really bites for now, but we need to run assembly through sed
69 1.1 briggs # until the real problem (cpp, I think) is fixed.
70 1.1 briggs NORMAL_S= ${CPP} ${COPTS} $< | ${AS} -o $@
71 1.1 briggs NORMAL_S_C= ${CPP} ${COPTS} ${PARAM} $< | ${AS} -o $@
72 1.1 briggs
73 1.1 briggs %OBJS
74 1.1 briggs
75 1.1 briggs %CFILES
76 1.1 briggs
77 1.1 briggs # load lines for config "xxx" will be emitted as:
78 1.1 briggs # xxx: ${SYSTEM_DEP} swapxxx.o
79 1.1 briggs # ${SYSTEM_LD_HEAD}
80 1.1 briggs # ${SYSTEM_LD} swapxxx.o
81 1.1 briggs # ${SYSTEM_LD_TAIL}
82 1.10 briggs SYSTEM_OBJ= locore.o vnode_if.o ${OBJS} param.o ioconf.o conf.o \
83 1.10 briggs ${FPSP} ${LIBKERN}
84 1.1 briggs SYSTEM_DEP= Makefile ${SYSTEM_OBJ}
85 1.1 briggs SYSTEM_LD_HEAD= @echo loading $@; rm -f $@
86 1.1 briggs SYSTEM_LD= @strip=-x; [ X${DEBUG} = X-g ] && strip=-X || true; \
87 1.3 briggs ${LD} $$strip -n -T 0 -e start -o $@ \
88 1.1 briggs ${SYSTEM_OBJ} vers.o ${LIBKERN}
89 1.1 briggs #SYSTEM_LD_TAIL= @echo rearranging symbols;\
90 1.1 briggs # symorder symbols.sort $@;\
91 1.8 briggs SYSTEM_LD_TAIL= @chmod 755 $@; size $@; \
92 1.1 briggs [ X${DEBUG} = X-g ] && { \
93 1.1 briggs echo cp $@ $@.gdb; rm -f $@.gdb; cp $@ $@.gdb; \
94 1.1 briggs echo strip -d $@; strip -d $@; } || true
95 1.1 briggs
96 1.1 briggs %LOAD
97 1.1 briggs
98 1.1 briggs newvers:
99 1.1 briggs sh $S/conf/newvers.sh "${KERN_IDENT}" ${IDENT}
100 1.1 briggs ${CC} ${CFLAGS} -c vers.c
101 1.1 briggs
102 1.1 briggs clean:
103 1.1 briggs rm -f eddep *vmunix tags *.o locore.i [a-z]*.s \
104 1.1 briggs Errs errs linterrs makelinks
105 1.1 briggs
106 1.1 briggs lint: /tmp param.c
107 1.1 briggs @lint -hbxn -DGENERIC -Dvolatile= ${COPTS} ${PARAM} -UKGDB \
108 1.1 briggs ${MAC68K}/mac68k/Locore.c ${CFILES} \
109 1.1 briggs ioconf.c param.c| \
110 1.1 briggs grep -v 'struct/union .* never defined' | \
111 1.1 briggs grep -v 'possible pointer alignment problem'
112 1.1 briggs
113 1.1 briggs symbols.sort: ${MAC68K}/mac68k/symbols.raw
114 1.1 briggs grep -v '^#' ${MAC68K}/mac68k/symbols.raw \
115 1.1 briggs | sed 's/^ //' | sort -u > symbols.sort
116 1.1 briggs
117 1.13 briggs locore.o: assym.s ${MAC68K}/mac68k/vectors.s ${MAC68K}/mac68k/macglobals.s
118 1.13 briggs locore.o: ${MAC68K}/mac68k/locore.s
119 1.13 briggs locore.o: ${MAC68K}/include/trap.h ${MAC68K}/include/psl.h
120 1.13 briggs locore.o: ${MAC68K}/include/pte.h ${MAC68K}/include/cpu.h
121 1.1 briggs ${CPP} -DLOCORE ${COPTS} ${MAC68K}/mac68k/locore.s | ${AS} -o locore.o
122 1.1 briggs
123 1.1 briggs # the following is necessary because autoconf.o depends on #if GENERIC
124 1.1 briggs autoconf.o: Makefile
125 1.1 briggs
126 1.1 briggs # the following are necessary because the files depend on the types of
127 1.1 briggs # hp cpu's included in the system configuration
128 1.1 briggs clock.o machdep.o autoconf.o conf.o: Makefile
129 1.1 briggs
130 1.1 briggs # depend on network configuration
131 1.1 briggs af.o uipc_proto.o locore.o: Makefile
132 1.1 briggs
133 1.1 briggs # depend on maxusers
134 1.1 briggs assym.s: Makefile
135 1.1 briggs
136 1.1 briggs assym.s: genassym
137 1.1 briggs ./genassym >assym.s
138 1.1 briggs
139 1.16 briggs genassym: ${MAC68K}/mac68k/genassym.c
140 1.15 briggs ${LOCAL_CC} ${INCLUDES} ${IDENT} -D_KERNEL ${PARAM} -o genassym \
141 1.1 briggs ${MAC68K}/mac68k/genassym.c
142 1.1 briggs
143 1.8 briggs depend: assym.s param.c vnode_if.h
144 1.1 briggs mkdep ${COPTS} ${CFILES} ioconf.c param.c
145 1.1 briggs mkdep -a -p ${INCLUDES} ${IDENT} ${PARAM} ${MAC68K}/mac68k/genassym.c
146 1.1 briggs
147 1.1 briggs links:
148 1.1 briggs egrep '#if' ${CFILES} | sed -f $S/conf/defines | \
149 1.1 briggs sed -e 's/:.*//' -e 's/\.c/.o/' | sort -u > dontlink
150 1.1 briggs echo ${CFILES} | tr -s ' ' '\12' | sed 's/\.c/.o/' | \
151 1.1 briggs sort -u | comm -23 - dontlink | \
152 1.1 briggs sed 's,../.*/\(.*.o\),rm -f \1;ln -s ../GENERIC/\1 \1,' > makelinks
153 1.1 briggs sh makelinks && rm -f dontlink
154 1.1 briggs
155 1.1 briggs tags:
156 1.1 briggs @echo "see $S/kern/Makefile for tags"
157 1.1 briggs
158 1.1 briggs ioconf.o: ioconf.c
159 1.1 briggs ${CC} -c ${CFLAGS} ioconf.c
160 1.1 briggs
161 1.1 briggs conf.o: ${MAC68K}/mac68k/conf.c
162 1.1 briggs ${NORMAL_C}
163 1.1 briggs
164 1.1 briggs param.c: $S/conf/param.c
165 1.1 briggs rm -f param.c
166 1.1 briggs cp $S/conf/param.c .
167 1.1 briggs
168 1.1 briggs param.o: param.c Makefile
169 1.1 briggs ${CC} -c ${CFLAGS} ${PARAM} -DHZ=60 param.c
170 1.8 briggs
171 1.8 briggs vnode_if.c vnode_if.h: $S/kern/vnode_if.sh $S/kern/vnode_if.src
172 1.8 briggs AWK="${AWK}" sh $S/kern/vnode_if.sh $S/kern/vnode_if.src
173 1.1 briggs
174 1.1 briggs %RULES
175