Makefile revision 1.28
1#	$OpenBSD: Makefile,v 1.28 1998/05/04 21:28:18 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
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
130
131cross-gas:
132	-mkdir -p ${CROSSDIR}/usr/obj
133	-mkdir -p ${CROSSDIR}/usr/bin
134	-mkdir -p ${CROSSDIR}/usr/`cat ${CROSSDIR}/TARGET_CANON`/bin
135	(cd gnu/usr.bin/gas; \
136	    BSDOBJDIR=${CROSSDIR}/usr/obj \
137	    BSDSRCDIR=${.CURDIR} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
138	    ${MAKE} obj)
139	(cd gnu/usr.bin/gas; \
140	    TARGET_MACHINE_ARCH=${TARGET} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
141	    ${MAKE})
142	(cd gnu/usr.bin/gas; \
143	    TARGET_MACHINE_ARCH=${TARGET} \
144	    DESTDIR=${CROSSDIR} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
145	    ${MAKE} NOMAN= install)
146	ln -sf ${CROSSDIR}/usr/bin/as \
147	    ${CROSSDIR}/usr/`cat ${CROSSDIR}/TARGET_CANON`/bin/as
148
149# Not yet functional
150cross-ld:
151	-mkdir -p ${CROSSDIR}/usr/obj
152	-mkdir -p ${CROSSDIR}/usr/bin
153	(cd gnu/usr.bin/ld; \
154	    BSDOBJDIR=${CROSSDIR}/usr/obj \
155	    BSDSRCDIR=${.CURDIR} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
156	    ${MAKE} obj)
157	(cd gnu/usr.bin/ld; \
158	    TARGET_MACHINE_ARCH=${TARGET} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
159	    ${MAKE} NOMAN=)
160	(cd gnu/usr.bin/ld; \
161	    TARGET_MACHINE_ARCH=${TARGET} \
162	    DESTDIR=${CROSSDIR} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
163	    ${MAKE} NOMAN= install)
164	ln -sf ${CROSSDIR}/usr/bin/ld \
165	    ${CROSSDIR}/usr/`cat ${CROSSDIR}/TARGET_CANON`/bin/ld
166
167# Not yet tested for compatibility with any target
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-gcc:
183	-mkdir -p ${CROSSDIR}/usr/obj
184	(cd gnu/usr.bin/gcc; \
185	    BSDOBJDIR=${CROSSDIR}/usr/obj BSDSRCDIR=${.CURDIR} \
186	    MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
187	    ${MAKE} -f Makefile.bsd-wrapper obj)
188	(cd ${CROSSDIR}/usr/obj/gnu/usr.bin/gcc; \
189	    /bin/sh ${.CURDIR}/gnu/usr.bin/gcc/configure \
190	    --prefix ${CROSSDIR}/usr \
191	    --target `cat ${CROSSDIR}/TARGET_CANON` && \
192	    ${MAKE} BISON=yacc LANGUAGES=c LDFLAGS=${LDSTATIC} \
193	    GCC_FOR_TARGET="./xgcc -B./ -I${CROSSDIR}/usr/include" && \
194	    ${MAKE} BISON=yacc LANGUAGES=c LDFLAGS=${LDSTATIC} \
195	    GCC_FOR_TARGET="./xgcc -B./ -I${CROSSDIR}/usr/include" install)
196.endif
197
198.include <bsd.subdir.mk>
199