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