Help building under Windows7 64-bit

Kelly O'Hair kelly.ohair at oracle.com
Mon Jun 7 19:21:01 UTC 2010


Note that Windows7 is a bit of an unknown to use as far as being a  
build machine, it should work, but in
general, the formal 32bit builds of jdk7 use older Windows releases,  
e.g. 2000 and soon that newer one "XP" ;^)
You are trying a 64bit build with Visual Studio 10, on Windows 7, an  
even more unused combination.

But in general, the windows build machine setup is a royal pain, and  
not easy at all. Believe it or not, it
used to be much worse. :^(  Just remember to count to 10 and calm your  
mind a few times during the process.

a few comments below...  but you are in very very unknown waters here.

On Jun 7, 2010, at 11:27 AM, cowwoc wrote:

>
> Hi,
>
> I am attempting to build OpenJDK under Windows7 64-bit, Visual  
> Studio 2010.
> Here is the output of "make sanity":
>
> --------------
> ( cd  ./jdk/make && \
> 	  make sanity HOTSPOT_IMPORT_CHECK=false
> JDK_TOPDIR=C:/users/gili/DOCUME~1/jdk7/jdk7/jdk
> JDK_MAKE_SHARED_DIR=C:/users/gili/DOCUME~1/jdk7/jdk7/jdk/make/common/ 
> shared
> EXTERNALSANITYCONTROL=true SOURCE_LANGUAGE_VERSION=7  
> TARGET_CLASS_VERSION=7
> MILESTONE=internal BUILD_NUMBER=b00 JDK_BUILD_NUMBER=b00
> FULL_VERSION=1.7.0-internal-gili_2010_06_07_14_23-b00
> PREVIOUS_JDK_VERSION=1.6.0 JDK_VERSION=1.7.0 JDK_MKTG_VERSION=7
> JDK_MAJOR_VERSION=1 JDK_MINOR_VERSION=7 JDK_MICRO_VERSION=0
> PREVIOUS_MAJOR_VERSION=1 PREVIOUS_MINOR_VERSION=6  
> PREVIOUS_MICRO_VERSION=0
> ARCH_DATA_MODEL=64 COOKED_BUILD_NUMBER=0 ANT_HOME="C:\Program
> Files\apache-ant-1.8.0"

Your ANT_HOME setting is using \ and has spaces in the path.
Try:
    export ANT_HOME=`cygpath -m -s "${ANT_HOME}"`

> ALT_OUTPUTDIR=C:/users/gili/DOCUME~1/jdk7/jdk7/build/windows-amd64
> ALT_LANGTOOLS_DIST=C:/users/gili/DOCUME~1/jdk7/jdk7/build/windows- 
> amd64/langtools/dist
> ALT_CORBA_DIST=C:/users/gili/DOCUME~1/jdk7/jdk7/build/windows-amd64/ 
> corba/dist
> ALT_JAXP_DIST=C:/users/gili/DOCUME~1/jdk7/jdk7/build/windows-amd64/ 
> jaxp/dist
> ALT_JAXWS_DIST=C:/users/gili/DOCUME~1/jdk7/jdk7/build/windows-amd64/ 
> jaxws/dist
> ALT_HOTSPOT_IMPORT_PATH=C:/users/gili/DOCUME~1/jdk7/jdk7/build/ 
> windows-amd64/hotspot/import
> BUILD_HOTSPOT=true ; )
> /bin/sh: C:Program: command not found
> make[1]: Entering directory
> `/cygdrive/c/users/gili/Documents/jdk7/jdk7/jdk/make'
> C:/users/gili/DOCUME~1/jdk7/jdk7/jdk/make/common/shared/Sanity- 
> Settings.gmk:120:
> WARNING: ANT_VER should not be empty [Sanity-Settings.gmk]
> /bin/sh: line 0: [: /bin/sh:: integer expression expected
> /bin/sh: line 0: [: /bin/sh:: integer expression expected
> /bin/sh: line 0: [: /NO_BOOTDIR/bin/java:: integer expression expected
> /bin/sh: line 0: [: /NO_BOOTDIR/bin/java:: integer expression expected
> /bin/sh: line 0: [: No: integer expression expected
> /bin/sh: line 0: [: No: integer expression expected

The above may all be due to the ANT_HOME, but there was some issues  
with CYGWIN 1.7. utilities not
behaving correctly or behaving differently. But I thought that was  
fixed.

Looks like you failed to set ALT_BOOTDIR too???

> make[2]: ***
> [C:/users/gili/DOCUME~1/jdk7/jdk7/build/windows-amd64/btbins/ 
> freetype_versioncheck.exe]

Damn freetype...  sorry..

The freetype sanity check trys to build a small program and then run  
it to get the freetype
version number and also verify the freetype libraries at least load.
So the makefile at jdk/make/tools/freetype is failing somehow.
This freetype dependence is painful, and building it on windows is a  
bit painful, but once
you have it built, you can set ALT_FREETYPE_* env vars to point at the  
include and lib
directories. I don't think you can use the CYGWIN freetype libraries  
and include files, but
I'm not sure, they would need to be 64bit too...

I wish I could provide more details here, but I find freetype as  
frustrating as the rest of you. :^(

> Error 2
> make[1]: Leaving directory
> `/cygdrive/c/users/gili/Documents/jdk7/jdk7/jdk/make'
>
> Build Machine Information:
>   build machine = STALKER
>
> Build Directory Structure:
>   CWD = /cygdrive/c/users/gili/Documents/jdk7/jdk7
>   TOPDIR = .
>   CONTROL_TOPDIR = .
>   LANGTOOLS_TOPDIR = ./langtools
>   JAXP_TOPDIR = ./jaxp
>   JAXWS_TOPDIR = ./jaxws
>   CORBA_TOPDIR = ./corba
>   HOTSPOT_TOPDIR = ./hotspot
>   JDK_TOPDIR = ./jdk
>
> Build Directives:
>   BUILD_LANGTOOLS = true
>   BUILD_JAXP = true
>   BUILD_JAXWS = true
>   BUILD_CORBA = true
>   BUILD_HOTSPOT = true
>   BUILD_JDK    = true
>   DEBUG_CLASSFILES =
>   DEBUG_BINARIES =
>
> Hotspot Settings:
>      HOTSPOT_BUILD_JOBS  =
>      HOTSPOT_OUTPUTDIR   =
> C:/users/gili/DOCUME~1/jdk7/jdk7/build/windows-amd64/hotspot/outputdir
>      HOTSPOT_EXPORT_PATH =
> C:/users/gili/DOCUME~1/jdk7/jdk7/build/windows-amd64/hotspot/import
>
>
>
>
> Bootstrap Settings:
>  BOOTDIR = /NO_BOOTDIR
>    ALT_BOOTDIR =
>  BOOT_VER = /bin/sh: /NO_BOOTDIR/bin/java: No such file or directory
> [requires at least 1.5]

You need to set ALT_BOOTDIR to a jdk6 or jdk7 home.

>  OUTPUTDIR = C:/users/gili/DOCUME~1/jdk7/jdk7/build/windows-amd64
>    ALT_OUTPUTDIR = C:/users/gili/DOCUME~1/jdk7/jdk7/build/windows- 
> amd64
>  ABS_OUTPUTDIR = C:/users/gili/DOCUME~1/jdk7/jdk7/build/windows-amd64
>
> Build Tool Settings:
>  SLASH_JAVA = J:
>    ALT_SLASH_JAVA =
>  VARIANT = OPT
>  JDK_DEVTOOLS_DIR = J:/devtools
>    ALT_JDK_DEVTOOLS_DIR =
>  ANT_HOME = C:\Program Filespache-ant-1.8.0

see comment above on ANT_HOME

>  UNIXCOMMAND_PATH = /usr/bin/
>    ALT_UNIXCOMMAND_PATH =
>  COMPILER_PATH = C:/PROGRA~2/MICROS~2.0/Common7/Tools/../../Vc/bin/ 
> amd64/
>    ALT_COMPILER_PATH =
>  DEVTOOLS_PATH = /usr/bin/
>    ALT_DEVTOOLS_PATH =
>  MSVCRT_DLL_PATH = C:/Windows/system32
>    ALT_MSVCRT_DLL_PATH =
>  MSVCRNN_DLL_PATH =
>    ALT_MSVCRNN_DLL_PATH =
>  MSDEVTOOLS_PATH =
> C:/PROGRA~2/MICROS~2.0/Common7/Tools/../../Vc/bin/amd64/../../../
>    ALT_MSDEVTOOLS_PATH =
>  COMPILER_NAME = Microsoft Visual Studio 10 (16.00.30319.01)
>  COMPILER_VERSION = VS2010
>  CC_VER = 16.00.30319.01 [requires at least 16.00.30319.01]

Did you run vcvars32.bat or vsvars32.bat? Just curious if the PATH,  
LIB and INCLUDE env vars are setup right.

>  ZIP_VER = 3.0 [requires at least 2.2]
>  UNZIP_VER = 6.00 [requires at least 5.12]
>  LINK_VER = 10.00.30319.01 [requires at least 10.00.30319.01]
>  TEMPDIR = C:/users/gili/DOCUME~1/jdk7/jdk7/build/windows-amd64/tmp
>
> Build Directives:
>  OPENJDK = true
>  USE_HOTSPOT_INTERPRETER_MODE =
>  PEDANTIC =
>  DEV_ONLY =
>  NO_DOCS =
>  NO_IMAGES =
>  TOOLS_ONLY =
>  INSANE =
>  COMPILE_APPROACH = normal
>  FASTDEBUG =
>  COMPILER_WARNINGS_FATAL = false
>  COMPILER_WARNING_LEVEL = 3
>  INCREMENTAL_BUILD = false
>  CC_HIGHEST_OPT =
>  CC_HIGHER_OPT =
>  CC_LOWER_OPT =
>  CXXFLAGS =  -O1 -Zi -nologo -MD /D _STATIC_CPPLIB -Zc:wchar_t-
> -FdC:/users/gili/DOCUME~1/jdk7/jdk7/build/windows-amd64/tmp/obj64/.pdb
> -FmC:/users/gili/DOCUME~1/jdk7/jdk7/build/windows-amd64/tmp/obj64/.map
> -wd4800 -W3 -D _CRT_SECURE_NO_DEPRECATE
>  CFLAGS =  -O1   -Zi -nologo -MD /D _STATIC_CPPLIB -Zc:wchar_t-
> -FdC:/users/gili/DOCUME~1/jdk7/jdk7/build/windows-amd64/tmp/obj64/.pdb
> -FmC:/users/gili/DOCUME~1/jdk7/jdk7/build/windows-amd64/tmp/obj64/.map
> -wd4800 -W3 -D _CRT_SECURE_NO_DEPRECATE
>  BOOT_JAVA_CMD = /NO_BOOTDIR/bin/java -XX:-PrintVMOptions
> -XX:+UnlockDiagnosticVMOptions -XX:-LogVMOutput -Xmx896m -Xms128m
> -XX:PermSize=32m -XX:MaxPermSize=160m
>  BOOT_JAVAC_CMD = /NO_BOOTDIR/bin/javac  -J-XX:ThreadStackSize=1536
> -J-XX:-PrintVMOptions -J-XX:+UnlockDiagnosticVMOptions -J-XX:- 
> LogVMOutput
> -J-Xmx896m -J-Xms128m -J-XX:PermSize=32m -J-XX:MaxPermSize=160m - 
> encoding
> ascii -source 6 -target 6 -XDignore.symbol.file=true
>  BOOT_JAR_CMD = /NO_BOOTDIR/bin/jar
>  BOOT_JARSIGNER_CMD = /NO_BOOTDIR/bin/jarsigner
>
> Build Platform Settings:
>  USER = Gili
>  PLATFORM = windows
>  ARCH = amd64
>  LIBARCH = amd64
>  ARCH_FAMILY = amd64
>  ARCH_DATA_MODEL = 64
>  ARCHPROP = amd64
>  PROCESSOR_ARCHITECTURE = x86
>  PROCESSOR_IDENTIFIER = Intel64 Family 6 Model 15 Stepping 11,  
> GenuineIntel
>  USING_CYGWIN = true
>  CYGWIN_VER = 6.1 [requires at least 4.0]
>  CYGPATH_CMD = cygpath -a -s -m
>  OS_VERSION = 6.1 [requires at least 5.2]
>  OS_VARIANT_NAME =
>  OS_VARIANT_VERSION = 6.1
>  TEMP_FREE_SPACE = 52973652
>  FREE_SPACE = 52973652
>  MB_OF_MEMORY = 4095
>
> GNU Make Settings:
>  MAKE = make
>  MAKE_VER = 3.81 [requires at least 3.78]
>  MAKECMDGOALS = sanity
>  MAKEFLAGS = w
>  SHELL = /bin/sh
>
> Target Build Versions:
>  JDK_VERSION = 1.7.0
>  MILESTONE = internal
>  RELEASE = 1.7.0-internal
>  FULL_VERSION = 1.7.0-internal-gili_2010_06_07_14_23-b00
>  BUILD_NUMBER = b00
>
> External File/Binary Locations:
>  USRJDKINSTANCES_PATH = C:/PROGRA~1/Java
>  BUILD_JDK_IMPORT_PATH = J:/re/jdk/1.7.0/promoted/latest/binaries
>    ALT_BUILD_JDK_IMPORT_PATH =
>  JDK_IMPORT_PATH = J:/re/jdk/1.7.0/promoted/latest/binaries/windows- 
> amd64
>    ALT_JDK_IMPORT_PATH =

If you use a jdk7 as ALT_BOOTDIR, you could have ALT_JDK_IMPORT_PATH  
point at the same jdk.
But ALT_JDK_IMPORT_PATH must be a recent jdk7 build.
This is used for partial builds, where you skip building hotspot, or  
just build the jdk7/jdk repo.

>  LANGTOOLS_DIST =
>    ALT_LANGTOOLS_DIST =
> C:/users/gili/DOCUME~1/jdk7/jdk7/build/windows-amd64/langtools/dist
>  CORBA_DIST =
>    ALT_CORBA_DIST =
> C:/users/gili/DOCUME~1/jdk7/jdk7/build/windows-amd64/corba/dist
>  JAXP_DIST =
>    ALT_JAXP_DIST =
> C:/users/gili/DOCUME~1/jdk7/jdk7/build/windows-amd64/jaxp/dist
>  JAXWS_DIST =
>    ALT_JAXWS_DIST =
> C:/users/gili/DOCUME~1/jdk7/jdk7/build/windows-amd64/jaxws/dist
>  HOTSPOT_DOCS_IMPORT_PATH = /NO_DOCS_DIR
>    ALT_HOTSPOT_DOCS_IMPORT_PATH =
>  HOTSPOT_IMPORT_PATH =
> C:/users/gili/DOCUME~1/jdk7/jdk7/build/WINDOW~1/hotspot/import
>    ALT_HOTSPOT_IMPORT_PATH =
> C:/users/gili/DOCUME~1/jdk7/jdk7/build/windows-amd64/hotspot/import
>  HOTSPOT_SERVER_PATH =
> C:/users/gili/DOCUME~1/jdk7/jdk7/build/WINDOW~1/hotspot/import/jre/ 
> bin/server
>    ALT_HOTSPOT_SERVER_PATH =
>  HOTSPOT_LIB_PATH =
> C:/users/gili/DOCUME~1/jdk7/jdk7/build/WINDOW~1/hotspot/import/lib
>    ALT_HOTSPOT_LIB_PATH =
>  DXSDK_VER = 0x0900
>  DXSDK_PATH = C:/PROGRA~2/MICROS~1.0SD
>    ALT_DXSDK_PATH =
>  DXSDK_INCLUDE_PATH = C:/PROGRA~2/MICROS~1.0SD/Include
>    ALT_DXSDK_INCLUDE_PATH =
>  DXSDK_LIB_PATH = C:/PROGRA~2/MICROS~1.0SD/Lib/x64
>    ALT_DXSDK_LIB_PATH =
>  CACERTS_FILE = ./../src/share/lib/security/cacerts
>    ALT_CACERTS_FILE =
>
> OpenJDK-specific settings:
>  FREETYPE_HEADERS_PATH = /usr/include
>    ALT_FREETYPE_HEADERS_PATH =
>  FREETYPE_LIB_PATH = /usr/lib
>    ALT_FREETYPE_LIB_PATH =

I don't think the above freetype will work. See my freetype comments  
above.

>
> OPENJDK Import Binary Plug Settings:
>  IMPORT_BINARY_PLUGS =
>  BINARY_PLUGS_JARFILE =
> J:/re/jdk/1.7.0/promoted/latest/openjdk/binaryplugs/windows-amd64/ 
> jre/lib/rt-closed.jar
>    ALT_BINARY_PLUGS_JARFILE =
>  BINARY_PLUGS_PATH =
> J:/re/jdk/1.7.0/promoted/latest/openjdk/binaryplugs/windows-amd64
>    ALT_BINARY_PLUGS_PATH =
>  BUILD_BINARY_PLUGS_PATH =
> J:/re/jdk/1.7.0/promoted/latest/openjdk/binaryplugs
>    ALT_BUILD_BINARY_PLUGS_PATH =
>  PLUG_LIBRARY_NAMES =

If I were you, I would explicitly set IMPORT_BINARY_PLUGS=false this  
may be the default now, not sure.

>
> Previous JDK Settings:
>  PREVIOUS_RELEASE_PATH =
>    ALT_PREVIOUS_RELEASE_PATH =
>  PREVIOUS_JDK_VERSION = 1.6.0
>    ALT_PREVIOUS_JDK_VERSION =
>  PREVIOUS_JDK_FILE =
>    ALT_PREVIOUS_JDK_FILE =
>  PREVIOUS_JRE_FILE =
>    ALT_PREVIOUS_JRE_FILE =
>  PREVIOUS_RELEASE_IMAGE =
>    ALT_PREVIOUS_RELEASE_IMAGE =
>
>
> WARNING: The version of ant being used is older than
>       the required version of '1.6.3'.
>       The version of ant found was ''.
>
> ERROR: You do not have access to msvcr100.dll.
>       Please check your access to
>
>       and/or check your value of ALT_MSVCRNN_DLL_PATH.

Somewhere, perhaps in the Microsoft SDKs, the makefiles are looking  
for a copy of this dll so
it can copy it into the built jdk image.
This might indicate that you did not install the latest Microsoft SDK?  
Or the makefiles are having
problems finding it.
I would search your C:/ drive for a msvcr100.dll file, maybe in a  
"redist" directory, and see
if you can set ALT_MSVCRNN_DLL_PATH. But make sure it is an Intel64 or  
amd64 dll, not a
32bit one.

>
> ERROR: Your JAVA_HOME environment variable is set.  This will
>       most likely cause the build to fail.  Please unset it
>       and start your build again.

Never leave JAVA_HOME set in your environment, just 'unset JAVA_HOME',  
it's a dangerous
thing to set when building a jdk, so we just disallow it.

>
> ERROR: FreeType version  2.3.0  or higher is required.
> make[2]: Entering directory
> `/cygdrive/c/users/gili/Documents/jdk7/jdk7/jdk/make/tools/ 
> freetypecheck'
> /usr/bin/mkdir -p
> C:/users/gili/DOCUME~1/jdk7/jdk7/build/windows-amd64/btbins
> rm -f
> C:/users/gili/DOCUME~1/jdk7/jdk7/build/windows-amd64/btbins/ 
> freetype_versioncheck.exe
> C:/PROGRA~2/MICROS~2.0/Common7/Tools/../../Vc/bin/amd64/cl /nologo /c
> -I/usr/include -I/usr/include/freetype2 - 
> DREQUIRED_FREETYPE_VERSION=2.3.0
> -FoC:/users/gili/DOCUME~1/jdk7/jdk7/build/windows-amd64/btbins/ 
> freetype_versioncheck.obj
> freetypecheck.c
> freetypecheck.c
> freetypecheck.c(29) : fatal error C1083: Cannot open include file:
> 'stdio.h': No such file or directory

Yeah. It's trying to build a freetype check program with VS2010, and  
probably found a stdio.h
from the CYGWIN /usr/include, not the stdio.h you want.
The problem is that you need the freetype include files which are  
mixed in with the CYGWIN
C/C++ gcc include files. But even if you managed this, the dll used I  
don't think is right anyway.
You need a dll built with Visual Studio 2010 compilers, which means  
downloading freetype
sources and building it, and saving those files. Yes, I know, painful.  
Sorry in advance. ;^(

> make[2]: Leaving directory
> `/cygdrive/c/users/gili/Documents/jdk7/jdk7/jdk/make/tools/ 
> freetypecheck'
> Failed to build freetypecheck.
>
> Exiting because of the above error(s).
>
> make: *** [post-sanity] Error 1
> --------------
>
> Is there an easy way for me to figure out which file/line is causing  
> these
> kinds of errors?
>

Many different issues here, like I said, windows is a pain, and you  
are in uncharted territory.

Hope something I've provide helps.

-kto

> "/bin/sh: C:Program: command not found"
>
> or why Ant's version isn't being detected even though I provide the  
> correct
> path...
>
> Thanks,
> Gili
> -- 
> View this message in context: http://old.nabble.com/Help-building-under-Windows7-64-bit-tp28808920p28808920.html
> Sent from the OpenJDK Build Infrastructure mailing list archive at  
> Nabble.com.
>




More information about the build-dev mailing list