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