6611629: Avoid hardcoded cygwin paths for memory detection
Summary: Use free with sygwin, mem or systeminfo otherwise, to get MB_OF_MEMORY on windows.
Reviewed-by: tbell
--- a/jdk/make/common/shared/Platform.gmk Tue Mar 18 11:08:09 2008 -0700
+++ b/jdk/make/common/shared/Platform.gmk Wed Mar 19 13:26:29 2008 -0700
@@ -270,7 +270,7 @@
REQUIRED_ALSA_VERSION = ^((0[.]9[.][1-9])|(1[.]0[.][0-9]))[0-9]*
endif
# How much RAM does this machine have:
- MB_OF_MEMORY := $(shell free -m | fgrep Mem: | sed -e 's@\ \ *@ @g' | cut -d' ' -f2)
+ MB_OF_MEMORY := $(shell free -m | fgrep Mem: | awk '{print $$2;}' )
endif
# Windows with and without CYGWIN will be slightly different
@@ -374,45 +374,35 @@
REQUIRED_DXSDK_VER = 0x0700
OS_VENDOR = Microsoft
# How much RAM does this machine have:
- MB_OF_MEMORY := $(shell \
- if [ -f "C:/cygwin/bin/free.exe" ] ; then \
- ( C:/cygwin/bin/bash.exe -c "C:/cygwin/bin/free.exe -m" ) | \
- grep Mem: | \
- sed -e 's@\ \ *@ @g' | cut -d' ' -f2 ; \
- else \
- echo "512"; \
- fi)
-endif
-
-# Machines with 512Mb or less of real memory are considered low memory
-# build machines and adjustments will be made to prevent excessing
-# system swapping during the build.
-# If we don't know, assume 512. Subtract 128 from MB for VM MAX.
-# Don't set VM max over 1024-128=896.
-ifneq ($(MB_OF_MEMORY),)
- LOW_MEMORY_MACHINE := $(shell \
- if [ $(MB_OF_MEMORY) -le 512 ] ; then \
- echo "true"; \
- else \
- echo "false"; \
- fi)
- MAX_VM_MEMORY := $(shell \
- if [ $(MB_OF_MEMORY) -le 1024 ] ; then \
- expr $(MB_OF_MEMORY) '-' 128 ; \
- else \
- echo "896"; \
- fi)
- MIN_VM_MEMORY := $(shell \
- if [ $(MAX_VM_MEMORY) -le 128 ] ; then \
- expr $(MAX_VM_MEMORY) '-' 8 ; \
- else \
- echo "128"; \
- fi)
-else
- MB_OF_MEMORY := unknown
- LOW_MEMORY_MACHINE := true
- MAX_VM_MEMORY := 384
- MIN_VM_MEMORY := 128
+ ifeq ($(USING_CYGWIN),true)
+ # CYGWIN has the 'free' utility
+ _MB_OF_MEMORY := \
+ $(shell free -m | grep Mem: | awk '{print $$2;}' )
+ else
+ # Windows 2000 has the mem utility, but two memory areas
+ # extended memory is what is beyond 1024M
+ _B_OF_EXT_MEMORY := \
+ $(shell mem 2> $(DEV_NULL) | grep 'total contiguous extended memory' | awk '{print $$1;}')
+ ifeq ($(_B_OF_EXT_MEMORY),)
+ _B_OF_MEMORY := \
+ $(shell mem 2> $(DEV_NULL) | grep 'total conventional memory' | awk '{print $$1;}')
+ else
+ _B_OF_MEMORY := \
+ $(shell expr 1048576 '+' $(_B_OF_EXT_MEMORY) 2> $(DEV_NULL))
+ endif
+ ifeq ($(_B_OF_MEMORY),)
+ # Windows 2003 has the systeminfo utility use it if mem doesn't work
+ _MB_OF_MEMORY := \
+ $(shell systeminfo 2> $(DEV_NULL) | grep 'Total Physical Memory:' | awk '{print $$4;}' | sed -e 's@,@@')
+ else
+ _MB_OF_MEMORY := $(shell expr $(_B_OF_MEMORY) '/' 1024 2> $(DEV_NULL))
+ endif
+ endif
+ ifeq ($(shell expr $(_MB_OF_MEMORY) '+' 0 2> $(DEV_NULL)), $(_MB_OF_MEMORY))
+ MB_OF_MEMORY := $(_MB_OF_MEMORY)
+ else
+ MB_OF_MEMORY := 512
+ endif
endif
REQUIRED_ZIP_VER = 2.2
@@ -452,6 +442,37 @@
ARCH_VM_SUBDIR=jre/lib/$(LIBARCH)
endif
+# Machines with 512Mb or less of real memory are considered low memory
+# build machines and adjustments will be made to prevent excessing
+# system swapping during the build.
+# If we don't know, assume 512. Subtract 128 from MB for VM MAX.
+# Don't set VM max over 1024-128=896.
+ifneq ($(MB_OF_MEMORY),)
+ LOW_MEMORY_MACHINE := $(shell \
+ if [ $(MB_OF_MEMORY) -le 512 ] ; then \
+ echo "true"; \
+ else \
+ echo "false"; \
+ fi)
+ MAX_VM_MEMORY := $(shell \
+ if [ $(MB_OF_MEMORY) -le 1024 ] ; then \
+ expr $(MB_OF_MEMORY) '-' 128 2> $(DEV_NULL) ; \
+ else \
+ echo "896"; \
+ fi)
+ MIN_VM_MEMORY := $(shell \
+ if [ $(MAX_VM_MEMORY) -le 128 ] ; then \
+ expr $(MAX_VM_MEMORY) '-' 8 2> $(DEV_NULL) ; \
+ else \
+ echo "128"; \
+ fi)
+else
+ MB_OF_MEMORY := unknown
+ LOW_MEMORY_MACHINE := true
+ MAX_VM_MEMORY := 384
+ MIN_VM_MEMORY := 128
+endif
+
# If blanks in the username, use the first 4 words and pack them together
_USER1:=$(subst ', ,$(_USER))
_USER2:=$(subst ", ,$(_USER1))