# HG changeset patch # User ohrstrom # Date 1328011959 -3600 # Node ID c77d473e71f771cdfd8b6521574a1c5a42b0db9e # Parent 869be5c8882e00a6837fa4ecdda1f72c45c29ae1 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 diff -r 869be5c8882e -r c77d473e71f7 make/bsd/makefiles/vm.make --- a/make/bsd/makefiles/vm.make Fri Feb 03 17:21:52 2012 -0500 +++ b/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 diff -r 869be5c8882e -r c77d473e71f7 make/linux/makefiles/vm.make --- a/make/linux/makefiles/vm.make Fri Feb 03 17:21:52 2012 -0500 +++ b/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 diff -r 869be5c8882e -r c77d473e71f7 make/solaris/makefiles/vm.make --- a/make/solaris/makefiles/vm.make Fri Feb 03 17:21:52 2012 -0500 +++ b/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) diff -r 869be5c8882e -r c77d473e71f7 src/share/vm/runtime/vm_version.cpp --- a/src/share/vm/runtime/vm_version.cpp Fri Feb 03 17:21:52 2012 -0500 +++ b/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") \ diff -r 869be5c8882e -r c77d473e71f7 src/share/vm/runtime/vm_version.hpp --- a/src/share/vm/runtime/vm_version.hpp Fri Feb 03 17:21:52 2012 -0500 +++ b/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;}