Annotation of src/Makefile, Revision 1.61
1.61 ! art 1: # $OpenBSD: Makefile,v 1.60 2000/12/30 06:45:52 angelos Exp $
1.1 deraadt 2:
1.16 deraadt 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: #
1.41 art 20: # 3) It is strongly recommended that you build and install a new kernel
21: # before rebuilding your system. Some of the new programs may use new
22: # functionality or depend on API changes that your old kernel doesn't have.
23: #
24: # 4) If you are reasonably sure that things will compile OK, use the
1.16 deraadt 25: # "make build" target supplied here. Good luck.
1.38 mickey 26: #
1.41 art 27: # 5) If you want to setup a cross-build environment, there is a "cross-tools"
1.38 mickey 28: # target available which upon completion of "make TARGET=<target> cross-tools"
29: # (where <target> is one of the names in the /sys/arch directory) will produce
30: # a set of compilation tools along with the includes in the /usr/cross/<target>
31: # directory.
32: #
1.16 deraadt 33:
1.6 mickey 34: .include <bsd.own.mk> # for NOMAN, if it's there.
1.1 deraadt 35:
36: SUBDIR+= lib include bin libexec sbin usr.bin usr.sbin share games
37: SUBDIR+= gnu
38:
1.5 tholo 39: SUBDIR+= sys lkm
1.1 deraadt 40:
1.58 espie 41: .if (${KERBEROS:L} == "yes")
1.2 tholo 42: SUBDIR+= kerberosIV
1.21 deraadt 43: .endif
44:
45: .if make(clean) || make(cleandir) || make(obj)
46: SUBDIR+= distrib
1.4 tholo 47: .endif
1.2 tholo 48:
1.1 deraadt 49: .if exists(regress)
50: .ifmake !(install)
51: SUBDIR+= regress
52: .endif
53:
54: regression-tests:
55: @echo Running regression tests...
56: @(cd ${.CURDIR}/regress && ${MAKE} regress)
57: .endif
1.10 deraadt 58:
59: includes:
1.50 deraadt 60: (cd ${.CURDIR}/include; ${MAKE} prereq; ${MAKE} includes)
1.1 deraadt 61:
1.7 deraadt 62: beforeinstall:
63: .ifndef DESTDIR
1.42 millert 64: (cd ${.CURDIR}/etc && ${MAKE} DESTDIR= distrib-dirs)
1.7 deraadt 65: .else
66: (cd ${.CURDIR}/etc && ${MAKE} distrib-dirs)
67: .endif
1.9 deraadt 68: (cd ${.CURDIR}/include; ${MAKE} includes)
1.1 deraadt 69:
70: afterinstall:
71: .ifndef NOMAN
72: (cd ${.CURDIR}/share/man && ${MAKE} makedb)
73: .endif
74:
75: build:
1.19 kstailey 76: .ifdef GLOBAL_AUTOCONF_CACHE
1.60 angelos 77: cp /dev/null ${GLOBAL_AUTOCONF_CACHE}
1.18 kstailey 78: .endif
1.40 niklas 79: (cd ${.CURDIR}/share/mk && ${SUDO} ${MAKE} install)
1.49 niklas 80: (cd ${.CURDIR}/include; ${MAKE} prereq; ${SUDO} ${MAKE} includes)
1.43 millert 81: ${SUDO} ${MAKE} cleandir
1.40 niklas 82: (cd ${.CURDIR}/lib && ${MAKE} depend && ${MAKE} && \
1.57 millert 83: NOMAN=1 ${SUDO} ${MAKE} install)
1.40 niklas 84: (cd ${.CURDIR}/gnu/lib && ${MAKE} depend && ${MAKE} && \
1.57 millert 85: NOMAN=1 ${SUDO} ${MAKE} install)
1.58 espie 86: .if (${KERBEROS:L} == "yes")
1.54 niklas 87: (cd ${.CURDIR}/kerberosIV/lib && ${MAKE} depend && ${MAKE} && \
1.57 millert 88: NOMAN=1 ${SUDO} ${MAKE} install)
1.54 niklas 89: .endif
1.51 millert 90: (cd ${.CURDIR}/gnu/usr.bin/perl && \
91: ${MAKE} -f Makefile.bsd-wrapper depend && \
92: ${MAKE} -f Makefile.bsd-wrapper perl.lib && \
93: ${SUDO} ${MAKE} -f Makefile.bsd-wrapper install.lib)
1.13 deraadt 94: .if (${MACHINE_ARCH} == "mips")
1.55 deraadt 95: ldconfig -R
1.48 imp 96: .endif
1.40 niklas 97: ${MAKE} depend && ${MAKE} && ${SUDO} ${MAKE} install
1.15 niklas 98:
99: .if !defined(TARGET)
100: cross-tools:
101: echo "TARGET must be set"; exit 1
102: .else
1.48 imp 103: cross-tools: cross-helpers cross-dirs cross-includes cross-binutils \
104: cross-gcc cross-lib
1.15 niklas 105:
106: CROSSDIR= ${DESTDIR}/usr/cross/${TARGET}
1.32 niklas 107: CROSSENV= AR=${CROSSDIR}/usr/bin/ar AS=${CROSSDIR}/usr/bin/as \
108: CC=${CROSSDIR}/usr/bin/cc CPP=${CROSSDIR}/usr/bin/cpp \
109: LD=${CROSSDIR}/usr/bin/ld NM=${CROSSDIR}/usr/bin/nm \
1.47 imp 110: LORDER=${CROSSDIR}/usr/bin/lorder \
1.32 niklas 111: RANLIB=${CROSSDIR}/usr/bin/ranlib \
112: SIZE=${CROSSDIR}/usr/bin/size STRIP=${CROSSDIR}/usr/bin/strip \
1.34 niklas 113: HOSTCC=cc
1.15 niklas 114:
115: cross-helpers:
1.48 imp 116: mkdir -p ${CROSSDIR}
1.15 niklas 117: echo _MACHINE_ARCH | \
118: cat ${.CURDIR}/sys/arch/${TARGET}/include/param.h - | \
1.25 mickey 119: ${CPP} -E -I${.CURDIR}/sys/arch | \
120: sed -n '$$p' >${CROSSDIR}/TARGET_ARCH
1.48 imp 121: # GROSS KLUDGE MACHINE_ARCH is mips, but we use mipsel for gnu tools.
122: .if ${TARGET} == "arc" || ${TARGET} == "pmax"
123: eval `grep '^osr=' sys/conf/newvers.sh`; \
124: sed "s/\$$/el-unknown-openbsd$$osr/" ${CROSSDIR}/TARGET_ARCH > \
125: ${CROSSDIR}/TARGET_CANON
126: .else
1.15 niklas 127: eval `grep '^osr=' sys/conf/newvers.sh`; \
128: sed "s/\$$/-unknown-openbsd$$osr/" ${CROSSDIR}/TARGET_ARCH > \
129: ${CROSSDIR}/TARGET_CANON
1.48 imp 130: .endif
1.15 niklas 131:
1.48 imp 132: cross-dirs: ${CROSSDIR}/stamp.dirs
133: @-mkdir -p ${CROSSDIR}
134: @-mkdir -p ${CROSSDIR}/usr/obj
135: @-mkdir -p ${CROSSDIR}/usr/bin
136: @-mkdir -p ${CROSSDIR}/usr/include
137: @-mkdir -p ${CROSSDIR}/usr/lib
138: @-mkdir -p ${CROSSDIR}/var/db
139: @-mkdir -p ${CROSSDIR}/usr/`cat ${CROSSDIR}/TARGET_CANON`
140: @ln -sf ${CROSSDIR}/usr/include \
141: ${CROSSDIR}/usr/`cat ${CROSSDIR}/TARGET_CANON`/include
142: @ln -sf ${CROSSDIR}/usr/lib \
143: ${CROSSDIR}/usr/`cat ${CROSSDIR}/TARGET_CANON`/lib
144: @-mkdir -p ${CROSSDIR}/usr/obj
145: @-mkdir -p ${CROSSDIR}/usr/bin
146: @-mkdir -p ${CROSSDIR}/usr/`cat ${CROSSDIR}/TARGET_CANON`/bin
147:
148: ${CROSSDIR}/stamp.dirs:
149: @touch ${CROSSDIR}/stamp.dirs
150:
151: cross-includes: cross-dirs
1.47 imp 152: export MACHINE=${TARGET} MACHINE_ARCH=`cat ${CROSSDIR}/TARGET_ARCH` ;\
153: ${MAKE} DESTDIR=${CROSSDIR} includes
1.15 niklas 154:
1.27 niklas 155: .if ${TARGET} == "powerpc" || ${TARGET} == "alpha" || ${TARGET} == "arc" || \
1.28 mickey 156: ${TARGET} == "pmax" || ${TARGET} == "wgrisc" || ${TARGET} == "hppa"
1.27 niklas 157: cross-binutils: cross-binutils-new
158: .else
159: cross-binutils: cross-binutils-old
160: .endif
161:
1.48 imp 162: cross-binutils-new: cross-dirs
1.15 niklas 163: export BSDSRCDIR=`pwd`; \
164: (cd ${.CURDIR}/gnu/usr.bin/binutils; \
165: BSDOBJDIR=${CROSSDIR}/usr/obj \
166: MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
167: ${MAKE} -f Makefile.bsd-wrapper obj); \
168: (cd ${CROSSDIR}/usr/obj/gnu/usr.bin/binutils; \
1.25 mickey 169: /bin/sh ${BSDSRCDIR}/gnu/usr.bin/binutils/configure \
1.15 niklas 170: --prefix ${CROSSDIR}/usr \
1.59 art 171: --disable-nls --disable-gdbtk --disable-commonbfdlib \
1.15 niklas 172: --target `cat ${CROSSDIR}/TARGET_CANON` && \
1.61 ! art 173: ${MAKE} CFLAGS=${CFLAGS} && ${MAKE} install)
1.15 niklas 174: ${INSTALL} -c -o ${BINOWN} -g ${BINGRP} -m 755 \
1.52 mickey 175: ${.CURDIR}/usr.bin/lorder/lorder.sh \
1.35 mickey 176: ${CROSSDIR}/usr/bin/lorder
1.24 niklas 177:
1.29 niklas 178: cross-binutils-old: cross-gas cross-ar cross-ld cross-strip cross-size \
179: cross-ranlib cross-nm
1.27 niklas 180:
1.48 imp 181: cross-gas: cross-dirs
1.36 mickey 182: (cd ${.CURDIR}/gnu/usr.bin/gas; \
1.24 niklas 183: BSDOBJDIR=${CROSSDIR}/usr/obj \
184: BSDSRCDIR=${.CURDIR} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
1.32 niklas 185: ${MAKE} obj; \
1.24 niklas 186: TARGET_MACHINE_ARCH=${TARGET} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
1.32 niklas 187: ${MAKE}; \
1.27 niklas 188: TARGET_MACHINE_ARCH=${TARGET} \
189: DESTDIR=${CROSSDIR} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
190: ${MAKE} NOMAN= install)
191: ln -sf ${CROSSDIR}/usr/bin/as \
192: ${CROSSDIR}/usr/`cat ${CROSSDIR}/TARGET_CANON`/bin/as
193:
1.48 imp 194: cross-ld: cross-dirs
1.36 mickey 195: (cd ${.CURDIR}/gnu/usr.bin/ld; \
1.27 niklas 196: BSDOBJDIR=${CROSSDIR}/usr/obj \
197: BSDSRCDIR=${.CURDIR} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
1.32 niklas 198: ${MAKE} obj; \
1.27 niklas 199: TARGET_MACHINE_ARCH=${TARGET} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
1.32 niklas 200: ${MAKE} NOMAN=; \
1.27 niklas 201: TARGET_MACHINE_ARCH=${TARGET} \
202: DESTDIR=${CROSSDIR} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
203: ${MAKE} NOMAN= install)
204: ln -sf ${CROSSDIR}/usr/bin/ld \
205: ${CROSSDIR}/usr/`cat ${CROSSDIR}/TARGET_CANON`/bin/ld
206:
1.48 imp 207: cross-ar: cross-dirs
1.36 mickey 208: (cd ${.CURDIR}/usr.bin/ar; \
1.27 niklas 209: BSDOBJDIR=${CROSSDIR}/usr/obj \
210: BSDSRCDIR=${.CURDIR} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
1.32 niklas 211: ${MAKE} obj; \
212: MAKEOBJDIR=obj.${MACHINE}.${TARGET} ${MAKE} NOMAN=; \
1.24 niklas 213: DESTDIR=${CROSSDIR} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
214: ${MAKE} NOMAN= install)
1.27 niklas 215: ln -sf ${CROSSDIR}/usr/bin/ar \
216: ${CROSSDIR}/usr/`cat ${CROSSDIR}/TARGET_CANON`/bin/ar
1.29 niklas 217:
1.48 imp 218: cross-ranlib: cross-dirs
1.36 mickey 219: (cd ${.CURDIR}/usr.bin/ranlib; \
1.29 niklas 220: BSDOBJDIR=${CROSSDIR}/usr/obj \
221: BSDSRCDIR=${.CURDIR} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
1.32 niklas 222: ${MAKE} obj; \
223: MAKEOBJDIR=obj.${MACHINE}.${TARGET} ${MAKE} NOMAN=; \
1.29 niklas 224: DESTDIR=${CROSSDIR} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
225: ${MAKE} NOMAN= install)
226: ln -sf ${CROSSDIR}/usr/bin/ranlib \
227: ${CROSSDIR}/usr/`cat ${CROSSDIR}/TARGET_CANON`/bin/ranlib
228:
1.48 imp 229: cross-strip: cross-dirs
1.36 mickey 230: (cd ${.CURDIR}/usr.bin/strip; \
1.29 niklas 231: BSDOBJDIR=${CROSSDIR}/usr/obj \
232: BSDSRCDIR=${.CURDIR} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
1.32 niklas 233: ${MAKE} obj; \
1.29 niklas 234: MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
1.32 niklas 235: ${MAKE} TARGET_MACHINE_ARCH=${TARGET} NOMAN=; \
1.29 niklas 236: DESTDIR=${CROSSDIR} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
237: ${MAKE} TARGET_MACHINE_ARCH=${TARGET} NOMAN= install)
238: ln -sf ${CROSSDIR}/usr/bin/strip \
239: ${CROSSDIR}/usr/`cat ${CROSSDIR}/TARGET_CANON`/bin/strip
240:
1.48 imp 241: cross-size: cross-dirs
1.36 mickey 242: (cd ${.CURDIR}/usr.bin/size; \
1.29 niklas 243: BSDOBJDIR=${CROSSDIR}/usr/obj \
244: BSDSRCDIR=${.CURDIR} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
1.32 niklas 245: ${MAKE} obj; \
246: MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
247: ${MAKE} TARGET_MACHINE_ARCH=${TARGET} NOMAN=; \
1.29 niklas 248: DESTDIR=${CROSSDIR} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
249: ${MAKE} NOMAN= install)
250: ln -sf ${CROSSDIR}/usr/bin/size \
251: ${CROSSDIR}/usr/`cat ${CROSSDIR}/TARGET_CANON`/bin/size
252:
1.48 imp 253: cross-nm: cross-dirs
1.36 mickey 254: (cd ${.CURDIR}/usr.bin/nm; \
1.29 niklas 255: BSDOBJDIR=${CROSSDIR}/usr/obj \
256: BSDSRCDIR=${.CURDIR} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
1.32 niklas 257: ${MAKE} obj; \
258: MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
259: ${MAKE} TARGET_MACHINE_ARCH=${TARGET} NOMAN=; \
1.29 niklas 260: DESTDIR=${CROSSDIR} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
261: ${MAKE} NOMAN= install)
262: ln -sf ${CROSSDIR}/usr/bin/nm \
263: ${CROSSDIR}/usr/`cat ${CROSSDIR}/TARGET_CANON`/bin/nm
1.15 niklas 264:
1.48 imp 265: cross-gcc: cross-dirs
1.52 mickey 266: cd ${.CURDIR}/gnu/egcs/gcc; \
1.15 niklas 267: BSDOBJDIR=${CROSSDIR}/usr/obj BSDSRCDIR=${.CURDIR} \
268: MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
1.32 niklas 269: ${MAKE} -f Makefile.bsd-wrapper obj
1.52 mickey 270: (cd ${CROSSDIR}/usr/obj/gnu/egcs/gcc; \
271: /bin/sh ${.CURDIR}/gnu/egcs/gcc/configure \
1.15 niklas 272: --prefix ${CROSSDIR}/usr \
273: --target `cat ${CROSSDIR}/TARGET_CANON` && \
1.26 mickey 274: ${MAKE} BISON=yacc LANGUAGES=c LDFLAGS=${LDSTATIC} \
1.32 niklas 275: build_infodir=. \
1.61 ! art 276: GCC_FOR_TARGET="./xgcc -B./" && \
1.26 mickey 277: ${MAKE} BISON=yacc LANGUAGES=c LDFLAGS=${LDSTATIC} \
1.61 ! art 278: GCC_FOR_TARGET="./xgcc -B./" \
1.32 niklas 279: build_infodir=. INSTALL_MAN= INSTALL_HEADERS_DIR= install)
1.31 niklas 280: ln -sf ${CROSSDIR}/usr/bin/`cat ${CROSSDIR}/TARGET_CANON`-gcc \
281: ${CROSSDIR}/usr/bin/cc
282: CPP=`${CROSSDIR}/usr/bin/cc -print-libgcc-file-name | \
283: sed 's/libgcc\.a/cpp/'`; \
284: sed -e 's#/usr/libexec/cpp#'$$CPP'#' \
1.36 mickey 285: -e 's#/usr/include#${CROSSDIR}/usr/include#' \
286: ${.CURDIR}/usr.bin/cpp/cpp.sh > ${CROSSDIR}/usr/bin/cpp
1.31 niklas 287: chmod ${BINMODE} ${CROSSDIR}/usr/bin/cpp
288: chown ${BINOWN}.${BINGRP} ${CROSSDIR}/usr/bin/cpp
1.32 niklas 289:
1.46 niklas 290: # XXX MAKEOBJDIR maybe should be obj.${TARGET} here, revisit later
1.48 imp 291: cross-lib: cross-dirs
1.32 niklas 292: MACHINE=${TARGET} MACHINE_ARCH=`cat ${CROSSDIR}/TARGET_ARCH`; \
293: export MACHINE MACHINE_ARCH; \
1.36 mickey 294: (cd ${.CURDIR}/lib; \
1.32 niklas 295: BSDOBJDIR=${CROSSDIR}/usr/obj \
296: BSDSRCDIR=${.CURDIR} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
297: ${MAKE} obj; \
298: for lib in csu libc; do \
299: (cd $$lib; \
1.34 niklas 300: ${CROSSENV} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
1.46 niklas 301: ${MAKE} NOMAN= depend; \
302: ${CROSSENV} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
1.34 niklas 303: ${MAKE} NOMAN=; \
1.39 mickey 304: ${CROSSENV} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
305: DESTDIR=${CROSSDIR} ${MAKE} NOMAN= install); \
1.32 niklas 306: done; \
1.46 niklas 307: ${CROSSENV} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
308: ${MAKE} NOMAN= depend; \
1.34 niklas 309: ${CROSSENV} MAKEOBJDIR=obj.${MACHINE}.${TARGET} ${MAKE} NOMAN=; \
1.39 mickey 310: ${CROSSENV} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
311: DESTDIR=${CROSSDIR} SKIPDIR=libocurses/PSD.doc \
312: ${MAKE} NOMAN= install)
1.58 espie 313: .if (${KERBEROS:L} == "yes")
1.46 niklas 314: (cd kerberosIV; \
315: BSDOBJDIR=${CROSSDIR}/usr/obj \
316: BSDSRCDIR=${.CURDIR} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
317: ${MAKE} obj; \
318: for lib in acl krb kadm kafs kdb; do \
319: (cd $$lib; \
320: ${CROSSENV} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
321: ${MAKE} NOMAN= depend; \
322: ${CROSSENV} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
323: ${MAKE} NOMAN=; \
324: DESTDIR=${CROSSDIR} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
325: ${MAKE} NOMAN= install); \
326: done)
1.47 imp 327: .endif
1.15 niklas 328: .endif
1.1 deraadt 329:
330: .include <bsd.subdir.mk>