Makefile revision 1.36
1#	$OpenBSD: Makefile,v 1.36 1998/05/18 17:37:04 mickey Exp $
2
3#
4# For more information on building in tricky environments, please see
5# the list of possible environment variables described in
6# /usr/share/mk/bsd.README.
7# 
8# Building recommendations:
9# 
10# 1) If at all possible, put this source tree in /usr/src.  If /usr/src
11# must be a symbolic link, setenv BSDSRCDIR to point to the real location.
12#
13# 2) It is also recommended that you compile with objects outside the
14# source tree. To do this, ensure /usr/obj exists or points to some
15# area of disk of sufficient size.  Then do "cd /usr/src; make obj".
16# This will make a symbolic link called "obj" in each directory, as
17# well as populate the /usr/obj properly with directories for the
18# objects.
19#
20# 3) If you are reasonably sure that things will compile OK, use the
21# "make build" target supplied here. Good luck.
22
23.include <bsd.own.mk>	# for NOMAN, if it's there.
24
25SUBDIR+= lib include bin libexec sbin usr.bin usr.sbin share games
26SUBDIR+= gnu
27
28SUBDIR+= sys lkm
29
30.if (${KERBEROS} == "yes")
31SUBDIR+= kerberosIV
32.endif
33
34.if   make(clean) || make(cleandir) || make(obj)
35SUBDIR+= distrib
36.endif
37
38.if exists(regress)
39.ifmake !(install)
40SUBDIR+= regress
41.endif
42
43regression-tests:
44	@echo Running regression tests...
45	@(cd ${.CURDIR}/regress && ${MAKE} regress)
46.endif
47
48includes:
49	(cd ${.CURDIR}/include; ${MAKE} includes)	
50
51beforeinstall:
52.ifndef DESTDIR
53	(cd ${.CURDIR}/etc && ${MAKE} DESTDIR=/ distrib-dirs)
54.else
55	(cd ${.CURDIR}/etc && ${MAKE} distrib-dirs)
56.endif
57	(cd ${.CURDIR}/include; ${MAKE} includes)
58
59afterinstall:
60.ifndef NOMAN
61	(cd ${.CURDIR}/share/man && ${MAKE} makedb)
62.endif
63
64build:
65.ifdef GLOBAL_AUTOCONF_CACHE
66	rm -f ${GLOBAL_AUTOCONF_CACHE}
67.endif
68	(cd ${.CURDIR}/share/mk && ${MAKE} install)
69	(cd ${.CURDIR}/include; ${MAKE} includes)
70	${MAKE} cleandir
71	(cd ${.CURDIR}/lib && ${MAKE} depend && ${MAKE} && ${MAKE} install)
72	(cd ${.CURDIR}/gnu/lib && ${MAKE} depend && ${MAKE} && ${MAKE} install)
73.if (${MACHINE_ARCH} == "mips")
74	ldconfig
75.endif
76.if (${KERBEROS} == "yes")
77	(cd ${.CURDIR}/kerberosIV && ${MAKE} build)
78.endif
79.if (${MACHINE_ARCH} == "mips")
80	ldconfig
81.endif
82	${MAKE} depend && ${MAKE} && ${MAKE} install
83
84.if !defined(TARGET)
85cross-tools:
86	echo "TARGET must be set"; exit 1
87.else
88cross-tools:	cross-helpers cross-includes cross-binutils cross-gcc cross-lib
89
90CROSSDIR=	${DESTDIR}/usr/cross/${TARGET}
91CROSSENV=	AR=${CROSSDIR}/usr/bin/ar AS=${CROSSDIR}/usr/bin/as \
92		CC=${CROSSDIR}/usr/bin/cc CPP=${CROSSDIR}/usr/bin/cpp \
93		LD=${CROSSDIR}/usr/bin/ld NM=${CROSSDIR}/usr/bin/nm \
94		RANLIB=${CROSSDIR}/usr/bin/ranlib \
95		SIZE=${CROSSDIR}/usr/bin/size STRIP=${CROSSDIR}/usr/bin/strip \
96		HOSTCC=cc
97
98cross-helpers:
99	-mkdir -p ${CROSSDIR}/usr/include
100	echo _MACHINE_ARCH | \
101	    cat ${.CURDIR}/sys/arch/${TARGET}/include/param.h - | \
102	    ${CPP} -E -I${.CURDIR}/sys/arch | \
103	    sed -n '$$p' >${CROSSDIR}/TARGET_ARCH
104	eval `grep '^osr=' sys/conf/newvers.sh`; \
105	   sed "s/\$$/-unknown-openbsd$$osr/" ${CROSSDIR}/TARGET_ARCH > \
106	   ${CROSSDIR}/TARGET_CANON
107
108cross-includes:
109	-mkdir -p ${CROSSDIR}/usr/`cat ${CROSSDIR}/TARGET_CANON`/include
110	${MAKE} MACHINE=${TARGET} MACHINE_ARCH=`cat ${CROSSDIR}/TARGET_ARCH` \
111	    DESTDIR=${CROSSDIR} includes
112	ln -sf ${CROSSDIR}/usr/include \
113	    ${CROSSDIR}/usr/`cat ${CROSSDIR}/TARGET_CANON`/include
114
115.if ${TARGET} == "powerpc" || ${TARGET} == "alpha" || ${TARGET} == "arc" || \
116    ${TARGET} == "pmax" || ${TARGET} == "wgrisc" || ${TARGET} == "hppa"
117cross-binutils: cross-binutils-new
118.else
119cross-binutils: cross-binutils-old
120.endif
121
122cross-binutils-new:
123	-mkdir -p ${CROSSDIR}/usr/obj
124	-mkdir -p ${CROSSDIR}/usr/bin
125	export BSDSRCDIR=`pwd`; \
126	    (cd ${.CURDIR}/gnu/usr.bin/binutils; \
127	    BSDOBJDIR=${CROSSDIR}/usr/obj \
128	    MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
129	    ${MAKE} -f Makefile.bsd-wrapper obj); \
130	    (cd ${CROSSDIR}/usr/obj/gnu/usr.bin/binutils; \
131	    /bin/sh ${BSDSRCDIR}/gnu/usr.bin/binutils/configure \
132	    --prefix ${CROSSDIR}/usr \
133	    --target `cat ${CROSSDIR}/TARGET_CANON` && \
134	    ${MAKE} && ${MAKE} install)
135	${INSTALL} -c -o ${BINOWN} -g ${BINGRP} -m 755 \
136	    ${.CURDIR}/usr.bin/lorder/lorder.sh.gnm \
137	    ${CROSSDIR}/usr/bin/`cat ${CROSSDIR}/TARGET_CANON`-lorder
138	ln -sf ${CROSSDIR}/usr/bin/`cat ${CROSSDIR}/TARGET_CANON`-as \
139	    ${CROSSDIR}/usr/bin/as
140	ln -sf ${CROSSDIR}/usr/bin/`cat ${CROSSDIR}/TARGET_CANON`-ar \
141	    ${CROSSDIR}/usr/bin/ar
142	ln -sf ${CROSSDIR}/usr/bin/`cat ${CROSSDIR}/TARGET_CANON`-ld \
143	    ${CROSSDIR}/usr/bin/ld
144	ln -sf ${CROSSDIR}/usr/bin/`cat ${CROSSDIR}/TARGET_CANON`-strip \
145	    ${CROSSDIR}/usr/bin/strip
146	ln -sf ${CROSSDIR}/usr/bin/`cat ${CROSSDIR}/TARGET_CANON`-size \
147	    ${CROSSDIR}/usr/bin/size
148	ln -sf ${CROSSDIR}/usr/bin/`cat ${CROSSDIR}/TARGET_CANON`-ranlib \
149	    ${CROSSDIR}/usr/bin/ranlib
150	ln -sf ${CROSSDIR}/usr/bin/`cat ${CROSSDIR}/TARGET_CANON`-nm \
151	    ${CROSSDIR}/usr/bin/nm
152	ln -sf ${CROSSDIR}/usr/bin/`cat ${CROSSDIR}/TARGET_CANON`-lorder \
153	    ${CROSSDIR}/usr/bin/lorder
154
155cross-binutils-old: cross-gas cross-ar cross-ld cross-strip cross-size \
156	cross-ranlib cross-nm
157
158cross-gas:
159	-mkdir -p ${CROSSDIR}/usr/obj
160	-mkdir -p ${CROSSDIR}/usr/bin
161	-mkdir -p ${CROSSDIR}/usr/`cat ${CROSSDIR}/TARGET_CANON`/bin
162	(cd ${.CURDIR}/gnu/usr.bin/gas; \
163	    BSDOBJDIR=${CROSSDIR}/usr/obj \
164	    BSDSRCDIR=${.CURDIR} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
165	    ${MAKE} obj; \
166	    TARGET_MACHINE_ARCH=${TARGET} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
167	    ${MAKE}; \
168	    TARGET_MACHINE_ARCH=${TARGET} \
169	    DESTDIR=${CROSSDIR} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
170	    ${MAKE} NOMAN= install)
171	ln -sf ${CROSSDIR}/usr/bin/as \
172	    ${CROSSDIR}/usr/`cat ${CROSSDIR}/TARGET_CANON`/bin/as
173
174cross-ld:
175	-mkdir -p ${CROSSDIR}/usr/obj
176	-mkdir -p ${CROSSDIR}/usr/bin
177	(cd ${.CURDIR}/gnu/usr.bin/ld; \
178	    BSDOBJDIR=${CROSSDIR}/usr/obj \
179	    BSDSRCDIR=${.CURDIR} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
180	    ${MAKE} obj; \
181	    TARGET_MACHINE_ARCH=${TARGET} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
182	    ${MAKE} NOMAN=; \
183	    TARGET_MACHINE_ARCH=${TARGET} \
184	    DESTDIR=${CROSSDIR} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
185	    ${MAKE} NOMAN= install)
186	ln -sf ${CROSSDIR}/usr/bin/ld \
187	    ${CROSSDIR}/usr/`cat ${CROSSDIR}/TARGET_CANON`/bin/ld
188
189cross-ar:
190	-mkdir -p ${CROSSDIR}/usr/obj
191	-mkdir -p ${CROSSDIR}/usr/bin
192	(cd ${.CURDIR}/usr.bin/ar; \
193	    BSDOBJDIR=${CROSSDIR}/usr/obj \
194	    BSDSRCDIR=${.CURDIR} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
195	    ${MAKE} obj; \
196	    MAKEOBJDIR=obj.${MACHINE}.${TARGET} ${MAKE} NOMAN=; \
197	    DESTDIR=${CROSSDIR} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
198	    ${MAKE} NOMAN= install)
199	ln -sf ${CROSSDIR}/usr/bin/ar \
200	    ${CROSSDIR}/usr/`cat ${CROSSDIR}/TARGET_CANON`/bin/ar
201
202cross-ranlib:
203	-mkdir -p ${CROSSDIR}/usr/obj
204	-mkdir -p ${CROSSDIR}/usr/bin
205	(cd ${.CURDIR}/usr.bin/ranlib; \
206	    BSDOBJDIR=${CROSSDIR}/usr/obj \
207	    BSDSRCDIR=${.CURDIR} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
208	    ${MAKE} obj; \
209	    MAKEOBJDIR=obj.${MACHINE}.${TARGET} ${MAKE} NOMAN=; \
210	    DESTDIR=${CROSSDIR} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
211	    ${MAKE} NOMAN= install)
212	ln -sf ${CROSSDIR}/usr/bin/ranlib \
213	    ${CROSSDIR}/usr/`cat ${CROSSDIR}/TARGET_CANON`/bin/ranlib
214
215cross-strip:
216	-mkdir -p ${CROSSDIR}/usr/obj
217	-mkdir -p ${CROSSDIR}/usr/bin
218	(cd ${.CURDIR}/usr.bin/strip; \
219	    BSDOBJDIR=${CROSSDIR}/usr/obj \
220	    BSDSRCDIR=${.CURDIR} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
221	    ${MAKE} obj; \
222	    MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
223	    ${MAKE} TARGET_MACHINE_ARCH=${TARGET} NOMAN=; \
224	    DESTDIR=${CROSSDIR} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
225	    ${MAKE} TARGET_MACHINE_ARCH=${TARGET} NOMAN= install)
226	ln -sf ${CROSSDIR}/usr/bin/strip \
227	    ${CROSSDIR}/usr/`cat ${CROSSDIR}/TARGET_CANON`/bin/strip
228
229cross-size:
230	-mkdir -p ${CROSSDIR}/usr/obj
231	-mkdir -p ${CROSSDIR}/usr/bin
232	(cd ${.CURDIR}/usr.bin/size; \
233	    BSDOBJDIR=${CROSSDIR}/usr/obj \
234	    BSDSRCDIR=${.CURDIR} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
235	    ${MAKE} obj; \
236	    MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
237	    ${MAKE} TARGET_MACHINE_ARCH=${TARGET} NOMAN=; \
238	    DESTDIR=${CROSSDIR} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
239	    ${MAKE} NOMAN= install)
240	ln -sf ${CROSSDIR}/usr/bin/size \
241	    ${CROSSDIR}/usr/`cat ${CROSSDIR}/TARGET_CANON`/bin/size
242
243cross-nm:
244	-mkdir -p ${CROSSDIR}/usr/obj
245	-mkdir -p ${CROSSDIR}/usr/bin
246	(cd ${.CURDIR}/usr.bin/nm; \
247	    BSDOBJDIR=${CROSSDIR}/usr/obj \
248	    BSDSRCDIR=${.CURDIR} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
249	    ${MAKE} obj; \
250	    MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
251	    ${MAKE} TARGET_MACHINE_ARCH=${TARGET} NOMAN=; \
252	    DESTDIR=${CROSSDIR} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
253	    ${MAKE} NOMAN= install)
254	ln -sf ${CROSSDIR}/usr/bin/nm \
255	    ${CROSSDIR}/usr/`cat ${CROSSDIR}/TARGET_CANON`/bin/nm
256
257cross-gcc:
258	-mkdir -p ${CROSSDIR}/usr/obj
259	-mkdir -p ${CROSSDIR}/usr/bin
260	cd ${.CURDIR}/gnu/usr.bin/gcc; \
261	    BSDOBJDIR=${CROSSDIR}/usr/obj BSDSRCDIR=${.CURDIR} \
262	    MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
263	    ${MAKE} -f Makefile.bsd-wrapper obj
264	(cd ${CROSSDIR}/usr/obj/gnu/usr.bin/gcc; \
265	    /bin/sh ${.CURDIR}/gnu/usr.bin/gcc/configure \
266	    --prefix ${CROSSDIR}/usr \
267	    --target `cat ${CROSSDIR}/TARGET_CANON` && \
268	    ${MAKE} BISON=yacc LANGUAGES=c LDFLAGS=${LDSTATIC} \
269	    build_infodir=. \
270	    GCC_FOR_TARGET="./xgcc -B./ -I${CROSSDIR}/usr/include" && \
271	    ${MAKE} BISON=yacc LANGUAGES=c LDFLAGS=${LDSTATIC} \
272	    GCC_FOR_TARGET="./xgcc -B./ -I${CROSSDIR}/usr/include" \
273	    build_infodir=. INSTALL_MAN= INSTALL_HEADERS_DIR= install)
274	ln -sf ${CROSSDIR}/usr/bin/`cat ${CROSSDIR}/TARGET_CANON`-gcc \
275	    ${CROSSDIR}/usr/bin/cc
276	CPP=`${CROSSDIR}/usr/bin/cc -print-libgcc-file-name | \
277	    sed 's/libgcc\.a/cpp/'`; \
278	    sed -e 's#/usr/libexec/cpp#'$$CPP'#' \
279	    -e 's#/usr/include#${CROSSDIR}/usr/include#' \
280	    ${.CURDIR}/usr.bin/cpp/cpp.sh > ${CROSSDIR}/usr/bin/cpp
281	chmod ${BINMODE} ${CROSSDIR}/usr/bin/cpp
282	chown ${BINOWN}.${BINGRP} ${CROSSDIR}/usr/bin/cpp
283
284cross-lib:
285	-mkdir -p ${CROSSDIR}/usr/obj
286	-mkdir -p ${CROSSDIR}/usr/lib
287	-mkdir -p ${CROSSDIR}/var/db
288	MACHINE=${TARGET} MACHINE_ARCH=`cat ${CROSSDIR}/TARGET_ARCH`; \
289	export MACHINE MACHINE_ARCH; \
290	(cd ${.CURDIR}/lib; \
291	    BSDOBJDIR=${CROSSDIR}/usr/obj \
292	    BSDSRCDIR=${.CURDIR} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
293	    ${MAKE} obj; \
294	    for lib in csu libc; do \
295		(cd $$lib; \
296		    ${CROSSENV} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
297		    ${MAKE} NOMAN=; \
298		    DESTDIR=${CROSSDIR} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
299		    ${MAKE} NOMAN= install); \
300	    done; \
301	    ${CROSSENV} MAKEOBJDIR=obj.${MACHINE}.${TARGET} ${MAKE} NOMAN=; \
302	    MAKEOBJDIR=obj.${MACHINE}.${TARGET} DESTDIR=${CROSSDIR} \
303	    SKIPDIR=libocurses/PSD.doc ${MAKE} NOMAN= install)
304	ln -sf ${CROSSDIR}/usr/lib \
305	    ${CROSSDIR}/usr/`cat ${CROSSDIR}/TARGET_CANON`/lib
306
307.endif
308
309.include <bsd.subdir.mk>
310