Makefile.mvme68k revision 1.23 1 1.23 gwr # $NetBSD: Makefile.mvme68k,v 1.23 1997/03/17 22:16:03 gwr Exp $
2 1.1 chuck
3 1.1 chuck # Makefile for NetBSD
4 1.1 chuck #
5 1.1 chuck # This makefile is constructed from a machine description:
6 1.1 chuck # config machineid
7 1.1 chuck # Most changes should be made in the machine description
8 1.1 chuck # /sys/arch/mvme68k/conf/``machineid''
9 1.1 chuck # after which you should do
10 1.6 mycroft # config machineid
11 1.1 chuck # Machine generic makefile changes should be made in
12 1.1 chuck # /sys/arch/mvme68k/conf/Makefile.mvme68k
13 1.1 chuck # after which config should be rerun for all machines of that type.
14 1.1 chuck #
15 1.1 chuck # N.B.: NO DEPENDENCIES ON FOLLOWING FLAGS ARE VISIBLE TO MAKEFILE
16 1.1 chuck # IF YOU CHANGE THE DEFINITION OF ANY OF THESE RECOMPILE EVERYTHING
17 1.1 chuck #
18 1.1 chuck # -DTRACE compile in kernel tracing hooks
19 1.1 chuck # -DQUOTA compile in file system quotas
20 1.1 chuck
21 1.6 mycroft # DEBUG is set to -g if debugging.
22 1.6 mycroft # PROF is set to -pg if profiling.
23 1.1 chuck
24 1.23 gwr # Simplify cross-build...
25 1.23 gwr MACHINE_ARCH=m68k
26 1.23 gwr MACHINE=mvme68k
27 1.23 gwr
28 1.9 mycroft CC?= cc
29 1.9 mycroft LD?= ld
30 1.12 mycroft MKDEP?= mkdep
31 1.16 mycroft STRIP?= strip
32 1.17 jonathan COPTS?= -O2
33 1.1 chuck
34 1.1 chuck # source tree is located via $S relative to the compilation directory
35 1.15 mycroft .ifndef S
36 1.12 mycroft S!= cd ../../../..; pwd
37 1.15 mycroft .endif
38 1.12 mycroft MVME68K=$S/arch/mvme68k
39 1.1 chuck
40 1.23 gwr # Override CPP defaults entirely, so cross-compilation works.
41 1.23 gwr # Keep -nostdinc before all -I flags, similar for -undef ...
42 1.23 gwr INCLUDES= -nostdinc -I. -I$S/arch -I$S
43 1.23 gwr XDEFS= -undef -D__NetBSD__ -Dm68k -Dmc68000
44 1.23 gwr DEFINES= -D_KERNEL -Dmc68020 -Dmvme68k
45 1.23 gwr CPPFLAGS= ${INCLUDES} ${XDEFS} ${DEFINES} ${IDENT} ${PARAM}
46 1.12 mycroft CWARNFLAGS= -Werror
47 1.23 gwr CFLAGS= ${DEBUG} ${COPTS} -msoft-float ${CWARNFLAGS}
48 1.23 gwr APPFLAGS= -P -traditional ${CPPFLAGS} -D_LOCORE
49 1.23 gwr AFLAGS= -m68030
50 1.6 mycroft LINKFLAGS= -n -Ttext 8000 -e start
51 1.16 mycroft STRIPFLAGS= -d
52 1.16 mycroft
53 1.1 chuck ### find out what to use for libkern
54 1.1 chuck .include "$S/lib/libkern/Makefile.inc"
55 1.1 chuck .ifndef PROF
56 1.1 chuck LIBKERN= ${KERNLIB}
57 1.1 chuck .else
58 1.1 chuck LIBKERN= ${KERNLIB_PROF}
59 1.1 chuck .endif
60 1.1 chuck
61 1.1 chuck ### find out what to use for libcompat
62 1.1 chuck .include "$S/compat/common/Makefile.inc"
63 1.1 chuck .ifndef PROF
64 1.23 gwr LIBCOMPAT= ${COMPATLIB}
65 1.1 chuck .else
66 1.23 gwr LIBCOMPAT= ${COMPATLIB_PROF}
67 1.1 chuck .endif
68 1.1 chuck
69 1.1 chuck ### for the Motorola 68040 Floating Point Software Product
70 1.1 chuck .include "$S/arch/m68k/fpsp/Makefile.inc"
71 1.1 chuck
72 1.23 gwr # compile rules: rules are named NORMAL_${SUFFIX} where SUFFIX is
73 1.23 gwr # the file suffix, capitalized (e.g. C for a .c file).
74 1.1 chuck
75 1.6 mycroft NORMAL_C= ${CC} ${CFLAGS} ${CPPFLAGS} ${PROF} -c $<
76 1.1 chuck
77 1.23 gwr # Please do not assume the compiler does "-x ..." (gcc-only).
78 1.23 gwr # This needs an intermediate file. The original file is always
79 1.23 gwr # safe in some far away directory, so just use the base name.
80 1.23 gwr NORMAL_S= ${CPP} ${APPFLAGS} $< > $*.s ;\
81 1.23 gwr ${AS} ${AFLAGS} -o $@ $*.s ; rm $*.s
82 1.13 mycroft
83 1.1 chuck %OBJS
84 1.1 chuck
85 1.1 chuck %CFILES
86 1.1 chuck
87 1.6 mycroft %SFILES
88 1.6 mycroft
89 1.1 chuck # load lines for config "xxx" will be emitted as:
90 1.1 chuck # xxx: ${SYSTEM_DEP} swapxxx.o
91 1.1 chuck # ${SYSTEM_LD_HEAD}
92 1.1 chuck # ${SYSTEM_LD} swapxxx.o
93 1.1 chuck # ${SYSTEM_LD_TAIL}
94 1.6 mycroft SYSTEM_OBJ= locore.o ${FPSP} \
95 1.10 cgd param.o ioconf.o ${OBJS} ${LIBKERN} ${LIBCOMPAT}
96 1.6 mycroft SYSTEM_DEP= Makefile ${SYSTEM_OBJ}
97 1.6 mycroft SYSTEM_LD_HEAD= @rm -f $@
98 1.6 mycroft SYSTEM_LD= @echo ${LD} ${LINKFLAGS} -o $@ '$${SYSTEM_OBJ}' vers.o; \
99 1.6 mycroft ${LD} ${LINKFLAGS} -o $@ ${SYSTEM_OBJ} vers.o
100 1.6 mycroft SYSTEM_LD_TAIL= @size $@; chmod 755 $@
101 1.6 mycroft
102 1.1 chuck DEBUG?=
103 1.1 chuck .if ${DEBUG} == "-g"
104 1.6 mycroft LINKFLAGS+= -X
105 1.6 mycroft SYSTEM_LD_TAIL+=; \
106 1.6 mycroft echo cp $@ $@.gdb; rm -f $@.gdb; cp $@ $@.gdb; \
107 1.16 mycroft echo ${STRIP} ${STRIPFLAGS} $@; ${STRIP} ${STRIPFLAGS} $@
108 1.1 chuck .else
109 1.12 mycroft LINKFLAGS+= -S
110 1.1 chuck .endif
111 1.1 chuck
112 1.1 chuck %LOAD
113 1.1 chuck
114 1.22 mycroft assym.h: $S/kern/genassym.sh ${MVME68K}/mvme68k/genassym.cf
115 1.22 mycroft sh $S/kern/genassym.sh ${CC} ${CFLAGS} ${CPPFLAGS} ${PROF} \
116 1.22 mycroft < ${MVME68K}/mvme68k/genassym.cf > assym.h.tmp && \
117 1.22 mycroft mv -f assym.h.tmp assym.h
118 1.6 mycroft
119 1.6 mycroft param.c: $S/conf/param.c
120 1.6 mycroft rm -f param.c
121 1.6 mycroft cp $S/conf/param.c .
122 1.6 mycroft
123 1.6 mycroft param.o: param.c Makefile
124 1.14 mycroft ${NORMAL_C}
125 1.6 mycroft
126 1.6 mycroft ioconf.o: ioconf.c
127 1.6 mycroft ${NORMAL_C}
128 1.1 chuck
129 1.6 mycroft newvers: ${SYSTEM_DEP} ${SYSTEM_SWAP_DEP}
130 1.1 chuck sh $S/conf/newvers.sh
131 1.6 mycroft ${CC} ${CFLAGS} ${CPPFLAGS} ${PROF} -c vers.c
132 1.6 mycroft
133 1.1 chuck
134 1.20 chuck clean: cleankernel
135 1.20 chuck cleankernel:
136 1.10 cgd rm -f eddep *netbsd netbsd.gdb tags *.[io] [a-z]*.s \
137 1.22 mycroft [Ee]rrs linterrs makelinks assym.h.tmp assym.h
138 1.1 chuck
139 1.6 mycroft lint:
140 1.18 perry @lint -hbxncez -Dvolatile= ${CPPFLAGS} -UKGDB \
141 1.19 perry ${MVME68K}/mvme68k/Locore.c ${CFILES} \
142 1.1 chuck ioconf.c param.c | \
143 1.6 mycroft grep -v 'static function .* unused'
144 1.1 chuck
145 1.6 mycroft tags:
146 1.6 mycroft @echo "see $S/kern/Makefile for tags"
147 1.1 chuck
148 1.1 chuck links:
149 1.1 chuck egrep '#if' ${CFILES} | sed -f $S/conf/defines | \
150 1.1 chuck sed -e 's/:.*//' -e 's/\.c/.o/' | sort -u > dontlink
151 1.1 chuck echo ${CFILES} | tr -s ' ' '\12' | sed 's/\.c/.o/' | \
152 1.1 chuck sort -u | comm -23 - dontlink | \
153 1.6 mycroft sed 's,../.*/\(.*.o\),rm -f \1; ln -s ../GENERIC/\1 \1,' > makelinks
154 1.1 chuck sh makelinks && rm -f dontlink
155 1.1 chuck
156 1.6 mycroft SRCS= ${MVME68K}/mvme68k/locore.s \
157 1.10 cgd param.c ioconf.c ${CFILES} ${SFILES}
158 1.20 chuck depend: .depend
159 1.10 cgd .depend: ${SRCS} assym.h param.c
160 1.23 gwr ${MKDEP} ${CPPFLAGS} param.c ioconf.c ${CFILES}
161 1.23 gwr
162 1.23 gwr # XXX - see below
163 1.23 gwr # ${MKDEP} -a ${APPFLAGS} ${MVME68K}/mvme68k/locore.s
164 1.23 gwr # ${MKDEP} -a ${APPFLAGS} ${SFILES}
165 1.23 gwr #
166 1.23 gwr # For cross-compilation, the "gcc -M" mkdep script is convenient,
167 1.23 gwr # but that does not correctly make rules from *.s files. The
168 1.23 gwr # easiest work-around is to just list those dependencies here.
169 1.23 gwr locore.o: assym.h m68k/asm.h m68k/trap.h
170 1.23 gwr copy.o: assym.h m68k/asm.h $S/sys/errno.h
171 1.23 gwr bcopy.o: assym.h m68k/asm.h
172 1.23 gwr copypage.o: assym.h m68k/asm.h
173 1.6 mycroft
174 1.6 mycroft
175 1.6 mycroft # depend on root or device configuration
176 1.6 mycroft autoconf.o conf.o: Makefile
177 1.6 mycroft
178 1.6 mycroft # depend on network or filesystem configuration
179 1.6 mycroft uipc_proto.o vfs_conf.o: Makefile
180 1.1 chuck
181 1.6 mycroft # depend on maxusers
182 1.22 mycroft machdep.o: Makefile
183 1.1 chuck
184 1.6 mycroft # depend on CPU configuration
185 1.6 mycroft locore.o pmap.o sys_machdep.o trap.o: Makefile
186 1.1 chuck
187 1.1 chuck
188 1.6 mycroft locore.o: ${MVME68K}/mvme68k/locore.s assym.h
189 1.6 mycroft ${NORMAL_S}
190 1.1 chuck
191 1.1 chuck %RULES
192