Makefile revision 1.32
1#	$OpenBSD: Makefile,v 1.32 1998/05/16 20:56:52 niklas 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
139cross-binutils-old: cross-gas cross-ar cross-ld cross-strip cross-size \
140	cross-ranlib cross-nm
141
142cross-gas:
143	-mkdir -p ${CROSSDIR}/usr/obj
144	-mkdir -p ${CROSSDIR}/usr/bin
145	-mkdir -p ${CROSSDIR}/usr/`cat ${CROSSDIR}/TARGET_CANON`/bin
146	(cd gnu/usr.bin/gas; \
147	    BSDOBJDIR=${CROSSDIR}/usr/obj \
148	    BSDSRCDIR=${.CURDIR} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
149	    ${MAKE} obj; \
150	    TARGET_MACHINE_ARCH=${TARGET} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
151	    ${MAKE}; \
152	    TARGET_MACHINE_ARCH=${TARGET} \
153	    DESTDIR=${CROSSDIR} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
154	    ${MAKE} NOMAN= install)
155	ln -sf ${CROSSDIR}/usr/bin/as \
156	    ${CROSSDIR}/usr/`cat ${CROSSDIR}/TARGET_CANON`/bin/as
157
158cross-ld:
159	-mkdir -p ${CROSSDIR}/usr/obj
160	-mkdir -p ${CROSSDIR}/usr/bin
161	(cd gnu/usr.bin/ld; \
162	    BSDOBJDIR=${CROSSDIR}/usr/obj \
163	    BSDSRCDIR=${.CURDIR} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
164	    ${MAKE} obj; \
165	    TARGET_MACHINE_ARCH=${TARGET} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
166	    ${MAKE} NOMAN=; \
167	    TARGET_MACHINE_ARCH=${TARGET} \
168	    DESTDIR=${CROSSDIR} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
169	    ${MAKE} NOMAN= install)
170	ln -sf ${CROSSDIR}/usr/bin/ld \
171	    ${CROSSDIR}/usr/`cat ${CROSSDIR}/TARGET_CANON`/bin/ld
172
173cross-ar:
174	-mkdir -p ${CROSSDIR}/usr/obj
175	-mkdir -p ${CROSSDIR}/usr/bin
176	(cd usr.bin/ar; \
177	    BSDOBJDIR=${CROSSDIR}/usr/obj \
178	    BSDSRCDIR=${.CURDIR} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
179	    ${MAKE} obj; \
180	    MAKEOBJDIR=obj.${MACHINE}.${TARGET} ${MAKE} NOMAN=; \
181	    DESTDIR=${CROSSDIR} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
182	    ${MAKE} NOMAN= install)
183	ln -sf ${CROSSDIR}/usr/bin/ar \
184	    ${CROSSDIR}/usr/`cat ${CROSSDIR}/TARGET_CANON`/bin/ar
185
186cross-ranlib:
187	-mkdir -p ${CROSSDIR}/usr/obj
188	-mkdir -p ${CROSSDIR}/usr/bin
189	(cd usr.bin/ranlib; \
190	    BSDOBJDIR=${CROSSDIR}/usr/obj \
191	    BSDSRCDIR=${.CURDIR} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
192	    ${MAKE} obj; \
193	    MAKEOBJDIR=obj.${MACHINE}.${TARGET} ${MAKE} NOMAN=; \
194	    DESTDIR=${CROSSDIR} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
195	    ${MAKE} NOMAN= install)
196	ln -sf ${CROSSDIR}/usr/bin/ranlib \
197	    ${CROSSDIR}/usr/`cat ${CROSSDIR}/TARGET_CANON`/bin/ranlib
198
199cross-strip:
200	-mkdir -p ${CROSSDIR}/usr/obj
201	-mkdir -p ${CROSSDIR}/usr/bin
202	(cd usr.bin/strip; \
203	    BSDOBJDIR=${CROSSDIR}/usr/obj \
204	    BSDSRCDIR=${.CURDIR} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
205	    ${MAKE} obj; \
206	    MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
207	    ${MAKE} TARGET_MACHINE_ARCH=${TARGET} NOMAN=; \
208	    DESTDIR=${CROSSDIR} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
209	    ${MAKE} TARGET_MACHINE_ARCH=${TARGET} NOMAN= install)
210	ln -sf ${CROSSDIR}/usr/bin/strip \
211	    ${CROSSDIR}/usr/`cat ${CROSSDIR}/TARGET_CANON`/bin/strip
212
213cross-size:
214	-mkdir -p ${CROSSDIR}/usr/obj
215	-mkdir -p ${CROSSDIR}/usr/bin
216	(cd usr.bin/size; \
217	    BSDOBJDIR=${CROSSDIR}/usr/obj \
218	    BSDSRCDIR=${.CURDIR} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
219	    ${MAKE} obj; \
220	    MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
221	    ${MAKE} TARGET_MACHINE_ARCH=${TARGET} NOMAN=; \
222	    DESTDIR=${CROSSDIR} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
223	    ${MAKE} NOMAN= install)
224	ln -sf ${CROSSDIR}/usr/bin/size \
225	    ${CROSSDIR}/usr/`cat ${CROSSDIR}/TARGET_CANON`/bin/size
226
227cross-nm:
228	-mkdir -p ${CROSSDIR}/usr/obj
229	-mkdir -p ${CROSSDIR}/usr/bin
230	(cd usr.bin/nm; \
231	    BSDOBJDIR=${CROSSDIR}/usr/obj \
232	    BSDSRCDIR=${.CURDIR} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
233	    ${MAKE} obj; \
234	    MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
235	    ${MAKE} TARGET_MACHINE_ARCH=${TARGET} NOMAN=; \
236	    DESTDIR=${CROSSDIR} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
237	    ${MAKE} NOMAN= install)
238	ln -sf ${CROSSDIR}/usr/bin/nm \
239	    ${CROSSDIR}/usr/`cat ${CROSSDIR}/TARGET_CANON`/bin/nm
240
241cross-gcc:
242	-mkdir -p ${CROSSDIR}/usr/obj
243	-mkdir -p ${CROSSDIR}/usr/bin
244	cd gnu/usr.bin/gcc; \
245	    BSDOBJDIR=${CROSSDIR}/usr/obj BSDSRCDIR=${.CURDIR} \
246	    MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
247	    ${MAKE} -f Makefile.bsd-wrapper obj
248	(cd ${CROSSDIR}/usr/obj/gnu/usr.bin/gcc; \
249	    /bin/sh ${.CURDIR}/gnu/usr.bin/gcc/configure \
250	    --prefix ${CROSSDIR}/usr \
251	    --target `cat ${CROSSDIR}/TARGET_CANON` && \
252	    ${MAKE} BISON=yacc LANGUAGES=c LDFLAGS=${LDSTATIC} \
253	    build_infodir=. \
254	    GCC_FOR_TARGET="./xgcc -B./ -I${CROSSDIR}/usr/include" && \
255	    ${MAKE} BISON=yacc LANGUAGES=c LDFLAGS=${LDSTATIC} \
256	    GCC_FOR_TARGET="./xgcc -B./ -I${CROSSDIR}/usr/include" \
257	    build_infodir=. INSTALL_MAN= INSTALL_HEADERS_DIR= install)
258	ln -sf ${CROSSDIR}/usr/bin/`cat ${CROSSDIR}/TARGET_CANON`-gcc \
259	    ${CROSSDIR}/usr/bin/cc
260	CPP=`${CROSSDIR}/usr/bin/cc -print-libgcc-file-name | \
261	    sed 's/libgcc\.a/cpp/'`; \
262	    sed -e 's#/usr/libexec/cpp#'$$CPP'#' \
263	    -e 's#/usr/include#${CROSSDIR}/usr/include#' usr.bin/cpp/cpp.sh \
264	    >${CROSSDIR}/usr/bin/cpp
265	chmod ${BINMODE} ${CROSSDIR}/usr/bin/cpp
266	chown ${BINOWN}.${BINGRP} ${CROSSDIR}/usr/bin/cpp
267
268cross-lib:
269	-mkdir -p ${CROSSDIR}/usr/obj
270	-mkdir -p ${CROSSDIR}/usr/lib
271	-mkdir -p ${CROSSDIR}/var/db
272	MACHINE=${TARGET} MACHINE_ARCH=`cat ${CROSSDIR}/TARGET_ARCH`; \
273	export MACHINE MACHINE_ARCH; \
274	(cd lib; \
275	    BSDOBJDIR=${CROSSDIR}/usr/obj \
276	    BSDSRCDIR=${.CURDIR} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
277	    ${MAKE} obj; \
278	    for lib in csu libc; do \
279		(cd $$lib; \
280		    ${CROSSENV} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
281		    ${MAKE} NOMAN=; \
282		    DESTDIR=${CROSSDIR} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
283		    ${MAKE} NOMAN= install); \
284	    done; \
285	    ${CROSSENV} MAKEOBJDIR=obj.${MACHINE}.${TARGET} ${MAKE} NOMAN=; \
286	    MAKEOBJDIR=obj.${MACHINE}.${TARGET} DESTDIR=${CROSSDIR} \
287	    SKIPDIR=libocurses/PSD.doc ${MAKE} NOMAN= install)
288	ln -sf ${CROSSDIR}/usr/lib \
289	    ${CROSSDIR}/usr/`cat ${CROSSDIR}/TARGET_CANON`/lib
290
291.endif
292
293.include <bsd.subdir.mk>
294