# HG changeset patch # User tbell # Date 1352940894 0 # Node ID 06f146c05f4957fad5b37e2331671f399f8dbb08 # Parent b772de306dc24c17f7bd1398531ddeb58723b804# Parent e69396d6d3e8e3a39d53c7f38c4920f074f0865e Merge diff -r b772de306dc2 -r 06f146c05f49 common/autoconf/basics.m4 --- a/common/autoconf/basics.m4 Wed Nov 14 12:28:00 2012 -0800 +++ b/common/autoconf/basics.m4 Thu Nov 15 00:54:54 2012 +0000 @@ -345,7 +345,13 @@ [ CONF_NAME=${with_conf_name} ]) # Test from where we are running configure, in or outside of src root. -if test "x$CURDIR" = "x$SRC_ROOT" || test "x$CURDIR" = "x$SRC_ROOT/common" || test "x$CURDIR" = "x$SRC_ROOT/common/autoconf" || test "x$CURDIR" = "x$SRC_ROOT/common/makefiles" ; then +# To enable comparison of directories, CURDIR needs to be symlink free +# just like SRC_ROOT already is +NOSYM_CURDIR="$CURDIR" +BASIC_REMOVE_SYMBOLIC_LINKS(NOSYM_CURDIR) +if test "x$NOSYM_CURDIR" = "x$SRC_ROOT" || test "x$NOSYM_CURDIR" = "x$SRC_ROOT/common" \ + || test "x$NOSYM_CURDIR" = "x$SRC_ROOT/common/autoconf" \ + || test "x$NOSYM_CURDIR" = "x$SRC_ROOT/common/makefiles" ; then # We are running configure from the src root. # Create a default ./build/target-variant-debuglevel output root. if test "x${CONF_NAME}" = x; then diff -r b772de306dc2 -r 06f146c05f49 common/autoconf/build-performance.m4 --- a/common/autoconf/build-performance.m4 Wed Nov 14 12:28:00 2012 -0800 +++ b/common/autoconf/build-performance.m4 Thu Nov 15 00:54:54 2012 +0000 @@ -204,7 +204,7 @@ # AC_ARG_ENABLE([precompiled-headers], [AS_HELP_STRING([--disable-precompiled-headers], [disable using precompiled headers when compiling C++ @<:@enabled@:>@])], - [ENABLE_PRECOMPH=${enable_precompiled-headers}], [ENABLE_PRECOMPH=yes]) + [ENABLE_PRECOMPH=${enable_precompiled_headers}], [ENABLE_PRECOMPH=yes]) USE_PRECOMPILED_HEADER=1 if test "x$ENABLE_PRECOMPH" = xno; then @@ -214,17 +214,16 @@ if test "x$ENABLE_PRECOMPH" = xyes; then # Check that the compiler actually supports precomp headers. if test "x$GCC" = xyes; then - AC_MSG_CHECKING([that precompiled headers work]) + AC_MSG_CHECKING([that precompiled headers work]) echo "int alfa();" > conftest.h - $CXX -x c++-header conftest.h -o conftest.hpp.gch + $CXX -x c++-header conftest.h -o conftest.hpp.gch 2>&AS_MESSAGE_LOG_FD >&AS_MESSAGE_LOG_FD if test ! -f conftest.hpp.gch; then - echo Precompiled header is not working! USE_PRECOMPILED_HEADER=0 AC_MSG_RESULT([no]) else AC_MSG_RESULT([yes]) fi - rm -f conftest.h + rm -f conftest.h conftest.hpp.gch fi fi diff -r b772de306dc2 -r 06f146c05f49 common/autoconf/generated-configure.sh --- a/common/autoconf/generated-configure.sh Wed Nov 14 12:28:00 2012 -0800 +++ b/common/autoconf/generated-configure.sh Thu Nov 15 00:54:54 2012 +0000 @@ -1035,7 +1035,7 @@ with_alsa_include with_alsa_lib with_zlib -enable_static_link_stdc++ +with_stdc++lib with_num_cores with_memory_size with_sjavac_server_java @@ -1712,9 +1712,6 @@ --disable-macosx-runtime-support disable the use of MacOSX Java runtime support framework [enabled] - --disable-static-link-stdc++ - disable static linking of the C++ runtime on Linux - [enabled] --enable-sjavac use sjavac to do fast incremental compiles [disabled] --disable-precompiled-headers @@ -1796,6 +1793,10 @@ --with-alsa-lib specify directory for the alsa library --with-zlib use zlib from build system or OpenJDK source (system, bundled) [bundled] + --with-stdc++lib=,, + force linking of the C++ runtime on Linux to either + static or dynamic, default is static with dynamic as + fallback --with-num-cores number of cores in the build system, e.g. --with-num-cores=8 [probed] --with-memory-size memory (in MB) available in the build system, e.g. @@ -3067,7 +3068,7 @@ #CUSTOM_AUTOCONF_INCLUDE # Do not change or remove the following line, it is needed for consistency checks: -DATE_WHEN_GENERATED=1352751880 +DATE_WHEN_GENERATED=1352917083 ############################################################################### # @@ -7136,7 +7137,56 @@ # Test from where we are running configure, in or outside of src root. -if test "x$CURDIR" = "x$SRC_ROOT" || test "x$CURDIR" = "x$SRC_ROOT/common" || test "x$CURDIR" = "x$SRC_ROOT/common/autoconf" || test "x$CURDIR" = "x$SRC_ROOT/common/makefiles" ; then +# To enable comparison of directories, CURDIR needs to be symlink free +# just like SRC_ROOT already is +NOSYM_CURDIR="$CURDIR" + + if test "x$OPENJDK_BUILD_OS" != xwindows; then + # Follow a chain of symbolic links. Use readlink + # where it exists, else fall back to horribly + # complicated shell code. + if test "x$READLINK_TESTED" != yes; then + # On MacOSX there is a readlink tool with a different + # purpose than the GNU readlink tool. Check the found readlink. + ISGNU=`$READLINK --help 2>&1 | $GREP GNU` + if test "x$ISGNU" = x; then + # A readlink that we do not know how to use. + # Are there other non-GNU readlinks out there? + READLINK_TESTED=yes + READLINK= + fi + fi + + if test "x$READLINK" != x; then + NOSYM_CURDIR=`$READLINK -f $NOSYM_CURDIR` + else + STARTDIR=$PWD + COUNTER=0 + sym_link_dir=`$DIRNAME $NOSYM_CURDIR` + sym_link_file=`$BASENAME $NOSYM_CURDIR` + while test $COUNTER -lt 20; do + ISLINK=`$LS -l $sym_link_dir/$sym_link_file | $GREP '\->' | $SED -e 's/.*-> \(.*\)/\1/'` + if test "x$ISLINK" == x; then + # This is not a symbolic link! We are done! + break + fi + # The link might be relative! We have to use cd to travel safely. + cd $sym_link_dir + # ... and we must get the to the absolute path, not one using symbolic links. + cd `pwd -P` + cd `$DIRNAME $ISLINK` + sym_link_dir=`$THEPWDCMD` + sym_link_file=`$BASENAME $ISLINK` + let COUNTER=COUNTER+1 + done + cd $STARTDIR + NOSYM_CURDIR=$sym_link_dir/$sym_link_file + fi + fi + +if test "x$NOSYM_CURDIR" = "x$SRC_ROOT" || test "x$NOSYM_CURDIR" = "x$SRC_ROOT/common" \ + || test "x$NOSYM_CURDIR" = "x$SRC_ROOT/common/autoconf" \ + || test "x$NOSYM_CURDIR" = "x$SRC_ROOT/common/makefiles" ; then # We are running configure from the src root. # Create a default ./build/target-variant-debuglevel output root. if test "x${CONF_NAME}" = x; then @@ -33006,12 +33056,19 @@ # statically link libstdc++ before C++ ABI is stablized on Linux unless # dynamic build is configured on command line. # -# Check whether --enable-static-link-stdc++ was given. -if test "${enable_static_link_stdc+++set}" = set; then - enableval=$enable_static_link_stdc++; -else - - enable_static_link_stdc__=yes + +# Check whether --with-stdc++lib was given. +if test "${with_stdc++lib+set}" = set; then + withval=$with_stdc++lib; + if test "x$with_stdc__lib" != xdynamic && test "x$with_stdc__lib" != xstatic \ + && test "x$with_stdc__lib" != xdefault; then + { { $as_echo "$as_me:$LINENO: error: Bad parameter value --with-stdc++lib=$with_stdc__lib!" >&5 +$as_echo "$as_me: error: Bad parameter value --with-stdc++lib=$with_stdc__lib!" >&2;} + { (exit 1); exit 1; }; } + fi + +else + with_stdc__lib=default fi @@ -33157,38 +33214,40 @@ { $as_echo "$as_me:$LINENO: result: $has_static_libstdcxx" >&5 $as_echo "$has_static_libstdcxx" >&6; } - if test "x$has_static_libcxx" = xno && test "x$has_dynamic_libcxx" = xno; then - { { $as_echo "$as_me:$LINENO: error: I cannot link to stdc++! Neither dynamically nor statically." >&5 -$as_echo "$as_me: error: I cannot link to stdc++! Neither dynamically nor statically." >&2;} - { (exit 1); exit 1; }; } - fi - - if test "x$enable_static_link_stdc__" = xyes && test "x$has_static_libstdcxx" = xno; then - { $as_echo "$as_me:$LINENO: Static linking of libstdc++ was not possible reverting to dynamic linking." >&5 -$as_echo "$as_me: Static linking of libstdc++ was not possible reverting to dynamic linking." >&6;} - enable_static_link_stdc__=no - fi - - if test "x$enable_static_link_stdc__" = xno && test "x$has_dynamic_libstdcxx" = xno; then - { $as_echo "$as_me:$LINENO: Dynamic linking of libstdc++ was not possible reverting to static linking." >&5 -$as_echo "$as_me: Dynamic linking of libstdc++ was not possible reverting to static linking." >&6;} - enable_static_link_stdc__=yes + if test "x$has_static_libstdcxx" = xno && test "x$has_dynamic_libstdcxx" = xno; then + { { $as_echo "$as_me:$LINENO: error: Cannot link to stdc++, neither dynamically nor statically!" >&5 +$as_echo "$as_me: error: Cannot link to stdc++, neither dynamically nor statically!" >&2;} + { (exit 1); exit 1; }; } + fi + + if test "x$with_stdc__lib" = xstatic && test "x$has_static_libstdcxx" = xno; then + { { $as_echo "$as_me:$LINENO: error: Static linking of libstdc++ was not possible!" >&5 +$as_echo "$as_me: error: Static linking of libstdc++ was not possible!" >&2;} + { (exit 1); exit 1; }; } + fi + + if test "x$with_stdc__lib" = xdynamic && test "x$has_dynamic_libstdcxx" = xno; then + { { $as_echo "$as_me:$LINENO: error: Dynamic linking of libstdc++ was not possible!" >&5 +$as_echo "$as_me: error: Dynamic linking of libstdc++ was not possible!" >&2;} + { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking how to link with libstdc++" >&5 $as_echo_n "checking how to link with libstdc++... " >&6; } - if test "x$enable_static_link_stdc__" = xyes; then + # If dynamic was requested, it's available since it would fail above otherwise. + # If dynamic wasn't requested, go with static unless it isn't available. + if test "x$with_stdc__lib" = xdynamic || test "x$has_static_libstdcxx" = xno; then + LIBCXX="$LIBCXX -lstdc++" + LDCXX="$CXX" + STATIC_CXX_SETTING="STATIC_CXX=false" + { $as_echo "$as_me:$LINENO: result: dynamic" >&5 +$as_echo "dynamic" >&6; } + else LIBCXX="$LIBCXX $STATIC_STDCXX_FLAGS" LDCXX="$CC" STATIC_CXX_SETTING="STATIC_CXX=true" { $as_echo "$as_me:$LINENO: result: static" >&5 $as_echo "static" >&6; } - else - LIBCXX="$LIBCXX -lstdc++" - LDCXX="$CXX" - STATIC_CXX_SETTING="STATIC_CXX=false" - { $as_echo "$as_me:$LINENO: result: dynamic" >&5 -$as_echo "dynamic" >&6; } fi fi @@ -33646,7 +33705,7 @@ # # Check whether --enable-precompiled-headers was given. if test "${enable_precompiled_headers+set}" = set; then - enableval=$enable_precompiled_headers; ENABLE_PRECOMPH=${enable_precompiled-headers} + enableval=$enable_precompiled_headers; ENABLE_PRECOMPH=${enable_precompiled_headers} else ENABLE_PRECOMPH=yes fi @@ -33663,9 +33722,8 @@ { $as_echo "$as_me:$LINENO: checking that precompiled headers work" >&5 $as_echo_n "checking that precompiled headers work... " >&6; } echo "int alfa();" > conftest.h - $CXX -x c++-header conftest.h -o conftest.hpp.gch + $CXX -x c++-header conftest.h -o conftest.hpp.gch 2>&5 >&5 if test ! -f conftest.hpp.gch; then - echo Precompiled header is not working! USE_PRECOMPILED_HEADER=0 { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } @@ -33673,7 +33731,7 @@ { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } fi - rm -f conftest.h + rm -f conftest.h conftest.hpp.gch fi fi diff -r b772de306dc2 -r 06f146c05f49 common/autoconf/hotspot-spec.gmk.in --- a/common/autoconf/hotspot-spec.gmk.in Wed Nov 14 12:28:00 2012 -0800 +++ b/common/autoconf/hotspot-spec.gmk.in Thu Nov 15 00:54:54 2012 +0000 @@ -95,6 +95,8 @@ EXTRA_CXXFLAGS=@LEGACY_EXTRA_CXXFLAGS@ EXTRA_LDFLAGS=@LEGACY_EXTRA_LDFLAGS@ +USE_PRECOMPILED_HEADER=@USE_PRECOMPILED_HEADER@ + # Sneak this in via the spec.gmk file, since we don't want to mess around too much with the Hotspot make files. # This is needed to get the LOG setting to work properly. include $(SRC_ROOT)/common/makefiles/MakeBase.gmk diff -r b772de306dc2 -r 06f146c05f49 common/autoconf/libraries.m4 --- a/common/autoconf/libraries.m4 Wed Nov 14 12:28:00 2012 -0800 +++ b/common/autoconf/libraries.m4 Thu Nov 15 00:54:54 2012 +0000 @@ -601,11 +601,16 @@ # statically link libstdc++ before C++ ABI is stablized on Linux unless # dynamic build is configured on command line. # -AC_ARG_ENABLE([static-link-stdc++], [AS_HELP_STRING([--disable-static-link-stdc++], - [disable static linking of the C++ runtime on Linux @<:@enabled@:>@])],, - [ - enable_static_link_stdc__=yes - ]) +AC_ARG_WITH([stdc++lib], [AS_HELP_STRING([--with-stdc++lib=,,], + [force linking of the C++ runtime on Linux to either static or dynamic, default is static with dynamic as fallback])], + [ + if test "x$with_stdc__lib" != xdynamic && test "x$with_stdc__lib" != xstatic \ + && test "x$with_stdc__lib" != xdefault; then + AC_MSG_ERROR([Bad parameter value --with-stdc++lib=$with_stdc__lib!]) + fi + ], + [with_stdc__lib=default] +) if test "x$OPENJDK_TARGET_OS" = xlinux; then # Test if -lstdc++ works. @@ -636,31 +641,31 @@ AC_LANG_POP(C++) AC_MSG_RESULT([$has_static_libstdcxx]) - if test "x$has_static_libcxx" = xno && test "x$has_dynamic_libcxx" = xno; then - AC_MSG_ERROR([I cannot link to stdc++! Neither dynamically nor statically.]) + if test "x$has_static_libstdcxx" = xno && test "x$has_dynamic_libstdcxx" = xno; then + AC_MSG_ERROR([Cannot link to stdc++, neither dynamically nor statically!]) fi - if test "x$enable_static_link_stdc__" = xyes && test "x$has_static_libstdcxx" = xno; then - AC_MSG_NOTICE([Static linking of libstdc++ was not possible reverting to dynamic linking.]) - enable_static_link_stdc__=no + if test "x$with_stdc__lib" = xstatic && test "x$has_static_libstdcxx" = xno; then + AC_MSG_ERROR([Static linking of libstdc++ was not possible!]) fi - if test "x$enable_static_link_stdc__" = xno && test "x$has_dynamic_libstdcxx" = xno; then - AC_MSG_NOTICE([Dynamic linking of libstdc++ was not possible reverting to static linking.]) - enable_static_link_stdc__=yes + if test "x$with_stdc__lib" = xdynamic && test "x$has_dynamic_libstdcxx" = xno; then + AC_MSG_ERROR([Dynamic linking of libstdc++ was not possible!]) fi AC_MSG_CHECKING([how to link with libstdc++]) - if test "x$enable_static_link_stdc__" = xyes; then + # If dynamic was requested, it's available since it would fail above otherwise. + # If dynamic wasn't requested, go with static unless it isn't available. + if test "x$with_stdc__lib" = xdynamic || test "x$has_static_libstdcxx" = xno; then + LIBCXX="$LIBCXX -lstdc++" + LDCXX="$CXX" + STATIC_CXX_SETTING="STATIC_CXX=false" + AC_MSG_RESULT([dynamic]) + else LIBCXX="$LIBCXX $STATIC_STDCXX_FLAGS" LDCXX="$CC" STATIC_CXX_SETTING="STATIC_CXX=true" AC_MSG_RESULT([static]) - else - LIBCXX="$LIBCXX -lstdc++" - LDCXX="$CXX" - STATIC_CXX_SETTING="STATIC_CXX=false" - AC_MSG_RESULT([dynamic]) fi fi AC_SUBST(STATIC_CXX_SETTING) diff -r b772de306dc2 -r 06f146c05f49 common/bin/compare.sh --- a/common/bin/compare.sh Wed Nov 14 12:28:00 2012 -0800 +++ b/common/bin/compare.sh Thu Nov 15 00:54:54 2012 +0000 @@ -283,7 +283,7 @@ ! -name "*.debuginfo" ! -name "*.dylib" ! -name "jexec" \ ! -name "ct.sym" ! -name "*.diz" ! -name "*.dll" \ ! -name "*.pdb" ! -name "*.exp" ! -name "*.ilk" \ - ! -name "*.lib" ! -name "*.war" \ + ! -name "*.lib" ! -name "*.war" ! -name "JavaControlPanel" \ | $GREP -v "./bin/" | $SORT | $FILTER) echo General files... @@ -611,10 +611,19 @@ DIFF_SIZE_NUM=$($EXPR $THIS_SIZE - $OTHER_SIZE) DIFF_SIZE_REL=$($EXPR $THIS_SIZE \* 100 / $OTHER_SIZE) SIZE_MSG=$($PRINTF "%3d%% %4d" $DIFF_SIZE_REL $DIFF_SIZE_NUM) - if [[ "$ACCEPTED_SMALL_SIZE_DIFF" = *"$BIN_FILE"* ]] && [ "$DIFF_SIZE_REL" -gt 98 ] && [ "$DIFF_SIZE_REL" -lt 102 ]; then + if [[ "$ACCEPTED_SMALL_SIZE_DIFF" = *"$BIN_FILE"* ]] && [ "$DIFF_SIZE_REL" -gt 98 ] \ + && [ "$DIFF_SIZE_REL" -lt 102 ]; then SIZE_MSG="($SIZE_MSG)" DIFF_SIZE= - elif [[ "$ACCEPTED_SMALL_SIZE_DIFF" = *"$BIN_FILE"* ]] && [ "$DIFF_SIZE_NUM" = 512 ]; then + elif [ "$OPENJDK_TARGET_OS" = "windows" ] \ + && [[ "$ACCEPTED_SMALL_SIZE_DIFF" = *"$BIN_FILE"* ]] \ + && [ "$DIFF_SIZE_NUM" = 512 ]; then + # On windows, size of binaries increase in 512 increments. + SIZE_MSG="($SIZE_MSG)" + DIFF_SIZE= + elif [ "$OPENJDK_TARGET_OS" = "windows" ] \ + && [[ "$ACCEPTED_SMALL_SIZE_DIFF" = *"$BIN_FILE"* ]] \ + && [ "$DIFF_SIZE_NUM" = -512 ]; then # On windows, size of binaries increase in 512 increments. SIZE_MSG="($SIZE_MSG)" DIFF_SIZE= @@ -840,7 +849,7 @@ OTHER_DIR=$2 WORK_DIR=$3 - LIBS=$(cd $THIS_DIR && $FIND . -type f \( -name 'lib*.so' -o -name '*.dylib' -o -name '*.dll' \) | $SORT | $FILTER) + LIBS=$(cd $THIS_DIR && $FIND . -type f \( -name 'lib*.so' -o -name '*.dylib' -o -name '*.dll' -o -name 'JavaControlPanel' \) | $SORT | $FILTER) if [ -n "$LIBS" ]; then echo Libraries... @@ -1218,7 +1227,12 @@ if [ "$CMP_LIBS" = "true" ]; then if [ -n "$THIS_J2SDK" ] && [ -n "$OTHER_J2SDK" ]; then + echo -n "J2SDK " compare_all_libs $THIS_J2SDK $OTHER_J2SDK $COMPARE_ROOT/j2sdk + if [ "$OPENJDK_TARGET_OS" = "macosx" ]; then + echo -n "J2RE " + compare_all_libs $THIS_J2RE $OTHER_J2RE $COMPARE_ROOT/j2re + fi fi if [ -n "$THIS_J2SDK_OVERLAY" ] && [ -n "$OTHER_J2SDK_OVERLAY" ]; then echo -n "Bundle " diff -r b772de306dc2 -r 06f146c05f49 common/bin/compare_exceptions.sh.incl --- a/common/bin/compare_exceptions.sh.incl Wed Nov 14 12:28:00 2012 -0800 +++ b/common/bin/compare_exceptions.sh.incl Thu Nov 15 00:54:54 2012 +0000 @@ -881,6 +881,7 @@ KNOWN_BIN_DIFF=" ./jre/lib/libJObjC.dylib +./lib/libJObjC.dylib " ACCEPTED_BIN_DIFF=" @@ -932,26 +933,34 @@ ./jre/bin/tnameserv ./jre/lib/libsaproc.dylib ./jre/lib/server/libjvm.dylib +./lib/libsaproc.dylib +./lib/server/libjvm.dylib +./lib/deploy/JavaControlPanel.prefPane/Contents/MacOS/JavaControlPanel " KNOWN_SIZE_DIFF=" ./jre/lib/libJObjC.dylib +./lib/libJObjC.dylib " SORT_SYMBOLS=" ./jre/lib/libJObjC.dylib +./lib/libJObjC.dylib " KNOWN_SYM_DIFF=" ./jre/lib/libJObjC.dylib +./lib/libJObjC.dylib " KNOWN_ELF_DIFF=" ./jre/lib/libJObjC.dylib +./lib/libJObjC.dylib " KNOWN_DIS_DIFF=" ./jre/lib/libJObjC.dylib +./lib/libJObjC.dylib " fi diff -r b772de306dc2 -r 06f146c05f49 common/makefiles/MakeHelpers.gmk --- a/common/makefiles/MakeHelpers.gmk Wed Nov 14 12:28:00 2012 -0800 +++ b/common/makefiles/MakeHelpers.gmk Thu Nov 15 00:54:54 2012 +0000 @@ -142,7 +142,7 @@ define TargetExit $(call RecordEndTime,$(patsubst %-only,%,$@)) $(BUILD_LOG_WRAPPER) $(PRINTF) "## Finished $(patsubst %-only,%,$@) (build time %s)\n\n" \ - "`$(CAT) $(BUILDTIMESDIR)/build_time_diff_$(patsubst %-only,%,$@) | $(CUT) -f 1 -d " "`" + "`$(CAT) $(BUILDTIMESDIR)/build_time_diff_$(patsubst %-only,%,$@) | $(CUT) -f 1 -d ' '`" $(call CheckIfMakeAtEnd) endef