diff -u -r ../work-orig/corba/make/common/Defs-bsd.gmk ./corba/make/common/Defs-bsd.gmk --- ../work-orig/corba/make/common/Defs-bsd.gmk 2010-11-04 21:49:08.000000000 +0800 +++ ./corba/make/common/Defs-bsd.gmk 2010-11-04 21:53:16.000000000 +0800 @@ -90,7 +90,11 @@ CFLAGS_REQUIRED_i586 += -fno-omit-frame-pointer -D_LITTLE_ENDIAN ifeq ($(OS_VENDOR),Apple) # 16-byte stack re-alignment on 32-bit Darwin - CFLAGS_REQUIRED_i586 += -mstackrealign + CFLAGS_REQUIRED_i586 += -mstackrealign -m32 + LDFLAGS_COMMON_i586 += -m32 + + CFLAGS_REQUIRED_amd64 += -m64 + LDFLAGS_COMMON_amd64 += -m64 endif CFLAGS_REQUIRED_ia64 += -fno-omit-frame-pointer -D_LITTLE_ENDIAN CFLAGS_REQUIRED_sparcv9 += -m64 -mcpu=v9 diff -u -r ../work-orig/hotspot/make/bsd/makefiles/defs.make ./hotspot/make/bsd/makefiles/defs.make --- ../work-orig/hotspot/make/bsd/makefiles/defs.make 2010-11-04 21:49:10.000000000 +0800 +++ ./hotspot/make/bsd/makefiles/defs.make 2010-11-04 21:57:49.000000000 +0800 @@ -30,6 +30,33 @@ # Need PLATFORM (os-arch combo names) for jdk and hotspot, plus libarch name ARCH:=$(shell uname -m) +OS_VENDOR:=$(shell uname -s) +ifeq ($(OS_VENDOR),Darwin) + # Darwin returns i386 for 32bit kernel mode and x86_64 for 64bit kernel mode + # regardless of the actual supported architecture. + ifndef UNAME_MACHINE + # UNAME_MACHINE not passed in + ifdef ARCH_DATA_MODEL + # Overrides ARCH with proper value when ARCH_DATA_MODEL passed + ifeq ($(ARCH_DATA_MODEL), 32) + UNAME_MACHINE = i386 + else + UNAME_MACHINE = amd64 + endif + + else + # Defaults to 64bit on Darwin 9+ when ARCH_DATA_MODEL is not passed + ifneq (,$(findstring $(shell uname -r | cut -d '.' -f1), 9 10)) + UNAME_MACHINE = amd64 + else + UNAME_MACHINE = i386 + endif + endif + endif + + ARCH = $(UNAME_MACHINE) +endif + PATH_SEP = : ifeq ($(LP64), 1) ARCH_DATA_MODEL ?= 64 @@ -72,8 +99,8 @@ HS_ARCH = sparc endif -# x86_64 -ifeq ($(ARCH), x86_64) +# amd64 +ifeq ($(ARCH), amd64) ifeq ($(ARCH_DATA_MODEL), 64) ARCH_DATA_MODEL = 64 MAKE_ARGS += LP64=1 @@ -85,46 +112,54 @@ PLATFORM = bsd-i586 VM_PLATFORM = bsd_i486 HS_ARCH = x86 - # We have to reset ARCH to i686 since SRCARCH relies on it - ARCH = i686 + # We have to reset ARCH to i386 since SRCARCH relies on it + ARCH = i386 endif endif -# amd64 -ifeq ($(ARCH), amd64) - ARCH_DATA_MODEL = 64 - MAKE_ARGS += LP64=1 - PLATFORM = bsd-amd64 - VM_PLATFORM = bsd_amd64 - HS_ARCH = x86 -endif - # i386 ifeq ($(ARCH), i386) - ARCH_DATA_MODEL = 32 - PLATFORM = bsd-i586 - VM_PLATFORM = bsd_i486 - HS_ARCH = x86 + ifeq ($(ARCH_DATA_MODEL), 64) + ARCH_DATA_MODEL = 64 + MAKE_ARGS += LP64=1 + PLATFORM = bsd-amd64 + VM_PLATFORM = bsd_amd64 + HS_ARCH = x86 + # We have to reset ARCH to amd64 since SRCARCH relies on it + ARCH = amd64 + else + ARCH_DATA_MODEL = 32 + PLATFORM = bsd-i586 + VM_PLATFORM = bsd_i486 + HS_ARCH = x86 + endif endif -# i486 -ifeq ($(ARCH), i486) +# ARM +ifeq ($(ARCH), arm) ARCH_DATA_MODEL = 32 - PLATFORM = bsd-i586 - VM_PLATFORM = bsd_i486 - HS_ARCH = x86 + PLATFORM = bsd-arm + VM_PLATFORM = bsd_arm + HS_ARCH = arm endif -# i686 -ifeq ($(ARCH), i686) +# PPC +ifeq ($(ARCH), ppc) ARCH_DATA_MODEL = 32 - PLATFORM = bsd-i586 - VM_PLATFORM = bsd_i486 - HS_ARCH = x86 + PLATFORM = bsd-ppc + VM_PLATFORM = bsd_ppc + HS_ARCH = ppc endif JDK_INCLUDE_SUBDIR=bsd +# Library suffix +ifeq ($(OS_VENDOR),Darwin) + LIBRARY_SUFFIX=dylib +else + LIBRARY_SUFFIX=so +endif + # FIXUP: The subdirectory for a debug build is NOT the same on all platforms VM_DEBUG=jvmg @@ -132,22 +167,32 @@ # client and server subdirectories have symbolic links to ../libjsig.so EXPORT_LIST += $(EXPORT_JRE_LIB_ARCH_DIR)/libjsig.$(LIBRARY_SUFFIX) - EXPORT_SERVER_DIR = $(EXPORT_JRE_LIB_ARCH_DIR)/server + +ifndef BUILD_CLIENT_ONLY EXPORT_LIST += $(EXPORT_SERVER_DIR)/Xusage.txt EXPORT_LIST += $(EXPORT_SERVER_DIR)/libjvm.$(LIBRARY_SUFFIX) +endif + ifneq ($(ZERO_BUILD), true) ifeq ($(ARCH_DATA_MODEL), 32) EXPORT_CLIENT_DIR = $(EXPORT_JRE_LIB_ARCH_DIR)/client EXPORT_LIST += $(EXPORT_CLIENT_DIR)/Xusage.txt EXPORT_LIST += $(EXPORT_CLIENT_DIR)/libjvm.$(LIBRARY_SUFFIX) - EXPORT_LIST += $(EXPORT_JRE_LIB_ARCH_DIR)/libsaproc.$(LIBRARY_SUFFIX) - EXPORT_LIST += $(EXPORT_LIB_DIR)/sa-jdi.jar - else - ifeq ($(ARCH),ia64) - else - EXPORT_LIST += $(EXPORT_JRE_LIB_ARCH_DIR)/libsaproc.$(LIBRARY_SUFFIX) - EXPORT_LIST += $(EXPORT_LIB_DIR)/sa-jdi.jar - endif endif endif + +# Serviceability Binaries +# No SA Support for PPC, IA64, ARM or zero and Darwin +ifneq ($(OS_VENDOR),Darwin) +ADD_SA_BINARIES/x86 = $(EXPORT_JRE_LIB_ARCH_DIR)/libsaproc.$(LIBRARY_SUFFIX) \ + $(EXPORT_LIB_DIR)/sa-jdi.jar +endif +ADD_SA_BINARIES/sparc = $(EXPORT_JRE_LIB_ARCH_DIR)/libsaproc.$(LIBRARY_SUFFIX) \ + $(EXPORT_LIB_DIR)/sa-jdi.jar +ADD_SA_BINARIES/ppc = +ADD_SA_BINARIES/ia64 = +ADD_SA_BINARIES/arm = +ADD_SA_BINARIES/zero = + +EXPORT_LIST += $(ADD_SA_BINARIES/$(HS_ARCH)) diff -u -r ../work-orig/hotspot/make/bsd/makefiles/gcc.make ./hotspot/make/bsd/makefiles/gcc.make --- ../work-orig/hotspot/make/bsd/makefiles/gcc.make 2010-11-04 21:49:10.000000000 +0800 +++ ./hotspot/make/bsd/makefiles/gcc.make 2010-11-04 21:53:17.000000000 +0800 @@ -76,9 +76,6 @@ ifeq ($(OS_VENDOR), Darwin) # Ineffecient 16-byte stack re-alignment on Darwin/IA32 ARCHFLAG/i486 += -mstackrealign - - # -arch compiler flag required for x64_64 - ARCHFLAGS/amd64 += -arch x86_64 endif CFLAGS += $(ARCHFLAG) @@ -183,6 +180,13 @@ # Keep symbols even they are not used #AOUT_FLAGS += -export-dynamic + + ifeq ($(ARCH_DATA_MODEL), 32) + LFLAGS += -m32 + else + LFLAGS += -m64 + endif + else # Enable linker optimization LFLAGS += -Xlinker -O1 diff -u -r ../work-orig/jdk/make/common/Defs-bsd.gmk ./jdk/make/common/Defs-bsd.gmk --- ../work-orig/jdk/make/common/Defs-bsd.gmk 2010-11-04 21:49:12.000000000 +0800 +++ ./jdk/make/common/Defs-bsd.gmk 2010-11-04 21:53:20.000000000 +0800 @@ -100,7 +100,11 @@ CFLAGS_REQUIRED_i586 += -fno-omit-frame-pointer -D_LITTLE_ENDIAN ifeq ($(OS_VENDOR),Apple) # 16-byte stack re-alignment on 32-bit Darwin - CFLAGS_REQUIRED_i586 += -mstackrealign + CFLAGS_REQUIRED_i586 += -mstackrealign -m32 + LDFLAGS_COMMON_i586 += -m32 + + CFLAGS_REQUIRED_amd64 += -m64 + LDFLAGS_COMMON_amd64 += -m64 endif CFLAGS_REQUIRED_ia64 += -fno-omit-frame-pointer -D_LITTLE_ENDIAN CFLAGS_REQUIRED_sparcv9 += -m64 -mcpu=v9 diff -u -r ../work-orig/jdk/make/common/shared/Platform.gmk ./jdk/make/common/shared/Platform.gmk --- ../work-orig/jdk/make/common/shared/Platform.gmk 2010-11-04 21:49:12.000000000 +0800 +++ ./jdk/make/common/shared/Platform.gmk 2010-11-04 21:53:20.000000000 +0800 @@ -308,6 +308,32 @@ OS_VERSION := $(shell uname -r) # Arch and OS name/version mach := $(shell uname -m) + ifeq ($(OS_VENDOR),Apple) + # Darwin returns i386 for 32bit kernel mode and x86_64 for 64bit kernel mode + # regardless of the actual supported architecture. + ifndef UNAME_MACHINE + # UNAME_MACHINE not passed in + ifdef ARCH_DATA_MODEL + # Overrides ARCH with proper value when ARCH_DATA_MODEL passed + ifeq ($(ARCH_DATA_MODEL), 32) + UNAME_MACHINE = i386 + else + UNAME_MACHINE = amd64 + endif + + else + # Defaults to 64bit on Darwin 9+ when ARCH_DATA_MODEL is not passed + ifneq (,$(findstring $(shell echo $(OS_VERSION) | cut -d '.' -f1), 9 10)) + UNAME_MACHINE = amd64 + else + UNAME_MACHINE = i386 + endif + endif + endif + + mach = $(UNAME_MACHINE) + endif + archExpr = case "$(mach)" in \ i[3-9]86) \ echo i586 \ @@ -319,11 +345,13 @@ ARCH := $(shell $(archExpr) ) ARCH_FAMILY := $(ARCH) - # i586 and sparc are 32 bit, amd64 and sparc64 are 64 - ifneq (,$(findstring $(ARCH), i586 sparc)) - ARCH_DATA_MODEL=32 - else - ARCH_DATA_MODEL=64 + ifndef ARCH_DATA_MODEL + # i586 and sparc are 32 bit, amd64 and sparc64 are 64 + ifneq (,$(findstring $(ARCH), i586 sparc)) + ARCH_DATA_MODEL=32 + else + ARCH_DATA_MODEL=64 + endif endif # Need to maintain the jre/lib/i386 location for 32-bit Intel