Makefile revision 1.29
1#	$OpenBSD: Makefile,v 1.29 1998/05/11 07:43:12 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
89
90CROSSDIR=	${DESTDIR}/usr/cross/${TARGET}
91
92cross-helpers:
93	-mkdir -p ${CROSSDIR}/usr/include
94	echo _MACHINE_ARCH | \
95	    cat ${.CURDIR}/sys/arch/${TARGET}/include/param.h - | \
96	    ${CPP} -E -I${.CURDIR}/sys/arch | \
97	    sed -n '$$p' >${CROSSDIR}/TARGET_ARCH
98	eval `grep '^osr=' sys/conf/newvers.sh`; \
99	   sed "s/\$$/-unknown-openbsd$$osr/" ${CROSSDIR}/TARGET_ARCH > \
100	   ${CROSSDIR}/TARGET_CANON
101
102cross-includes:
103	${MAKE} MACHINE=${TARGET} MACHINE_ARCH=`cat ${CROSSDIR}/TARGET_ARCH` \
104	    DESTDIR=${CROSSDIR} includes
105
106.if ${TARGET} == "powerpc" || ${TARGET} == "alpha" || ${TARGET} == "arc" || \
107    ${TARGET} == "pmax" || ${TARGET} == "wgrisc" || ${TARGET} == "hppa"
108cross-binutils: cross-binutils-new
109.else
110cross-binutils: cross-binutils-old
111.endif
112
113cross-binutils-new:
114	-mkdir -p ${CROSSDIR}/usr/obj
115	export BSDSRCDIR=`pwd`; \
116	    (cd ${.CURDIR}/gnu/usr.bin/binutils; \
117	    BSDOBJDIR=${CROSSDIR}/usr/obj \
118	    MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
119	    ${MAKE} -f Makefile.bsd-wrapper obj); \
120	    (cd ${CROSSDIR}/usr/obj/gnu/usr.bin/binutils; \
121	    /bin/sh ${BSDSRCDIR}/gnu/usr.bin/binutils/configure \
122	    --prefix ${CROSSDIR}/usr \
123	    --target `cat ${CROSSDIR}/TARGET_CANON` && \
124	    ${MAKE} && ${MAKE} install)
125	${INSTALL} -c -o ${BINOWN} -g ${BINGRP} -m 755 \
126	    ${.CURDIR}/usr.bin/lorder/lorder.sh.gnm \
127	    ${CROSSDIR}/usr/bin/`cat ${CROSSDIR}/TARGET_CANON`-lorder
128
129cross-binutils-old: cross-gas cross-ar cross-ld cross-strip cross-size \
130	cross-ranlib cross-nm
131
132cross-gas:
133	-mkdir -p ${CROSSDIR}/usr/obj
134	-mkdir -p ${CROSSDIR}/usr/bin
135	-mkdir -p ${CROSSDIR}/usr/`cat ${CROSSDIR}/TARGET_CANON`/bin
136	(cd gnu/usr.bin/gas; \
137	    BSDOBJDIR=${CROSSDIR}/usr/obj \
138	    BSDSRCDIR=${.CURDIR} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
139	    ${MAKE} obj)
140	(cd gnu/usr.bin/gas; \
141	    TARGET_MACHINE_ARCH=${TARGET} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
142	    ${MAKE})
143	(cd gnu/usr.bin/gas; \
144	    TARGET_MACHINE_ARCH=${TARGET} \
145	    DESTDIR=${CROSSDIR} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
146	    ${MAKE} NOMAN= install)
147	ln -sf ${CROSSDIR}/usr/bin/as \
148	    ${CROSSDIR}/usr/`cat ${CROSSDIR}/TARGET_CANON`/bin/as
149
150# Not yet functional
151cross-ld:
152	-mkdir -p ${CROSSDIR}/usr/obj
153	-mkdir -p ${CROSSDIR}/usr/bin
154	(cd gnu/usr.bin/ld; \
155	    BSDOBJDIR=${CROSSDIR}/usr/obj \
156	    BSDSRCDIR=${.CURDIR} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
157	    ${MAKE} obj)
158	(cd gnu/usr.bin/ld; \
159	    TARGET_MACHINE_ARCH=${TARGET} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
160	    ${MAKE} NOMAN=)
161	(cd gnu/usr.bin/ld; \
162	    TARGET_MACHINE_ARCH=${TARGET} \
163	    DESTDIR=${CROSSDIR} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
164	    ${MAKE} NOMAN= install)
165	ln -sf ${CROSSDIR}/usr/bin/ld \
166	    ${CROSSDIR}/usr/`cat ${CROSSDIR}/TARGET_CANON`/bin/ld
167
168cross-ar:
169	-mkdir -p ${CROSSDIR}/usr/obj
170	-mkdir -p ${CROSSDIR}/usr/bin
171	(cd usr.bin/ar; \
172	    BSDOBJDIR=${CROSSDIR}/usr/obj \
173	    BSDSRCDIR=${.CURDIR} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
174	    ${MAKE} obj)
175	(cd usr.bin/ar; MAKEOBJDIR=obj.${MACHINE}.${TARGET} ${MAKE} NOMAN=)
176	(cd usr.bin/ar; \
177	    DESTDIR=${CROSSDIR} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
178	    ${MAKE} NOMAN= install)
179	ln -sf ${CROSSDIR}/usr/bin/ar \
180	    ${CROSSDIR}/usr/`cat ${CROSSDIR}/TARGET_CANON`/bin/ar
181
182cross-ranlib:
183	-mkdir -p ${CROSSDIR}/usr/obj
184	-mkdir -p ${CROSSDIR}/usr/bin
185	(cd usr.bin/ranlib; \
186	    BSDOBJDIR=${CROSSDIR}/usr/obj \
187	    BSDSRCDIR=${.CURDIR} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
188	    ${MAKE} obj)
189	(cd usr.bin/ranlib; MAKEOBJDIR=obj.${MACHINE}.${TARGET} ${MAKE} NOMAN=)
190	(cd usr.bin/ranlib; \
191	    DESTDIR=${CROSSDIR} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
192	    ${MAKE} NOMAN= install)
193	ln -sf ${CROSSDIR}/usr/bin/ranlib \
194	    ${CROSSDIR}/usr/`cat ${CROSSDIR}/TARGET_CANON`/bin/ranlib
195
196cross-strip:
197	-mkdir -p ${CROSSDIR}/usr/obj
198	-mkdir -p ${CROSSDIR}/usr/bin
199	(cd usr.bin/strip; \
200	    BSDOBJDIR=${CROSSDIR}/usr/obj \
201	    BSDSRCDIR=${.CURDIR} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
202	    ${MAKE} obj)
203	(cd usr.bin/strip; \
204	    MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
205	    ${MAKE} TARGET_MACHINE_ARCH=${TARGET} NOMAN=)
206	(cd usr.bin/strip; \
207	    DESTDIR=${CROSSDIR} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
208	    ${MAKE} TARGET_MACHINE_ARCH=${TARGET} NOMAN= install)
209	ln -sf ${CROSSDIR}/usr/bin/strip \
210	    ${CROSSDIR}/usr/`cat ${CROSSDIR}/TARGET_CANON`/bin/strip
211
212cross-size:
213	-mkdir -p ${CROSSDIR}/usr/obj
214	-mkdir -p ${CROSSDIR}/usr/bin
215	(cd usr.bin/size; \
216	    BSDOBJDIR=${CROSSDIR}/usr/obj \
217	    BSDSRCDIR=${.CURDIR} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
218	    ${MAKE} obj)
219	(cd usr.bin/size; MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
220	    ${MAKE} TARGET_MACHINE_ARCH=${TARGET} NOMAN=)
221	(cd usr.bin/size; \
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	(cd usr.bin/nm; MAKEOBJDIR=obj.${MACHINE}.${TARGET} ${MAKE} NOMAN=)
235	(cd usr.bin/nm; \
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	(cd gnu/usr.bin/gcc; \
244	    BSDOBJDIR=${CROSSDIR}/usr/obj BSDSRCDIR=${.CURDIR} \
245	    MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
246	    ${MAKE} -f Makefile.bsd-wrapper obj)
247	(cd ${CROSSDIR}/usr/obj/gnu/usr.bin/gcc; \
248	    /bin/sh ${.CURDIR}/gnu/usr.bin/gcc/configure \
249	    --prefix ${CROSSDIR}/usr \
250	    --target `cat ${CROSSDIR}/TARGET_CANON` && \
251	    ${MAKE} BISON=yacc LANGUAGES=c LDFLAGS=${LDSTATIC} \
252	    GCC_FOR_TARGET="./xgcc -B./ -I${CROSSDIR}/usr/include" && \
253	    ${MAKE} BISON=yacc LANGUAGES=c LDFLAGS=${LDSTATIC} \
254	    GCC_FOR_TARGET="./xgcc -B./ -I${CROSSDIR}/usr/include" install)
255.endif
256
257.include <bsd.subdir.mk>
258