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