7132779: build-infra merge: Enable ccache to work for most developer builds.
authorohrstrom
Tue, 31 Jan 2012 13:12:39 +0100
changeset 11720 b20268d74484
parent 11719 24a1d0e00c7e
child 11721 dcd1f62c9caf
7132779: build-infra merge: Enable ccache to work for most developer builds. Summary: When a build number is not specified, the JRE_RELEASE_VERSION define contains a date and timestamp. Thus ccache cannot cache the object files for longer than a minute since the define is passed to the compilation of all source files. This change passes JRE_RELEASE_VERSION only to vm_version.cpp and adds a function jre_release_version() to Abstract_VM_Version. This allows all other source files to be ccached. Reviewed-by: ohair, rottenha Contributed-by: fredrik.ohrstrom@oracle.com
hotspot/make/bsd/makefiles/vm.make
hotspot/make/linux/makefiles/vm.make
hotspot/make/solaris/makefiles/vm.make
hotspot/src/share/vm/runtime/vm_version.cpp
hotspot/src/share/vm/runtime/vm_version.hpp
--- a/hotspot/make/bsd/makefiles/vm.make	Fri Feb 03 17:21:52 2012 -0500
+++ b/hotspot/make/bsd/makefiles/vm.make	Tue Jan 31 13:12:39 2012 +0100
@@ -89,9 +89,13 @@
   ${BUILD_TARGET}    \
   ${BUILD_USER}      \
   ${HS_LIB_ARCH}     \
-  ${JRE_VERSION}     \
   ${VM_DISTRO}
 
+# This is VERY important! The version define must only be supplied to vm_version.o
+# If not, ccache will not re-use the cache at all, since the version string might contain
+# a time and date. 
+vm_version.o: CPPFLAGS += ${JRE_VERSION} 
+
 ifdef DEFAULT_LIBPATH
 CPPFLAGS += -DDEFAULT_LIBPATH="\"$(DEFAULT_LIBPATH)\""
 endif
--- a/hotspot/make/linux/makefiles/vm.make	Fri Feb 03 17:21:52 2012 -0500
+++ b/hotspot/make/linux/makefiles/vm.make	Tue Jan 31 13:12:39 2012 +0100
@@ -95,9 +95,13 @@
   ${BUILD_TARGET}    \
   ${BUILD_USER}      \
   ${HS_LIB_ARCH}     \
-  ${JRE_VERSION}     \
   ${VM_DISTRO}
 
+# This is VERY important! The version define must only be supplied to vm_version.o
+# If not, ccache will not re-use the cache at all, since the version string might contain
+# a time and date. 
+vm_version.o: CPPFLAGS += ${JRE_VERSION}
+
 ifndef JAVASE_EMBEDDED
 CFLAGS += -DINCLUDE_TRACE
 endif
--- a/hotspot/make/solaris/makefiles/vm.make	Fri Feb 03 17:21:52 2012 -0500
+++ b/hotspot/make/solaris/makefiles/vm.make	Tue Jan 31 13:12:39 2012 +0100
@@ -83,9 +83,13 @@
   ${BUILD_TARGET}    \
   ${BUILD_USER}      \
   ${HS_LIB_ARCH}     \
-  ${JRE_VERSION}     \
   ${VM_DISTRO}
 
+# This is VERY important! The version define must only be supplied to vm_version.o
+# If not, ccache will not re-use the cache at all, since the version string might contain
+# a time and date. 
+vm_version.o: CPPFLAGS += ${JRE_VERSION} 
+
 # CFLAGS_WARN holds compiler options to suppress/enable warnings.
 CFLAGS += $(CFLAGS_WARN)
 
--- a/hotspot/src/share/vm/runtime/vm_version.cpp	Fri Feb 03 17:21:52 2012 -0500
+++ b/hotspot/src/share/vm/runtime/vm_version.cpp	Tue Jan 31 13:12:39 2012 +0100
@@ -165,6 +165,13 @@
   return VM_RELEASE;
 }
 
+// NOTE: do *not* use stringStream. this function is called by
+//       fatal error handlers. if the crash is in native thread,
+//       stringStream cannot get resource allocated and will SEGV.
+const char* Abstract_VM_Version::jre_release_version() {
+  return JRE_RELEASE_VERSION;
+}
+
 #define OS       LINUX_ONLY("linux")             \
                  WINDOWS_ONLY("windows")         \
                  SOLARIS_ONLY("solaris")         \
--- a/hotspot/src/share/vm/runtime/vm_version.hpp	Fri Feb 03 17:21:52 2012 -0500
+++ b/hotspot/src/share/vm/runtime/vm_version.hpp	Tue Jan 31 13:12:39 2012 +0100
@@ -71,6 +71,7 @@
 
   // Internal version providing additional build information
   static const char* internal_vm_info_string();
+  static const char* jre_release_version();
 
   // does HW support an 8-byte compare-exchange operation?
   static bool supports_cx8()  {return _supports_cx8;}