Don't build shared libraries twice for `make world'. This reduces
`make world' times by about 10%. Use a new `bootstrap-libraries' target to build just enough (static) libraries to bootstrap the tools, and delay building of shared libraries until all the tools have been built. Fixed `/usr/bin/make world'. The version of `make' that we buildis nand use is named "make", not ${MAKE}.
This commit is contained in:
parent
3a34dbf728
commit
29844c8f14
122
Makefile
122
Makefile
@ -1,5 +1,5 @@
|
||||
#
|
||||
# $Id: Makefile,v 1.168 1998/03/26 17:32:24 markm Exp $
|
||||
# $Id: Makefile,v 1.169 1998/04/19 13:44:52 dt Exp $
|
||||
#
|
||||
# While porting to the another architecture include the bootstrap instead
|
||||
# of the normal build.
|
||||
@ -73,7 +73,8 @@ SUBDIR+= games
|
||||
.if exists(gnu)
|
||||
SUBDIR+= gnu
|
||||
.endif
|
||||
.if exists(kerberosIV) && exists(crypto) && !defined(NOCRYPT) && defined(MAKE_KERBEROS4)
|
||||
.if exists(kerberosIV) && exists(crypto) && !defined(NOCRYPT) && \
|
||||
defined(MAKE_KERBEROS4)
|
||||
SUBDIR+= kerberosIV
|
||||
.endif
|
||||
.if exists(libexec)
|
||||
@ -144,9 +145,9 @@ SUPFLAGS?= -v
|
||||
# XXX actually, we do need to waste time building shared libraries.
|
||||
#
|
||||
.if defined(NOCLEAN)
|
||||
MK_FLAGS= -DNOINFO -DNOMAN -DNOPROFILE
|
||||
MK_FLAGS= -DNOINFO -DNOMAN -DNOPROFILE
|
||||
.else
|
||||
MK_FLAGS= -DNOINFO -DNOMAN -DNOPROFILE -DNOSHARED
|
||||
MK_FLAGS= -DNOINFO -DNOMAN -DNOPIC -DNOPROFILE -DNOSHARED
|
||||
.endif
|
||||
|
||||
#
|
||||
@ -211,11 +212,11 @@ XMAKEENV= PATH=${STRICTTMPPATH} ${COMPILER_ENV} \
|
||||
MAKETMP= ${WORLDTMP}/make
|
||||
IBMAKE= ${BMAKEENV} MAKEOBJDIR=${MAKETMP} ${MAKE} DESTDIR=${WORLDTMP}
|
||||
# bootstrap make
|
||||
BMAKE= ${BMAKEENV} ${WORLDTMP}/usr/bin/${MAKE} DESTDIR=${WORLDTMP}
|
||||
BMAKE= ${BMAKEENV} ${WORLDTMP}/usr/bin/make DESTDIR=${WORLDTMP}
|
||||
# cross make used for compilation
|
||||
XMAKE= ${XMAKEENV} ${WORLDTMP}/usr/bin/${MAKE} DESTDIR=${WORLDTMP}
|
||||
XMAKE= ${XMAKEENV} ${WORLDTMP}/usr/bin/make DESTDIR=${WORLDTMP}
|
||||
# cross make used for final installation
|
||||
IXMAKE= ${XMAKEENV} ${WORLDTMP}/usr/bin/${MAKE}
|
||||
IXMAKE= ${XMAKEENV} ${WORLDTMP}/usr/bin/make
|
||||
|
||||
#
|
||||
# buildworld
|
||||
@ -286,15 +287,15 @@ buildworld:
|
||||
.if !defined(NOTOOLS)
|
||||
@echo
|
||||
@echo "--------------------------------------------------------------"
|
||||
@echo " Rebuilding tools needed to build the libraries"
|
||||
@echo " Rebuilding tools needed to build the bootstrap libraries"
|
||||
@echo "--------------------------------------------------------------"
|
||||
cd ${.CURDIR} && ${BMAKE} lib-tools
|
||||
.endif
|
||||
@echo
|
||||
@echo "--------------------------------------------------------------"
|
||||
@echo " Rebuilding ${DESTDIR}/usr/lib"
|
||||
@echo " Rebuilding bootstrap libraries"
|
||||
@echo "--------------------------------------------------------------"
|
||||
cd ${.CURDIR} && ${BMAKE} libraries
|
||||
cd ${.CURDIR} && ${BMAKE} bootstrap-libraries
|
||||
.if !defined(NOTOOLS)
|
||||
@echo
|
||||
@echo "--------------------------------------------------------------"
|
||||
@ -309,6 +310,11 @@ buildworld:
|
||||
cd ${.CURDIR} && ${XMAKE} par-depend
|
||||
@echo
|
||||
@echo "--------------------------------------------------------------"
|
||||
@echo " Building libraries"
|
||||
@echo "--------------------------------------------------------------"
|
||||
cd ${.CURDIR} && ${XMAKE} libraries
|
||||
@echo
|
||||
@echo "--------------------------------------------------------------"
|
||||
@echo " Building everything.."
|
||||
@echo "--------------------------------------------------------------"
|
||||
cd ${.CURDIR} && ${XMAKE} all
|
||||
@ -574,29 +580,10 @@ lib-tools:
|
||||
.endfor
|
||||
|
||||
#
|
||||
# libraries - build and install the libraries
|
||||
# We have to know too much about ordering and subdirs in the lib trees:
|
||||
#
|
||||
|
||||
# We have to know too much about botches in the lib tree:
|
||||
.if exists(csu/${MACHINE}.pcc)
|
||||
_csu=csu/${MACHINE}.pcc
|
||||
.else
|
||||
_csu=csu/${MACHINE}
|
||||
.endif
|
||||
|
||||
.if defined(WANT_CSRG_LIBM)
|
||||
_libm= libm
|
||||
.else
|
||||
_libm= msun
|
||||
.endif
|
||||
|
||||
libraries:
|
||||
#
|
||||
# Build csu early so that some tools get linked to the new version (too
|
||||
# late for the main tools, however).
|
||||
#
|
||||
# To satisfy shared library or ELF linkage when only the libraries being
|
||||
# built are visible:
|
||||
# To satisfy shared library linkage when only the libraries being built
|
||||
# are visible:
|
||||
#
|
||||
# libcom_err must be built before libss.
|
||||
# libcrypt and libmd must be built before libskey.
|
||||
@ -605,16 +592,45 @@ libraries:
|
||||
# libncurses must be built before libdialog.
|
||||
# libtermcap must be built before libcurses, libedit and libreadline.
|
||||
#
|
||||
.for _lib in ${_csu} libcom_err libcrypt ${_libm} libmytinfo \
|
||||
libncurses libtermcap
|
||||
.if exists(${.CURDIR}/lib/${_lib})
|
||||
cd ${.CURDIR}/lib/${_lib} && \
|
||||
${MAKE} ${MK_FLAGS:S/-DNOPIC//} depend && \
|
||||
${MAKE} ${MK_FLAGS:S/-DNOPIC//} all && \
|
||||
${MAKE} ${MK_FLAGS:S/-DNOPIC//} -B install
|
||||
# Some libraries are built conditionally and/or are in inconsistently
|
||||
# named directories:
|
||||
#
|
||||
.if exists(lib/csu/${MACHINE}.pcc)
|
||||
_csu=lib/csu/${MACHINE}.pcc
|
||||
.else
|
||||
_csu=lib/csu/${MACHINE}
|
||||
.endif
|
||||
.endfor
|
||||
.for _lib in gnu/lib lib usr.bin/lex/lib usr.sbin/pcvt/keycap
|
||||
|
||||
_libcrypt= lib/libcrypt
|
||||
.if !defined(NOSECURE) && !defined(NOCRYPT)
|
||||
_libcrypt+= secure/lib/libcrypt
|
||||
.endif
|
||||
|
||||
.if defined(WANT_CSRG_LIBM)
|
||||
_libm= lib/libm
|
||||
.else
|
||||
_libm= lib/msun
|
||||
.endif
|
||||
|
||||
#
|
||||
# bootstrap-libraries - build just enough libraries for the bootstrap
|
||||
# tools, and install them under ${WORLDTMP}.
|
||||
#
|
||||
# Build csu and libgcc early so that some tools get linked to the new
|
||||
# versions (too late for the main tools, however). Then build the
|
||||
# necessary prerequisite libraries (libtermcap just needs to be before
|
||||
# libcurses, and this only matters for the NOCLEAN case when NOPIC is
|
||||
# not set).
|
||||
#
|
||||
# This is mostly wrong. The build tools must run on the host system,
|
||||
# so they should use host libraries. We depend on the target being
|
||||
# similar enough to the host for new target libraries to work on the
|
||||
# host.
|
||||
#
|
||||
bootstrap-libraries:
|
||||
.for _lib in ${_csu} gnu/usr.bin/cc/libgcc lib/libtermcap \
|
||||
gnu/lib/libregex lib/libc lib/libcurses lib/libedit ${_libm} \
|
||||
lib/libmd lib/libutil lib/libz usr.bin/lex/lib
|
||||
.if exists(${.CURDIR}/${_lib})
|
||||
cd ${.CURDIR}/${_lib} && \
|
||||
${MAKE} ${MK_FLAGS} depend && \
|
||||
@ -622,16 +638,28 @@ libraries:
|
||||
${MAKE} ${MK_FLAGS} -B install ${CLEANDIR} ${OBJDIR}
|
||||
.endif
|
||||
.endfor
|
||||
|
||||
#
|
||||
# libraries - build all libraries, and install them under ${DESTDIR}.
|
||||
#
|
||||
# The ordering is not as special as for bootstrap-libraries. Build
|
||||
# the prerequisites first, then build almost everything else in
|
||||
# alphabetical order.
|
||||
#
|
||||
libraries:
|
||||
.for _lib in lib/libcom_err ${_libcrypt} ${_libm} lib/libmytinfo \
|
||||
lib/libncurses lib/libtermcap \
|
||||
gnu/lib gnu/usr.bin/cc/libgcc lib usr.bin/lex/lib usr.sbin/pcvt/keycap
|
||||
.if exists(${.CURDIR}/${_lib})
|
||||
cd ${.CURDIR}/${_lib} && ${MAKE} all && ${MAKE} -B install
|
||||
.endif
|
||||
.endfor
|
||||
.if exists(${.CURDIR}/secure/lib) && !defined(NOCRYPT) && !defined(NOSECURE)
|
||||
cd ${.CURDIR}/secure/lib && ${MAKE} ${MK_FLAGS} depend && \
|
||||
${MAKE} ${MK_FLAGS} all && \
|
||||
${MAKE} ${MK_FLAGS} -B install ${CLEANDIR} ${OBJDIR}
|
||||
cd ${.CURDIR}/secure/lib && ${MAKE} all && ${MAKE} -B install
|
||||
.endif
|
||||
.if exists(${.CURDIR}/kerberosIV/lib) && !defined(NOCRYPT) && \
|
||||
defined(MAKE_KERBEROS4)
|
||||
cd ${.CURDIR}/kerberosIV/lib && ${MAKE} ${MK_FLAGS} depend && \
|
||||
${MAKE} ${MK_FLAGS} all && \
|
||||
${MAKE} ${MK_FLAGS} -B install ${CLEANDIR} ${OBJDIR}
|
||||
cd ${.CURDIR}/kerberosIV/lib && ${MAKE} all && ${MAKE} -B install
|
||||
.endif
|
||||
|
||||
#
|
||||
|
Loading…
Reference in New Issue
Block a user