Makefile revision 1.66
1# $OpenBSD: Makefile,v 1.66 2001/05/14 12:34:26 espie 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:L} == "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 && exec ${MAKE} regress 57.endif 58 59includes: 60 cd ${.CURDIR}/include && ${MAKE} prereq && exec ${MAKE} includes 61 62beforeinstall: 63 cd ${.CURDIR}/etc && exec ${MAKE} DESTDIR=${DESTDIR} distrib-dirs 64 cd ${.CURDIR}/include && exec ${MAKE} includes 65 66afterinstall: 67.ifndef NOMAN 68 cd ${.CURDIR}/share/man && exec ${MAKE} makedb 69.endif 70 71build: 72.ifdef GLOBAL_AUTOCONF_CACHE 73 cp /dev/null ${GLOBAL_AUTOCONF_CACHE} 74.endif 75 cd ${.CURDIR}/share/mk && exec ${SUDO} ${MAKE} install 76 cd ${.CURDIR}/include && ${MAKE} prereq && exec ${SUDO} ${MAKE} includes 77 ${SUDO} ${MAKE} cleandir 78 cd ${.CURDIR}/lib && ${MAKE} depend && ${MAKE} && \ 79 NOMAN=1 exec ${SUDO} ${MAKE} install 80 cd ${.CURDIR}/gnu/lib && ${MAKE} depend && ${MAKE} && \ 81 NOMAN=1 exec ${SUDO} ${MAKE} install 82.if (${KERBEROS:L} == "yes") 83 cd ${.CURDIR}/kerberosIV/lib && ${MAKE} depend && ${MAKE} && \ 84 NOMAN=1 exec ${SUDO} ${MAKE} install 85.endif 86 cd ${.CURDIR}/gnu/usr.bin/perl && \ 87 ${MAKE} -f Makefile.bsd-wrapper depend && \ 88 ${MAKE} -f Makefile.bsd-wrapper perl.lib && \ 89 exec ${SUDO} ${MAKE} -f Makefile.bsd-wrapper install.lib 90.if (${MACHINE_ARCH} == "mips") 91 ldconfig -R 92.endif 93 ${MAKE} depend && ${MAKE} && exec ${SUDO} ${MAKE} install 94 95.if !defined(TARGET) 96cross-tools: 97 echo "TARGET must be set"; exit 1 98.else 99cross-tools: cross-helpers cross-dirs cross-includes cross-binutils \ 100 cross-gcc cross-lib 101 102CROSSDIR= ${DESTDIR}/usr/cross/${TARGET} 103CROSSENV= AR=${CROSSDIR}/usr/bin/ar AS=${CROSSDIR}/usr/bin/as \ 104 CC=${CROSSDIR}/usr/bin/cc CPP=${CROSSDIR}/usr/bin/cpp \ 105 LD=${CROSSDIR}/usr/bin/ld NM=${CROSSDIR}/usr/bin/nm \ 106 LORDER=${CROSSDIR}/usr/bin/lorder \ 107 RANLIB=${CROSSDIR}/usr/bin/ranlib \ 108 SIZE=${CROSSDIR}/usr/bin/size STRIP=${CROSSDIR}/usr/bin/strip \ 109 HOSTCC=cc 110CROSSPATH= ${PATH}:${CROSSDIR}/usr/bin 111 112cross-helpers: 113 mkdir -p ${CROSSDIR} 114 echo _MACHINE_ARCH | \ 115 cat ${.CURDIR}/sys/arch/${TARGET}/include/param.h - | \ 116 ${CPP} -E -I${.CURDIR}/sys/arch | \ 117 sed -n '$$p' >${CROSSDIR}/TARGET_ARCH 118# GROSS KLUDGE MACHINE_ARCH is mips, but we use mipsel for gnu tools. 119.if ${TARGET} == "arc" || ${TARGET} == "pmax" 120 eval `grep '^osr=' sys/conf/newvers.sh`; \ 121 sed "s/\$$/el-unknown-openbsd$$osr/" ${CROSSDIR}/TARGET_ARCH > \ 122 ${CROSSDIR}/TARGET_CANON 123.else 124 eval `grep '^osr=' sys/conf/newvers.sh`; \ 125 sed "s/\$$/-unknown-openbsd$$osr/" ${CROSSDIR}/TARGET_ARCH > \ 126 ${CROSSDIR}/TARGET_CANON 127.endif 128 129cross-dirs: ${CROSSDIR}/stamp.dirs 130 @-mkdir -p ${CROSSDIR} 131 @-mkdir -p ${CROSSDIR}/usr/obj 132 @-mkdir -p ${CROSSDIR}/usr/bin 133 @-mkdir -p ${CROSSDIR}/usr/include 134 @-mkdir -p ${CROSSDIR}/usr/include/kerberosIV 135 @-mkdir -p ${CROSSDIR}/usr/lib 136 @-mkdir -p ${CROSSDIR}/usr/libexec 137 @-mkdir -p ${CROSSDIR}/var/db 138 @-mkdir -p ${CROSSDIR}/usr/`cat ${CROSSDIR}/TARGET_CANON` 139 @ln -sf ${CROSSDIR}/usr/include \ 140 ${CROSSDIR}/usr/`cat ${CROSSDIR}/TARGET_CANON`/include 141 @ln -sf ${CROSSDIR}/usr/lib \ 142 ${CROSSDIR}/usr/`cat ${CROSSDIR}/TARGET_CANON`/lib 143 @-mkdir -p ${CROSSDIR}/usr/obj 144 @-mkdir -p ${CROSSDIR}/usr/bin 145 @-mkdir -p ${CROSSDIR}/usr/`cat ${CROSSDIR}/TARGET_CANON`/bin 146 147${CROSSDIR}/stamp.dirs: 148 @touch ${CROSSDIR}/stamp.dirs 149 150cross-includes: cross-dirs 151 cd include; \ 152 MACHINE=${TARGET} MACHINE_ARCH=`cat ${CROSSDIR}/TARGET_ARCH` \ 153 ${MAKE} prereq && \ 154 MACHINE=${TARGET} MACHINE_ARCH=`cat ${CROSSDIR}/TARGET_ARCH` \ 155 ${MAKE} DESTDIR=${CROSSDIR} includes 156 157.if ${TARGET} == "powerpc" || ${TARGET} == "alpha" || ${TARGET} == "arc" || \ 158 ${TARGET} == "pmax" || ${TARGET} == "wgrisc" || ${TARGET} == "hppa" 159cross-binutils: cross-binutils-new 160.else 161cross-binutils: cross-binutils-old 162.endif 163 164cross-binutils-new: cross-dirs 165 export BSDSRCDIR=`pwd`; \ 166 (cd ${.CURDIR}/gnu/usr.bin/binutils; \ 167 BSDOBJDIR=${CROSSDIR}/usr/obj \ 168 MAKEOBJDIR=obj.${MACHINE}.${TARGET} \ 169 ${MAKE} -f Makefile.bsd-wrapper obj); \ 170 (cd ${CROSSDIR}/usr/obj/gnu/usr.bin/binutils; \ 171 /bin/sh ${BSDSRCDIR}/gnu/usr.bin/binutils/configure \ 172 --prefix ${CROSSDIR}/usr \ 173 --disable-nls --disable-gdbtk --disable-commonbfdlib \ 174 --target `cat ${CROSSDIR}/TARGET_CANON` && \ 175 ${MAKE} CFLAGS=${CFLAGS} && ${MAKE} install ) && \ 176 ${INSTALL} -c -o ${BINOWN} -g ${BINGRP} -m 755 \ 177 ${.CURDIR}/usr.bin/lorder/lorder.sh \ 178 ${CROSSDIR}/usr/bin/lorder 179 180cross-binutils-old: cross-gas cross-ar cross-ld cross-strip cross-size \ 181 cross-ranlib cross-nm 182 for cmd in ar as ld nm ranlib size strip; do \ 183 ln -sf $$cmd \ 184 ${CROSSDIR}/usr/bin/`cat ${CROSSDIR}/TARGET_CANON`-$$cmd; done 185 186cross-gas: cross-dirs 187 (cd ${.CURDIR}/gnu/usr.bin/gas; \ 188 BSDOBJDIR=${CROSSDIR}/usr/obj \ 189 BSDSRCDIR=${.CURDIR} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \ 190 ${MAKE} obj; \ 191 TARGET_MACHINE_ARCH=${TARGET} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \ 192 ${MAKE}; \ 193 TARGET_MACHINE_ARCH=${TARGET} \ 194 DESTDIR=${CROSSDIR} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \ 195 ${MAKE} NOMAN= install) 196 ln -sf ${CROSSDIR}/usr/bin/as \ 197 ${CROSSDIR}/usr/`cat ${CROSSDIR}/TARGET_CANON`/bin/as 198 199cross-ld: cross-dirs 200 (cd ${.CURDIR}/gnu/usr.bin/ld; \ 201 BSDOBJDIR=${CROSSDIR}/usr/obj \ 202 BSDSRCDIR=${.CURDIR} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \ 203 ${MAKE} obj; \ 204 TARGET_MACHINE_ARCH=${TARGET} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \ 205 ${MAKE} NOMAN=; \ 206 TARGET_MACHINE_ARCH=${TARGET} \ 207 DESTDIR=${CROSSDIR} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \ 208 ${MAKE} NOMAN= install) 209 ln -sf ${CROSSDIR}/usr/bin/ld \ 210 ${CROSSDIR}/usr/`cat ${CROSSDIR}/TARGET_CANON`/bin/ld 211 212cross-ar: cross-dirs 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: cross-dirs 224 (cd ${.CURDIR}/usr.bin/ranlib; \ 225 BSDOBJDIR=${CROSSDIR}/usr/obj \ 226 BSDSRCDIR=${.CURDIR} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \ 227 ${MAKE} obj; \ 228 MAKEOBJDIR=obj.${MACHINE}.${TARGET} ${MAKE} NOMAN=; \ 229 DESTDIR=${CROSSDIR} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \ 230 ${MAKE} NOMAN= install) 231 ln -sf ${CROSSDIR}/usr/bin/ranlib \ 232 ${CROSSDIR}/usr/`cat ${CROSSDIR}/TARGET_CANON`/bin/ranlib 233 234cross-strip: cross-dirs 235 (cd ${.CURDIR}/usr.bin/strip; \ 236 BSDOBJDIR=${CROSSDIR}/usr/obj \ 237 BSDSRCDIR=${.CURDIR} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \ 238 ${MAKE} obj; \ 239 MAKEOBJDIR=obj.${MACHINE}.${TARGET} \ 240 ${MAKE} TARGET_MACHINE_ARCH=${TARGET} NOMAN=; \ 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 246cross-size: cross-dirs 247 (cd ${.CURDIR}/usr.bin/size; \ 248 BSDOBJDIR=${CROSSDIR}/usr/obj \ 249 BSDSRCDIR=${.CURDIR} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \ 250 ${MAKE} obj; \ 251 MAKEOBJDIR=obj.${MACHINE}.${TARGET} \ 252 ${MAKE} TARGET_MACHINE_ARCH=${TARGET} NOMAN=; \ 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 258cross-nm: cross-dirs 259 (cd ${.CURDIR}/usr.bin/nm; \ 260 BSDOBJDIR=${CROSSDIR}/usr/obj \ 261 BSDSRCDIR=${.CURDIR} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \ 262 ${MAKE} obj; \ 263 MAKEOBJDIR=obj.${MACHINE}.${TARGET} \ 264 ${MAKE} TARGET_MACHINE_ARCH=${TARGET} NOMAN=; \ 265 DESTDIR=${CROSSDIR} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \ 266 ${MAKE} NOMAN= install) 267 ln -sf ${CROSSDIR}/usr/bin/nm \ 268 ${CROSSDIR}/usr/`cat ${CROSSDIR}/TARGET_CANON`/bin/nm 269 270cross-gcc: cross-dirs 271 cd ${.CURDIR}/gnu/egcs/gcc; \ 272 BSDOBJDIR=${CROSSDIR}/usr/obj BSDSRCDIR=${.CURDIR} \ 273 MAKEOBJDIR=obj.${MACHINE}.${TARGET} \ 274 ${MAKE} -f Makefile.bsd-wrapper obj 275 (cd ${CROSSDIR}/usr/obj/gnu/egcs/gcc; \ 276 /bin/sh ${.CURDIR}/gnu/egcs/gcc/configure \ 277 --prefix ${CROSSDIR}/usr \ 278 --target `cat ${CROSSDIR}/TARGET_CANON` && \ 279 PATH=${CROSSPATH} ${MAKE} BISON=yacc LANGUAGES=c \ 280 LDFLAGS=${LDSTATIC} build_infodir=. \ 281 GCC_FOR_TARGET="./xgcc -B./ -I${CROSSDIR}/usr/include" && \ 282 ${MAKE} BISON=yacc LANGUAGES=c LDFLAGS=${LDSTATIC} \ 283 GCC_FOR_TARGET="./xgcc -B./ -I${CROSSDIR}/usr/include" \ 284 build_infodir=. INSTALL_MAN= INSTALL_HEADERS_DIR= install) 285 ln -sf ${CROSSDIR}/usr/bin/`cat ${CROSSDIR}/TARGET_CANON`-gcc \ 286 ${CROSSDIR}/usr/bin/cc 287 ${INSTALL} -c -o ${BINOWN} -g ${BINGRP} -m ${BINMODE} \ 288 ${CROSSDIR}/usr/obj/gnu/egcs/gcc/xcpp \ 289 ${CROSSDIR}/usr/libexec/cpp 290 sed -e 's#/usr/libexec/cpp#${CROSSDIR}/usr/libexec/cpp#' \ 291 -e 's#/usr/include#${CROSSDIR}/usr/include#' \ 292 ${.CURDIR}/usr.bin/cpp/cpp.sh > ${CROSSDIR}/usr/bin/cpp 293 chmod ${BINMODE} ${CROSSDIR}/usr/bin/cpp 294 chown ${BINOWN}:${BINGRP} ${CROSSDIR}/usr/bin/cpp 295 296# XXX MAKEOBJDIR maybe should be obj.${TARGET} here, revisit later 297cross-lib: cross-dirs 298 MACHINE=${TARGET} MACHINE_ARCH=`cat ${CROSSDIR}/TARGET_ARCH`; \ 299 export MACHINE MACHINE_ARCH; \ 300 (cd ${.CURDIR}/lib; \ 301 BSDOBJDIR=${CROSSDIR}/usr/obj \ 302 BSDSRCDIR=${.CURDIR} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \ 303 ${MAKE} obj; \ 304 for lib in csu libc; do \ 305 (cd $$lib; \ 306 ${CROSSENV} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \ 307 ${MAKE} NOMAN= depend; \ 308 ${CROSSENV} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \ 309 ${MAKE} NOMAN=; \ 310 ${CROSSENV} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \ 311 DESTDIR=${CROSSDIR} ${MAKE} NOMAN= install); \ 312 done; \ 313 ${CROSSENV} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \ 314 ${MAKE} NOMAN= depend; \ 315 ${CROSSENV} MAKEOBJDIR=obj.${MACHINE}.${TARGET} ${MAKE} NOMAN=; \ 316 ${CROSSENV} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \ 317 DESTDIR=${CROSSDIR} SKIPDIR=libocurses/PSD.doc \ 318 ${MAKE} NOMAN= install) 319.if (${KERBEROS:L} == "yes") 320 MACHINE=${TARGET} MACHINE_ARCH=`cat ${CROSSDIR}/TARGET_ARCH`; \ 321 export MACHINE MACHINE_ARCH; \ 322 cd kerberosIV/lib; \ 323 BSDOBJDIR=${CROSSDIR}/usr/obj BSDSRCDIR=${.CURDIR} \ 324 MAKEOBJDIR=obj.${MACHINE}.${TARGET} ${MAKE} obj; \ 325 ${CROSSENV} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \ 326 ${MAKE} NOMAN= depend; \ 327 ${CROSSENV} MAKEOBJDIR=obj.${MACHINE}.${TARGET} ${MAKE} NOMAN=; \ 328 ${CROSSENV} DESTDIR=${CROSSDIR} MAKEOBJDIR=obj.${MACHINE}.${TARGET} \ 329 ${MAKE} NOMAN= install 330.endif 331.endif 332 333.include <bsd.subdir.mk> 334