Hi David, yes, it's the hotspot only build.
But that's no good If I have to set something that can be easily derived from information already available! I at least would add another $(shell uname -m) test in the condition in the ppc64.make file. ifeq (,$(filter $(OPENJDK_TARGET_CPU_ENDIAN),big little)) OPENJDK_TARGET_CPU_ENDIAN=big ifeq($(shell uname -m), ppc64le) OPENJDK_TARGET_CPU_ENDIAN =little endif endif Also, I don't see how defs.make deals with the outcome ppc64le of uname. Sasha, is there missing something from your change? If there needs to be a section # PPC64le ifeq ($(ARCH), ppc64le) ARCH_DATA_MODEL = 64 MAKE_ARGS += LP64=1 PLATFORM = linux-ppc64 VM_PLATFORM = linux_ppc64 HS_ARCH = ppc endif setting OPENJDK_TARGET_CPU_ENDIAN should be added there I think. Best regards, Goetz -----Original Message----- From: David Holmes [mailto:david.hol...@oracle.com] Sent: Friday, March 21, 2014 12:08 PM To: Lindenmaier, Goetz; 'Alexander Smundak' Cc: 'build-dev'; 'HotSpot Open Source Developers' Subject: Re: RFR (M): 8036767 PPC64: Support for little endian execution model On 21/03/2014 7:06 PM, Lindenmaier, Goetz wrote: > Hi Sasha, > > I tried to test your change (02), but it does not work. > On linux ppc be;) I get > > make[4]: Leaving directory > `/net/usr.work/d045726/oJ/builds/8036767-comp-ld9502-dbg/linux_ppc64_compiler2/debug' > make[4]: Entering directory > `/net/usr.work/d045726/oJ/builds/8036767-comp-ld9502-dbg/linux_ppc64_compiler2/debug' > /sapmnt/home1/d045726/oJ/8036767-hs-comp/make/linux/makefiles/ppc64.make:30: > *** OPENJDK_TARGET_CPU_ENDIAN has not been passed to this makefile. Stop. > > which is just what you discussed with David. Was that a full configure build or a hotspot-only build? For hotspot-only you would need to set this explicitly. David > On Aix I get > "/sapmnt/home1/d045726/oJ/8036767-aix-hs-comp/src/cpu/ppc/vm/bytes_ppc.hpp", > line 277.10: 1540-0836 (S) The #include file "bytes_linux_ppc.inline.hpp" is > not found. > > I think we fixed this before, you need to add > #ifdef TARGET_OS_ARCH_linux_ppc > around the include. > > Also, you need to fix os_linux.cpp: remove > + #if defined(PPC64) > else other platforms will not build (linux x86_64): > /sapmnt/home/d045726/oJ/8036767-hs-comp/src/os/linux/vm/os_linux.cpp:1972: > error: ‘PPC64_ELFDATA2XSB’ was not declared in this scope > > Thanks for undoing the change in make/linux/Makefile! > > Best regards, > Goetz. > > > -----Original Message----- > From: hotspot-dev [mailto:hotspot-dev-boun...@openjdk.java.net] On Behalf Of > Alexander Smundak > Sent: Friday, March 21, 2014 7:15 AM > To: David Holmes > Cc: build-dev; HotSpot Open Source Developers > Subject: Re: RFR (M): 8036767 PPC64: Support for little endian execution model > > Revised the patch to use OPENJDK_TARGET_CPU_ENDIAN instead. The new > version is at: > http://cr.openjdk.java.net/~martin/asmundak/8036767/hotspot/webrev.02 > > On Thu, Mar 20, 2014 at 8:57 PM, David Holmes <david.hol...@oracle.com> wrote: >> On 21/03/2014 1:42 PM, Alexander Smundak wrote: >>> >>> On Thu, Mar 20, 2014 at 7:39 PM, David Holmes <david.hol...@oracle.com> >>> wrote: >>>> >>>> The build changes look much cleaner to me - thanks. >>> >>> It's at the expense of platform directory being ppc64/ instead of the >>> conventional ppc64le/, and having rather ugly check in the ppc64.make >>> file. >>> >>> >>>> Why are you not using OPENJDK_TARGET_CPU_ENDIAN directly? Ah! Because it >>>> doesn't reach down into the <arch>.make files. ZERO_ENDIANNESS does but >>>> seems inappropriate if this is not Zero specific. (I'm also not seeing >>>> how >>>> ZERO_ENDIANNESS reaches down that far either ??). >>> >>> configure script writes hotspot-spec.gmk file to the top-level build >>> directory, >>> and it contains >>> ZERO_ENDIANNESS=$(OPENJDK_TARGET_CPU_ENDIAN) >> >> >> Yes but my query was how does ZERO_ENDIANNESS become visible in ppc64.make? >> The answer to which is that the generated flags.make file has an explicit >> include of hotspot-spec.gmk. In which case you don't need to use >> ZERO_ENDIANNESS you can just use $(OPENJDK_TARGET_CPU_ENDIAN) directly. >> (Which now begs the question as to why ZERO_ENDIANNESS even exists - perhaps >> it predates the integration with the new build.) >> >> David >> ----- >> >> >>> The patch contains the fuse in ppc64.make, the build will fail unless >>> ZERO_ENDIANNESS is set. >>> >>>>> jdk: http://cr.openjdk.java.net/~martin/asmundak/8036767/jdk/webrev.01 >>>> >>>> >>>> >>>> This change: >>>> >>>> - LDFLAGS_SUFFIX := $(ALSA_LIBS) -ljava -ljvm, \ >>>> + LDFLAGS_SUFFIX := $(ALSA_LIBS) $(LIBDL) $(LIBM) -lpthread -ljava >>>> -ljvm, \ >>>> >>>> seems unrelated to endianness. Why is it needed, and why is it being >>>> applied >>>> to all platforms? >>> >>> Sorry, this is not needed, it's the problem with the toolchain I am using. >>> >>> Please ignore this patch. >>> >>