 d19d7d58aa
			
		
	
	
		d19d7d58aa
		
	
	
	
	
		
			
			upgrade to NetBSD CVS release from 2012/10/17 12:00:00 UTC Makefiles updates to imporve portability Made sure to be consistent in the usage of braces/parenthesis at least on a per file basis. For variables, it is recommended to continue to use braces.
		
			
				
	
	
		
			83 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			83 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| $NetBSD: README.mknative,v 1.13 2012/09/27 11:29:49 skrll Exp $
 | |
| 
 | |
| This file describes how to bootstrap the native toolchain on a new NetBSD
 | |
| platform (and how to update the new toolchain files, if needed).  These
 | |
| files may be generated on a cross-compile host without problems.
 | |
| 
 | |
| NOTE:  DO NOT RUN "mknative" BY HAND!  It requires the Makefile in this
 | |
| directory to set up certain environments first.
 | |
| 
 | |
| Since libc's features change over time, the config.h files can change as a
 | |
| result; thus the instructions below are the same no matter whether
 | |
| bootstrapping on a cross or native host.  This is important: even on a
 | |
| "native" host, you should bootstrap the toolchain by building from an
 | |
| up-to-date source tree to a $DESTDIR using the exact same instructions.
 | |
| 
 | |
| In these notes, MACHINE is the $MACHINE of the target.  These files can be
 | |
| cross-generated.  Though a $MACHINE_ARCH all uses the same config files, you
 | |
| must pick a specific $MACHINE so that building the requisite bits below will
 | |
| work.
 | |
| 
 | |
| 1. Set MKMAINTAINERTOOLS=yes in mk.conf.  (Needed so that src/tools/gettext
 | |
|    gets built, eliciting proper HAVE_*GETTEXT* defns in config.h files.)
 | |
| 
 | |
| 2. Build and install a cross toolchain (via "build.sh -m MACHINE tools").
 | |
| 
 | |
| 3. In src/tools/gcc, do "nbmake-MACHINE bootstrap-libgcc".
 | |
| 
 | |
|    This will create just enough glue in src/external/gpl3/gcc/lib/libgcc/arch
 | |
|    to make it possible to build, based on the toolchain built in
 | |
|    ${.OBJDIR}/build.
 | |
|    Because the files generated in this step contain things like
 | |
|    -DCROSS_COMPILE, they are not suitable for committing.  Step 8 below
 | |
|    will regenerate the "proper" libgcc config files.
 | |
| 
 | |
| 4. At top level, do
 | |
|    "nbmake-MACHINE obj do-distrib-dirs MKGCC=no MKBINUTILS=no", and
 | |
|    "nbmake-MACHINE includes HAVE_GCC= MKGCC=no MKBINUTILS=no".
 | |
| 
 | |
| 5. In src/lib/csu, do
 | |
|    "nbmake-MACHINE dependall". and "nbmake-MACHINE install".
 | |
| 
 | |
| 6. If the platform sets USE_COMPILERCRTSTUFF=yes, then in
 | |
|    src/external/gpl3/gcc/lib/crtstuff/ do
 | |
|    "nbmake-MACHINE obj dependall install"
 | |
| 
 | |
| 7. In src/external/gpl3/gcc/lib/libgcc, do
 | |
|    "nbmake-MACHINE obj includes dependall install".
 | |
| 
 | |
| 8. In each of src/external/lgpl3/gmp/lib/libgmp,
 | |
|    src/external/lgpl3/mpfr/lib/libmpfr, src/external/lgpl2/mpc/lib/libmpc
 | |
|    do "nbmake-MACHINE obj includes LIBISPRIVATE=no", and
 | |
|    "nbmake-MACHINE dependall install".
 | |
| 
 | |
|    It is important to have LIBISPRIVATE=no while doing includes as this
 | |
|    installs a header file that is not part of standard build.
 | |
| 
 | |
| 9. In src/lib, do
 | |
|    "nbmake-MACHINE dependall install MKGCC=no".
 | |
| 
 | |
|    Optionally, all of the following may be set in the environment to reduce
 | |
|    the amount of code needed to build at this step.  Basically, it must be
 | |
|    possible for static binaries to build and base system libs to exist so
 | |
|    that "configure" can do its job for the target--these MK* options omit
 | |
|    the rest for this stage of the build. 
 | |
| 
 | |
|    MKCRYPTO=no
 | |
|    MKLINT=no
 | |
|    MKPROFILE=no
 | |
|    MKSHARE=no
 | |
| 
 | |
| 10. In src/tools/gcc, do "nbmake-MACHINE native-gcc".
 | |
| 
 | |
|    This will do a full configury in ${.OBJDIR}/.native that is a "Canadian"
 | |
|    cross toolchain (--build reflects the host platform, but --host and
 | |
|    --target are the target).  The result is a tree that would build a
 | |
|    native-to-NetBSD compiler on a cross host, and mknative pulls glue data
 | |
|    from this.
 | |
| 
 | |
| 11. Try out a full build using "nbmake-MACHINE"; the result should include
 | |
|    a native compiler.
 | |
| 
 | |
| 12. If all is well, commit the glue files added to src/gnu/{lib,usr.bin}/*.
 |