Building OpenJDK 7 on Windows XP

Kelly O'Hair Kelly.Ohair at Sun.COM
Mon May 19 15:44:08 UTC 2008



Rob Ross wrote:
> Hi there everyone.
> 
> This will officially be my first email to the OpenJDK project.

Welcome. I actually appreciate the email, some comments below.

> 
> I got to attend a couple of sessions/BOFs at JavaOne2008 about OpenJDK 
> and my interest was piqued. I've been playing with the build for the 
> last week. (A more accurate description would be, "yanking my hair out 
> and cursing my computer quite often", but I supposed it's part of the 
> learning curve.)

You did pick the most difficult platform you know. ;^)

These are the notes and action items I see from your comments:

1. assembling the prerequisite software
   - VS .Net 2003  -  Will be changing soon to a newer VC compiler, and if
     at all possible the free one.
   - Ant is a requirement, I'll fix the Build README, findbugs is not strictly
     a requirement, it's under discussion, I had hoped to use it as part of the build.
     I may be removing the sanity check on findbugs.
   - Cygwin is a bit of a challenge, it changes/updates rather often, I'll
     try and correct the references to the packages you mention, but
     it's like the different Linux packages, sometimes all I can give is hints.
   - The Build README should have some references to the older cygwin 'make'
     now, but I'll double check. I kind of hoped it would fix itself someday. :^(
   - Freetype is new to many of us, I use a freetype that someone else built
     so I have never experienced building it myself.
     I will try and look into this and see if I can document it better.

2. Mercurial
   - CVS/Subversion users seem to have trouble understanding the distributed
     nature of Mercurial. I'd recommend looking at the first few chapters
     of the Mercurial book: http://hgbook.red-bean.com/hgbook.html

3. Setting up the ALT_* environment variables
   - If I didn't document this I should have, my apologies, but I encourage
     all ALT_* variables to use the C:/ style of paths, not C:\ and definitely
     not the /cygdrive/ style paths.
     The makefiles try and turn the C:\ paths into C:/, but using the cygwin
     paths are more difficult to deal with.
     The problem is that some of the exe's we use understand these paths and
     some don't, almost everything understands C:/, and avoiding the use of
     \ characters in shell scripts and Makefiles is a very sane thing to do.
     Making matters worse, the cygwin 'make' that stopped working with C:
     paths for a while, hopefully this gets fixed someday.
     Of course cygwin PATH must use ':' characters to separate paths, so
     you have to use /cygdrive/ paths in PATH.
     The LIB and INCLUDE env variables belong to the VS2003 compiler and
     they use a ';' separator and need the C:/ paths.
     See my blog:
        http://blogs.sun.com/kto/entry/windows_cygwin_mks_java_and

I suspect that your experience with MacOS X will not be the same as Windows.

Thanks for taking the time to make the comments.

-kto

> 
> I was finally able to get "make sanity" to pass this evening, and I felt 
> quite pleased with myself. However, I have no expectations that this 
> will actually build now - but I still consider this a milestone victory.
> 
> Some of the difficulties I encountered were
> 
> 1. Just assembling the prerequisite software
> The jdk7/README-builds.html actually does a fairly good job of listing 
> everything needed. But I'm not a Windows developer, so finding a copy of 
> VS .Net 2003 was a little challenging. Luckily that install process was 
> pretty simple. The build generates a warning if Ant and FindBugs aren't 
> locatable; those were easy to install but perhaps you should add these 
> programs to the list of requirements in the README. Cygwin was also
> pretty easy to install after spending a little time reading up on it. 
> Finding an earlier version of make (gmake) was a little hard, but I see 
> now there are links in the mailing list archive so that would be useful 
> to add a link to the README as well.  Some of the Categories/package 
> names you gave for the particular cygwin utilities needed may be out of 
> date. Zip and Unzip are found in the Archive category, not Utils as 
> described in the README. "Free" is listed as being in Utils but it's 
> actually part of the "procps" package, under the System category. And 
> there isn't an "awk" implementation, but there is a gawk. Freetype was 
> the bane of my existence for 3 days. I never could get the "stock" build 
> scripts to work with the version you stated was needed (2.3.0), and what 
> was available to be downloaded (2.3.5). I could not figure out how to 
> build it from source either via DOS/windows or cygwin. So I ended up 
> downloading the binary setup executable, which contained freetype.lib, 
> freetype6.dll, and zlib1.dll, and a freetype.dll.a that was a red 
> herring. I modified the Makefile for the freetypecheck tool to change 
> the name of the expected dll from "freetype.dll" to "freetype6.dll", and 
> added its dependent "zlib1.dll" to the copy command. Not a very portable 
> solution I know, but I just wanted to get this thing to work! How is 
> everyone else getting this to compile?
> 
> 2. Mercurial - well, it's new, and a little more complicated than 
> CVS/SVN, but I think I'll get the hang of it. I fcloned from the jdk7 
> master forest, (using the forest extension) yesterday, so I have the 
> latest code (baring any changes in the last day). It will be a while 
> before I even have to worry about wanting to submit anything back 
> upstream, so I should be more comfortable with how it all works by then.
> 
> 3. Setting up the ALT_* environment variables
> The hardest part, and mostly trial-and-error, was determining what 
> variables needed to use the cygwin path syntax, and what needed to use 
> the normal Windows path syntax, and what needed to be "shortcutted" by 
> using the cygpath utility. This was mind numbingly frustrating!!!! I 
> found an email from Tim Bell that included his sample script that was 
> quite helpful in getting the right directories from the VS .Net 2003 
> install into the PATH, LIB, and INCLUDE variables, with the right 
> syntax. As I was writing this email my initial "gmake all" build failed, 
> due to javac not being able to find the binary plugins I had specified 
> in ALT_BINARY_PLUGINS_PATH. It seems THAT one needs to be a java IO file 
> path! So now there are THREE different path syntaxes in use in this 
> script file :)
> 
> 
> Anyway, I just wanted to share my experiences building the OpenJDK 7 on 
> Windows.
> 
> Ironically, I'm only doing this to get some practice on the existing 
> build process. My ultimate goal is to port the OpenJDK 7 to Mac OS X, as 
> a full native app. I'm doing some preliminary analysis on the existing 
> code base to determine all calls to native methods, to get  a sense of 
> the scope. For example, there are currently about 421 native method 
> calls in the jdk/src/share classes. The Windows implementation classes 
> make 210 native calls, and the Solaris implementation makes 299. But the 
> first task would be to integrate Mac OS build targets into the OpenJDK 7 
> project, so it can be built on that platform. (Of course, it won't 
> actually run without any native implementation - that's step #2.) But 
> I'll be making a more formal presentation/declaration/request for 
> sponsorship/ at a later time.
> 
> Rob Ross
> 



More information about the build-dev mailing list