My windows build story
Igor Nekrestyanov
Igor.Nekrestyanov at Sun.COM
Mon Aug 6 09:47:13 UTC 2007
Hi,
I tried to build openjdk on windows (WinXP) using home PC and following
instructions from openjdk.dev.java.net.
I was able to do it. There were few issues though (because we rarely use
cygwin for internal builds).
Below is brief story of how i did it. It might be incomplete because i
am recovering it from the notes.
I will double check this tonight with full clean build but it will be
nice if someone else can try to repeat it.
1) Latest cygwin.
In addition to list from README-builds.html i also installed
zip/unzip packages.
I think i have installed cygwin in default mode, i.e. using
Unix/binary default text file type.
However, this did not help fully (see item 5).
2) Downgraded make to 3.80
Download from
http://cygwin.paracoda.com/release/make/make-3.80-1.tar.bz2
cd /
tar xjf /cygdrive/c/where-your-download-is/make-3.80-1.tar.bz2
bin/make.exe --version
GNU Make 3.80
Copyright (C) 2002 Free Software Foundation, Inc.
3) Here is my buildenv.bat.
Note: avoid use /cygdrive/c paths because it will fool VC compiler
(cl will not resolve them properly, e.g. will not find header files)
=================================================
rem Minimize hidden environment differences
set PATH=C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;c:\tools\cygwin\bin
set LD_LIBRARY_PATH=
set CLASSPATH=
set JAVA_HOME=
set ALT_BOOTDIR=c:/tools/jdk70b13
set ALT_OUTPUTDIR=c:/tmp/openjdk-build
set ALT_BINARY_PLUGS_PATH=c:/tools/bplugs/b17/openjdk-binary-plugs
rem not mentioned in the README-builds.html? (place hotspot VM comes from)
rem TODO: try to point to openjdk vm
set ALT_JDK_IMPORT_PATH=c:/tools/bplugs/jdk1.7.0
set ALT_DXSDK_PATH=c:/Tools/dxsdk
set VC=c:/Progra~1/Micros~1.NET
set ALT_COMPILER_PATH=%VC%/VC7/Bin
set ALT_MSDEVTOOLS_PATH=%VC%/Common7/Tools/Bin
set ALT_MSVCR71_DLL_PATH=%VC%/SDK/v1.1/Bin
set ALT_FREETYPE_LIB_PATH=c:/tools/freetype/windows/freetype-i586/lib
set ALT_FREETYPE_HEADERS_PATH=c:/tools/freetype/windows/freetype-i586/include
rem NB: not documented? will be removed in b18? http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6332635
rem unicows.dll/unicows.lib are available on the web.
rem E.g. http://www.microsoft.com/downloads/details.aspx?FamilyId=73BA7BD7-ED06-4F0D-80A4-2A7EEAEE17E2&displaylang=en
set ALT_UNICOWS_LIB_PATH=c:/tools/devtools/MSLU
set ALT_UNICOWS_DLL_PATH=c:/tools/devtools/MSLU
rem bug in the makefiles: should be set prior to freetypecheck.
rem TODO: file it
set OPENJDK=true
call c:\Progra~1\Micros~1.NET\Common7\Tools\vsvars32.bat
bash
=============================================
4) technically further build is just
buildenv.bat
cd control/make;
make
5) Sanity check passes, hotspot build without any problems.
j2se build failed in the make/java/java - LocaleDataMetaInfo.java
does not compile
The reason was that string literals contained bunch of \r characters.
These were introduced by cygwin awk. I guess because it uses text
mode (at least for output).
I am still not fully sure what is proper fix for this and whether
this is bug in cygwin
(Assuming i chosed Unix/binary during cygwin install process).
My workaround was to edit j2se\make\java\java\localegen.sh and replace
localelist=`$NAWK -F$1_ '{print $2}' $2 | sort`
with
localelist=`$NAWK -v BINMODE=w -F$1_ '{print $2}' $2 | sort`
6) removed LocaleDataMetaInfo.java from gensrc dir and restarted build.
Build finished without new problems and at least java -jar
Font2DTest.jar works.
Any volunteers to follow these instructions?
Important note:
I know that cygwin builds on at least two Vista systems were failing
in random places because of some
cygwin bugs (shell fails reporting failure to allocate memory or
something else). Failures are random and build will process on restart
of make after failure.
I do not know if it is possible to get working build subsequently
restarting make.
I also do not know if these problems were addressed in cygwin or perhaps
specific to these particular Vista systems.
But I suggest to start with WinXP build first.
-igor
p.s.
if you need freetype binary to try this - i can provide my build of
it. Just drop me personal request.
More information about the build-dev
mailing list