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