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