From owner-freebsd-hackers Sun Oct 25 05:48:10 1998 Return-Path: Received: (from majordom@localhost) by hub.freebsd.org (8.8.8/8.8.8) id FAA14050 for freebsd-hackers-outgoing; Sun, 25 Oct 1998 05:48:10 -0800 (PST) (envelope-from owner-freebsd-hackers@FreeBSD.ORG) Received: from TomQNX.tomqnx.com (cpu2745.adsl.bellglobal.com [207.236.55.214]) by hub.freebsd.org (8.8.8/8.8.8) with ESMTP id FAA14045 for ; Sun, 25 Oct 1998 05:48:07 -0800 (PST) (envelope-from freebsd@tomqnx.com) Received: by TomQNX.tomqnx.com (Smail3.2 #1) id m0zXQW5-000IAPC; Sun, 25 Oct 1998 08:47:33 -0500 (EST) Message-Id: From: freebsd@tomqnx.com (Tom Torrance) Subject: Broken Source Tree To: hackers@FreeBSD.ORG Date: Sun, 25 Oct 1998 08:47:32 -0500 (EST) X-Mailer: ELM [version 2.4ME+ PL43 (25)] MIME-Version: 1.0 Content-Type: multipart/mixed; boundary=ELM909323252-555-0_ Content-Transfer-Encoding: 7bit Sender: owner-freebsd-hackers@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.ORG --ELM909323252-555-0_ Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit I believe that I have discovered a serious problem with the source tree for 2.2.7-RELEASE and later. Someone that really understands the make world process should check me out on this - I don't pretend to understand it perfectly! Problem Summary: Changes to the /usr/share/mk makefiles are not being made, and about 20 'leaf nodes' on the source tree are not being installed properly as a result of the make world process. To list them: grep afterinstall `find /usr/src -name Makefile -print` | grep -v /lkm/ ISSUE #1: Because the 'afterinstall' target gets broken, and 'make world' etc. is forced to operate from the /usr/share/mk set of files rather that the /usr/src/share/mk set, new versions of the mk files never get installed. Proposed Solution: Remove the conditional test in /usr/src/Makefile to ensure that 'make world' 'make buildworld' and 'make installworld' use the updated mk files provided under /usr/src/share/mk. ISSUE #2: the makefiles bsd.prog.mk and bsd.lib.mk presently corrupt the target 'afterinstall' if it was previously set before those files were called. Proposed Solution: Bracket the lines that modify the 'afterinstall' target with: .if !target(afterinstall) ........... .endif in both bsd.prog.mk and bsd.lib.mk. Please copy any responses directly to my e-mail address as I am not presently receiving hackers. Thank you! Tom --ELM909323252-555-0_ Content-Type: text/plain; charset=ISO-8859-1 Content-Disposition: attachment; filename=Makefile Content-Description: Modified /usr/src/Makefile Content-Transfer-Encoding: 7bit # # $Id: Makefile,v 1.109.2.35 1998/09/07 19:05:21 jkh Exp $ # # Make command line options: # -DCLOBBER will remove /usr/include # -DMAKE_KERBEROS4 to build KerberosIV # # -DNOCLEANDIR run ${MAKE} clean, instead of ${MAKE} cleandir # -DNOCLEAN do not clean at all # -DNOTOOLS do not rebuild any tools first # -DNOCRYPT will prevent building of crypt versions # -DNOLKM do not build loadable kernel modules # -DNOOBJDIR do not run ``${MAKE} obj'' # -DNOPROFILE do not build profiled libraries # -DNOSECURE do not go into secure subdir # -DNOGAMES do not go into games subdir # -DNOSHARE do not go into share subdir # -DNOINFO do not make or install info files # -DNOLIBC_R do not build libc_r. # -DNOPERL do not make or install perl # LOCAL_DIRS="list of dirs" to add additional dirs to the SUBDIR list # # The intended user-driven targets are: # buildworld - rebuild *everything*, including glue to help do upgrades # installworld- install everything built by "buildworld" # world - buildworld + installworld # update - convenient way to update your source tree (eg: sup/cvs) # most - build user commands, no libraries or include files # installmost - install user commands, no libraries or include files # # Standard targets (not defined here) are documented in the makefiles in # /usr/share/mk. These include: # obj depend all install clean cleandepend cleanobj #.if (!make(world)) && (!make(buildworld)) && (!make(installworld)) .MAKEFLAGS:= ${.MAKEFLAGS} -m ${.CURDIR}/share/mk #.endif # Put initial settings here. SUBDIR= # We must do share/info early so that installation of info `dir' # entries works correctly. Do it first since it is less likely to # grow dependencies on include and lib than vice versa. .if exists(share/info) SUBDIR+= share/info .endif # We must do include and lib first so that the perl *.ph generation # works correctly as it uses the header files installed by this. .if exists(include) SUBDIR+= include .endif .if exists(lib) SUBDIR+= lib .endif .if exists(bin) SUBDIR+= bin .endif .if exists(games) && !defined(NOGAMES) SUBDIR+= games .endif .if exists(gnu) SUBDIR+= gnu .endif .if exists(kerberosIV) && exists(crypto) && !defined(NOCRYPT) && defined(MAKE_KERBEROS4) SUBDIR+= kerberosIV .endif .if exists(libexec) SUBDIR+= libexec .endif .if exists(sbin) SUBDIR+= sbin .endif .if exists(share) && !defined(NOSHARE) SUBDIR+= share .endif .if exists(sys) SUBDIR+= sys .endif .if exists(usr.bin) SUBDIR+= usr.bin .endif .if exists(usr.sbin) SUBDIR+= usr.sbin .endif .if exists(secure) && !defined(NOCRYPT) && !defined(NOSECURE) SUBDIR+= secure .endif .if exists(lkm) && !defined(NOLKM) SUBDIR+= lkm .endif # etc must be last for "distribute" to work .if exists(etc) && make(distribute) SUBDIR+= etc .endif # These are last, since it is nice to at least get the base system # rebuilt before you do them. .if defined(LOCAL_DIRS) .for _DIR in ${LOCAL_DIRS} .if exists(${_DIR}) & exists(${_DIR}/Makefile) SUBDIR+= ${_DIR} .endif .endfor .endif # Handle -DNOOBJDIR, -DNOCLEAN and -DNOCLEANDIR .if defined(NOOBJDIR) OBJDIR= .else OBJDIR= obj .endif .if defined(NOCLEAN) CLEANDIR= .else .if defined(NOCLEANDIR) CLEANDIR= clean .else CLEANDIR= cleandir .endif .endif SUP?= cvsup SUPFLAGS?= -g -L 2 -P - # # While building tools for bootstrapping, we dont need to waste time on # profiled libraries or man pages. This speeds things up somewhat. # MK_FLAGS= -DNOINFO -DNOMAN -DNOPROFILE # # world # # Attempt to rebuild and reinstall *everything*, with reasonable chance of # success, regardless of how old your existing system is. # # >> Beware, it overwrites the local build environment! << # world: @echo "--------------------------------------------------------------" @echo "make world started on `LC_TIME=C date`" @echo "--------------------------------------------------------------" .if target(pre-world) @echo @echo "--------------------------------------------------------------" @echo " Making 'pre-world' target" @echo "--------------------------------------------------------------" cd ${.CURDIR} && ${MAKE} pre-world .endif cd ${.CURDIR} && ${MAKE} buildworld cd ${.CURDIR} && ${MAKE} -B installworld .if target(post-world) @echo @echo "--------------------------------------------------------------" @echo " Making 'post-world' target" @echo "--------------------------------------------------------------" cd ${.CURDIR} && ${MAKE} post-world .endif @echo @echo "--------------------------------------------------------------" @echo "make world completed on `LC_TIME=C date`" @echo "--------------------------------------------------------------" .if defined(MAKEOBJDIRPREFIX) WORLDTMP= ${MAKEOBJDIRPREFIX}${.CURDIR}/tmp .else WORLDTMP= /usr/obj${.CURDIR}/tmp .endif STRICTTMPPATH= ${WORLDTMP}/sbin:${WORLDTMP}/usr/sbin:${WORLDTMP}/bin:${WORLDTMP}/usr/bin TMPPATH= ${STRICTTMPPATH}:${PATH} # XXX COMPILER_PATH is needed for finding cc1, ld and as # XXX GCC_EXEC_PREFIX is for *crt.o. It is probably unnecssary now # tbat LIBRARY_PATH is set. We still can't use -nostdlib, since gcc # wouldn't link *crt.o or libgcc if it were used. # XXX LD_LIBRARY_PATH is for ld.so. It is also used by ld, although we don't # want that - all compile-time library paths should be resolved by gcc. # It fails for set[ug]id executables (are any used?). COMPILER_ENV= BISON_SIMPLE=${WORLDTMP}/usr/share/misc/bison.simple \ COMPILER_PATH=${WORLDTMP}/usr/libexec:${WORLDTMP}/usr/bin \ GCC_EXEC_PREFIX=${WORLDTMP}/usr/lib/ \ LD_LIBRARY_PATH=${WORLDTMP}${SHLIBDIR} \ LIBRARY_PATH=${WORLDTMP}${SHLIBDIR}:${WORLDTMP}/usr/lib BMAKEENV= PATH=${TMPPATH} ${COMPILER_ENV} NOEXTRADEPEND=t XMAKEENV= PATH=${STRICTTMPPATH} ${COMPILER_ENV} \ CC='cc -nostdinc' # XXX -nostdlib # used to compile and install 'make' in temporary build tree IBMAKE= ${BMAKEENV} ${MAKE} DESTDIR=${WORLDTMP} # bootstrap make BMAKE= ${BMAKEENV} ${WORLDTMP}/usr/bin/${MAKE} DESTDIR=${WORLDTMP} # cross make used for compilation XMAKE= ${XMAKEENV} ${WORLDTMP}/usr/bin/${MAKE} DESTDIR=${WORLDTMP} # cross make used for final installation IXMAKE= ${XMAKEENV} ${WORLDTMP}/usr/bin/${MAKE} # # buildworld # # Attempt to rebuild the entire system, with reasonable chance of # success, regardless of how old your existing system is. # buildworld: .if !defined(NOCLEAN) @echo @echo "--------------------------------------------------------------" @echo " Cleaning up the temporary build tree" @echo "--------------------------------------------------------------" mkdir -p ${WORLDTMP} chflags -R noschg ${WORLDTMP}/ rm -rf ${WORLDTMP} .endif .if !defined(NOTOOLS) @echo @echo "--------------------------------------------------------------" @echo " Making make" @echo "--------------------------------------------------------------" mkdir -p ${WORLDTMP}/usr/bin .if !defined(NOCLEAN) || !defined(NOOBJDIR) cd ${.CURDIR}/usr.bin/make && \ ${IBMAKE} -I${.CURDIR}/share/mk ${CLEANDIR} ${OBJDIR} .endif cd ${.CURDIR}/usr.bin/make && \ ${IBMAKE} -I${.CURDIR}/share/mk depend && \ ${IBMAKE} -I${.CURDIR}/share/mk ${MK_FLAGS} all && \ ${IBMAKE} -I${.CURDIR}/share/mk ${MK_FLAGS} install && \ ${IBMAKE} -I${.CURDIR}/share/mk ${MK_FLAGS} clean cleandepend .endif @echo @echo "--------------------------------------------------------------" @echo " Making hierarchy" @echo "--------------------------------------------------------------" cd ${.CURDIR} && ${BMAKE} hierarchy .if !defined(NOCLEAN) @echo @echo "--------------------------------------------------------------" @echo " Cleaning up the obj tree" @echo "--------------------------------------------------------------" cd ${.CURDIR} && ${BMAKE} par-${CLEANDIR} .endif .if !defined(NOOBJDIR) @echo @echo "--------------------------------------------------------------" @echo " Rebuilding the obj tree" @echo "--------------------------------------------------------------" cd ${.CURDIR} && ${BMAKE} par-obj .endif .if !defined(NOTOOLS) @echo @echo "--------------------------------------------------------------" @echo " Rebuilding bootstrap tools" @echo "--------------------------------------------------------------" cd ${.CURDIR} && ${BMAKE} bootstrap @echo @echo "--------------------------------------------------------------" @echo " Rebuilding tools necessary to build the include files" @echo "--------------------------------------------------------------" cd ${.CURDIR} && ${BMAKE} include-tools .endif @echo @echo "--------------------------------------------------------------" @echo " Rebuilding /usr/include" @echo "--------------------------------------------------------------" cd ${.CURDIR} && SHARED=symlinks ${BMAKE} includes .if !defined(NOTOOLS) @echo @echo "--------------------------------------------------------------" @echo " Rebuilding tools needed to build the libraries" @echo "--------------------------------------------------------------" cd ${.CURDIR} && ${BMAKE} lib-tools .endif @echo @echo "--------------------------------------------------------------" @echo " Rebuilding /usr/lib" @echo "--------------------------------------------------------------" cd ${.CURDIR} && ${BMAKE} libraries .if !defined(NOTOOLS) @echo @echo "--------------------------------------------------------------" @echo " Rebuilding all other tools needed to build the world" @echo "--------------------------------------------------------------" cd ${.CURDIR} && ${BMAKE} build-tools .endif @echo @echo "--------------------------------------------------------------" @echo " Rebuilding dependencies" @echo "--------------------------------------------------------------" cd ${.CURDIR} && ${XMAKE} ${.MAKEFLAGS} par-depend @echo @echo "--------------------------------------------------------------" @echo " Building everything.." @echo "--------------------------------------------------------------" cd ${.CURDIR} && ${XMAKE} all # # installworld # # Installs everything compiled by a 'buildworld'. # installworld: cd ${.CURDIR} && ${IXMAKE} reinstall # # reinstall # # If you have a build server, you can NFS mount the source and obj directories # and do a 'make reinstall' on the *client* to install new binaries from the # most recent server build. # reinstall: @echo "--------------------------------------------------------------" @echo " Making hierarchy" @echo "--------------------------------------------------------------" cd ${.CURDIR} && ${MAKE} hierarchy @echo @echo "--------------------------------------------------------------" @echo " Installing everything.." @echo "--------------------------------------------------------------" cd ${.CURDIR} && ${MAKE} install @echo @echo "--------------------------------------------------------------" @echo " Re-scanning the shared libraries.." @echo "--------------------------------------------------------------" cd ${.CURDIR} && ldconfig -R @echo @echo "--------------------------------------------------------------" @echo " Rebuilding man page indexes" @echo "--------------------------------------------------------------" cd ${.CURDIR}/share/man && ${MAKE} makedb # # update # # Update the source tree, by running sup and/or running cvs to update to the # latest copy. # update: .if defined(SUP_UPDATE) @echo "--------------------------------------------------------------" @echo "Running ${SUP}" @echo "--------------------------------------------------------------" @${SUP} ${SUPFLAGS} ${SUPFILE} .if defined(SUPFILE1) @${SUP} ${SUPFLAGS} ${SUPFILE1} .endif .if defined(SUPFILE2) @${SUP} ${SUPFLAGS} ${SUPFILE2} .endif .endif .if defined(CVS_UPDATE) @echo "--------------------------------------------------------------" @echo "Updating /usr/src from cvs repository" ${CVSROOT} @echo "--------------------------------------------------------------" cd ${.CURDIR} && cvs -q update -P -d -r RELENG_2_2 .endif # # most # # Build most of the user binaries on the existing system libs and includes. # most: @echo "--------------------------------------------------------------" @echo " Building programs only" @echo "--------------------------------------------------------------" cd ${.CURDIR}/bin && ${MAKE} ${.MAKEFLAGS} all cd ${.CURDIR}/sbin && ${MAKE} ${.MAKEFLAGS} all cd ${.CURDIR}/libexec && ${MAKE} ${.MAKEFLAGS} all cd ${.CURDIR}/usr.bin && ${MAKE} ${.MAKEFLAGS} all cd ${.CURDIR}/usr.sbin && ${MAKE} ${.MAKEFLAGS} all cd ${.CURDIR}/gnu/libexec && ${MAKE} ${.MAKEFLAGS} all cd ${.CURDIR}/gnu/usr.bin && ${MAKE} ${.MAKEFLAGS} all cd ${.CURDIR}/gnu/usr.sbin && ${MAKE} ${.MAKEFLAGS} all #.if defined(MAKE_KERBEROS4) && !defined(NOCRYPT) # cd ${.CURDIR}/kerberosIV && ${MAKE} ${.MAKEFLAGS} most #.endif #.if !defined(NOSECURE) && !defined(NOCRYPT) # cd ${.CURDIR}/secure && ${MAKE} ${.MAKEFLAGS} most #.endif # # installmost # # Install the binaries built by the 'most' target. This does not include # libraries or include files. # installmost: @echo "--------------------------------------------------------------" @echo " Installing programs only" @echo "--------------------------------------------------------------" cd ${.CURDIR}/bin && ${MAKE} ${.MAKEFLAGS} install cd ${.CURDIR}/sbin && ${MAKE} ${.MAKEFLAGS} install cd ${.CURDIR}/libexec && ${MAKE} ${.MAKEFLAGS} install cd ${.CURDIR}/usr.bin && ${MAKE} ${.MAKEFLAGS} install cd ${.CURDIR}/usr.sbin && ${MAKE} ${.MAKEFLAGS} install cd ${.CURDIR}/gnu/libexec && ${MAKE} ${.MAKEFLAGS} install cd ${.CURDIR}/gnu/usr.bin && ${MAKE} ${.MAKEFLAGS} install cd ${.CURDIR}/gnu/usr.sbin && ${MAKE} ${.MAKEFLAGS} install #.if defined(MAKE_KERBEROS4) && !defined(NOCRYPT) # cd ${.CURDIR}/kerberos4 && ${MAKE} ${.MAKEFLAGS} installmost #.endif #.if !defined(NOSECURE) && !defined(NOCRYPT) # cd ${.CURDIR}/secure && ${MAKE} ${.MAKEFLAGS} installmost #.endif # # ------------------------------------------------------------------------ # # From here onwards are utility targets used by the 'make world' and # related targets. If your 'world' breaks, you may like to try to fix # the problem and manually run the following targets to attempt to # complete the build. Beware, this is *not* guaranteed to work, you # need to have a pretty good grip on the current state of the system # to attempt to manually finish it. If in doubt, 'make world' again. # # # heirarchy - ensure that all the needed directories are present # hierarchy: cd ${.CURDIR}/etc && ${MAKE} distrib-dirs # # bootstrap - [re]build tools needed to run the actual build, this includes # tools needed by 'make depend', as some tools are needed to generate source # for the dependency information to be gathered from. # bootstrap: .if defined(DESTDIR) rm -f ${DESTDIR}/usr/src/sys ln -s ${.CURDIR}/sys ${DESTDIR}/usr/src cd ${.CURDIR}/include && find -dx . | cpio -dump ${DESTDIR}/usr/include cd ${.CURDIR}/include && make symlinks .endif cd ${.CURDIR}/usr.bin/make && ${MAKE} depend && \ ${MAKE} ${MK_FLAGS} all && \ ${MAKE} ${MK_FLAGS} -B install ${CLEANDIR} ${OBJDIR} cd ${.CURDIR}/usr.bin/xinstall && ${MAKE} depend && \ ${MAKE} ${MK_FLAGS} all && \ ${MAKE} ${MK_FLAGS} -B install ${CLEANDIR} ${OBJDIR} cd ${.CURDIR}/usr.bin/lex && ${MAKE} bootstrap && ${MAKE} depend && \ ${MAKE} ${MK_FLAGS} -DNOLIB all && \ ${MAKE} ${MK_FLAGS} -DNOLIB -B install ${CLEANDIR} .if !defined(NOOBJDIR) cd ${.CURDIR}/usr.bin/lex && ${MAKE} obj .endif # # include-tools - generally the same as 'bootstrap', except that it's for # things that are specifically needed to generate include files. # # XXX should be merged with bootstrap, it's not worth keeeping them separate. # Well, maybe it is now. We force 'cleandepend' here to avoid dependencies # on cleaned away headers in ${WORLDTMP}. # include-tools: cd ${.CURDIR}/usr.bin/rpcgen && ${MAKE} -B cleandepend depend && \ ${MAKE} ${MK_FLAGS} all && \ ${MAKE} ${MK_FLAGS} -B install ${CLEANDIR} ${OBJDIR} # # includes - possibly generate and install the include files. # includes: .if defined(CLOBBER) rm -rf ${DESTDIR}/usr/include/* mtree -deU -f ${.CURDIR}/etc/mtree/BSD.include.dist \ -p ${DESTDIR}/usr/include .endif cd ${.CURDIR}/include && ${MAKE} -B all install cd ${.CURDIR}/gnu/include && ${MAKE} install cd ${.CURDIR}/gnu/lib/libreadline && ${MAKE} beforeinstall cd ${.CURDIR}/gnu/lib/libregex && ${MAKE} beforeinstall cd ${.CURDIR}/gnu/lib/libstdc++ && ${MAKE} beforeinstall cd ${.CURDIR}/gnu/lib/libg++ && ${MAKE} beforeinstall cd ${.CURDIR}/gnu/lib/libdialog && ${MAKE} beforeinstall .if exists(kerberosIV) && !defined(NOCRYPT) && defined(MAKE_KERBEROS4) cd ${.CURDIR}/kerberosIV/lib/libacl && ${MAKE} beforeinstall cd ${.CURDIR}/kerberosIV/lib/libkadm && ${MAKE} beforeinstall cd ${.CURDIR}/kerberosIV/lib/libkafs && ${MAKE} beforeinstall cd ${.CURDIR}/kerberosIV/lib/libkdb && ${MAKE} beforeinstall cd ${.CURDIR}/kerberosIV/lib/libkrb && ${MAKE} beforeinstall cd ${.CURDIR}/kerberosIV/lib/libtelnet && ${MAKE} beforeinstall .else cd ${.CURDIR}/lib/libtelnet && ${MAKE} beforeinstall .endif cd ${.CURDIR}/lib/csu/i386 && ${MAKE} beforeinstall cd ${.CURDIR}/lib/libalias && ${MAKE} beforeinstall cd ${.CURDIR}/lib/libc && ${MAKE} beforeinstall cd ${.CURDIR}/lib/libcurses && ${MAKE} beforeinstall cd ${.CURDIR}/lib/libedit && ${MAKE} beforeinstall cd ${.CURDIR}/lib/libftpio && ${MAKE} beforeinstall cd ${.CURDIR}/lib/libmd && ${MAKE} beforeinstall cd ${.CURDIR}/lib/libmytinfo && ${MAKE} beforeinstall cd ${.CURDIR}/lib/libncurses && ${MAKE} beforeinstall .if !defined(WANT_CSRG_LIBM) cd ${.CURDIR}/lib/msun && ${MAKE} beforeinstall .endif cd ${.CURDIR}/lib/libpcap && ${MAKE} beforeinstall cd ${.CURDIR}/lib/librpcsvc && ${MAKE} beforeinstall cd ${.CURDIR}/lib/libskey && ${MAKE} beforeinstall cd ${.CURDIR}/lib/libtermcap && ${MAKE} beforeinstall cd ${.CURDIR}/lib/libcom_err && ${MAKE} beforeinstall cd ${.CURDIR}/lib/libss && ${MAKE} beforeinstall cd ${.CURDIR}/lib/libscsi && ${MAKE} beforeinstall cd ${.CURDIR}/lib/libutil && ${MAKE} beforeinstall cd ${.CURDIR}/lib/libz && ${MAKE} beforeinstall # # lib-tools - build tools to compile and install the libraries. # # XXX gperf is required for cc # XXX a new ld and tsort is required for cc lib-tools: .for d in \ gnu/usr.bin/gperf \ gnu/usr.bin/ld \ usr.bin/tsort \ gnu/usr.bin/as \ gnu/usr.bin/bison \ gnu/usr.bin/awk \ usr.bin/ar \ usr.bin/compile_et \ usr.bin/lex/lib \ usr.bin/mk_cmds \ usr.bin/nm \ usr.bin/ranlib \ usr.bin/uudecode \ gnu/usr.bin/cc cd ${.CURDIR}/$d && ${MAKE} depend && \ ${MAKE} ${MK_FLAGS} all && \ ${MAKE} ${MK_FLAGS} -B install ${CLEANDIR} ${OBJDIR} .endfor # # libraries - build and install the libraries # libraries: .if exists(lib/csu/i386) cd ${.CURDIR}/lib/csu/i386 && ${MAKE} depend && \ ${MAKE} ${MK_FLAGS} all && \ ${MAKE} ${MK_FLAGS} -B install ${CLEANDIR} ${OBJDIR} .endif .if exists(lib/libcompat) cd ${.CURDIR}/lib/libcompat && ${MAKE} depend && \ ${MAKE} ${MK_FLAGS} all && \ ${MAKE} ${MK_FLAGS} -B install ${CLEANDIR} ${OBJDIR} .endif .if exists(lib/libc) cd ${.CURDIR}/lib/libc && ${MAKE} depend && \ ${MAKE} ${MK_FLAGS} all && \ ${MAKE} ${MK_FLAGS} -B install ${CLEANDIR} ${OBJDIR} .endif .if exists(lib/libmytinfo) cd ${.CURDIR}/lib/libmytinfo && ${MAKE} depend && \ ${MAKE} ${MK_FLAGS} all && \ ${MAKE} ${MK_FLAGS} -B install ${CLEANDIR} ${OBJDIR} .endif .if exists(lib/libncurses) cd ${.CURDIR}/lib/libncurses && ${MAKE} depend && \ ${MAKE} ${MK_FLAGS} all && \ ${MAKE} ${MK_FLAGS} -B install ${CLEANDIR} ${OBJDIR} .endif .if exists(lib/libtermcap) cd ${.CURDIR}/lib/libtermcap && ${MAKE} depend && \ ${MAKE} ${MK_FLAGS} all && \ ${MAKE} ${MK_FLAGS} -B install ${CLEANDIR} ${OBJDIR} .endif .if exists(gnu) cd ${.CURDIR}/gnu/lib && ${MAKE} depend && \ ${MAKE} ${MK_FLAGS} all && \ ${MAKE} ${MK_FLAGS} -B install ${CLEANDIR} ${OBJDIR} .endif .if exists(secure) && !defined(NOCRYPT) && !defined(NOSECURE) cd ${.CURDIR}/secure/lib && ${MAKE} depend && \ ${MAKE} ${MK_FLAGS} all && \ ${MAKE} ${MK_FLAGS} -B install ${CLEANDIR} ${OBJDIR} .endif .if exists(lib) cd ${.CURDIR}/lib && ${MAKE} depend && \ ${MAKE} ${MK_FLAGS} all && \ ${MAKE} ${MK_FLAGS} -B install ${CLEANDIR} ${OBJDIR} .endif .if exists(usr.bin/lex/lib) cd ${.CURDIR}/usr.bin/lex/lib && ${MAKE} depend && \ ${MAKE} ${MK_FLAGS} all && \ ${MAKE} ${MK_FLAGS} -B install ${CLEANDIR} ${OBJDIR} .endif .if exists(kerberosIV) && exists(crypto) && !defined(NOCRYPT) && defined(MAKE_KERBEROS4) cd ${.CURDIR}/kerberosIV/lib && ${MAKE} depend && \ ${MAKE} ${MK_FLAGS} all && \ ${MAKE} ${MK_FLAGS} -B install ${CLEANDIR} ${OBJDIR} .endif .if exists(usr.sbin/pcvt/keycap) cd ${.CURDIR}/usr.sbin/pcvt/keycap && ${MAKE} depend && \ ${MAKE} ${MK_FLAGS} all && \ ${MAKE} ${MK_FLAGS} -B install ${CLEANDIR} ${OBJDIR} .endif # Exclude perl from the build-tools if NOPERL is defined. .if defined(NOPERL) _perl= .else _perl= gnu/usr.bin/perl/perl .endif # # build-tools - build and install any other tools needed to complete the # compile and install. # ifdef stale # bc and cpp are required to build groff. Otherwise, the order here is # mostly historical, i.e., bogus. # chmod is used to build gcc's tmpmultilib[2] at obscure times. # endif stale # XXX uname is a bug - the target should not depend on the host. # build-tools: .for d in \ bin/cat \ bin/chmod \ bin/cp \ bin/date \ bin/dd \ bin/echo \ usr.bin/yacc \ bin/expr \ bin/hostname \ bin/ln \ bin/ls \ bin/mkdir \ bin/mv \ bin/rm \ bin/test \ gnu/usr.bin/bc \ gnu/usr.bin/grep \ gnu/usr.bin/groff \ gnu/usr.bin/gzip \ gnu/usr.bin/man/makewhatis \ gnu/usr.bin/patch \ ${_perl} \ gnu/usr.bin/sort \ gnu/usr.bin/texinfo \ usr.bin/basename \ usr.bin/cap_mkdb \ usr.bin/chflags \ usr.bin/cmp \ usr.bin/col \ usr.bin/cpp \ usr.bin/expand \ usr.bin/file2c \ usr.bin/find \ usr.bin/gencat \ usr.bin/id \ usr.bin/lorder \ usr.bin/m4 \ usr.bin/mkdep \ usr.bin/paste \ usr.bin/sed \ usr.bin/size \ usr.bin/soelim \ usr.bin/strip \ usr.bin/symorder \ usr.bin/touch \ usr.bin/tr \ usr.bin/true \ usr.bin/uname \ usr.bin/uuencode \ usr.bin/vgrind \ usr.bin/vi \ usr.bin/wc \ usr.sbin/chown \ usr.sbin/mtree \ usr.sbin/zic \ bin/sh cd ${.CURDIR}/$d && ${MAKE} depend && \ ${MAKE} ${MK_FLAGS} all && \ ${MAKE} ${MK_FLAGS} -B install ${CLEANDIR} ${OBJDIR} .endfor .for __target in clean cleandir obj depend .for entry in ${SUBDIR} ${entry}.${__target}__D: .PHONY if test -d ${.CURDIR}/${entry}.${MACHINE}; then \ ${ECHODIR} "===> ${DIRPRFX}${entry}.${MACHINE}"; \ edir=${entry}.${MACHINE}; \ cd ${.CURDIR}/$${edir}; \ else \ ${ECHODIR} "===> ${DIRPRFX}${entry}"; \ edir=${entry}; \ cd ${.CURDIR}/$${edir}; \ fi; \ ${MAKE} ${__target} DIRPRFX=${DIRPRFX}$${edir}/ .endfor par-${__target}: ${SUBDIR:S/$/.${__target}__D/} .endfor .include --ELM909323252-555-0_ Content-Type: text/plain; charset=ISO-8859-1 Content-Disposition: attachment; filename=bsd.prog.mk Content-Description: Modified /usr/src/share/mk/bsd.prog.mk Content-Transfer-Encoding: 7bit # from: @(#)bsd.prog.mk 5.26 (Berkeley) 6/25/91 # $Id: bsd.prog.mk,v 1.41.2.7 1998/06/14 16:10:49 steve Exp $ .if exists(${.CURDIR}/../Makefile.inc) .include "${.CURDIR}/../Makefile.inc" .endif .SUFFIXES: .out .o .c .cc .cpp .cxx .C .y .l .s .S CFLAGS+=${COPTS} ${DEBUG_FLAGS} .if defined(DESTDIR) CFLAGS+= -I${DESTDIR}/usr/include CXXINCLUDES+= -I${DESTDIR}/usr/include/g++ .endif .if !defined(DEBUG_FLAGS) STRIP?= -s .endif .if defined(NOSHARED) && ( ${NOSHARED} != "no" && ${NOSHARED} != "NO" ) LDFLAGS+= -static .endif .include .if defined(PROG) .if defined(SRCS) DPSRCS+= ${SRCS:M*.h} .if !defined(NOOBJ) OBJS+= ${SRCS:N*.h:R:S/$/.o/g} .endif .if defined(LDONLY) ${PROG}: ${LIBCRT0} ${LIBC} ${DPSRCS} ${OBJS} ${DPADD} ${LD} ${LDFLAGS} -o ${.TARGET} ${LIBCRT0} ${OBJS} ${LIBC} ${LDDESTDIR} \ ${LDADD} .else defined(LDONLY) ${PROG}: ${DPSRCS} ${OBJS} ${LIBC} ${DPADD} ${CC} ${CFLAGS} ${LDFLAGS} -o ${.TARGET} ${OBJS} ${LDDESTDIR} ${LDADD} .endif .else !defined(SRCS) SRCS= ${PROG}.c .if 0 ${PROG}: ${DPSRCS} ${SRCS} ${LIBC} ${DPADD} ${CC} ${LDFLAGS} ${CFLAGS} -o ${.TARGET} ${.CURDIR}/${SRCS} \ ${LDDESTDIR} ${LDADD} MKDEP= -p .else # Always make an intermediate object file because: # - it saves time rebuilding when only the library has changed # - the name of the object gets put into the executable symbol table instead of # the name of a variable temporary object. # - it's useful to keep objects around for crunching. OBJS= ${PROG}.o ${PROG}: ${DPSRCS} ${OBJS} ${LIBC} ${DPADD} ${CC} ${CFLAGS} ${LDFLAGS} -o ${.TARGET} ${OBJS} ${LDDESTDIR} ${LDADD} .endif .endif .if !defined(MAN1) && !defined(MAN2) && !defined(MAN3) && \ !defined(MAN4) && !defined(MAN5) && !defined(MAN6) && \ !defined(MAN7) && !defined(MAN8) && !defined(NOMAN) MAN1= ${PROG}.1 .endif .endif # XXX I think MANDEPEND is only used for groff. It should be named more # generally and perhaps not be in the maninstall dependencies now it is # here (or does maninstall always work when nothing is made?), .MAIN: all all: objwarn ${PROG} all-man _SUBDIR .if !target(clean) clean: _SUBDIR rm -f a.out Errs errs mklog ${PROG} ${OBJS} ${CLEANFILES} .if defined(CLEANDIRS) && !empty(CLEANDIRS) rm -rf ${CLEANDIRS} .endif .endif .if !target(install) .if !target(beforeinstall) beforeinstall: .endif realinstall: beforeinstall .if defined(PROG) ${INSTALL} ${COPY} ${STRIP} -o ${BINOWN} -g ${BINGRP} -m ${BINMODE} \ ${INSTALLFLAGS} ${PROG} ${DESTDIR}${BINDIR} .endif .if defined(HIDEGAME) (cd ${DESTDIR}/usr/games; rm -f ${PROG}; ln -s dm ${PROG}; \ chown games:bin ${PROG}) .endif .if defined(LINKS) && !empty(LINKS) @set ${LINKS}; \ while test $$# -ge 2; do \ l=${DESTDIR}$$1; \ shift; \ t=${DESTDIR}$$1; \ shift; \ ${ECHO} $$t -\> $$l; \ rm -f $$t; \ ln ${LN_FLAGS} $$l $$t; \ done; true .endif install: afterinstall _SUBDIR .if !target(afterinstall) .if !defined(NOMAN) afterinstall: realinstall maninstall .else afterinstall: realinstall .endif .endif .endif DISTRIBUTION?= bin .if !target(distribute) distribute: _SUBDIR .for dist in ${DISTRIBUTION} cd ${.CURDIR} ; $(MAKE) install DESTDIR=${DISTDIR}/${dist} SHARED=copies .endfor .endif .if !target(lint) lint: ${SRCS} _SUBDIR .if defined(PROG) @${LINT} ${LINTFLAGS} ${CFLAGS} ${.ALLSRC} | more 2>&1 .endif .endif .if defined(NOTAGS) tags: .endif .if !target(tags) tags: ${SRCS} _SUBDIR .if defined(PROG) @cd ${.CURDIR} && gtags ${GTAGSFLAGS} .if defined(HTML) @cd ${.CURDIR} && htags ${HTAGSFLAGS} .endif .endif .endif .if !defined(NOMAN) .include .elif !target(maninstall) maninstall: all-man: .endif .include .include --ELM909323252-555-0_ Content-Type: text/plain; charset=ISO-8859-1 Content-Disposition: attachment; filename=bsd.lib.mk Content-Description: Modified /usr/src/share/mk/bsd.lib.mk Content-Transfer-Encoding: 7bit # from: @(#)bsd.lib.mk 5.26 (Berkeley) 5/2/91 # $Id: bsd.lib.mk,v 1.46.2.9 1998/06/14 16:10:48 steve Exp $ # .if exists(${.CURDIR}/../Makefile.inc) .include "${.CURDIR}/../Makefile.inc" .endif .if exists(${.CURDIR}/shlib_version) SHLIB_MAJOR != . ${.CURDIR}/shlib_version ; echo $$major SHLIB_MINOR != . ${.CURDIR}/shlib_version ; echo $$minor .endif .if defined(DESTDIR) CFLAGS+= -I${DESTDIR}/usr/include CXXINCLUDES+= -I${DESTDIR}/usr/include/g++ .endif .if defined(DEBUG_FLAGS) CFLAGS+= ${DEBUG_FLAGS} .endif .if !defined(DEBUG_FLAGS) STRIP?= -s .endif .include .MAIN: all # prefer .s to a .c, add .po, remove stuff not used in the BSD libraries # .so used for PIC object files .SUFFIXES: .SUFFIXES: .out .o .po .so .s .S .c .cc .cpp .cxx .m .C .f .y .l .c.o: ${CC} ${CFLAGS} -c ${.IMPSRC} -o ${.TARGET} @${LD} -O ${.TARGET} -x -r ${.TARGET} .c.po: ${CC} -pg ${CFLAGS} -c ${.IMPSRC} -o ${.TARGET} @${LD} -O ${.TARGET} -X -r ${.TARGET} .c.so: ${CC} ${PICFLAG} -DPIC ${CFLAGS} -c ${.IMPSRC} -o ${.TARGET} @${LD} -O ${.TARGET} -x -r ${.TARGET} .cc.o .C.o .cpp.o .cxx.o: ${CXX} ${CXXFLAGS} -c ${.IMPSRC} -o ${.TARGET} @${LD} -O ${.TARGET} -x -r ${.TARGET} .cc.po .C.po .cpp.po .cxx.po: ${CXX} -pg ${CXXFLAGS} -c ${.IMPSRC} -o ${.TARGET} @${LD} -O ${.TARGET} -X -r ${.TARGET} .cc.so .C.so .cpp.so .cxx.so: ${CXX} ${PICFLAG} -DPIC ${CXXFLAGS} -c ${.IMPSRC} -o ${.TARGET} @${LD} -O ${.TARGET} -x -r ${.TARGET} .f.o: ${FC} ${FFLAGS} -o ${.TARGET} -c ${.IMPSRC} @${LD} -O ${.TARGET} -x -r ${.TARGET} .f.po: ${FC} -pg ${FFLAGS} -o ${.TARGET} -c ${.IMPSRC} @${LD} -O ${.TARGET} -X -r ${.TARGET} .f.so: ${FC} ${PICFLAG} -DPIC ${FFLAGS} -o ${.TARGET} -c ${.IMPSRC} @${LD} -O ${.TARGET} -x -r ${.TARGET} .s.o: ${CC} -x assembler-with-cpp ${CFLAGS:M-[BID]*} ${AINC} -c \ ${.IMPSRC} -o ${.TARGET} @${LD} -O ${.TARGET} -x -r ${.TARGET} .s.po: ${CC} -x assembler-with-cpp -DPROF ${CFLAGS:M-[BID]*} ${AINC} -c \ ${.IMPSRC} -o ${.TARGET} @${LD} -O ${.TARGET} -X -r ${.TARGET} .s.so: ${CC} -x assembler-with-cpp -fpic -DPIC ${CFLAGS:M-[BID]*} ${AINC} -c \ ${.IMPSRC} -o ${.TARGET} @${LD} -O ${.TARGET} -x -r ${.TARGET} .S.o: ${CC} ${CFLAGS:M-[BID]*} ${AINC} -c ${.IMPSRC} -o ${.TARGET} .S.po: ${CC} -DPROF ${CFLAGS:M-[BID]*} ${AINC} -c ${.IMPSRC} -o ${.TARGET} .S.so: ${CC} -fpic -DPIC ${CFLAGS:M-[BID]*} ${AINC} -c ${.IMPSRC} -o ${.TARGET} @${LD} -O ${.TARGET} -x -r ${.TARGET} .m.po: ${CC} ${CFLAGS} -fgnu-runtime -pg -c ${.IMPSRC} -o ${.TARGET} @${LD} -O ${.TARGET} -X -r ${.TARGET} .m.o: ${CC} ${CFLAGS} -fgnu-runtime -c ${.IMPSRC} -o ${.TARGET} @${LD} -O ${.TARGET} -X -r ${.TARGET} .if !defined(INTERNALLIB) || defined(INTERNALSTATICLIB) .if !defined(NOPROFILE) && !defined(INTERNALLIB) _LIBS=lib${LIB}.a lib${LIB}_p.a .else _LIBS=lib${LIB}.a .endif .endif .if !defined(NOPIC) .if defined(SHLIB_MAJOR) && defined(SHLIB_MINOR) _LIBS+=lib${LIB}.so.${SHLIB_MAJOR}.${SHLIB_MINOR} .endif .if defined(INSTALL_PIC_ARCHIVE) _LIBS+=lib${LIB}_pic.a .endif .endif .if !defined(PICFLAG) PICFLAG=-fpic .endif all: objwarn ${_LIBS} all-man _SUBDIR # llib-l${LIB}.ln OBJS+= ${SRCS:N*.h:R:S/$/.o/g} lib${LIB}.a:: ${OBJS} @${ECHO} building standard ${LIB} library @rm -f lib${LIB}.a @${AR} cq lib${LIB}.a `lorder ${OBJS} | tsort -q` ${ARADD} ${RANLIB} lib${LIB}.a .if !defined(NOPROFILE) POBJS+= ${OBJS:.o=.po} lib${LIB}_p.a:: ${POBJS} @${ECHO} building profiled ${LIB} library @rm -f lib${LIB}_p.a @${AR} cq lib${LIB}_p.a `lorder ${POBJS} | tsort -q` ${ARADD} ${RANLIB} lib${LIB}_p.a .endif .if defined(DESTDIR) LDDESTDIRENV?= LIBRARY_PATH=${DESTDIR}${SHLIBDIR}:${DESTDIR}/usr/lib .endif .if !defined(NOPIC) SOBJS+= ${OBJS:.o=.so} lib${LIB}.so.${SHLIB_MAJOR}.${SHLIB_MINOR}: ${SOBJS} @${ECHO} building shared ${LIB} library \(version ${SHLIB_MAJOR}.${SHLIB_MINOR}\) @rm -f lib${LIB}.so.${SHLIB_MAJOR}.${SHLIB_MINOR} @${LDDESTDIRENV} ${CC} -shared -Wl,-x \ -o lib${LIB}.so.${SHLIB_MAJOR}.${SHLIB_MINOR} \ `lorder ${SOBJS} | tsort -q` ${LDDESTDIR} ${LDADD} lib${LIB}_pic.a:: ${SOBJS} @${ECHO} building special pic ${LIB} library @rm -f lib${LIB}_pic.a @${AR} cq lib${LIB}_pic.a ${SOBJS} ${ARADD} ${RANLIB} lib${LIB}_pic.a .endif llib-l${LIB}.ln: ${SRCS} ${LINT} -C${LIB} ${CFLAGS} ${.ALLSRC:M*.c} .if !target(clean) clean: _SUBDIR rm -f a.out Errs errs mklog ${CLEANFILES} ${OBJS} rm -f lib${LIB}.a llib-l${LIB}.ln rm -f ${POBJS} profiled/*.o lib${LIB}_p.a rm -f ${SOBJS} shared/*.o rm -f lib${LIB}.so.*.* lib${LIB}_pic.a .if defined(CLEANDIRS) && !empty(CLEANDIRS) rm -rf ${CLEANDIRS} .endif .endif .if defined(SRCS) afterdepend: @(TMP=_depend$$$$; \ sed -e 's/^\([^\.]*\).o[ ]*:/\1.o \1.po \1.so:/' < .depend > $$TMP; \ mv $$TMP .depend) .endif .if !target(install) .if !target(beforeinstall) beforeinstall: .endif .if defined(PRECIOUSLIB) SHLINSTALLFLAGS+= -fschg .endif realinstall: beforeinstall .if !defined(INTERNALLIB) ${INSTALL} ${COPY} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \ ${INSTALLFLAGS} lib${LIB}.a ${DESTDIR}${LIBDIR} .if !defined(NOPROFILE) ${INSTALL} ${COPY} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \ ${INSTALLFLAGS} lib${LIB}_p.a ${DESTDIR}${LIBDIR} .endif .endif .if !defined(NOPIC) .if defined(SHLIB_MAJOR) && defined(SHLIB_MINOR) ${INSTALL} ${COPY} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \ ${INSTALLFLAGS} ${SHLINSTALLFLAGS} \ lib${LIB}.so.${SHLIB_MAJOR}.${SHLIB_MINOR} \ ${DESTDIR}${SHLIBDIR} .endif .if defined(INSTALL_PIC_ARCHIVE) ${INSTALL} ${COPY} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \ ${INSTALLFLAGS} lib${LIB}_pic.a ${DESTDIR}${LIBDIR} .endif .endif .if defined(LINKS) && !empty(LINKS) @set ${LINKS}; \ while test $$# -ge 2; do \ l=${DESTDIR}$$1; \ shift; \ t=${DESTDIR}$$1; \ shift; \ ${ECHO} $$t -\> $$l; \ rm -f $$t; \ ln ${LN_FLAGS} $$l $$t; \ done; true .endif install: afterinstall _SUBDIR .if !target(afterinstall) .if !defined(NOMAN) afterinstall: realinstall maninstall .else afterinstall: realinstall .endif .endif .endif DISTRIBUTION?= bin .if !target(distribute) distribute: _SUBDIR .for dist in ${DISTRIBUTION} cd ${.CURDIR} ; $(MAKE) install DESTDIR=${DISTDIR}/${dist} SHARED=copies .endfor .endif .if !target(lint) lint: .endif .if defined(NOTAGS) tags: .endif .if !target(tags) tags: ${SRCS} _SUBDIR @cd ${.CURDIR} && gtags ${GTAGSFLAGS} .if defined(HTML) @cd ${.CURDIR} && htags ${HTAGSFLAGS} .endif .endif .if !defined(NOMAN) .include .elif !target(maninstall) maninstall: all-man: .endif .include .include --ELM909323252-555-0_-- To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-hackers" in the body of the message