JDK Build first impressions with Cygwin, Windows
This is kind of a long post that goes over what I needed to change from the Sun documentation on the windows build. I know I should use the right versions, but I couldn't find the exact versions.
This worked for 'build32' with WindowsXP on April 22,2005
I compiled most of the JDK, I got any error when compiling Swing. So, I have a question about this at the end.
One major difference, I am using WindowsXP Service Pack 2, I didn't have W2K.
1. You will need Visual C++ 6, Microsoft didn't have Service Pack 3, so I download Service Pack6, which seemed to work(This is 2005)
I went ahead and edited the Sanity.gmk files to allow me to use this version of VC6.
And just changed the Script variablest to '12.00.8804'
2. I downloaded Cygwin version 1.5.15-1 which contains the right version of 3.80, make sure to install 'make', by default cygwin doesn't install a lot of the development tool.s
3. I downloaded DX9 - Microsoft DirectX 9.0 SDK (February 2005), seemed to work.
C:/Progra~1/Micros~2/ -- I used the DOS name like so.
4. This is a tricky one, the unicows.dll was pretty easy to find, follow the instructions. I couldn't find the 'unicows.lib' because it seems like Microsoft has hidden the Platform SDK for Windows98/95.
I did some googling and you can find the 300MB+ Platform SDK. It seems like MS has a hidden link for all the CAB files on their site. You are looking for the Win9x SDK.
This is the Oct2002 or the Nov2002 update?
And for the sake of a shorter post. There are '16' cab files, replace the '1' above and download the rest, like so.
And two other files
You type 'PSDK-FULL.bat' in the directory where you downloaded the 'CAB' files and those will be extracted.
You 'can' type 'setup.exe' to install this Microsoft SDK. Unzipped, it weighs in at 300MB+, I didn't feel like installing this and messing up my system. I only needed the 'unicows.lib' file which is a 2MB file.
Enter the 'setup' directory of the Platform SDK
The cab files are just zipped files, so I looked through all of them and found 'CoreSDK-common.2.1.cab'. This contained the 'unicows.lib'. I unzipped it and it gave me some weird file name
I renamed this to
unicows.lib and here is the Nov?(Oct) 2002 File. There you go. Put this somewhere and change your ALT_UNICOWS_LIB_PATH
Another note. It looks like JDK build script is looking for the file size of this particular file to validate it.
It just happens, my filesize matched: '2325412'
5. This is a small bug in "windows/cygwin"? or the build script. The unicows.lib sanity check may fail because of weird naming with cygwin and windowsxp. For example, the script is looking for a filesize
'-rwx------+ 1 Your Name None 2325412 unicows.lib
It is looking for the filesize at the '5th' spot of this string above using an NAWK script. If you look above because "Your Name", the filesize will end up at the '6th' spot which will generate an error in your build and won't allow you to continue. After some debugging, I grepped on (REQUIRED_UNICOWS_LIB_SIZE) and on line 1453 of Sanity.gmk, I changed the '$$5' to '$$6'. This is only because of my username having a 'space' in the text.(j2se/make/common/Sanity.gmk)
6. I couldn't find the 'msvcrt.dll version 6.00.8337.0' with my copy of Microsoft Visual 6. I googled and found a download somewhere. This seems pretty easy to find. I currently have a version 7.0 of the dll with WinXP.
7. Now, I passed the Sanity Checks, I got a build error that seemed to stem from my username again "My Name". It seems like the scripts don't like whitespace. So from the Window's environment variables. I manually changed:
8. Also, I added the 'b' to the BUILD_NUMBER like so.
9. Typed 'make scsl'
10. Two more errors. It looks like the 'fonts' directory is empty and the build script is looking for it. I got an error, "Can't find target LucidaTypewriterRegular.ttf" something...
j2se\src\share\lib\fonts -- This directory was empty?
So, I installed the "binary" release and searched for the fonts and copy pasted them to that folder. There were 8 ttf fonts.
11. After those small changes, I got pretty far. I compiled 'javac.exe' and a lot of the other binaries. I did get an error with compiling Swing and I will stop for now.
So this is my question. I got pretty far in the build and then I got this error:
make: Leaving directory `/cygdrive/c/Berlin/JDK/src/j2se/make/javax/print'
<<>>Recursively making swing all @ Sat Apr 23 03:19:56 EST 2005 ...
make: Entering directory `/cygdrive/c/Berlin/JDK/src/j2se/make/javax/swing'
make: *** No rule to make target `c:/Berlin/JDK/src/control/build/windows-i58
6/classes/javax/swing/plaf/basic/BasicButtonListener.class', needed by `c:/Berli
It looks like my 'BasicButtonListener.class'? Something wrong with this target?
Thank you, sorry for being so verbose. This seems to be a quiet forum. I will try not to make so much noise next time.