Annotation of src/Makefile, Revision 1.67
1.67 ! niklas 1: # $OpenBSD: Makefile,v 1.66 2001/05/14 12:34:26 espie 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...
1.66 espie 56: @cd ${.CURDIR}/regress && exec ${MAKE} regress
1.1 deraadt 57: .endif
1.10 deraadt 58:
59: includes:
1.67 ! niklas 60: cd ${.CURDIR}/include && ${MAKE} prereq && exec ${SUDO} ${MAKE} includes
1.1 deraadt 61:
1.7 deraadt 62: beforeinstall:
1.66 espie 63: cd ${.CURDIR}/etc && exec ${MAKE} DESTDIR=${DESTDIR} distrib-dirs
64: cd ${.CURDIR}/include && exec ${MAKE} includes
1.1 deraadt 65:
66: afterinstall:
67: .ifndef NOMAN
1.66 espie 68: cd ${.CURDIR}/share/man && exec ${MAKE} makedb
1.1 deraadt 69: .endif
70:
71: build:
1.19 kstailey 72: .ifdef GLOBAL_AUTOCONF_CACHE
1.60 angelos 73: cp /dev/null ${GLOBAL_AUTOCONF_CACHE}
1.18 kstailey 74: .endif
1.66 espie 75: cd ${.CURDIR}/share/mk && exec ${SUDO} ${MAKE} install
76: cd ${.CURDIR}/include && ${MAKE} prereq && exec ${SUDO} ${MAKE} includes
1.43 millert 77: ${SUDO} ${MAKE} cleandir
1.66 espie 78: cd ${.CURDIR}/lib && ${MAKE} depend && ${MAKE} && \
79: NOMAN=1 exec ${SUDO} ${MAKE} install
80: cd ${.CURDIR}/gnu/lib && ${MAKE} depend && ${MAKE} && \
81: NOMAN=1 exec ${SUDO} ${MAKE} install
1.58 espie 82: .if (${KERBEROS:L} == "yes")
1.66 espie 83: cd ${.CURDIR}/kerberosIV/lib && ${MAKE} depend && ${MAKE} && \
84: NOMAN=1 exec ${SUDO} ${MAKE} install
1.54 niklas 85: .endif
1.66 espie 86: cd ${.CURDIR}/gnu/usr.bin/perl && \
1.51 millert 87: ${MAKE} -f Makefile.bsd-wrapper depend && \
88: ${MAKE} -f Makefile.bsd-wrapper perl.lib && \
1.66 espie 89: exec ${SUDO} ${MAKE} -f Makefile.bsd-wrapper install.lib
1.13 deraadt 90: .if (${MACHINE_ARCH} == "mips")
1.55 deraadt 91: ldconfig -R
1.48 imp 92: .endif
1.66 espie 93: ${MAKE} depend && ${MAKE} && exec ${SUDO} ${MAKE} install
1.15 niklas 94:
95: .if !defined(TARGET)
96: cross-tools:
97: echo "TARGET must be set"; exit 1
98: .else
1.48 imp 99: cross-tools: cross-helpers cross-dirs cross-includes cross-binutils \
100: cross-gcc cross-lib
1.15 niklas 101:
102: CROSSDIR= ${DESTDIR}/usr/cross/${TARGET}
1.32 niklas 103: CROSSENV= AR=${CROSSDIR}/usr/bin/ar AS=${CROSSDIR}/usr/bin/as \
104: CC=${CROSSDIR}/usr/bin/cc CPP=${CROSSDIR}/usr/bin/cpp \
105: LD=${CROSSDIR}/usr/bin/ld NM=${CROSSDIR}/usr/bin/nm \
1.47 imp 106: LORDER=${CROSSDIR}/usr/bin/lorder \
1.32 niklas 107: RANLIB=${CROSSDIR}/usr/bin/ranlib \
108: SIZE=${CROSSDIR}/usr/bin/size STRIP=${CROSSDIR}/usr/bin/strip \
1.34 niklas 109: HOSTCC=cc
1.63 niklas 110: CROSSPATH= ${PATH}:${CROSSDIR}/usr/bin
1.15 niklas 111:
112: cross-helpers:
1.48 imp 113: mkdir -p ${CROSSDIR}
1.15 niklas 114: echo _MACHINE_ARCH | \
115: cat ${.CURDIR}/sys/arch/${TARGET}/include/param.h - | \
1.25 mickey 116: ${CPP} -E -I${.CURDIR}/sys/arch | \
117: sed -n '$$p' >${CROSSDIR}/TARGET_ARCH
1.48 imp 118: # GROSS KLUDGE MACHINE_ARCH is mips, but we use mipsel for gnu tools.
119: .if ${TARGET} == "arc" || ${TARGET} == "pmax"
120: eval `grep '^osr=' sys/conf/newvers.sh`; \
121: sed "s/\$$/el-unknown-openbsd$$osr/" ${CROSSDIR}/TARGET_ARCH > \
122: ${CROSSDIR}/TARGET_CANON
123: .else
1.15 niklas 124: eval `grep '^osr=' sys/conf/newvers.sh`; \
125: sed "s/\$$/-unknown-openbsd$$osr/" ${CROSSDIR}/TARGET_ARCH > \
126: ${CROSSDIR}/TARGET_CANON
1.48 imp 127: .endif
1.15 niklas 128:
1.48 imp 129: cross-dirs: ${CROSSDIR}/stamp.dirs
130: @-mkdir -p ${CROSSDIR}
131: @-mkdir -p ${CROSSDIR}/usr/obj
132: @-mkdir -p ${CROSSDIR}/usr/bin
133: @-mkdir -p ${CROSSDIR}/usr/include
1.63 niklas 134: @-mkdir -p ${CROSSDIR}/usr/include/kerberosIV
1.48 imp 135: @-mkdir -p ${CROSSDIR}/usr/lib
1.63 niklas 136: @-mkdir -p ${CROSSDIR}/usr/libexec
1.48 imp 137: @-mkdir -p ${CROSSDIR}/var/db
138: @-mkdir -p ${CROSSDIR}/usr/`cat ${CROSSDIR}/TARGET_CANON`
139: @ln -sf ${CROSSDIR}/usr/include \
140: ${CROSSDIR}/usr/`cat ${CROSSDIR}/TARGET_CANON`/include
141: @ln -sf ${CROSSDIR}/usr/lib \
142: ${CROSSDIR}/usr/`cat ${CROSSDIR}/TARGET_CANON`/lib
143: @-mkdir -p ${CROSSDIR}/usr/obj
144: @-mkdir -p ${CROSSDIR}/usr/bin
145: @-mkdir -p ${CROSSDIR}/usr/`cat ${CROSSDIR}/TARGET_CANON`/bin
146:
147: ${CROSSDIR}/stamp.dirs:
148: @touch ${CROSSDIR}/stamp.dirs
149:
150: cross-includes: cross-dirs
1.63 niklas 151: cd include; \
152: MACHINE=${TARGET} MACHINE_ARCH=`cat ${CROSSDIR}/TARGET_ARCH` \
153: ${MAKE} prereq && \
154: MACHINE=${TARGET} MACHINE_ARCH=`cat ${CROSSDIR}/TARGET_ARCH` \
1.47 imp 155: ${MAKE} DESTDIR=${CROSSDIR} includes
1.15 niklas 156:
1.27 niklas 157: .if ${TARGET} == "powerpc" || ${TARGET} == "alpha" || ${TARGET} == "arc" || \
1.28 mickey 158: ${TARGET} == "pmax" || ${TARGET} == "wgrisc" || ${TARGET} == "hppa"
1.27 niklas 159: cross-binutils: cross-binutils-new
160: .else
161: cross-binutils: cross-binutils-old
162: .endif
163:
1.48 imp 164: cross-binutils-new: cross-dirs
1.15 niklas 165: export BSDSRCDIR=`pwd`; \
166: (cd ${.CURDIR}/gnu/usr.bin/binutils; \
167: BSDOBJDIR=${CROSSDIR}/usr/obj \
168: MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
169: ${MAKE} -f Makefile.bsd-wrapper obj); \
170: (cd ${CROSSDIR}/usr/obj/gnu/usr.bin/binutils; \
1.25 mickey 171: /bin/sh ${BSDSRCDIR}/gnu/usr.bin/binutils/configure \
1.15 niklas 172: --prefix ${CROSSDIR}/usr \
1.59 art 173: --disable-nls --disable-gdbtk --disable-commonbfdlib \
1.15 niklas 174: --target `cat ${CROSSDIR}/TARGET_CANON` && \
1.65 todd 175: ${MAKE} CFLAGS=${CFLAGS} && ${MAKE} install ) && \
1.15 niklas 176: ${INSTALL} -c -o ${BINOWN} -g ${BINGRP} -m 755 \
1.52 mickey 177: ${.CURDIR}/usr.bin/lorder/lorder.sh \
1.35 mickey 178: ${CROSSDIR}/usr/bin/lorder
1.24 niklas 179:
1.29 niklas 180: cross-binutils-old: cross-gas cross-ar cross-ld cross-strip cross-size \
181: cross-ranlib cross-nm
1.64 niklas 182: for cmd in ar as ld nm ranlib size strip; do \
183: ln -sf $$cmd \
184: ${CROSSDIR}/usr/bin/`cat ${CROSSDIR}/TARGET_CANON`-$$cmd; done
1.27 niklas 185:
1.48 imp 186: cross-gas: cross-dirs
1.36 mickey 187: (cd ${.CURDIR}/gnu/usr.bin/gas; \
1.24 niklas 188: BSDOBJDIR=${CROSSDIR}/usr/obj \
189: BSDSRCDIR=${.CURDIR} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
1.32 niklas 190: ${MAKE} obj; \
1.24 niklas 191: TARGET_MACHINE_ARCH=${TARGET} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
1.32 niklas 192: ${MAKE}; \
1.27 niklas 193: TARGET_MACHINE_ARCH=${TARGET} \
194: DESTDIR=${CROSSDIR} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
195: ${MAKE} NOMAN= install)
196: ln -sf ${CROSSDIR}/usr/bin/as \
197: ${CROSSDIR}/usr/`cat ${CROSSDIR}/TARGET_CANON`/bin/as
198:
1.48 imp 199: cross-ld: cross-dirs
1.36 mickey 200: (cd ${.CURDIR}/gnu/usr.bin/ld; \
1.27 niklas 201: BSDOBJDIR=${CROSSDIR}/usr/obj \
202: BSDSRCDIR=${.CURDIR} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
1.32 niklas 203: ${MAKE} obj; \
1.27 niklas 204: TARGET_MACHINE_ARCH=${TARGET} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
1.32 niklas 205: ${MAKE} NOMAN=; \
1.27 niklas 206: TARGET_MACHINE_ARCH=${TARGET} \
207: DESTDIR=${CROSSDIR} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
208: ${MAKE} NOMAN= install)
209: ln -sf ${CROSSDIR}/usr/bin/ld \
210: ${CROSSDIR}/usr/`cat ${CROSSDIR}/TARGET_CANON`/bin/ld
211:
1.48 imp 212: cross-ar: cross-dirs
1.36 mickey 213: (cd ${.CURDIR}/usr.bin/ar; \
1.27 niklas 214: BSDOBJDIR=${CROSSDIR}/usr/obj \
215: BSDSRCDIR=${.CURDIR} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
1.32 niklas 216: ${MAKE} obj; \
217: MAKEOBJDIR=obj.${MACHINE}.${TARGET} ${MAKE} NOMAN=; \
1.24 niklas 218: DESTDIR=${CROSSDIR} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
219: ${MAKE} NOMAN= install)
1.27 niklas 220: ln -sf ${CROSSDIR}/usr/bin/ar \
221: ${CROSSDIR}/usr/`cat ${CROSSDIR}/TARGET_CANON`/bin/ar
1.29 niklas 222:
1.48 imp 223: cross-ranlib: cross-dirs
1.36 mickey 224: (cd ${.CURDIR}/usr.bin/ranlib; \
1.29 niklas 225: BSDOBJDIR=${CROSSDIR}/usr/obj \
226: BSDSRCDIR=${.CURDIR} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
1.32 niklas 227: ${MAKE} obj; \
228: MAKEOBJDIR=obj.${MACHINE}.${TARGET} ${MAKE} NOMAN=; \
1.29 niklas 229: DESTDIR=${CROSSDIR} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
230: ${MAKE} NOMAN= install)
231: ln -sf ${CROSSDIR}/usr/bin/ranlib \
232: ${CROSSDIR}/usr/`cat ${CROSSDIR}/TARGET_CANON`/bin/ranlib
233:
1.48 imp 234: cross-strip: cross-dirs
1.36 mickey 235: (cd ${.CURDIR}/usr.bin/strip; \
1.29 niklas 236: BSDOBJDIR=${CROSSDIR}/usr/obj \
237: BSDSRCDIR=${.CURDIR} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
1.32 niklas 238: ${MAKE} obj; \
1.29 niklas 239: MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
1.32 niklas 240: ${MAKE} TARGET_MACHINE_ARCH=${TARGET} NOMAN=; \
1.29 niklas 241: DESTDIR=${CROSSDIR} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
242: ${MAKE} TARGET_MACHINE_ARCH=${TARGET} NOMAN= install)
243: ln -sf ${CROSSDIR}/usr/bin/strip \
244: ${CROSSDIR}/usr/`cat ${CROSSDIR}/TARGET_CANON`/bin/strip
245:
1.48 imp 246: cross-size: cross-dirs
1.36 mickey 247: (cd ${.CURDIR}/usr.bin/size; \
1.29 niklas 248: BSDOBJDIR=${CROSSDIR}/usr/obj \
249: BSDSRCDIR=${.CURDIR} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
1.32 niklas 250: ${MAKE} obj; \
251: MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
252: ${MAKE} TARGET_MACHINE_ARCH=${TARGET} NOMAN=; \
1.29 niklas 253: DESTDIR=${CROSSDIR} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
254: ${MAKE} NOMAN= install)
255: ln -sf ${CROSSDIR}/usr/bin/size \
256: ${CROSSDIR}/usr/`cat ${CROSSDIR}/TARGET_CANON`/bin/size
257:
1.48 imp 258: cross-nm: cross-dirs
1.36 mickey 259: (cd ${.CURDIR}/usr.bin/nm; \
1.29 niklas 260: BSDOBJDIR=${CROSSDIR}/usr/obj \
261: BSDSRCDIR=${.CURDIR} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
1.32 niklas 262: ${MAKE} obj; \
263: MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
264: ${MAKE} TARGET_MACHINE_ARCH=${TARGET} NOMAN=; \
1.29 niklas 265: DESTDIR=${CROSSDIR} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
266: ${MAKE} NOMAN= install)
267: ln -sf ${CROSSDIR}/usr/bin/nm \
268: ${CROSSDIR}/usr/`cat ${CROSSDIR}/TARGET_CANON`/bin/nm
1.15 niklas 269:
1.48 imp 270: cross-gcc: cross-dirs
1.52 mickey 271: cd ${.CURDIR}/gnu/egcs/gcc; \
1.15 niklas 272: BSDOBJDIR=${CROSSDIR}/usr/obj BSDSRCDIR=${.CURDIR} \
273: MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
1.32 niklas 274: ${MAKE} -f Makefile.bsd-wrapper obj
1.52 mickey 275: (cd ${CROSSDIR}/usr/obj/gnu/egcs/gcc; \
276: /bin/sh ${.CURDIR}/gnu/egcs/gcc/configure \
1.15 niklas 277: --prefix ${CROSSDIR}/usr \
278: --target `cat ${CROSSDIR}/TARGET_CANON` && \
1.63 niklas 279: PATH=${CROSSPATH} ${MAKE} BISON=yacc LANGUAGES=c \
280: LDFLAGS=${LDSTATIC} build_infodir=. \
1.62 mickey 281: GCC_FOR_TARGET="./xgcc -B./ -I${CROSSDIR}/usr/include" && \
1.26 mickey 282: ${MAKE} BISON=yacc LANGUAGES=c LDFLAGS=${LDSTATIC} \
1.62 mickey 283: GCC_FOR_TARGET="./xgcc -B./ -I${CROSSDIR}/usr/include" \
1.32 niklas 284: build_infodir=. INSTALL_MAN= INSTALL_HEADERS_DIR= install)
1.31 niklas 285: ln -sf ${CROSSDIR}/usr/bin/`cat ${CROSSDIR}/TARGET_CANON`-gcc \
286: ${CROSSDIR}/usr/bin/cc
1.63 niklas 287: ${INSTALL} -c -o ${BINOWN} -g ${BINGRP} -m ${BINMODE} \
288: ${CROSSDIR}/usr/obj/gnu/egcs/gcc/xcpp \
289: ${CROSSDIR}/usr/libexec/cpp
290: sed -e 's#/usr/libexec/cpp#${CROSSDIR}/usr/libexec/cpp#' \
1.36 mickey 291: -e 's#/usr/include#${CROSSDIR}/usr/include#' \
292: ${.CURDIR}/usr.bin/cpp/cpp.sh > ${CROSSDIR}/usr/bin/cpp
1.31 niklas 293: chmod ${BINMODE} ${CROSSDIR}/usr/bin/cpp
1.63 niklas 294: chown ${BINOWN}:${BINGRP} ${CROSSDIR}/usr/bin/cpp
1.32 niklas 295:
1.46 niklas 296: # XXX MAKEOBJDIR maybe should be obj.${TARGET} here, revisit later
1.48 imp 297: cross-lib: cross-dirs
1.32 niklas 298: MACHINE=${TARGET} MACHINE_ARCH=`cat ${CROSSDIR}/TARGET_ARCH`; \
299: export MACHINE MACHINE_ARCH; \
1.36 mickey 300: (cd ${.CURDIR}/lib; \
1.32 niklas 301: BSDOBJDIR=${CROSSDIR}/usr/obj \
302: BSDSRCDIR=${.CURDIR} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
303: ${MAKE} obj; \
304: for lib in csu libc; do \
305: (cd $$lib; \
1.34 niklas 306: ${CROSSENV} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
1.46 niklas 307: ${MAKE} NOMAN= depend; \
308: ${CROSSENV} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
1.34 niklas 309: ${MAKE} NOMAN=; \
1.39 mickey 310: ${CROSSENV} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
311: DESTDIR=${CROSSDIR} ${MAKE} NOMAN= install); \
1.32 niklas 312: done; \
1.46 niklas 313: ${CROSSENV} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
314: ${MAKE} NOMAN= depend; \
1.34 niklas 315: ${CROSSENV} MAKEOBJDIR=obj.${MACHINE}.${TARGET} ${MAKE} NOMAN=; \
1.39 mickey 316: ${CROSSENV} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
317: DESTDIR=${CROSSDIR} SKIPDIR=libocurses/PSD.doc \
318: ${MAKE} NOMAN= install)
1.58 espie 319: .if (${KERBEROS:L} == "yes")
1.63 niklas 320: MACHINE=${TARGET} MACHINE_ARCH=`cat ${CROSSDIR}/TARGET_ARCH`; \
321: export MACHINE MACHINE_ARCH; \
322: cd kerberosIV/lib; \
323: BSDOBJDIR=${CROSSDIR}/usr/obj BSDSRCDIR=${.CURDIR} \
324: MAKEOBJDIR=obj.${MACHINE}.${TARGET} ${MAKE} obj; \
325: ${CROSSENV} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
326: ${MAKE} NOMAN= depend; \
327: ${CROSSENV} MAKEOBJDIR=obj.${MACHINE}.${TARGET} ${MAKE} NOMAN=; \
328: ${CROSSENV} DESTDIR=${CROSSDIR} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \
329: ${MAKE} NOMAN= install
1.47 imp 330: .endif
1.15 niklas 331: .endif
1.1 deraadt 332:
333: .include <bsd.subdir.mk>