Platform dependent locations

M. Warner Losh imp at bsdimp.com
Mon Jul 24 00:26:26 UTC 2006


In message: <00DBA5C9-C270-4E3A-AAD0-DD294B6A2E1C at bleepsoft.com>
            "R. Tyler Ballance" <tyler at bleepsoft.com> writes:
: -----BEGIN PGP SIGNED MESSAGE-----
: Hash: SHA1
: 
: > Doesn't matter.
: >
: > I often do the following:
: >
: > setenv TARGET arm			# this may be iguana for you
: > setenv TARGET_ARCH arm
: > setenv MAKEOBJDIRPREFIX /home/imp/obj
: > cd p4/imp_arm
: > make buildworld
: > make buildenv				# from here on out is in a subshell
: > cd ../arm/src/sys/arm/conf
: > config KB920X
: > cd ../compile/KB920X
: > make depend && make
: >
: > You'll notice that I built in a tree that had all the arm patches
: > applied, and got a 'buildenv' there, but then build the kernel out of
: > a different tree.  This is a -current p4 tree for both imp_arm and
: > arm, but I do this on a RELENG_6 system.  I've done it in the recent
: > past on a 5.3 system too.
: >
: > TARGET is MACHINE and TARGET_ARCH is MACHINE_ARCH.  MACHINE is the
: > kernel architecture, while MACHINE_ARCH is the CPU architecture
: > (TARGET_CPU is the specific CPU that we're optimizing for).  Chances
: > are excellent we'll have TARGET_ARCH armel and armeb shortly.  Right
: > now we have a hack ARM_BIG_ENDIAN used to control big vs little
: > endian, but since MACHINE_ARCH gets encoded into packages, I think we
: > need to move it there so binary packages do the right thing.  But
: > that's a WIP in my tree right now...
: 
: Thanks a lot! Of course, this leads to more questions on my part.  
: Firstly, is there an already outlined guide for porting to new  
: platforms?

Sadly, no.  At the moment one needs to learn by doing....

: (Which is essentially what i'm doing for this project:  
: http://opensource.bleepsoft.com/index.php/Main/L4BSD )
: 
: Or is this something I'll get to stumble over through trial and error  
: with 'make buildworld; ? I'm finding all sorts of extra places where  
: the FreeBSD build system is expecting platform specific files for  
: example:
: 
: ===> sys/boot/iguana (cleandir)
: cd: can't cd to /usr/home/tyler/perforce/projects/l4bsd/src/sys/boot/ 
: iguana
: *** Error code 2
: 
: The problem I'm having is that I just want to build the kernel  
: specific to the "new platform" but will I necessarily have to provide  
: the proper constructs for the build system to cope with the new  
: "platform" in src/sys/ ?

Yes.  However, there may be ways to improve the build infrastructure
to make more things optional, like src/sys/boot/$MACHINE...

Warner


More information about the freebsd-hackers mailing list