jdk/src/solaris - time to re-visit it?

Fredrik Öhrström fredrik.ohrstrom at oracle.com
Wed Nov 23 13:33:27 UTC 2011


2011-11-23 13:12, Alan Bateman skrev:
> In the jdk repository then src/solaris has all the Solaris and Linux 
> code. Most of it is used for both platforms with a small number of files 
> specific to one or the other. I'm sure this has come up before (probably 
> many times) but I'd like to bring it up again.
>
> One of motives for bringing this up now is the Mac OS X port is coming. 
> It adds/changes code in src/solaris and also adds a lot of code to a new 
> tree src/macosx. Another motivation is patches from IBM folks which are 
> really just changes to workaround the fact that we've got code for 
> several platforms in the same directory. As I look through src/solaris 
> now it is clear that we have taken several approaches to this. In some 
> cases we've got Solaris* files, in other cases we rename files during 
> the build.
>
> The purpose of this mail is just to probe and see if anyone has thought 
> about this problem recently. I'm not suggesting anything specific except 
> to see whether it's worth thinking about how we might change this in the 
> future. I've no doubt that there isn't a perfect solution to this and 
> clearly any changes will be disruptive (but there's no harm discussing 
> possible options).

I have.... no suprise there I guess ;-). If you read
CompileJavaClasses.gmk in build-infra/jdk7/jdk/make
you can see the hoops we need to go through to filter out platform
specific classes in share/classes
and linux specific classes in solaris/classes etc etc.

In build-infra we are using the variable:

HOST_API
  that can be posix or winapi

code common to linux,gnu,solaris,bsd,aix and macosx should be put into
src/posix/classes.
code belonging to windows is put inside src/winapi/classes.

(winapi was earlier named win32 but the name was changed by Microsoft to
winapi,
since win32 actually supports 64 bits. Perhaps in the future there might
be some
windows_mobile platform that also uses code inside winapi.)

HOST_OS (ie PLATFORM)
  is linux,bsd,gnu,solaris,macosx,aix etc
  thus platform specific code is in src/linux/classes
src/solaris/classes src/bsd/classes

Do we also need the variable HOST_OS_PEDIGREE that can be?
gnu_pg (for code shared by linux,gnu etc)
sysv_pg (for code shared by solaris,aix etc)
bsd_pg (for code shared by macosx,bsd etc)
if so, such code would be placed in src/sysv_pg/classes

We are not really moving any source code around in build-infra. That has
to wait until
the big jigsaw change. But the variables are in place.

//Fredrik



More information about the build-dev mailing list