Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 29 Sep 2001 16:27:09 +0300
From:      Ruslan Ermilov <ru@FreeBSD.org>
To:        cvs-committers@FreeBSD.org, cvs-all@FreeBSD.org
Subject:   Re: cvs commit: src Makefile.inc1 src/secure/lib/libtelnet Makefile src/share/mk bsd.lib.mk src/gnu/usr.bin/perl Makefile Makefile.inc src/gnu/usr.bin/perl/libperl Makefile src/gnu/usr.bin/perl/library Makefile.inc src/gnu/usr.bin/perl/miniperl Makefile ...
Message-ID:  <20010929162709.A73075@sunbay.com>
In-Reply-To: <200109291317.f8TDHt444684@freefall.freebsd.org>; from ru@FreeBSD.org on Sat, Sep 29, 2001 at 06:17:55AM -0700
References:  <200109291317.f8TDHt444684@freefall.freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
Not fixed in this commit:

1.  MACHINE_ARCH should be constant, it's the architecture of the
    building machine.  It should always be equal to hw.machine_arch.
    We SHOULD NOT override its value even for ${WMAKE} stages of
    buildworld, but we still do this because /usr/src makefiles
    (ab)use MACHINE_ARCH and MACHINE to descend into the architecture
    dependant subdirectories.  This is bogus, and the next step of
    cleanup will be to fix makefiles to use TARGET_ARCH instead, and
    to define ``TARGET_ARCH?= ${MACHINE_ARCH}'' in sys.mk.

    The same should be done for MACHINE.  The plan is to introduce
    TARGET_MACHINE (defaulting to MACHINE), and use that instead.

2.  -I${DESTDIR}/usr/include and -I${DESTDIR}/usr/include/g++ hacks
    from bsd.prog.mk and bsd.lib.mk should migrate into Makefile.inc1.
    An attempt was made to do this, but it failed because the change
    reversed the order of -I's, and at least two libraries, libbind
    and libpam are broken with this change.  The libraries' builds
    should be fixed first.

On Sat, Sep 29, 2001 at 06:17:55AM -0700, Ruslan Ermilov wrote:
> ru          2001/09/29 06:17:55 PDT
> 
>   Modified files:
>     .                    Makefile.inc1 
>     secure/lib/libtelnet Makefile 
>     share/mk             bsd.lib.mk 
>     gnu/usr.bin/perl     Makefile Makefile.inc 
>     gnu/usr.bin/perl/libperl Makefile 
>     gnu/usr.bin/perl/library Makefile.inc 
>     gnu/usr.bin/perl/miniperl Makefile 
>     gnu/usr.bin/perl/pod Makefile.inc 
>     gnu/usr.bin/perl/x2p Makefile.inc 
>   Log:
>   Fix cross-building, etc:
>   
>   1.  To cross-build, one now needs to set TARGET_ARCH, and not the
>       MACHINE_ARCH.  MACHINE_ARCH should never be changed manually!
>   
>   2.  Initialize DESTDIR= explicitly for bootstrap-tools, build-tools,
>       and cross-tools stages.  This fixes broken header and library
>       dependencies problem.  We build them in the host environment,
>       and obviously want them to depend on host headers and libraries.
>       The problem with broken header dependencies for bootstrap-tools
>       and cross-tools was already partially solved (see BOOTSTRAPPING
>       tests in bsd.prog.mk and bsd.lib.mk), but it was still there for
>       build-tools if the user ran "make world DESTDIR=/foo".  Also,
>       for all of these stages, the library dependencies were broken
>       because of how bsd.libnames.mk define DPADD members.
>   
>       We still provide a glue to install bootstrap- and cross-tools
>       under the ${WORLDTMP}.
>   
>       Removed PATH overrides for bootstrap-, build-, and cross-tools
>       stages.  There is just no reason why we would need to override
>       it, and the hacks to clean up the ${WORLDTMP} in the -DNOCLEAN
>       case are no longer needed with fixes from this step.
>   
>       That is, we now never use ${WORLDTMP} headers and libraries,
>       and we don't use any ${WORLDTMP} installed binaries during
>       these stages.  Again, these stages depend solely on the host
>       environment, including compiler, headers, and libraries.
>   
>   3.  Moved "miniperl" back from cross-tools (it has nothing to do
>       with a cross-compiler) to build-tools where it belongs.  The
>       change from step 1 let to do this.  Also, to make this work,
>       build-tools targets of "cc_tools" and "miniperl" were modified
>       to call "depend".  Here follow the detailed explanations.
>   
>       There are two categories of build tools, for now.  In the first
>       category there are "cc_tools" and "miniperl".  They occupy the
>       whole (sub)directory, and nothing needs to be done in this
>       subdirectory later during the "all" stage.  They are also
>       constructed using system makefiles.  We must build the .depend
>       early in the build-tools stage because:
>   
>       1)  They use (and depend on) the host environment.
>   
>       2)  If we don't do this in build-tools, the "depend" stage of
>           buildworld will do this for us; wrong library and header
>           dependencies will be recorded (DESTDIR=${WORLDTMP}) and,
>           what's worse, the "all" stage may then clobber the
>           build-architecture format tools (that we built in the
>           build-tools stage) with the target-architecture format
>           ones, breaking cross build.
>   
>       In the second category there are all other build-tools.  They
>       share their directory with the "main" module that needs them
>       in the "all" stage, and they don't show up themselves in the
>       .depend file.  The portion of this fix was already committed
>       in gnu/usr.bin/cc/cc_tools/Makefile,v 1.52.
>   
>   4.  "libperl" is no longer a build tool, and "miniperl" is the
>       stand-alone application.  I had to make this change because
>       build-tools and "all" stages share the same object directory.
>       Without this change, if we cross compile, libperl.a is first
>       built for the build architecture during the build-tools stage
>       (for the purposes of immediate linkage with "miniperl").
>       Later on, the "all" stage sees this library as up-to-date,
>       and doesn't rebuild it.  The effect is that the wrong format
>       static libperl library is installed with installworld.
>   
>   5.  Fixed "includes" to install secure/lib/libtelnet headers if
>       required.
>   
>   Reviewed by:	bde
>   
>   Revision  Changes    Path
>   1.219     +37 -56    src/Makefile.inc1
>   1.17      +2 -18     src/gnu/usr.bin/perl/Makefile
>   1.26      +7 -2      src/gnu/usr.bin/perl/Makefile.inc
>   1.16      +1 -4      src/gnu/usr.bin/perl/libperl/Makefile
>   1.8       +1 -2      src/gnu/usr.bin/perl/library/Makefile.inc
>   1.19      +16 -17    src/gnu/usr.bin/perl/miniperl/Makefile
>   1.5       +1 -2      src/gnu/usr.bin/perl/pod/Makefile.inc
>   1.8       +1 -2      src/gnu/usr.bin/perl/x2p/Makefile.inc
>   1.26      +10 -6     src/secure/lib/libtelnet/Makefile
>   1.99      +2 -2      src/share/mk/bsd.lib.mk

-- 
Ruslan Ermilov		Oracle Developer/DBA,
ru@sunbay.com		Sunbay Software AG,
ru@FreeBSD.org		FreeBSD committer,
+380.652.512.251	Simferopol, Ukraine

http://www.FreeBSD.org	The Power To Serve
http://www.oracle.com	Enabling The Information Age

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe cvs-all" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20010929162709.A73075>