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