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