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
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
: ===> sys/boot/iguana (cleandir)
: cd: can't cd to /usr/home/tyler/perforce/projects/l4bsd/src/sys/boot/
: *** 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...
More information about the freebsd-hackers