Skip to main content

building windows b87 i486 vs. i586

3 replies [Last post]
Joined: 2005-07-14

Hi. I've started building on win32. I get past the sanity check, but then I have an odd problem, that I can't find any mention of in the forum. The makefile is looking for a file named platform_i586 in hotspot\build\windows, but it's not there. There is a file named platform_i486. For grins, I renamed it, and changed its contents so that every instance of "i486" became "i586". I didn't really expect this to work, but it chugged along a bit, and then hit a similar problem:

NMAKE : fatal error U1073: don't know how to make 'D:\Java\Build\1.6.0\src\hotspot/src/cpu/i586/vm/'

Sure enough, there isn't an "i586" directory, although there is one for i486.

Is this perhaps an install problem? (I tried re-installing the source jar). Here's the platform info from the build - it seems like it's correctly diagnosing a 586 platform:

Build Platform Settings:
USER = mrothman
PLATFORM = windows
ARCH = i586
LIBARCH = i386
PROCESSOR_IDENTIFIER = x86 Family 15 Model 2 Stepping 9, GenuineIntel
WINDOWS_VERSION = 5 1 Service Pack 2
MKS_VER = 9.0 [requires at least 6.1]
DOSNAME_CMD = dosname -s
OS_VERSION = 5 [requires at least 5]
OS_NAME = nt
FREE_SPACE = 30830766

Reply viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.
Joined: 2005-07-14

Thanks, you are right.

What appears to happen is that ARCH is set in j2se\make\common\shared\Platform.gmk, which is included in the main Makefile by being included in control\make\common\Defs.gmk.

The top level hotspot makefile does in fact set an "HS_ARCH" variable and use it in some places. However, it gets ignored in hotspot\build\windows\build.make, which uses ARCH, and only sets ARCH if it hasn't already been defined.

Question: if this isn't hitting folks en masse, is it because most people build piece by piece, rather than starting at control\make?

Joined: 2004-09-03

I'm not able to reproduce this problem. I can't see any ARCH value being passed into the hotspot makefiles from the control/make makefiles. For ARCH to be pre-defined in the hotspot build.make file, it seems like it has to be coming from your environment variables somehow. Try 'env|grep -i arch' and see if you have any environment variables with the name ARCH (upper or lower case). In the meantime, I'll check into fixing the hotspot makefiles.


Joined: 2004-09-03

I suspect that somehow ARCH is being defined to be i586, either in the environment or by an upper level Makefile, and the hotspot makefiles are accepting this instead of using their own idea of ARCH. The hotspot makefiles should have used a name like HOTSPOT_ARCH, :^(

In the hotspot makefiles it will be important that ARCH=i486.

Have you got ARCH defined in the environment to be i586? If so, can you undefine it? Oh, and you aren't using that horrible 'make -e' option are you? The -e option has never mixed well with the JDK makefiles.