aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorkatleman <none@none>2012-06-13 16:53:05 -0700
committerkatleman <none@none>2012-06-13 16:53:05 -0700
commit33585fc36388f55ad22686ce6a5b176f29cf7063 (patch)
tree3d48f539c912110f29a1388a0e1836304bb08f44
parentf9c8e048778dc5e9f97e2e4b99b34f42f9492e72 (diff)
parentdb9c4cb598c14e2a92256f5af0320fe75d2ef9c5 (diff)
-rw-r--r--README-builds.html11
-rw-r--r--common/autoconf/autogen.sh2
-rw-r--r--common/autoconf/builddeps.m417
-rw-r--r--common/autoconf/configure622
-rw-r--r--common/autoconf/configure.ac541
-rw-r--r--common/autoconf/help.m410
-rw-r--r--common/autoconf/platform.m442
-rw-r--r--common/autoconf/spec.gmk.in36
-rw-r--r--common/bin/compareimage.sh68
-rw-r--r--common/bin/diffexec.sh51
-rw-r--r--common/bin/diffjarzip.sh6
-rw-r--r--common/bin/difflib.sh51
-rw-r--r--common/bin/logger.sh9
-rw-r--r--common/makefiles/JavaCompilation.gmk121
-rw-r--r--common/makefiles/MakeBase.gmk69
-rw-r--r--common/makefiles/Makefile287
-rw-r--r--common/makefiles/NativeCompilation.gmk74
-rw-r--r--make/scripts/hgforest.sh8
18 files changed, 1550 insertions, 475 deletions
diff --git a/README-builds.html b/README-builds.html
index 5e8d86a..57ded78 100644
--- a/README-builds.html
+++ b/README-builds.html
@@ -108,6 +108,7 @@
<li><a href="#testing">Testing the Build</a> </li>
<li><a href="#variables">Environment/Make Variables</a></li>
<li><a href="#troubleshooting">Troubleshooting</a></li>
+ <li><a href="#newbuild">The New Build</a></li>
</ul>
</blockquote>
@@ -2120,6 +2121,16 @@
</li>
</ul>
</blockquote>
+ <!-- ------------------------------------------------------ -->
+ <hr>
+ <h2><a name="newbuild">The New Build</a></h2>
+ <blockquote>
+ The <a href="http://openjdk.java.net/projects/build-infra/">
+ Build Infrastructure project</a> is working on a new
+ build. For information on how to try it out, please see the
+ <a href="http://openjdk.java.net/projects/build-infra/guide.html">
+ Build Infra User Guide</a>
+ </blockquote>
<hr>
</body>
</html>
diff --git a/common/autoconf/autogen.sh b/common/autoconf/autogen.sh
index 7e4c3b0..5f6937c 100644
--- a/common/autoconf/autogen.sh
+++ b/common/autoconf/autogen.sh
@@ -22,5 +22,5 @@
# questions.
#
-autoconf configure.ac > configure
+autoconf -W all configure.ac > configure
rm -rf config.status config.log autom4te.cache
diff --git a/common/autoconf/builddeps.m4 b/common/autoconf/builddeps.m4
index 55e132e..1be92ec 100644
--- a/common/autoconf/builddeps.m4
+++ b/common/autoconf/builddeps.m4
@@ -34,7 +34,7 @@ AC_DEFUN([BDEPS_SCAN_FOR_BUILDDEPS],
. $builddepsfile
AC_MSG_RESULT([loaded!])
else
- AC_ERROR([The given builddeps conf file $with_builddeps_conf could not be loaded!])
+ AC_MSG_ERROR([The given builddeps conf file $with_builddeps_conf could not be loaded!])
fi
else
AC_MSG_CHECKING([for builddeps.conf files in sources...])
@@ -47,7 +47,7 @@ AC_DEFUN([BDEPS_SCAN_FOR_BUILDDEPS],
. $builddepsfile
AC_MSG_RESULT([found at least one!])
else
- AC_ERROR([Could not find any builddeps.conf at all!])
+ AC_MSG_ERROR([Could not find any builddeps.conf at all!])
fi
fi
# Create build and host names that use _ instead of "-" and ".".
@@ -117,7 +117,7 @@ AC_DEFUN([BDEPS_FTPGET],
) | ftp -in $FTPSERVER
fi
if test "x$VALID_TOOL" != xyes; then
- AC_ERROR([I do not know how to use the tool: $BDEPS_FTP])
+ AC_MSG_ERROR([I do not know how to use the tool: $BDEPS_FTP])
fi
])
@@ -159,7 +159,7 @@ AC_DEFUN([BDEPS_CHECK_MODULE],
thecflags=${builddep_$2_CFLAGS}
thelibs=${builddep_$2_LIBS}
if test "x$depdir" = x; then
- AC_ERROR([Could not download build dependency $2])
+ AC_MSG_ERROR([Could not download build dependency $2])
fi
$1=$depdir
if test "x$theroot" != x; then
@@ -198,17 +198,17 @@ AC_DEFUN([BDEPS_FETCH],
mkdir -p $installdir
fi
if test ! -d $installdir; then
- AC_ERROR([Could not create directory $installdir])
+ AC_MSG_ERROR([Could not create directory $installdir])
fi
tmpfile=`mktemp $installdir/$1.XXXXXXXXX`
touch $tmpfile
if test ! -f $tmpfile; then
- AC_ERROR([Could not create files in directory $installdir])
+ AC_MSG_ERROR([Could not create files in directory $installdir])
fi
BDEPS_FTPGET([$3/$2] , [$tmpfile])
mv $tmpfile $installdir/$filename
if test ! -s $installdir/$filename; then
- AC_ERROR([Could not download $3/$2])
+ AC_MSG_ERROR([Could not download $3/$2])
fi
case "$extension" in
zip) echo "Unzipping $installdir/$filename..."
@@ -220,7 +220,7 @@ AC_DEFUN([BDEPS_FETCH],
tgz) echo "Untaring $installdir/$filename..."
(cd $installdir ; rm -f $installdir/$filename.unpacked ; tar xzf $installdir/$filename && touch $installdir/$filename.unpacked)
;;
- *) AC_ERROR([Cannot handle build depency archive with extension $extension])
+ *) AC_MSG_ERROR([Cannot handle build depency archive with extension $extension])
;;
esac
fi
@@ -228,4 +228,3 @@ AC_DEFUN([BDEPS_FETCH],
$5=$installdir
fi
])
-
diff --git a/common/autoconf/configure b/common/autoconf/configure
index 13630cc..68f9376 100644
--- a/common/autoconf/configure
+++ b/common/autoconf/configure
@@ -595,7 +595,12 @@ ac_includes_default="\
ac_subst_vars='LTLIBOBJS
LIBOBJS
+CACERTS_FILE
TEST_IN_BUILD
+SALIB_NAME
+OS_VERSION_MICRO
+OS_VERSION_MINOR
+OS_VERSION_MAJOR
LIBCXX
LDFLAGS_JDKEXE_SUFFIX
LDFLAGS_JDKLIB_SUFFIX
@@ -625,15 +630,20 @@ CORBA_OUTPUTDIR
LANGTOOLS_MAKE_ARGS
LANGTOOLS_DIST
LANGTOOLS_OUTPUTDIR
+CXX_FLAG_DEPS
+C_FLAG_DEPS
CXX_O_FLAG_NONE
CXX_O_FLAG_NORM
CXX_O_FLAG_HI
+CXX_O_FLAG_HIGHEST
C_O_FLAG_NONE
C_O_FLAG_NORM
C_O_FLAG_HI
+C_O_FLAG_HIGHEST
DISABLE_NIMBUS
GENERATE_DOCS
ENABLE_DOCS
+LIBDL
LIBM
USE_EXTERNAL_LIBZ
USE_EXTERNAL_LIBGIF
@@ -665,6 +675,7 @@ SERVER_JAVA
BOOT_JDK_JVMARGS
OVERRIDE_SRC_ROOT
ADD_SRC_ROOT
+NATIVE2ASCII
RMIC
JAR
JAVAH
@@ -678,7 +689,11 @@ BOOT_JDK
JAVA_CHECK
JAVAC_CHECK
ENDIAN
+POST_MCS_CMD
+POST_STRIP_CMD
SET_SHARED_LIBRARY_ORIGIN
+CXX_FLAG_REORDER
+C_FLAG_REORDER
SET_SHARED_LIBRARY_MAPFILE
SET_SHARED_LIBRARY_NAME
SHARED_LIBRARY_FLAGS
@@ -749,6 +764,7 @@ JAXP_TOPDIR
CORBA_TOPDIR
LANGTOOLS_TOPDIR
OUTPUT_ROOT
+CONF_NAME
SPEC
MSVCR100DLL
CHECK_FOR_VCINSTALLDIR
@@ -797,6 +813,8 @@ MEMORY_SIZE
CONCURRENT_BUILD_JOBS
NUM_CORES
DATE_WHEN_CONFIGURED
+REQUIRED_OS_VERSION
+REQUIRED_OS_NAME
LEGACY_BUILD_CPU3
LEGACY_BUILD_CPU2
LEGACY_BUILD_CPU1
@@ -829,6 +847,7 @@ build_os
build_vendor
build_cpu
build
+HG
FILE
EXPR
READELF
@@ -918,7 +937,7 @@ enable_option_checking
with_data_model
with_num_cores
with_memory_size
-enable_openjdk
+enable_openjdk_only
enable_jigsaw
with_jdk_variant
enable_headful
@@ -967,6 +986,7 @@ enable_docs
enable_nimbus
enable_static_link_stdc__
enable_hotspot_test_in_build
+with_cacerts_file
'
ac_precious_vars='build_alias
host_alias
@@ -1610,7 +1630,7 @@ Optional Features:
--disable-option-checking ignore unrecognized --enable/--with options
--disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
--enable-FEATURE[=ARG] include FEATURE [ARG=yes]
- --enable-openjdk build OpenJDK regardless of the presence of closed
+ --enable-openjdk-only build OpenJDK regardless of the presence of closed
repositories [disabled]
--enable-jigsaw build Jigsaw images (not yet available) [disabled]
--disable-headful build headful support (graphical UI support)
@@ -1718,6 +1738,7 @@ Optional Packages:
headers under PATH/include)
--with-pulse-include specify directory for the pulseaudio include files
--with-pulse-lib specify directory for the pulseaudio library
+ --with-cacerts-file specify alternative cacerts file
Some influential environment variables:
PKG_CONFIG path to pkg-config utility
@@ -3036,7 +3057,6 @@ ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var.
-
#
# Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -3095,6 +3115,8 @@ ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var.
# Fixes paths on windows hosts to be mixed mode short.
+
+
#
# Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -3149,12 +3171,7 @@ ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var.
# questions.
#
-function help_on_build_dependency {
- # Print a helpful message on how to acquire the necessary build dependency.
- # $1 is the help tag: freetyp2, cups, pulse, alsa etc
- MISSING_DEPENDENCY=$1
- PKGHANDLER_COMMAND=
-
+function prepare_help_system {
for ac_prog in apt-get yum port pkgutil pkgadd
do
# Extract the first word of "$ac_prog", so it can be a program name with args.
@@ -3197,11 +3214,18 @@ fi
test -n "$PKGHANDLER" && break
done
+}
+
+function help_on_build_dependency {
+ # Print a helpful message on how to acquire the necessary build dependency.
+ # $1 is the help tag: freetyp2, cups, pulse, alsa etc
+ MISSING_DEPENDENCY=$1
+ PKGHANDLER_COMMAND=
case $PKGHANDLER in
apt-get)
apt_help $MISSING_DEPENDENCY ;;
- yum)
+ yum)
yum_help $MISSING_DEPENDENCY ;;
port)
port_help $MISSING_DEPENDENCY ;;
@@ -3214,7 +3238,7 @@ done
esac
if test "x$PKGHANDLER_COMMAND" != x; then
- HELP_MSG="Try running '$PKGHANDLER_COMMAND'."
+ HELP_MSG="You might be able to fix this by running '$PKGHANDLER_COMMAND'."
fi
}
@@ -5384,6 +5408,47 @@ fi
# Test that variable FILE is not empty.
if test "" = "$FILE"; then as_fn_error $? "Could not find file !" "$LINENO" 5 ; fi
+# Extract the first word of "hg", so it can be a program name with args.
+set dummy hg; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_path_HG+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $HG in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_HG="$HG" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_path_HG="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+HG=$ac_cv_path_HG
+if test -n "$HG"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $HG" >&5
+$as_echo "$HG" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+
# Figure out the build and host system.
# Make sure we can run config.sub.
$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 ||
@@ -5491,7 +5556,7 @@ fi
# The same values are setup for BUILD_...
#
# And the legacy variables, for controlling the old makefiles.
- # LEGACY_HOST_CPU1=i586,amd64,sparc,sparcv9,arm,arm64...
+ # LEGACY_HOST_CPU1=i586,amd64/x86_64,sparc,sparcv9,arm,arm64...
# LEGACY_HOST_CPU2=i386,amd64,sparc,sparcv9,arm,arm64...
# LEGACY_HOST_CPU3=sparcv9,amd64 (but only on solaris)
# LEGACY_HOST_OS_API=solaris,windows
@@ -5918,6 +5983,33 @@ fi
LEGACY_BUILD_CPU3=""
fi
+ # On MacOSX and MacOSX only, we have a different name for the x64 CPU in ARCH (LEGACY_HOST_CPU1) ...
+ if test "x$HOST_OS" = xmacosx && test "x$HOST_CPU" = xx64; then
+ LEGACY_HOST_CPU1="x86_64"
+ fi
+
+
+ if test "x$HOST_OS" = "xsolaris"; then
+ REQUIRED_OS_NAME=SunOS
+ REQUIRED_OS_VERSION=5.10
+ fi
+ if test "x$HOST_OS" = "xlinux"; then
+ REQUIRED_OS_NAME=Linux
+ REQUIRED_OS_VERSION=2.6
+ fi
+ if test "x$HOST_OS" = "xwindows"; then
+ REQUIRED_OS_NAME=Windows
+ REQUIRED_OS_VERSION=5.1
+ fi
+ if test "x$HOST_OS" = "xmacosx"; then
+ REQUIRED_OS_NAME=Darwin
+ REQUIRED_OS_VERSION=11.2
+ fi
+
+
+
+
+
# Now the following vars are defined.
# HOST_OS=aix,bsd,hpux,linux,macosx,solaris,windows
# HOST_OS_FAMILY=bsd,gnu,sysv,win32,wince
@@ -6143,15 +6235,15 @@ fi
#
# OpenJDK or closed
#
-# Check whether --enable-openjdk was given.
-if test "${enable_openjdk+set}" = set; then :
- enableval=$enable_openjdk;
+# Check whether --enable-openjdk-only was given.
+if test "${enable_openjdk_only+set}" = set; then :
+ enableval=$enable_openjdk_only;
fi
-if test "x$enable_openjdk" = "xyes"; then
+if test "x$enable_openjdk_only" = "xyes"; then
OPENJDK=true
-elif test "x$enable_openjdk" = "xno"; then
+elif test "x$enable_openjdk_only" = "xno"; then
OPENJDK=false
elif test -d "$SRC_ROOT/jdk/src/closed"; then
OPENJDK=false
@@ -6458,7 +6550,8 @@ COOKED_BUILD_NUMBER=`$ECHO $JDK_BUILD_NUMBER | $SED -e 's/^b//' -e 's/^0//'`
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
# We are running configure from the src root.
# Create a default ./build/host-variant-debuglevel output root.
- OUTPUT_ROOT="$SRC_ROOT/build/${HOST_OS}-${HOST_CPU}-${JDK_VARIANT}-${ANDED_JVM_VARIANTS}-${DEBUG_LEVEL}"
+ CONF_NAME="${HOST_OS}-${HOST_CPU}-${JDK_VARIANT}-${ANDED_JVM_VARIANTS}-${DEBUG_LEVEL}"
+ OUTPUT_ROOT="$SRC_ROOT/build/${CONF_NAME}"
mkdir -p "$OUTPUT_ROOT"
if test ! -d "$OUTPUT_ROOT"; then
as_fn_error $? "Could not create build directory $OUTPUT_ROOT" "$LINENO" 5
@@ -6466,6 +6559,9 @@ if test "x$CURDIR" = "x$SRC_ROOT" || test "x$CURDIR" = "x$SRC_ROOT/common" || te
else
# We are running configure from outside of the src dir.
# Then use the current directory as output dir!
+ # If configuration is situated in normal build directory, just use the build
+ # directory name as configuration name, otherwise use the complete path.
+ CONF_NAME=`$ECHO $CURDIR | $SED -e "s!^${SRC_ROOT}/build/!!"`
OUTPUT_ROOT="$CURDIR"
fi
@@ -6531,7 +6627,7 @@ $as_echo "no" >&6; }
esac
# Lets extract the variables that are set by vcvarsall.bat/vsvars32.bat/vsvars64.bat
cd $OUTPUT_ROOT
- $SRC_ROOT/common/bin/extractvcvars.sh "$VARSBAT" "$VARSBAT_ARCH"
+ bash $SRC_ROOT/common/bin/extractvcvars.sh "$VARSBAT" "$VARSBAT_ARCH"
cd $CURDIR
if test ! -s $OUTPUT_ROOT/localdevenv.sh || test ! -s $OUTPUT_ROOT/localdevenv.gmk; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can extract the needed env variables" >&5
@@ -6618,6 +6714,8 @@ ac_config_files="$ac_config_files $OUTPUT_ROOT/Makefile:$AUTOCONF_DIR/Makefile.i
SPEC=$OUTPUT_ROOT/spec.gmk
+CONF_NAME=$CONF_NAME
+
OUTPUT_ROOT=$OUTPUT_ROOT
@@ -7362,6 +7460,8 @@ ORG_CFLAGS="$CFLAGS"
ORG_CXXFLAGS="$CXXFLAGS"
ORG_OBJCFLAGS="$OBJCFLAGS"
+prepare_help_system
+
# gcc is almost always present, but on Windows we
# prefer cl.exe and on Solaris we prefer CC.
# Thus test for them in this order.
@@ -8769,9 +8869,10 @@ fi
LD="$car"
fi
-LDEXE="$LD"
-LDCXX="$LD"
-LDEXECXX="$LD"
+LD="$CC"
+LDEXE="$CC"
+LDCXX="$CXX"
+LDEXECXX="$CXX"
# LDEXE is the linker to use, when creating executables.
# Linking C++ libraries.
@@ -8926,7 +9027,7 @@ if test "x$BUILD_OS" = xwindows; then :
# For now, assume that we are always compiling using cl.exe.
CC_OUT_OPTION=-Fo
- EXE_OUT_OPTION=-Fe
+ EXE_OUT_OPTION=-out:
LD_OUT_OPTION=-out:
AR_OUT_OPTION=-out:
# On Windows, reject /usr/bin/link, which is a cygwin
@@ -9008,10 +9109,9 @@ fi
WINLD="$tmp"
LD="$WINLD"
- # However creating executables can only be done with cl.exe.
- LDEXE="$CC"
+ LDEXE="$WINLD"
LDCXX="$WINLD"
- LDEXECXX="$CC"
+ LDEXECXX="$WINLD"
# Extract the first word of "mt", so it can be a program name with args.
set dummy mt; ac_word=$2
@@ -9163,7 +9263,7 @@ fi
RC="$tmp"
- RC_FLAGS="/l 0x409 /r"
+ RC_FLAGS="-nologo /l 0x409 /r"
if test "x$VARIANT" = xOPT; then :
RC_FLAGS="$RC_FLAGS -d NDEBUG"
@@ -9303,14 +9403,13 @@ fi
COMPILER_TYPE=CL
- CFLAGS="$CFLAGS -nologo"
- LDFLAGS="$LDFLAGS -nologo -dll -opt:ref -incremental:no "
+ CCXXFLAGS="$CCXXFLAGS -nologo"
+ LDFLAGS="$LDFLAGS -nologo -opt:ref -incremental:no"
if test "x$LEGACY_HOST_CPU1" = xi586; then
LDFLAGS="$LDFLAGS -safeseh"
fi
- if test "x$DEBUG_LEVEL" != xrelease; then
- LDFLAGS="$LDFLAGS -debug"
- fi
+ # TODO: make -debug optional "--disable-full-debug-symbols"
+ LDFLAGS="$LDFLAGS -debug"
fi
@@ -9764,7 +9863,7 @@ fi
-if test "x$HOST_CPU_BITS" = x32 && test "x$HOST_OS" = macosx; then
+if test "x$HOST_CPU_BITS" = x32 && test "x$HOST_OS" = xmacosx; then
# On 32-bit MacOSX the OS requires C-entry points to be 16 byte aligned.
# While waiting for a better solution, the current workaround is to use -mstackrealign.
CFLAGS="$CFLAGS -mstackrealign"
@@ -10499,6 +10598,16 @@ BUILD_LOG_WRAPPER='$(SH) $(SRC_ROOT)/common/bin/logger.sh $(BUILD_LOG)'
# (The JVM can use 32 or 64 bit Java pointers but that decision
# is made at runtime.)
#
+ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+OLD_CXXFLAGS="$CXXFLAGS"
+if test "x$HOST_OS" = xsolaris && test "x$with_data_model" != x; then
+ CXXFLAGS="-m{$with_data_model} $CXXFLAGS"
+fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5
$as_echo_n "checking for ANSI C header files... " >&6; }
@@ -10662,6 +10771,14 @@ cat >>confdefs.h <<_ACEOF
_ACEOF
+CXXFLAGS="$OLD_CXXFLAGS"
+ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+
if test "x$ac_cv_sizeof_int_p" = x0; then
# The test failed, lets pick the assumed value.
ARCH_DATA_MODEL=$HOST_CPU_BITS
@@ -10741,12 +10858,16 @@ if test "x$GCC" = xyes; then
OBJ_SUFFIX='.o'
EXE_SUFFIX=''
SET_SHARED_LIBRARY_NAME='-Xlinker -soname=$1'
- SET_SHARED_LIBRARY_MAPFILE='-Xlinker -version-script=$(JDK_TOPDIR)/$1'
+ SET_SHARED_LIBRARY_MAPFILE='-Xlinker -version-script=$1'
+ C_FLAG_REORDER=''
+ CXX_FLAG_REORDER=''
SET_SHARED_LIBRARY_ORIGIN='-Xlinker -z -Xlinker origin -Xlinker -rpath -Xlinker \$$$$ORIGIN/$1'
LD="$CC"
LDEXE="$CC"
LDCXX="$CXX"
LDEXECXX="$CXX"
+ # TODO: for embedded set --strip-unneeded
+ POST_STRIP_CMD="$STRIP -g"
# Linking is different on MacOSX
if test "x$BUILD_OS" = xmacosx; then
@@ -10759,6 +10880,7 @@ if test "x$GCC" = xyes; then
SET_SHARED_LIBRARY_NAME='-Xlinker -install_name -Xlinker @rpath/$1'
SET_SHARED_LIBRARY_MAPFILE=''
SET_SHARED_LIBRARY_ORIGIN='-Xlinker -rpath -Xlinker @loader_path/.'
+ POST_STRIP_CMD="$STRIP -S"
fi
else
if test "x$BUILD_OS" = xsolaris; then
@@ -10774,9 +10896,13 @@ else
OBJ_SUFFIX='.o'
EXE_SUFFIX=''
SET_SHARED_LIBRARY_NAME=''
- SET_SHARED_LIBRARY_MAPFILE='-M $(JDK_TOPDIR)/$1'
+ SET_SHARED_LIBRARY_MAPFILE='-M $1'
+ C_FLAG_REORDER='-xF'
+ CXX_FLAG_REORDER='-xF'
SET_SHARED_LIBRARY_ORIGIN='-R \$$$$ORIGIN/$1'
CFLAGS_JDKLIB_EXTRA='-xstrconst -D__solaris__'
+ POST_STRIP_CMD="$STRIP -x"
+ POST_MCS_CMD="$MCS -d -a \"JDK $FULL_VERSION\""
fi
if test "x$BUILD_OS" = xwindows; then
# If it is not gcc, then assume it is the MS Visual Studio compiler
@@ -10808,6 +10934,10 @@ fi
+
+
+
+
# The (cross) compiler is now configured, we can now test capabilities
# of the host platform.
@@ -11072,30 +11202,30 @@ if test "x$BOOT_JDK_FOUND" = xno; then
# Source the builddeps file again, to make sure it uses the latest variables!
. $builddepsfile
# Look for a host and build machine specific resource!
- eval resource=\${builddep_bootjdk_BUILD_${rewritten_build_var}_HOST_${rewritten_host_var}}
+ eval resource=\${builddep_boot-jdk_BUILD_${rewritten_build_var}_HOST_${rewritten_host_var}}
if test "x$resource" = x; then
# Ok, lets instead look for a host specific resource
- eval resource=\${builddep_bootjdk_HOST_${rewritten_host_var}}
+ eval resource=\${builddep_boot-jdk_HOST_${rewritten_host_var}}
fi
if test "x$resource" = x; then
# Ok, lets instead look for a build specific resource
- eval resource=\${builddep_bootjdk_BUILD_${rewritten_build_var}}
+ eval resource=\${builddep_boot-jdk_BUILD_${rewritten_build_var}}
fi
if test "x$resource" = x; then
# Ok, lets instead look for a generic resource
- # (The bootjdk comes from M4 and not the shell, thus no need for eval here.)
- resource=${builddep_bootjdk}
+ # (The boot-jdk comes from M4 and not the shell, thus no need for eval here.)
+ resource=${builddep_boot-jdk}
fi
if test "x$resource" != x; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: Using builddeps $resource for bootjdk" >&5
-$as_echo "$as_me: Using builddeps $resource for bootjdk" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Using builddeps $resource for boot-jdk" >&5
+$as_echo "$as_me: Using builddeps $resource for boot-jdk" >&6;}
# If the resource in the builddeps.conf file is an existing directory,
# for example /java/linux/cups
if test -d ${resource}; then
depdir=${resource}
else
-# bootjdk is for example mymodule
+# boot-jdk is for example mymodule
# $resource is for example libs/general/libmymod_1_2_3.zip
# $with_builddeps_server is for example ftp://mybuilddeps.myserver.com/builddeps
# $with_builddeps_dir is for example /localhome/builddeps
@@ -11108,15 +11238,15 @@ $as_echo "$as_me: Using builddeps $resource for bootjdk" >&6;}
extension=${filename#*.}
installdir=$with_builddeps_dir/$filebase
if test ! -f $installdir/$filename.unpacked; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: Downloading build dependency bootjdk from $with_builddeps_server/$resource and installing into $installdir" >&5
-$as_echo "$as_me: Downloading build dependency bootjdk from $with_builddeps_server/$resource and installing into $installdir" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Downloading build dependency boot-jdk from $with_builddeps_server/$resource and installing into $installdir" >&5
+$as_echo "$as_me: Downloading build dependency boot-jdk from $with_builddeps_server/$resource and installing into $installdir" >&6;}
if test ! -d $installdir; then
mkdir -p $installdir
fi
if test ! -d $installdir; then
as_fn_error $? "Could not create directory $installdir" "$LINENO" 5
fi
- tmpfile=`mktemp $installdir/bootjdk.XXXXXXXXX`
+ tmpfile=`mktemp $installdir/boot-jdk.XXXXXXXXX`
touch $tmpfile
if test ! -f $tmpfile; then
as_fn_error $? "Could not create files in directory $installdir" "$LINENO" 5
@@ -11187,11 +11317,11 @@ $as_echo "$as_me: Downloading build dependency bootjdk from $with_builddeps_serv
# was updated to point at the current build dependency install directory.
. $builddepsfile
# Now extract variables from the builddeps.conf files.
- theroot=${builddep_bootjdk_ROOT}
- thecflags=${builddep_bootjdk_CFLAGS}
- thelibs=${builddep_bootjdk_LIBS}
+ theroot=${builddep_boot-jdk_ROOT}
+ thecflags=${builddep_boot-jdk_CFLAGS}
+ thelibs=${builddep_boot-jdk_LIBS}
if test "x$depdir" = x; then
- as_fn_error $? "Could not download build dependency bootjdk" "$LINENO" 5
+ as_fn_error $? "Could not download build dependency boot-jdk" "$LINENO" 5
fi
BOOT_JDK=$depdir
if test "x$theroot" != x; then
@@ -11220,15 +11350,15 @@ if test "x$BOOT_JDK_FOUND" = xno; then
fi
# Aha, the user has set a JAVA_HOME
# let us use that as the Boot JDK.
- BOOT_JDK=$JAVA_HOME
+ BOOT_JDK="$JAVA_HOME"
BOOT_JDK_FOUND=yes
# To be on the safe side, lets check that it is a JDK.
- if test -x $BOOT_JDK/bin/javac && test -x $BOOT_JDK/bin/java; then
- JAVAC=$BOOT_JDK/bin/javac
- JAVA=$BOOT_JDK/bin/java
+ if test -x "$BOOT_JDK/bin/javac" && test -x "$BOOT_JDK/bin/java"; then
+ JAVAC="$BOOT_JDK/bin/javac"
+ JAVA="$BOOT_JDK/bin/java"
BOOT_JDK_FOUND=yes
else
- as_fn_error $? "Your JAVA_HOME points to a JRE! The build needs a JDK! Please point JAVA_HOME to a JDK." "$LINENO" 5
+ as_fn_error $? "Your JAVA_HOME points to a JRE! The build needs a JDK! Please point JAVA_HOME to a JDK. JAVA_HOME=$JAVA_HOME" "$LINENO" 5
fi
fi
fi
@@ -11634,7 +11764,7 @@ $as_echo "yes $BOOT_JDK_VERSION" >&6; }
FOUND_VERSION_78=`echo $BOOT_JDK_VERSION | grep '\"1\.[78]\.'`
if test "x$FOUND_VERSION_78" = x; then
help_on_build_dependency openjdk
- as_fn_error $? "Your bootjdk must be version 7 or 8. $HELP_MSG" "$LINENO" 5
+ as_fn_error $? "Your boot-jdk must be version 7 or 8. $HELP_MSG" "$LINENO" 5
fi
# When compiling code to be executed by the Boot JDK, force jdk7 compatibility.
@@ -11653,7 +11783,7 @@ $as_echo "yes" >&6; }
-# Use the javac tool from the Boot JDK.
+# Use the javah tool from the Boot JDK.
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for javah in Boot JDK" >&5
$as_echo_n "checking for javah in Boot JDK... " >&6; }
JAVAH=$BOOT_JDK/bin/javah
@@ -11686,6 +11816,17 @@ fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
+# Use the native2ascii tool from the Boot JDK.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for native2ascii in Boot JDK" >&5
+$as_echo_n "checking for native2ascii in Boot JDK... " >&6; }
+NATIVE2ASCII=$BOOT_JDK/bin/native2ascii
+if test ! -x $NATIVE2ASCII; then
+ as_fn_error $? "Could not find a working native2ascii" "$LINENO" 5
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+
+
###############################################################################
#
# Pickup additional source for a component from outside of the source root
@@ -13135,9 +13276,6 @@ if test "x$no_x" = xyes && test "x$X11_NOT_NEEDED" != xyes; then
as_fn_error $? "Could not find X11 libraries. $HELP_MSG" "$LINENO" 5
fi
-
-
-
# Some of the old makefiles require a setting of OPENWIN_HOME
# Since the X11R6 directory has disappeared on later Linuxes,
# we need to probe for it.
@@ -13154,6 +13292,18 @@ if test "x$HOST_OS" = xsolaris; then
fi
+
+#
+# Weird Sol10 something check...TODO change to try compile
+#
+if test "x${HOST_OS}" = xsolaris; then
+ if test "`uname -r`" = "5.10"; then
+ if test "`${EGREP} -c XLinearGradient ${OPENWIN_HOME}/share/include/X11/extensions/Xrender.h`" = "0"; then
+ X_CFLAGS="${X_CFLAGS} -DSOLARIS10_NO_XRENDER_STRUCTS"
+ fi
+ fi
+fi
+
ac_ext=c
ac_cpp='$CPP $CPPFLAGS'
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -13192,6 +13342,9 @@ if test "x$X11_A_OK" = xno && test "x$X11_NOT_NEEDED" != xyes; then
as_fn_error $? "Could not find all X11 headers (shape.h Xrender.h XTest.h). $HELP_MSG" "$LINENO" 5
fi
+
+
+
###############################################################################
#
# The common unix printing system cups is used to print from java.
@@ -13216,7 +13369,7 @@ fi
if test "x$CUPS_NOT_NEEDED" = xyes; then
- if test "x$with_cups" != x || test "x$with_cups-include" != x || test "x$with_cups-lib" != x; then
+ if test "x${with_cups}" != x || test "x${with_cups_include}" != x || test "x${with_cups_lib}" != x; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cups not used, so --with-cups is ignored" >&5
$as_echo "$as_me: WARNING: cups not used, so --with-cups is ignored" >&2;}
fi
@@ -13225,21 +13378,21 @@ $as_echo "$as_me: WARNING: cups not used, so --with-cups is ignored" >&2;}
else
CUPS_FOUND=no
- if test "x$with_cups" = xno || test "x$with_cups-include" = xno || test "x$with_cups-lib" = xno; then
+ if test "x${with_cups}" = xno || test "x${with_cups_include}" = xno || test "x${with_cups_lib}" = xno; then
as_fn_error $? "It is not possible to disable the use of cups. Remove the --without-cups option." "$LINENO" 5
fi
- if test "x$with_cups" != x; then
- CUPS_LIBS="-L$with_cups/lib -lcups"
- CUPS_CFLAGS="-I$with_cups/include"
+ if test "x${with_cups}" != x; then
+ CUPS_LIBS="-L${with_cups}/lib -lcups"
+ CUPS_CFLAGS="-I${with_cups}/include"
CUPS_FOUND=yes
fi
- if test "x$with_cups-include" != x; then
- CUPS_CFLAGS="-I$with_cups-include"
+ if test "x${with_cups_include}" != x; then
+ CUPS_CFLAGS="-I${with_cups_include}"
CUPS_FOUND=yes
fi
- if test "x$with_cups-lib" != x; then
- CUPS_LIBS="-L$with_cups-lib -lcups"
+ if test "x${with_cups_lib}" != x; then
+ CUPS_LIBS="-L${with_cups_lib} -lcups"
CUPS_FOUND=yes
fi
if test "x$CUPS_FOUND" = xno; then
@@ -13796,7 +13949,7 @@ fi
if test "x$ALSA_NOT_NEEDED" = xyes; then
- if test "x$with_alsa" != x || test "x$with_alsa-include" != x || test "x$with_alsa-lib" != x; then
+ if test "x${with_alsa}" != x || test "x${with_alsa_include}" != x || test "x${with_alsa_lib}" != x; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: alsa not used, so --with-alsa is ignored" >&5
$as_echo "$as_me: WARNING: alsa not used, so --with-alsa is ignored" >&2;}
fi
@@ -13805,21 +13958,21 @@ $as_echo "$as_me: WARNING: alsa not used, so --with-alsa is ignored" >&2;}
else
ALSA_FOUND=no
- if test "x$with_alsa" = xno || test "x$with_alsa-include" = xno || test "x$with_alsa-lib" = xno; then
+ if test "x${with_alsa}" = xno || test "x${with_alsa_include}" = xno || test "x${with_alsa_lib}" = xno; then
as_fn_error $? "It is not possible to disable the use of alsa. Remove the --without-alsa option." "$LINENO" 5
fi
- if test "x$with_alsa" != x; then
- ALSA_LIBS="-L$with_alsa/lib -lalsa"
- ALSA_CFLAGS="-I$with_alsa/include"
+ if test "x${with_alsa}" != x; then
+ ALSA_LIBS="-L${with_alsa}/lib -lalsa"
+ ALSA_CFLAGS="-I${with_alsa}/include"
ALSA_FOUND=yes
fi
- if test "x$with_alsa-include" != x; then
- ALSA_CFLAGS="-I$with_alsa/include"
+ if test "x${with_alsa_include}" != x; then
+ ALSA_CFLAGS="-I${with_alsa_include}"
ALSA_FOUND=yes
fi
- if test "x$with_alsa-lib" != x; then
- ALSA_LIBS="-L$with_alsa/lib -lalsa"
+ if test "x${with_alsa_lib}" != x; then
+ ALSA_LIBS="-L${with_alsa_lib} -lalsa"
ALSA_FOUND=yes
fi
if test "x$ALSA_FOUND" = xno; then
@@ -14090,17 +14243,17 @@ if test "${with_pulse_lib+set}" = set; then :
fi
-if test "x$with_pulse" != x; then
- PULSE_LIBS="-L$with_pulse/lib -lfreetype"
- PULSE_CFLAGS="-I$with_pulse/include"
+if test "x${with_pulse}" != x; then
+ PULSE_LIBS="-L${with_pulse}/lib -lfreetype"
+ PULSE_CFLAGS="-I${with_pulse}/include"
PULSE_FOUND=yes
fi
-if test "x$with_pulse-include" != x; then
- PULSE_CFLAGS="-I$with_pulse/include"
+if test "x${with_pulse_include}" != x; then
+ PULSE_CFLAGS="-I${with_pulse_include}"
PULSE_FOUND=yes
fi
-if test "x$with_pulse-lib" != x; then
- PULSE_LIBS="-L$with_pulse/lib -lfreetype"
+if test "x${with_pulse_lib}" != x; then
+ PULSE_LIBS="-L${with_pulse_lib} -lpulse"
PULSE_FOUND=yes
fi
if test "x$PULSE_FOUND" = xno; then
@@ -14537,9 +14690,9 @@ fi
# Check the maths library
#
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -lm" >&5
-$as_echo_n "checking for main in -lm... " >&6; }
-if test "${ac_cv_lib_m_main+set}" = set; then :
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for cos in -lm" >&5
+$as_echo_n "checking for cos in -lm... " >&6; }
+if test "${ac_cv_lib_m_cos+set}" = set; then :
$as_echo_n "(cached) " >&6
else
ac_check_lib_save_LIBS=$LIBS
@@ -14547,27 +14700,33 @@ LIBS="-lm $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char cos ();
int
main ()
{
-return main ();
+return cos ();
;
return 0;
}
_ACEOF
if ac_fn_cxx_try_link "$LINENO"; then :
- ac_cv_lib_m_main=yes
+ ac_cv_lib_m_cos=yes
else
- ac_cv_lib_m_main=no
+ ac_cv_lib_m_cos=no
fi
rm -f core conftest.err conftest.$ac_objext \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_m_main" >&5
-$as_echo "$ac_cv_lib_m_main" >&6; }
-if test "x$ac_cv_lib_m_main" = x""yes; then :
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_m_cos" >&5
+$as_echo "$ac_cv_lib_m_cos" >&6; }
+if test "x$ac_cv_lib_m_cos" = x""yes; then :
cat >>confdefs.h <<_ACEOF
#define HAVE_LIBM 1
_ACEOF
@@ -14585,6 +14744,61 @@ fi
###############################################################################
#
+# Check for libdl.so
+
+save_LIBS="$LIBS"
+LIBS=""
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5
+$as_echo_n "checking for dlopen in -ldl... " >&6; }
+if test "${ac_cv_lib_dl_dlopen+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldl $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char dlopen ();
+int
+main ()
+{
+return dlopen ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+ ac_cv_lib_dl_dlopen=yes
+else
+ ac_cv_lib_dl_dlopen=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5
+$as_echo "$ac_cv_lib_dl_dlopen" >&6; }
+if test "x$ac_cv_lib_dl_dlopen" = x""yes; then :
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_LIBDL 1
+_ACEOF
+
+ LIBS="-ldl $LIBS"
+
+fi
+
+LIBDL="$LIBS"
+
+LIBS="$save_LIBS"
+
+###############################################################################
+#
# Should we run the painfully slow javadoc tool?
#
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build documentation" >&5
@@ -14632,6 +14846,9 @@ fi
# Setup the opt flags for different compilers
# and different operating systems.
#
+C_FLAG_DEPS="-MMD -MF"
+CXX_FLAG_DEPS="-MMD -MF"
+
case $COMPILER_TYPE in
CC )
D_FLAG="-g"
@@ -14641,9 +14858,9 @@ case $COMPILER_TYPE in
macosx )
# On MacOSX we optimize for size, something
# we should do for all platforms?
- C_O_FLAG_HI="-O3"
+ C_O_FLAG_HI="-Os"
C_O_FLAG_NORM="-Os"
- C_O_FLAG_NONE="-O0"
+ C_O_FLAG_NONE=""
;;
*)
C_O_FLAG_HI="-O3"
@@ -14656,19 +14873,61 @@ case $COMPILER_TYPE in
CXX_O_FLAG_NONE="$C_O_FLAG_NONE"
;;
ossc )
+ #
+ # Forte has different names for this with their C++ compiler...
+ #
+ CXX_FLAG_DEPS="-xMMD -xMF"
+
+# Extra options used with HIGHEST
+#
+# WARNING: Use of OPTIMIZATION_LEVEL=HIGHEST in your Makefile needs to be
+# done with care, there are some assumptions below that need to
+# be understood about the use of pointers, and IEEE behavior.
+#
+# Use non-standard floating point mode (not IEEE 754)
+CC_HIGHEST="$CC_HIGHEST -fns"
+# Do some simplification of floating point arithmetic (not IEEE 754)
+CC_HIGHEST="$CC_HIGHEST -fsimple"
+# Use single precision floating point with 'float'
+CC_HIGHEST="$CC_HIGHEST -fsingle"
+# Assume memory references via basic pointer types do not alias
+# (Source with excessing pointer casting and data access with mixed
+# pointer types are not recommended)
+CC_HIGHEST="$CC_HIGHEST -xalias_level=basic"
+# Use intrinsic or inline versions for math/std functions
+# (If you expect perfect errno behavior, do not use this)
+CC_HIGHEST="$CC_HIGHEST -xbuiltin=%all"
+# Loop data dependency optimizations (need -xO3 or higher)
+CC_HIGHEST="$CC_HIGHEST -xdepend"
+# Pointer parameters to functions do not overlap
+# (Similar to -xalias_level=basic usage, but less obvious sometimes.
+# If you pass in multiple pointers to the same data, do not use this)
+CC_HIGHEST="$CC_HIGHEST -xrestrict"
+# Inline some library routines
+# (If you expect perfect errno behavior, do not use this)
+CC_HIGHEST="$CC_HIGHEST -xlibmil"
+# Use optimized math routines
+# (If you expect perfect errno behavior, do not use this)
+# Can cause undefined external on Solaris 8 X86 on __sincos, removing for now
+#CC_HIGHEST="$CC_HIGHEST -xlibmopt"
+
case $LEGACY_HOST_CPU1 in
i586)
+ C_O_FLAG_HIGHEST="-xO4 -Wu,-O4~yz $CC_HIGHEST -xchip=pentium"
C_O_FLAG_HI="-xO4 -Wu,-O4~yz"
C_O_FLAG_NORM="-xO2 -Wu,-O2~yz"
C_O_FLAG_NONE=""
+ CXX_O_FLAG_HIGHEST="-xO4 -Qoption ube -O4~yz $CC_HIGHEST -xchip=pentium"
CXX_O_FLAG_HI="-xO4 -Qoption ube -O4~yz"
CXX_O_FLAG_NORM="-xO2 -Qoption ube -O2~yz"
CXX_O_FLAG_NONE=""
;;
sparc)
+ C_O_FLAG_HIGHEST="-xO4 -Wc,-Qrm-s -Wc,-Qiselect-T0 $CC_HIGHEST -xprefetch=auto,explicit -xchip=ultra"
C_O_FLAG_HI="-xO4 -Wc,-Qrm-s -Wc,-Qiselect-T0"
C_O_FLAG_NORM="-xO2 -Wc,-Qrm-s -Wc,-Qiselect-T0"
C_O_FLAG_NONE=""
+ CXX_O_FLAG_HIGHEST="-xO4 -Qoption cg -Qrm-s -Qoption cg -Qiselect-T0 $CC_HIGHEST -xprefetch=auto,explicit -xchip=ultra"
CXX_O_FLAG_HI="-xO4 -Qoption cg -Qrm-s -Qoption cg -Qiselect-T0"
CXX_O_FLAG_NORM="-xO2 -Qoption cg -Qrm-s -Qoption cg -Qiselect-T0"
CXX_O_FLAG_NONE=""
@@ -14687,6 +14946,18 @@ case $COMPILER_TYPE in
;;
esac
+if test -z "$C_O_FLAG_HIGHEST"; then
+ C_O_FLAG_HIGHEST="$C_O_FLAG_HI"
+fi
+
+if test -z "$CXX_O_FLAG_HIGHEST"; then
+ CXX_O_FLAG_HIGHEST="$CXX_O_FLAG_HI"
+fi
+
+
+
+
+
@@ -14810,16 +15081,17 @@ IMAGES_MAKE_ARGS="ALT_OUTPUTDIR=$OUTPUT_ROOT/jdk \
#
case $COMPILER_NAME in
gcc )
- CCXXFLAGS_JDK="$CCXXFLAGS_JDK -W -Wall -Wno-unused -Wno-parentheses -pipe -fno-omit-frame-pointer \
+ CCXXFLAGS_JDK="$CCXXFLAGS $CCXXFLAGS_JDK -W -Wall -Wno-unused -Wno-parentheses \
+ -pipe -fno-omit-frame-pointer \
-D_GNU_SOURCE -D_REENTRANT -D_LARGEFILE64_SOURCE"
CFLAGS_JDK="$CFLAGS_JDK -fno-strict-aliasing"
;;
ossc )
- CFLAGS_JDK="$CFLAGS_JDK -xc99=%none -xCC -errshort=tags -Xa REQUIRED -v -mt -norunpath -xnolib"
- CXXFLAGS_JDK="$CXXFLAGS_JDK -errtags=yes +w -mt REQUIRED -features=no%except -DCC_NOEX"
+ CFLAGS_JDK="$CFLAGS_JDK -xc99=%none -xCC -errshort=tags -Xa -v -mt -norunpath -xnolib"
+ CXXFLAGS_JDK="$CXXFLAGS_JDK -errtags=yes +w -mt -features=no%except -DCC_NOEX"
;;
cl )
- CCXXFLAGS_JDK="$CCXXFLAGS_JDK -Zi -MD -Zc:wchar_t- -W3 -wd4800 \
+ CCXXFLAGS_JDK="$CCXXFLAGS $CCXXFLAGS_JDK -Zi -MD -Zc:wchar_t- -W3 -wd4800 \
-D_STATIC_CPPLIB -D_DISABLE_DEPRECATE_STATIC_CPPLIB -DWIN32_LEAN_AND_MEAN \
-D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE \
-DWIN32 -DIAL"
@@ -14898,14 +15170,14 @@ CXXFLAGS_JDKEXE="$CCXXFLAGS_JDK $CXXFLAGS_JDK"
#
# Thus we offer the compiler to find libjvm.so first in server then in client. It works. Ugh.
if test "x$COMPILER_TYPE" = xCL; then
- LDFLAGS_JDKLIB="$LDFLAGS -libpath:${JDK_OUTPUTDIR}/lib jvm.lib java.lib"
+ LDFLAGS_JDKLIB="$LDFLAGS -dll -libpath:${JDK_OUTPUTDIR}/lib -libpath:${JDK_OUTPUTDIR}/objs"
LDFLAGS_JDKLIB_SUFFIX=""
- if test "x$HOST_CPU_BITS" = "x64"; then
- LDFLAGS_JDKEXE="$CFLAGS ${JDK_OUTPUTDIR}/tmp/java/jli/obj64/jli.lib"
+ if test "$HOST_CPU_BITS" == "64"; then
+ LDFLAGS_STACK_SIZE=1048576
else
- LDFLAGS_JDKEXE="$CFLAGS ${JDK_OUTPUTDIR}/tmp/java/jli/obj/jli.lib"
+ LDFLAGS_STACK_SIZE=327680
fi
- LDFLAGS_JDKEXE_SUFFIX=""
+ LDFLAGS_JDKEXE="$LDFLAGS /STACK:$LDFLAGS_STACK_SIZE"
else
# If this is a --hash-style=gnu system, use --hash-style=both, why?
HAS_GNU_HASH=`$CC -dumpspecs 2>/dev/null | $GREP 'hash-style=gnu'`
@@ -14920,7 +15192,9 @@ else
fi
fi
- LDFLAGS_JDKLIB="$LDFLAGS $SHARED_LIBRARY_FLAGS -L${JDK_OUTPUTDIR}/lib/${LIBARCHDIR}server \
+ LDFLAGS_JDKLIB="$LDFLAGS $SHARED_LIBRARY_FLAGS \
+ -L${JDK_OUTPUTDIR}/objs \
+ -L${JDK_OUTPUTDIR}/lib/${LIBARCHDIR}server \
-L${JDK_OUTPUTDIR}/lib/${LIBARCHDIR}client \
-L${JDK_OUTPUTDIR}/lib/${LIBARCHDIR}"
LDFLAGS_JDKLIB_SUFFIX="-ljvm -ljava"
@@ -14930,8 +15204,10 @@ else
# Only the jli library is explicitly linked when the launchers are built.
# The libjvm is then dynamically loaded/linked by the launcher.
- LDFLAGS_JDKEXE="$LDFLAGS -L${JDK_OUTPUTDIR}/lib/${LIBARCHDIR}jli"
- LDFLAGS_JDKEXE_SUFFIX="-ljli"
+ if test "x$HOST_OS" != "xmacosx"; then
+ LDFLAGS_JDKEXE="$LDFLAGS -L${JDK_OUTPUTDIR}/lib/${LIBARCHDIR}jli"
+ LDFLAGS_JDKEXE_SUFFIX="-ljli"
+ fi
fi
@@ -15081,10 +15357,25 @@ fi
# Could someone enlighten this configure script with a comment about libCrun?
# The LEGACY_HOST_CPU3 is the setting for ISA_DIR.
#
-if test "x$HOST_OS" = xsolaris; then
- LIBCXX="$LIBCXX /usr/lib${LEGACY_HOST_CPU3}/libCrun.so.1"
+if test "x$HOST_OS" = xsolaris && test "x$LIBCXX" = x; then
+ LIBCXX="/usr/lib${LEGACY_HOST_CPU3}/libCrun.so.1"
fi
+# TODO better (platform agnostic) test
+if test "x$HOST_OS" = xmacosx && test "x$LIBCXX" = x && test "x$GCC" = xyes; then
+ LIBCXX="-lstdc++"
+fi
+
+
+
+###############################################################################
+
+OS_VERSION="`uname -r | ${SED} 's!\.! !g' | ${SED} 's!-! !g'`"
+OS_VERSION_MAJOR="`${ECHO} ${OS_VERSION} | ${CUT} -f 1 -d ' '`"
+OS_VERSION_MINOR="`${ECHO} ${OS_VERSION} | ${CUT} -f 2 -d ' '`"
+OS_VERSION_MICRO="`${ECHO} ${OS_VERSION} | ${CUT} -f 3 -d ' '`"
+
+
###############################################################################
@@ -15092,6 +15383,13 @@ fi
# Misc
#
+# The name of the Service Agent jar.
+SALIB_NAME="${LIBRARY_PREFIX}saproc${SHARED_LIBRARY_SUFFIX}"
+if test "x$HOST_OS" = "xwindows"; then
+ SALIB_NAME="${LIBRARY_PREFIX}sawindbg${SHARED_LIBRARY_SUFFIX}"
+fi
+
+
# Control wether Hotspot runs Queens test after build.
# Check whether --enable-hotspot-test-in-build was given.
if test "${enable_hotspot_test_in_build+set}" = set; then :
@@ -15109,19 +15407,48 @@ fi
###############################################################################
#
-# A helpful message at the end of the configure run.
+# Choose cacerts source file
#
-if test "x$CCACHE_FOUND" = x && test "x$GCC" = xyes; then
- help_on_build_dependency ccache
- printf "\nTip of the day:\nYou should really install ccache version 3.1.4 or newer.\n"
- printf "It gives a tremendous speedup for C++ recompilations with precompiled headers!\n"
+# Check whether --with-cacerts-file was given.
+if test "${with_cacerts_file+set}" = set; then :
+ withval=$with_cacerts_file;
fi
-if test "x$CCACHE_FOUND" != x && test "x$HAS_GOOD_CCACHE" = x; then
- printf "You have a ccache installed, but it is a version prior to 3.1.4. Try upgrading.\n"
+if test "x$with_cacerts_file" != x; then
+ CACERTS_FILE=$with_cacerts_file
+else
+ if test "x$OPENJDK" = "xtrue"; then
+ CACERTS_FILE=${SRC_ROOT}/jdk/src/share/lib/security/cacerts
+ else
+ CACERTS_FILE=${SRC_ROOT}/jdk/src/closed/share/lib/security/cacerts.internal
+ fi
fi
+
+# Check if build directory is on local disk.
+# return 0 if it is on local disk, non-0 if on remote disk or failure
+function is_directory_on_local_disk {
+ # df -l lists only local disks; if the given directory is not found then
+ # a non-zero exit code is given
+ $DF -l $1 > /dev/null 2>&1
+}
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if build directory is on local disk" >&5
+$as_echo_n "checking if build directory is on local disk... " >&6; }
+if is_directory_on_local_disk $OUTPUT_ROOT; then
+ OUTPUT_DIR_IS_LOCAL="yes"
+else
+ OUTPUT_DIR_IS_LOCAL="no"
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $OUTPUT_DIR_IS_LOCAL" >&5
+$as_echo "$OUTPUT_DIR_IS_LOCAL" >&6; }
+
+# We're messing a bit with internal autoconf variables to put the config.status in the
+# output directory instead of the current directory.
+CONFIG_STATUS=$OUTPUT_ROOT/config.status
+
+# Now create the actual output files, after this, the main work of configure is done
cat >confcache <<\_ACEOF
# This file is a shell script that caches the results of configure
# tests run on this system so they can be shared between configure
@@ -16393,3 +16720,62 @@ if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then
$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;}
fi
+
+# Finally output some useful information to the user
+
+if test "x$CCACHE_FOUND" != x; then
+ if test "x$HAS_GOOD_CCACHE" = x; then
+ CCACHE_STATUS="installed, but disabled (version older than 3.1.4)"
+ CCACHE_HELP_MSG="You have ccache installed, but it is a version prior to 3.1.4. Try upgrading."
+ else
+ CCACHE_STATUS="installed and in use"
+ fi
+else
+ if test "x$GCC" = xyes; then
+ CCACHE_STATUS="not installed (consider installing)"
+ CCACHE_HELP_MSG="You do not have ccache installed. Try installing it."
+ else
+ CCACHE_STATUS="not available for your system"
+ fi
+fi
+
+printf "\n"
+printf "====================================================\n"
+printf "A new configuration has been successfully created in\n"
+printf "$OUTPUT_ROOT\n"
+if test "x$CONFIGURE_COMMAND_LINE" != x; then
+ printf "using configure arguments '$CONFIGURE_COMMAND_LINE'.\n"
+else
+ printf "using default settings.\n"
+fi
+
+printf "\n"
+printf "Configuration summary:\n"
+printf "* Debug level: $DEBUG_LEVEL\n"
+printf "* JDK variant: $JDK_VARIANT\n"
+printf "* JVM variants: $with_jvm_variants\n"
+printf "* Host info: OS: $HOST_OS, CPU architecture: $HOST_CPU_ARCH, address length: $HOST_CPU_BITS\n"
+printf "* Boot JDK: $BOOT_JDK\n"
+
+printf "\n"
+printf "Build performance summary:\n"
+printf "* Cores to use: $NUM_CORES\n"
+printf "* Memory limit: $MEMORY_SIZE MB\n"
+printf "* ccache status: $CCACHE_STATUS\n"
+
+if test "x$OUTPUT_DIR_IS_LOCAL" != "xyes"; then
+ printf "\n"
+ printf "WARNING: Your build output directory is not on a local disk.\n"
+ printf "This will severely degrade build performance!\n"
+ printf "It is recommended that you create an output directory on a local disk,\n"
+ printf "and run the configure script again from that directory.\n"
+fi
+
+if test "x$CCACHE_HELP_MSG" != x; then
+ printf "\n"
+ printf "Build performance tip: ccache gives a tremendous speedup for C++ recompilations.\n"
+ printf "$CCACHE_HELP_MSG\n"
+
+ help_on_build_dependency ccache
+ printf "$HELP_MSG\n"
+fi
diff --git a/common/autoconf/configure.ac b/common/autoconf/configure.ac
index 4c6b326..be678cc 100644
--- a/common/autoconf/configure.ac
+++ b/common/autoconf/configure.ac
@@ -93,7 +93,7 @@ AC_PATH_PROGS(MAKE, [gmake make])
CHECK_NONEMPTY(MAKE)
MAKE_VERSION=`$MAKE --version | head -n 1 | grep '3.8[[12346789]]'`
if test "x$MAKE_VERSION" = x; then
- AC_ERROR([You must use GNU make 3.81 or newer! Please put it in the path.])
+ AC_MSG_ERROR([You must use GNU make 3.81 or newer! Please put it in the path.])
fi
AC_PATH_PROG(MKDIR, mkdir)
CHECK_NONEMPTY(MKDIR)
@@ -147,6 +147,8 @@ AC_PATH_PROG(EXPR, expr)
CHECK_NONEMPTY(EXPR)
AC_PATH_PROG(FILE, file)
CHECK_NONEMPTY(FILE)
+AC_PATH_PROG(HG, hg)
+
# Figure out the build and host system.
AC_CANONICAL_BUILD
AC_CANONICAL_HOST
@@ -157,7 +159,7 @@ AC_ARG_WITH(data-model, [AS_HELP_STRING([--with-data-model],
if test "x$with_data_model" != x && \
test "x$with_data_model" != x32 && \
test "x$with_data_model" != x64 ; then
- AC_ERROR([The data model can only be 32 or 64!])
+ AC_MSG_ERROR([The data model can only be 32 or 64!])
fi
# Translate the standard cpu-vendor-kernel-os quadruplets into
# the new HOST_.... and BUILD_... and the legacy names used by
@@ -221,7 +223,7 @@ AC_PATH_PROG(CYGPATH, cygpath)
PATH_SEP=":"
if test "x$BUILD_OS" = "xwindows"; then
if test "x$CYGPATH" = x; then
- AC_ERROR([Something is wrong with your cygwin installation since I cannot find cygpath.exe in your path])
+ AC_MSG_ERROR([Something is wrong with your cygwin installation since I cannot find cygpath.exe in your path])
fi
PATH_SEP=";"
fi
@@ -239,12 +241,12 @@ fi
#
# OpenJDK or closed
#
-AC_ARG_ENABLE([openjdk], [AS_HELP_STRING([--enable-openjdk],
+AC_ARG_ENABLE([openjdk-only], [AS_HELP_STRING([--enable-openjdk-only],
[build OpenJDK regardless of the presence of closed repositories @<:@disabled@:>@])],,)
-if test "x$enable_openjdk" = "xyes"; then
+if test "x$enable_openjdk_only" = "xyes"; then
OPENJDK=true
-elif test "x$enable_openjdk" = "xno"; then
+elif test "x$enable_openjdk_only" = "xno"; then
OPENJDK=false
elif test -d "$SRC_ROOT/jdk/src/closed"; then
OPENJDK=false
@@ -298,7 +300,7 @@ elif test "x$with_jdk_variant" = xembedded; then
MINIMIZE_RAM_USAGE="MINIMIZE_RAM_USAGE:=true"
JDK_VARIANT="embedded"
else
- AC_ERROR([The available JDK variants are: normal, embedded])
+ AC_MSG_ERROR([The available JDK variants are: normal, embedded])
fi
AC_SUBST(JAVASE_EMBEDDED)
@@ -370,7 +372,7 @@ JVM_VARIANTS=",$with_jvm_variants,"
TEST_VARIANTS=`$ECHO "$JVM_VARIANTS" | $SED -e 's/server,//' -e 's/client,//' -e 's/kernel,//' -e 's/zero,//' -e 's/zeroshark,//'`
if test "x$TEST_VARIANTS" != "x,"; then
- AC_ERROR([The available JVM variants are: server, client, kernel, zero, zeroshark])
+ AC_MSG_ERROR([The available JVM variants are: server, client, kernel, zero, zeroshark])
fi
AC_MSG_RESULT([$with_jvm_variants])
@@ -382,12 +384,12 @@ JVM_VARIANT_ZEROSHARK=`$ECHO "$JVM_VARIANTS" | $SED -e '/,zeroshark,/!s/.*/false
if test "x$JVM_VARIANT_CLIENT" = xtrue; then
if test "x$HOST_CPU_BITS" = x64; then
- AC_ERROR([You cannot build a client JVM for a 64-bit machine.])
+ AC_MSG_ERROR([You cannot build a client JVM for a 64-bit machine.])
fi
fi
if test "x$JVM_VARIANT_KERNEL" = xtrue; then
if test "x$HOST_CPU_BITS" = x64; then
- AC_ERROR([You cannot build a kernel JVM for a 64-bit machine.])
+ AC_MSG_ERROR([You cannot build a kernel JVM for a 64-bit machine.])
fi
fi
@@ -426,7 +428,7 @@ AC_ARG_WITH([debug-level], [AS_HELP_STRING([--with-debug-level],
[
DEBUG_LEVEL="${withval}"
if test "x$ENABLE_DEBUG" = xyes; then
- AC_ERROR([You cannot use both --enable-debug and --with-debug-level at the same time.])
+ AC_MSG_ERROR([You cannot use both --enable-debug and --with-debug-level at the same time.])
fi
])
AC_MSG_RESULT([$DEBUG_LEVEL])
@@ -434,7 +436,7 @@ AC_MSG_RESULT([$DEBUG_LEVEL])
if test "x$DEBUG_LEVEL" != xrelease && \
test "x$DEBUG_LEVEL" != xfastdebug && \
test "x$DEBUG_LEVEL" != xslowdebug; then
- AC_ERROR([Allowed debug levels are: release, fastdebug and slowdebug])
+ AC_MSG_ERROR([Allowed debug levels are: release, fastdebug and slowdebug])
fi
case $DEBUG_LEVEL in
@@ -520,14 +522,18 @@ AC_SUBST(COOKED_BUILD_NUMBER)
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
# We are running configure from the src root.
# Create a default ./build/host-variant-debuglevel output root.
- OUTPUT_ROOT="$SRC_ROOT/build/${HOST_OS}-${HOST_CPU}-${JDK_VARIANT}-${ANDED_JVM_VARIANTS}-${DEBUG_LEVEL}"
+ CONF_NAME="${HOST_OS}-${HOST_CPU}-${JDK_VARIANT}-${ANDED_JVM_VARIANTS}-${DEBUG_LEVEL}"
+ OUTPUT_ROOT="$SRC_ROOT/build/${CONF_NAME}"
mkdir -p "$OUTPUT_ROOT"
if test ! -d "$OUTPUT_ROOT"; then
- AC_ERROR([Could not create build directory $OUTPUT_ROOT])
+ AC_MSG_ERROR([Could not create build directory $OUTPUT_ROOT])
fi
else
# We are running configure from outside of the src dir.
# Then use the current directory as output dir!
+ # If configuration is situated in normal build directory, just use the build
+ # directory name as configuration name, otherwise use the complete path.
+ CONF_NAME=`$ECHO $CURDIR | $SED -e "s!^${SRC_ROOT}/build/!!"`
OUTPUT_ROOT="$CURDIR"
fi
@@ -565,7 +571,7 @@ if test "x$BUILD_OS" = "xwindows"; then
if test "x$VARSBAT" = x || test ! -d "$VCPATH"; then
AC_MSG_CHECKING([if we can find the VS installation])
AC_MSG_RESULT([no])
- AC_ERROR([Tried to find a VS installation using both $SEARCH_ROOT but failed. Please run "c:\\cygwin\\bin\\bash.exe -l" from a VS command prompt and then run configure/make from there.])
+ AC_MSG_ERROR([Tried to find a VS installation using both $SEARCH_ROOT but failed. Please run "c:\\cygwin\\bin\\bash.exe -l" from a VS command prompt and then run configure/make from there.])
fi
case "$LEGACY_HOST_CPU1" in
i?86)
@@ -577,12 +583,12 @@ if test "x$BUILD_OS" = "xwindows"; then
esac
# Lets extract the variables that are set by vcvarsall.bat/vsvars32.bat/vsvars64.bat
cd $OUTPUT_ROOT
- $SRC_ROOT/common/bin/extractvcvars.sh "$VARSBAT" "$VARSBAT_ARCH"
+ bash $SRC_ROOT/common/bin/extractvcvars.sh "$VARSBAT" "$VARSBAT_ARCH"
cd $CURDIR
if test ! -s $OUTPUT_ROOT/localdevenv.sh || test ! -s $OUTPUT_ROOT/localdevenv.gmk; then
AC_MSG_CHECKING([if we can extract the needed env variables])
AC_MSG_RESULT([no])
- AC_ERROR([Could not succesfully extract the env variables needed for the VS setup. Please run "c:\\cygwin\\bin\\bash.exe -l" from a VS command prompt and then run configure/make from there.])
+ AC_MSG_ERROR([Could not succesfully extract the env variables needed for the VS setup. Please run "c:\\cygwin\\bin\\bash.exe -l" from a VS command prompt and then run configure/make from there.])
fi
# Now set all paths and other env variables. This will allow the rest of
# the configure script to find and run the compiler in the proper way.
@@ -592,7 +598,7 @@ if test "x$BUILD_OS" = "xwindows"; then
AC_MSG_RESULT([$VCINSTALLDIR])
else
AC_MSG_RESULT([no])
- AC_ERROR([Could not find VS installation. Please install. If you are sure you have installed VS, then please run "c:\\cygwin\\bin\\bash.exe -l" from a VS command prompt and then run configure/make from there.])
+ AC_MSG_ERROR([Could not find VS installation. Please install. If you are sure you have installed VS, then please run "c:\\cygwin\\bin\\bash.exe -l" from a VS command prompt and then run configure/make from there.])
fi
CHECK_FOR_VCINSTALLDIR=no
SETUPDEVENV="include $OUTPUT_ROOT/localdevenv.gmk"
@@ -614,7 +620,7 @@ if test "x$BUILD_OS" = "xwindows"; then
fi
if test "x$MSVCR100DLL" = x; then
AC_MSG_RESULT([no])
- AC_ERROR([Could not find msvcr100.dll !])
+ AC_MSG_ERROR([Could not find msvcr100.dll !])
fi
AC_MSG_RESULT([$MSVCR100DLL])
SPACESAFE(MSVCR100DLL,[the path to msvcr100.dll])
@@ -636,6 +642,7 @@ AC_CONFIG_FILES([$OUTPUT_ROOT/spec.gmk:$AUTOCONF_DIR/spec.gmk.in])
AC_CONFIG_FILES([$OUTPUT_ROOT/Makefile:$AUTOCONF_DIR/Makefile.in])
AC_SUBST(SPEC, $OUTPUT_ROOT/spec.gmk)
+AC_SUBST(CONF_NAME, $CONF_NAME)
AC_SUBST(OUTPUT_ROOT, $OUTPUT_ROOT)
# Where are the sources. Any of these can be overridden
@@ -783,13 +790,15 @@ ORG_CFLAGS="$CFLAGS"
ORG_CXXFLAGS="$CXXFLAGS"
ORG_OBJCFLAGS="$OBJCFLAGS"
+prepare_help_system
+
# gcc is almost always present, but on Windows we
# prefer cl.exe and on Solaris we prefer CC.
# Thus test for them in this order.
AC_PROG_CC([cl cc gcc])
if test "x$CC" = x; then
help_on_build_dependency devkit
- AC_ERROR([Could not find a compiler. $HELP_MSG])
+ AC_MSG_ERROR([Could not find a compiler. $HELP_MSG])
fi
if test "x$CC" = xcc && test "x$BUILD_OS" = xmacosx; then
# Do not use cc on MacOSX use gcc instead.
@@ -807,7 +816,7 @@ WHICHCMD(CXX)
if test "x$CXX" = x || test "x$CC" = x; then
help_on_build_dependency devkit
- AC_ERROR([Could not find the needed compilers! $HELP_MSG ])
+ AC_MSG_ERROR([Could not find the needed compilers! $HELP_MSG ])
fi
if test "x$BUILD_OS" != xwindows; then
@@ -832,9 +841,10 @@ fi
AC_CHECK_TOOL(LD, ld)
WHICHCMD(LD)
-LDEXE="$LD"
-LDCXX="$LD"
-LDEXECXX="$LD"
+LD="$CC"
+LDEXE="$CC"
+LDCXX="$CXX"
+LDEXECXX="$CXX"
# LDEXE is the linker to use, when creating executables.
AC_SUBST(LDEXE)
# Linking C++ libraries.
@@ -856,7 +866,7 @@ COMPILER_TYPE=CC
AS_IF([test "x$BUILD_OS" = xwindows], [
# For now, assume that we are always compiling using cl.exe.
CC_OUT_OPTION=-Fo
- EXE_OUT_OPTION=-Fe
+ EXE_OUT_OPTION=-out:
LD_OUT_OPTION=-out:
AR_OUT_OPTION=-out:
# On Windows, reject /usr/bin/link, which is a cygwin
@@ -866,10 +876,9 @@ AS_IF([test "x$BUILD_OS" = xwindows], [
# the full path to the link.exe program.
WHICHCMD_SPACESAFE([WINLD])
LD="$WINLD"
- # However creating executables can only be done with cl.exe.
- LDEXE="$CC"
+ LDEXE="$WINLD"
LDCXX="$WINLD"
- LDEXECXX="$CC"
+ LDEXECXX="$WINLD"
AC_CHECK_PROG([MT], [mt], [mt],,, [/usr/bin/mt])
WHICHCMD_SPACESAFE([MT])
@@ -877,7 +886,7 @@ AS_IF([test "x$BUILD_OS" = xwindows], [
AC_CHECK_PROG([RC], [rc], [rc],,, [/usr/bin/rc])
WHICHCMD_SPACESAFE([RC])
- RC_FLAGS="/l 0x409 /r"
+ RC_FLAGS="-nologo /l 0x409 /r"
AS_IF([test "x$VARIANT" = xOPT], [
RC_FLAGS="$RC_FLAGS -d NDEBUG"
])
@@ -903,14 +912,13 @@ AS_IF([test "x$BUILD_OS" = xwindows], [
WHICHCMD_SPACESAFE([DUMPBIN])
COMPILER_TYPE=CL
- CFLAGS="$CFLAGS -nologo"
- LDFLAGS="$LDFLAGS -nologo -dll -opt:ref -incremental:no "
+ CCXXFLAGS="$CCXXFLAGS -nologo"
+ LDFLAGS="$LDFLAGS -nologo -opt:ref -incremental:no"
if test "x$LEGACY_HOST_CPU1" = xi586; then
LDFLAGS="$LDFLAGS -safeseh"
fi
- if test "x$DEBUG_LEVEL" != xrelease; then
- LDFLAGS="$LDFLAGS -debug"
- fi
+ # TODO: make -debug optional "--disable-full-debug-symbols"
+ LDFLAGS="$LDFLAGS -debug"
])
AC_SUBST(RC_FLAGS)
AC_SUBST(COMPILER_TYPE)
@@ -933,7 +941,7 @@ fi
AC_SUBST(AS)
AC_SUBST(ASFLAGS)
-if test "x$HOST_CPU_BITS" = x32 && test "x$HOST_OS" = macosx; then
+if test "x$HOST_CPU_BITS" = x32 && test "x$HOST_OS" = xmacosx; then
# On 32-bit MacOSX the OS requires C-entry points to be 16 byte aligned.
# While waiting for a better solution, the current workaround is to use -mstackrealign.
CFLAGS="$CFLAGS -mstackrealign"
@@ -944,7 +952,7 @@ if test "x$HOST_CPU_BITS" = x32 && test "x$HOST_OS" = macosx; then
],
[
AC_MSG_RESULT([no])
- AC_ERROR([The selected compiler $CXX does not support -mstackrealign! Try to put another compiler in the path.])
+ AC_MSG_ERROR([The selected compiler $CXX does not support -mstackrealign! Try to put another compiler in the path.])
])
fi
@@ -979,7 +987,7 @@ if test "x$BUILD_OS" = xwindows; then
if test ! -x $OUTPUT_ROOT/uncygdrive.exe; then
AC_MSG_RESULT([no])
cat $OUTPUT_ROOT/uncygdrive1.log
- AC_ERROR([Could not create $OUTPUT_ROOT/uncygdrive.exe])
+ AC_MSG_ERROR([Could not create $OUTPUT_ROOT/uncygdrive.exe])
fi
AC_MSG_RESULT([$UNCYGDRIVE])
AC_MSG_CHECKING([if uncygdrive.exe works])
@@ -989,7 +997,7 @@ if test "x$BUILD_OS" = xwindows; then
if test ! -x $OUTPUT_ROOT/uncygdrive2.exe; then
AC_MSG_RESULT([no])
cat $OUTPUT_ROOT/uncygdrive2.log
- AC_ERROR([Uncygdrive did not work!])
+ AC_MSG_ERROR([Uncygdrive did not work!])
fi
AC_MSG_RESULT([yes])
rm -f $OUTPUT_ROOT/uncygdrive?.??? $OUTPUT_ROOT/uncygdrive.obj
@@ -1014,7 +1022,15 @@ AC_SUBST(BUILD_LOG_WRAPPER)
# (The JVM can use 32 or 64 bit Java pointers but that decision
# is made at runtime.)
#
+AC_LANG_PUSH(C++)
+OLD_CXXFLAGS="$CXXFLAGS"
+if test "x$HOST_OS" = xsolaris && test "x$with_data_model" != x; then
+ CXXFLAGS="-m{$with_data_model} $CXXFLAGS"
+fi
AC_CHECK_SIZEOF([int *], [1111])
+CXXFLAGS="$OLD_CXXFLAGS"
+AC_LANG_POP(C++)
+
if test "x$ac_cv_sizeof_int_p" = x0; then
# The test failed, lets pick the assumed value.
ARCH_DATA_MODEL=$HOST_CPU_BITS
@@ -1032,7 +1048,7 @@ AC_SUBST(LP64,$A_LP64)
AC_SUBST(ARCH_DATA_MODEL)
if test "x$ARCH_DATA_MODEL" != "x$HOST_CPU_BITS"; then
- AC_ERROR([The tested number of bits in the host ($ARCH_DATA_MODEL) differs from the number of bits expected to be found in the host ($HOST_CPU_BITS)])
+ AC_MSG_ERROR([The tested number of bits in the host ($ARCH_DATA_MODEL) differs from the number of bits expected to be found in the host ($HOST_CPU_BITS)])
fi
###############################################################################
@@ -1084,12 +1100,16 @@ if test "x$GCC" = xyes; then
OBJ_SUFFIX='.o'
EXE_SUFFIX=''
SET_SHARED_LIBRARY_NAME='-Xlinker -soname=$1'
- SET_SHARED_LIBRARY_MAPFILE='-Xlinker -version-script=$(JDK_TOPDIR)/$1'
+ SET_SHARED_LIBRARY_MAPFILE='-Xlinker -version-script=$1'
+ C_FLAG_REORDER=''
+ CXX_FLAG_REORDER=''
SET_SHARED_LIBRARY_ORIGIN='-Xlinker -z -Xlinker origin -Xlinker -rpath -Xlinker \$$$$ORIGIN/$1'
LD="$CC"
LDEXE="$CC"
LDCXX="$CXX"
LDEXECXX="$CXX"
+ # TODO: for embedded set --strip-unneeded
+ POST_STRIP_CMD="$STRIP -g"
# Linking is different on MacOSX
if test "x$BUILD_OS" = xmacosx; then
@@ -1102,6 +1122,7 @@ if test "x$GCC" = xyes; then
SET_SHARED_LIBRARY_NAME='-Xlinker -install_name -Xlinker @rpath/$1'
SET_SHARED_LIBRARY_MAPFILE=''
SET_SHARED_LIBRARY_ORIGIN='-Xlinker -rpath -Xlinker @loader_path/.'
+ POST_STRIP_CMD="$STRIP -S"
fi
else
if test "x$BUILD_OS" = xsolaris; then
@@ -1117,9 +1138,13 @@ else
OBJ_SUFFIX='.o'
EXE_SUFFIX=''
SET_SHARED_LIBRARY_NAME=''
- SET_SHARED_LIBRARY_MAPFILE='-M $(JDK_TOPDIR)/$1'
+ SET_SHARED_LIBRARY_MAPFILE='-M $1'
+ C_FLAG_REORDER='-xF'
+ CXX_FLAG_REORDER='-xF'
SET_SHARED_LIBRARY_ORIGIN='-R \$$$$ORIGIN/$1'
CFLAGS_JDKLIB_EXTRA='-xstrconst -D__solaris__'
+ POST_STRIP_CMD="$STRIP -x"
+ POST_MCS_CMD="$MCS -d -a \"JDK $FULL_VERSION\""
fi
if test "x$BUILD_OS" = xwindows; then
# If it is not gcc, then assume it is the MS Visual Studio compiler
@@ -1149,7 +1174,11 @@ AC_SUBST(EXE_SUFFIX)
AC_SUBST(SHARED_LIBRARY_FLAGS)
AC_SUBST(SET_SHARED_LIBRARY_NAME)
AC_SUBST(SET_SHARED_LIBRARY_MAPFILE)
+AC_SUBST(C_FLAG_REORDER)
+AC_SUBST(CXX_FLAG_REORDER)
AC_SUBST(SET_SHARED_LIBRARY_ORIGIN)
+AC_SUBST(POST_STRIP_CMD)
+AC_SUBST(POST_MCS_CMD)
# The (cross) compiler is now configured, we can now test capabilities
# of the host platform.
@@ -1161,13 +1190,13 @@ AC_SUBST(SET_SHARED_LIBRARY_ORIGIN)
AC_C_BIGENDIAN([ENDIAN="big"],[ENDIAN="little"],[ENDIAN="unknown"],[ENDIAN="universal"])
if test "x$ENDIAN" = xuniversal; then
- AC_ERROR([It seems like someone needs to decide how we are to deal with universal binaries on the MacOSX?])
+ AC_MSG_ERROR([It seems like someone needs to decide how we are to deal with universal binaries on the MacOSX?])
fi
if test "x$ENDIAN" = xunknown; then
ENDIAN="$HOST_CPU_ENDIAN"
fi
if test "x$ENDIAN" != "x$HOST_CPU_ENDIAN"; then
- AC_WARN([The tested endian in the host ($ENDIAN) differs from the endian expected to be found in the host ($HOST_CPU_ENDIAN)])
+ AC_MSG_WARN([The tested endian in the host ($ENDIAN) differs from the endian expected to be found in the host ($HOST_CPU_ENDIAN)])
ENDIAN="$HOST_CPU_ENDIAN"
fi
AC_SUBST(ENDIAN)
@@ -1185,25 +1214,25 @@ if test "x$with_boot_jdk" != x; then
BOOT_JDK_FOUND=yes
fi
if test "x$BOOT_JDK_FOUND" = xno; then
- BDEPS_CHECK_MODULE(BOOT_JDK, bootjdk, xxx, [BOOT_JDK_FOUND=yes], [BOOT_JDK_FOUND=no])
+ BDEPS_CHECK_MODULE(BOOT_JDK, boot-jdk, xxx, [BOOT_JDK_FOUND=yes], [BOOT_JDK_FOUND=no])
fi
if test "x$BOOT_JDK_FOUND" = xno; then
if test "x$JAVA_HOME" != x; then
if test ! -d "$JAVA_HOME"; then
- AC_ERROR([Your JAVA_HOME points to a non-existing directory!])
+ AC_MSG_ERROR([Your JAVA_HOME points to a non-existing directory!])
fi
# Aha, the user has set a JAVA_HOME
# let us use that as the Boot JDK.
- BOOT_JDK=$JAVA_HOME
+ BOOT_JDK="$JAVA_HOME"
BOOT_JDK_FOUND=yes
# To be on the safe side, lets check that it is a JDK.
- if test -x $BOOT_JDK/bin/javac && test -x $BOOT_JDK/bin/java; then
- JAVAC=$BOOT_JDK/bin/javac
- JAVA=$BOOT_JDK/bin/java
+ if test -x "$BOOT_JDK/bin/javac" && test -x "$BOOT_JDK/bin/java"; then
+ JAVAC="$BOOT_JDK/bin/javac"
+ JAVA="$BOOT_JDK/bin/java"
BOOT_JDK_FOUND=yes
else
- AC_ERROR([Your JAVA_HOME points to a JRE! The build needs a JDK! Please point JAVA_HOME to a JDK.])
+ AC_MSG_ERROR([Your JAVA_HOME points to a JRE! The build needs a JDK! Please point JAVA_HOME to a JDK. JAVA_HOME=[$]JAVA_HOME])
fi
fi
fi
@@ -1260,11 +1289,11 @@ if test "x$BOOT_JDK_FOUND" = xno; then
fi
if test "x$BOOT_JDK_FOUND" = xno; then
help_on_build_dependency openjdk
- AC_ERROR([Found a JRE, not not a JDK! Please remove the JRE from your path and put a JDK there instead. $HELP_MSG])
+ AC_MSG_ERROR([Found a JRE, not not a JDK! Please remove the JRE from your path and put a JDK there instead. $HELP_MSG])
fi
else
help_on_build_dependency openjdk
- AC_ERROR([Could not find a JDK. $HELP_MSG])
+ AC_MSG_ERROR([Could not find a JDK. $HELP_MSG])
fi
fi
@@ -1281,7 +1310,7 @@ if test ! -f $BOOT_RTJAR; then
# On MacOSX it is called classes.jar
BOOT_RTJAR=$BOOT_JDK/../Classes/classes.jar
if test ! -f $BOOT_RTJAR; then
- AC_ERROR([Cannot find the rt.jar or its equivalent!])
+ AC_MSG_ERROR([Cannot find the rt.jar or its equivalent!])
fi
# Remove the ..
BOOT_RTJAR="`cd ${BOOT_RTJAR%/*} && pwd`/${BOOT_RTJAR##*/}"
@@ -1303,7 +1332,7 @@ AC_MSG_RESULT([$BOOT_TOOLSJAR])
AC_MSG_CHECKING([for java in Boot JDK])
JAVA=$BOOT_JDK/bin/java
if test ! -x $JAVA; then
- AC_ERROR([Could not find a working java])
+ AC_MSG_ERROR([Could not find a working java])
fi
BOOT_JDK_VERSION=`$JAVA -version 2>&1 | head -n 1`
AC_MSG_RESULT([yes $BOOT_JDK_VERSION])
@@ -1313,7 +1342,7 @@ AC_SUBST(JAVA)
[FOUND_VERSION_78=`echo $BOOT_JDK_VERSION | grep '\"1\.[78]\.'`]
if test "x$FOUND_VERSION_78" = x; then
help_on_build_dependency openjdk
- AC_ERROR([Your bootjdk must be version 7 or 8. $HELP_MSG])
+ AC_MSG_ERROR([Your boot-jdk must be version 7 or 8. $HELP_MSG])
fi
# When compiling code to be executed by the Boot JDK, force jdk7 compatibility.
@@ -1324,17 +1353,17 @@ AC_SUBST(BOOT_JDK_SOURCETARGET)
AC_MSG_CHECKING([for javac in Boot JDK])
JAVAC=$BOOT_JDK/bin/javac
if test ! -x $JAVAC; then
- AC_ERROR([Could not find a working javac])
+ AC_MSG_ERROR([Could not find a working javac])
fi
AC_MSG_RESULT(yes)
AC_SUBST(JAVAC)
AC_SUBST(JAVAC_FLAGS)
-# Use the javac tool from the Boot JDK.
+# Use the javah tool from the Boot JDK.
AC_MSG_CHECKING([for javah in Boot JDK])
JAVAH=$BOOT_JDK/bin/javah
if test ! -x $JAVAH; then
- AC_ERROR([Could not find a working javah])
+ AC_MSG_ERROR([Could not find a working javah])
fi
AC_MSG_RESULT(yes)
AC_SUBST(JAVAH)
@@ -1343,7 +1372,7 @@ AC_SUBST(JAVAH)
AC_MSG_CHECKING([for jar in Boot JDK])
JAR=$BOOT_JDK/bin/jar
if test ! -x $JAR; then
- AC_ERROR([Could not find a working jar])
+ AC_MSG_ERROR([Could not find a working jar])
fi
AC_SUBST(JAR)
AC_MSG_RESULT(yes)
@@ -1352,11 +1381,20 @@ AC_MSG_RESULT(yes)
AC_MSG_CHECKING([for rmic in Boot JDK])
RMIC=$BOOT_JDK/bin/rmic
if test ! -x $RMIC; then
- AC_ERROR([Could not find a working rmic])
+ AC_MSG_ERROR([Could not find a working rmic])
fi
AC_SUBST(RMIC)
AC_MSG_RESULT(yes)
+# Use the native2ascii tool from the Boot JDK.
+AC_MSG_CHECKING([for native2ascii in Boot JDK])
+NATIVE2ASCII=$BOOT_JDK/bin/native2ascii
+if test ! -x $NATIVE2ASCII; then
+ AC_MSG_ERROR([Could not find a working native2ascii])
+fi
+AC_MSG_RESULT(yes)
+AC_SUBST(NATIVE2ASCII)
+
###############################################################################
#
# Pickup additional source for a component from outside of the source root
@@ -1382,7 +1420,7 @@ fi
if test "x$with_add_source_root" != x; then
if ! test -d $with_add_source_root; then
- AC_ERROR([Trying to use a non-existant add-source-root $with_add_source_root])
+ AC_MSG_ERROR([Trying to use a non-existant add-source-root $with_add_source_root])
fi
CURDIR="$PWD"
cd "$with_add_source_root"
@@ -1392,34 +1430,34 @@ if test "x$with_add_source_root" != x; then
# If it does, then it is usually an error, prevent this.
if test -f $with_add_source_root/langtools/makefiles/Makefile || \
test -f $with_add_source_root/langtools/make/Makefile; then
- AC_ERROR([Your add source root seems to contain a full langtools repo! An add source root should only contain additional sources.])
+ AC_MSG_ERROR([Your add source root seems to contain a full langtools repo! An add source root should only contain additional sources.])
fi
if test -f $with_add_source_root/corba/makefiles/Makefile || \
test -f $with_add_source_root/corba/make/Makefile; then
- AC_ERROR([Your add source root seems to contain a full corba repo! An add source root should only contain additional sources.])
+ AC_MSG_ERROR([Your add source root seems to contain a full corba repo! An add source root should only contain additional sources.])
fi
if test -f $with_add_source_root/jaxp/makefiles/Makefile || \
test -f $with_add_source_root/jaxp/make/Makefile; then
- AC_ERROR([Your add source root seems to contain a full jaxp repo! An add source root should only contain additional sources.])
+ AC_MSG_ERROR([Your add source root seems to contain a full jaxp repo! An add source root should only contain additional sources.])
fi
if test -f $with_add_source_root/jaxws/makefiles/Makefile || \
test -f $with_add_source_root/jaxws/make/Makefile; then
- AC_ERROR([Your add source root seems to contain a full jaxws repo! An add source root should only contain additional sources.])
+ AC_MSG_ERROR([Your add source root seems to contain a full jaxws repo! An add source root should only contain additional sources.])
fi
if test -f $with_add_source_root/hotspot/makefiles/Makefile || \
test -f $with_add_source_root/hotspot/make/Makefile; then
- AC_ERROR([Your add source root seems to contain a full hotspot repo! An add source root should only contain additional sources.])
+ AC_MSG_ERROR([Your add source root seems to contain a full hotspot repo! An add source root should only contain additional sources.])
fi
if test -f $with_add_source_root/jdk/makefiles/Makefile || \
test -f $with_add_source_root/jdk/make/Makefile; then
- AC_ERROR([Your add source root seems to contain a full JDK repo! An add source root should only contain additional sources.])
+ AC_MSG_ERROR([Your add source root seems to contain a full JDK repo! An add source root should only contain additional sources.])
fi
fi
AC_SUBST(ADD_SRC_ROOT)
if test "x$with_override_source_root" != x; then
if ! test -d $with_override_source_root; then
- AC_ERROR([Trying to use a non-existant override-source-root $with_override_source_root])
+ AC_MSG_ERROR([Trying to use a non-existant override-source-root $with_override_source_root])
fi
CURDIR="$PWD"
cd "$with_override_source_root"
@@ -1427,27 +1465,27 @@ if test "x$with_override_source_root" != x; then
cd "$CURDIR"
if test -f $with_override_source_root/langtools/makefiles/Makefile || \
test -f $with_override_source_root/langtools/make/Makefile; then
- AC_ERROR([Your override source root seems to contain a full langtools repo! An override source root should only contain sources that override.])
+ AC_MSG_ERROR([Your override source root seems to contain a full langtools repo! An override source root should only contain sources that override.])
fi
if test -f $with_override_source_root/corba/makefiles/Makefile || \
test -f $with_override_source_root/corba/make/Makefile; then
- AC_ERROR([Your override source root seems to contain a full corba repo! An override source root should only contain sources that override.])
+ AC_MSG_ERROR([Your override source root seems to contain a full corba repo! An override source root should only contain sources that override.])
fi
if test -f $with_override_source_root/jaxp/makefiles/Makefile || \
test -f $with_override_source_root/jaxp/make/Makefile; then
- AC_ERROR([Your override source root seems to contain a full jaxp repo! An override source root should only contain sources that override.])
+ AC_MSG_ERROR([Your override source root seems to contain a full jaxp repo! An override source root should only contain sources that override.])
fi
if test -f $with_override_source_root/jaxws/makefiles/Makefile || \
test -f $with_override_source_root/jaxws/make/Makefile; then
- AC_ERROR([Your override source root seems to contain a full jaxws repo! An override source root should only contain sources that override.])
+ AC_MSG_ERROR([Your override source root seems to contain a full jaxws repo! An override source root should only contain sources that override.])
fi
if test -f $with_override_source_root/hotspot/makefiles/Makefile || \
test -f $with_override_source_root/hotspot/make/Makefile; then
- AC_ERROR([Your override source root seems to contain a full hotspot repo! An override source root should only contain sources that override.])
+ AC_MSG_ERROR([Your override source root seems to contain a full hotspot repo! An override source root should only contain sources that override.])
fi
if test -f $with_override_source_root/jdk/makefiles/Makefile || \
test -f $with_override_source_root/jdk/make/Makefile; then
- AC_ERROR([Your override source root seems to contain a full JDK repo! An override source root should only contain sources that override.])
+ AC_MSG_ERROR([Your override source root seems to contain a full JDK repo! An override source root should only contain sources that override.])
fi
fi
AC_SUBST(OVERRIDE_SRC_ROOT)
@@ -1495,7 +1533,7 @@ if test "x$with_override_langtools" != x; then
LANGTOOLS_TOPDIR="`pwd`"
cd "$CURDIR"
if ! test -f $LANGTOOLS_TOPDIR/makefiles/Makefile; then
- AC_ERROR([You have to override langtools with a full langtools repo!])
+ AC_MSG_ERROR([You have to override langtools with a full langtools repo!])
fi
AC_MSG_CHECKING([if langtools should be overridden])
AC_MSG_RESULT([yes with $LANGTOOLS_TOPDIR])
@@ -1506,7 +1544,7 @@ if test "x$with_override_corba" != x; then
CORBA_TOPDIR="`pwd`"
cd "$CURDIR"
if ! test -f $CORBA_TOPDIR/makefiles/Makefile; then
- AC_ERROR([You have to override corba with a full corba repo!])
+ AC_MSG_ERROR([You have to override corba with a full corba repo!])
fi
AC_MSG_CHECKING([if corba should be overridden])
AC_MSG_RESULT([yes with $CORBA_TOPDIR])
@@ -1517,7 +1555,7 @@ if test "x$with_override_jaxp" != x; then
JAXP_TOPDIR="`pwd`"
cd "$CURDIR"
if ! test -f $JAXP_TOPDIR/makefiles/Makefile; then
- AC_ERROR([You have to override jaxp with a full jaxp repo!])
+ AC_MSG_ERROR([You have to override jaxp with a full jaxp repo!])
fi
AC_MSG_CHECKING([if jaxp should be overridden])
AC_MSG_RESULT([yes with $JAXP_TOPDIR])
@@ -1528,7 +1566,7 @@ if test "x$with_override_jaxws" != x; then
JAXWS_TOPDIR="`pwd`"
cd "$CURDIR"
if ! test -f $JAXWS_TOPDIR/makefiles/Makefile; then
- AC_ERROR([You have to override jaxws with a full jaxws repo!])
+ AC_MSG_ERROR([You have to override jaxws with a full jaxws repo!])
fi
AC_MSG_CHECKING([if jaxws should be overridden])
AC_MSG_RESULT([yes with $JAXWS_TOPDIR])
@@ -1540,7 +1578,7 @@ if test "x$with_override_hotspot" != x; then
cd "$CURDIR"
if ! test -f $HOTSPOT_TOPDIR/make/Makefile && \
! test -f $HOTSPOT_TOPDIR/makefiles/Makefile; then
- AC_ERROR([You have to override hotspot with a full hotspot repo!])
+ AC_MSG_ERROR([You have to override hotspot with a full hotspot repo!])
fi
AC_MSG_CHECKING([if hotspot should be overridden])
AC_MSG_RESULT([yes with $HOTSPOT_TOPDIR])
@@ -1551,7 +1589,7 @@ if test "x$with_override_jdk" != x; then
JDK_TOPDIR="`pwd`"
cd "$CURDIR"
if ! test -f $JDK_TOPDIR/makefiles/Makefile; then
- AC_ERROR([You have to override JDK with a full JDK repo!])
+ AC_MSG_ERROR([You have to override JDK with a full JDK repo!])
fi
AC_MSG_CHECKING([if JDK should be overridden])
AC_MSG_RESULT([yes with $JDK_TOPDIR])
@@ -1605,7 +1643,7 @@ if test "x$with_server_java" != x; then
SERVER_JAVA="$with_server_java"
FOUND_VERSION=`$SERVER_JAVA -version 2>&1 | grep " version \""`
if test "x$FOUND_VERSION" = x; then
- AC_ERROR([Could not execute server java: $SERVER_JAVA])
+ AC_MSG_ERROR([Could not execute server java: $SERVER_JAVA])
fi
else
SERVER_JAVA=""
@@ -1806,12 +1844,9 @@ AC_PATH_XTRA
if test "x$no_x" = xyes && test "x$X11_NOT_NEEDED" != xyes; then
help_on_build_dependency x11
- AC_ERROR([Could not find X11 libraries. $HELP_MSG])
+ AC_MSG_ERROR([Could not find X11 libraries. $HELP_MSG])
fi
-AC_SUBST(X_CFLAGS)
-AC_SUBST(X_LIBS)
-
# Some of the old makefiles require a setting of OPENWIN_HOME
# Since the X11R6 directory has disappeared on later Linuxes,
# we need to probe for it.
@@ -1828,6 +1863,18 @@ if test "x$HOST_OS" = xsolaris; then
fi
AC_SUBST(OPENWIN_HOME)
+
+#
+# Weird Sol10 something check...TODO change to try compile
+#
+if test "x${HOST_OS}" = xsolaris; then
+ if test "`uname -r`" = "5.10"; then
+ if test "`${EGREP} -c XLinearGradient ${OPENWIN_HOME}/share/include/X11/extensions/Xrender.h`" = "0"; then
+ X_CFLAGS="${X_CFLAGS} -DSOLARIS10_NO_XRENDER_STRUCTS"
+ fi
+ fi
+fi
+
AC_LANG_PUSH(C)
OLD_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS $X_CFLAGS"
@@ -1839,9 +1886,12 @@ AC_LANG_POP(C)
if test "x$X11_A_OK" = xno && test "x$X11_NOT_NEEDED" != xyes; then
help_on_build_dependency x11
- AC_ERROR([Could not find all X11 headers (shape.h Xrender.h XTest.h). $HELP_MSG])
+ AC_MSG_ERROR([Could not find all X11 headers (shape.h Xrender.h XTest.h). $HELP_MSG])
fi
+AC_SUBST(X_CFLAGS)
+AC_SUBST(X_LIBS)
+
###############################################################################
#
# The common unix printing system cups is used to print from java.
@@ -1855,7 +1905,7 @@ AC_ARG_WITH(cups-lib, [AS_HELP_STRING([--with-cups-lib],
[specify directory for the cups library])])
if test "x$CUPS_NOT_NEEDED" = xyes; then
- if test "x$with_cups" != x || test "x$with_cups-include" != x || test "x$with_cups-lib" != x; then
+ if test "x${with_cups}" != x || test "x${with_cups_include}" != x || test "x${with_cups_lib}" != x; then
AC_MSG_WARN([cups not used, so --with-cups is ignored])
fi
CUPS_CFLAGS=
@@ -1863,21 +1913,21 @@ if test "x$CUPS_NOT_NEEDED" = xyes; then
else
CUPS_FOUND=no
- if test "x$with_cups" = xno || test "x$with_cups-include" = xno || test "x$with_cups-lib" = xno; then
- AC_ERROR([It is not possible to disable the use of cups. Remove the --without-cups option.])
+ if test "x${with_cups}" = xno || test "x${with_cups_include}" = xno || test "x${with_cups_lib}" = xno; then
+ AC_MSG_ERROR([It is not possible to disable the use of cups. Remove the --without-cups option.])
fi
- if test "x$with_cups" != x; then
- CUPS_LIBS="-L$with_cups/lib -lcups"
- CUPS_CFLAGS="-I$with_cups/include"
+ if test "x${with_cups}" != x; then
+ CUPS_LIBS="-L${with_cups}/lib -lcups"
+ CUPS_CFLAGS="-I${with_cups}/include"
CUPS_FOUND=yes
fi
- if test "x$with_cups-include" != x; then
- CUPS_CFLAGS="-I$with_cups-include"
+ if test "x${with_cups_include}" != x; then
+ CUPS_CFLAGS="-I${with_cups_include}"
CUPS_FOUND=yes
fi
- if test "x$with_cups-lib" != x; then
- CUPS_LIBS="-L$with_cups-lib -lcups"
+ if test "x${with_cups_lib}" != x; then
+ CUPS_LIBS="-L${with_cups_lib} -lcups"
CUPS_FOUND=yes
fi
if test "x$CUPS_FOUND" = xno; then
@@ -1910,7 +1960,7 @@ else
fi
if test "x$CUPS_FOUND" = xno; then
help_on_build_dependency cups
- AC_ERROR([Could not find cups! $HELP_MSG ])
+ AC_MSG_ERROR([Could not find cups! $HELP_MSG ])
fi
fi
@@ -1953,16 +2003,16 @@ else
if test "x$FREETYPE2_FOUND" = xyes; then
# Verify that the directories exist
if ! test -d "$with_freetype/lib" || ! test -d "$with_freetype/include"; then
- AC_ERROR([Could not find the expected directories $with_freetype/lib and $with_freetype/include])
+ AC_MSG_ERROR([Could not find the expected directories $with_freetype/lib and $with_freetype/include])
fi
# List the contents of the lib.
FREETYPELIB=`ls $with_freetype/lib/libfreetype.so $with_freetype/lib/freetype.dll 2> /dev/null`
if test "x$FREETYPELIB" = x; then
- AC_ERROR([Could not find libfreetype.se nor freetype.dll in $with_freetype/lib])
+ AC_MSG_ERROR([Could not find libfreetype.se nor freetype.dll in $with_freetype/lib])
fi
# Check one h-file
if ! test -s "$with_freetype/include/ft2build.h"; then
- AC_ERROR([Could not find $with_freetype/include/ft2build.h])
+ AC_MSG_ERROR([Could not find $with_freetype/include/ft2build.h])
fi
fi
fi
@@ -2010,7 +2060,7 @@ else
fi
if test "x$FREETYPE2_FOUND" = xno; then
help_on_build_dependency freetype2
- AC_ERROR([Could not find freetype2! $HELP_MSG ])
+ AC_MSG_ERROR([Could not find freetype2! $HELP_MSG ])
fi
fi
@@ -2032,7 +2082,7 @@ AC_ARG_WITH(alsa-lib, [AS_HELP_STRING([--with-alsa-lib],
[specify directory for the alsa library])])
if test "x$ALSA_NOT_NEEDED" = xyes; then
- if test "x$with_alsa" != x || test "x$with_alsa-include" != x || test "x$with_alsa-lib" != x; then
+ if test "x${with_alsa}" != x || test "x${with_alsa_include}" != x || test "x${with_alsa_lib}" != x; then
AC_MSG_WARN([alsa not used, so --with-alsa is ignored])
fi
ALSA_CFLAGS=
@@ -2040,21 +2090,21 @@ if test "x$ALSA_NOT_NEEDED" = xyes; then
else
ALSA_FOUND=no
- if test "x$with_alsa" = xno || test "x$with_alsa-include" = xno || test "x$with_alsa-lib" = xno; then
- AC_ERROR([It is not possible to disable the use of alsa. Remove the --without-alsa option.])
+ if test "x${with_alsa}" = xno || test "x${with_alsa_include}" = xno || test "x${with_alsa_lib}" = xno; then
+ AC_MSG_ERROR([It is not possible to disable the use of alsa. Remove the --without-alsa option.])
fi
- if test "x$with_alsa" != x; then
- ALSA_LIBS="-L$with_alsa/lib -lalsa"
- ALSA_CFLAGS="-I$with_alsa/include"
+ if test "x${with_alsa}" != x; then
+ ALSA_LIBS="-L${with_alsa}/lib -lalsa"
+ ALSA_CFLAGS="-I${with_alsa}/include"
ALSA_FOUND=yes
fi
- if test "x$with_alsa-include" != x; then
- ALSA_CFLAGS="-I$with_alsa/include"
+ if test "x${with_alsa_include}" != x; then
+ ALSA_CFLAGS="-I${with_alsa_include}"
ALSA_FOUND=yes
fi
- if test "x$with_alsa-lib" != x; then
- ALSA_LIBS="-L$with_alsa/lib -lalsa"
+ if test "x${with_alsa_lib}" != x; then
+ ALSA_LIBS="-L${with_alsa_lib} -lalsa"
ALSA_FOUND=yes
fi
if test "x$ALSA_FOUND" = xno; then
@@ -2073,7 +2123,7 @@ else
fi
if test "x$ALSA_FOUND" = xno; then
help_on_build_dependency alsa
- AC_ERROR([Could not find alsa! $HELP_MSG ])
+ AC_MSG_ERROR([Could not find alsa! $HELP_MSG ])
fi
fi
@@ -2093,17 +2143,17 @@ AC_ARG_WITH(pulse-include, [AS_HELP_STRING([--with-pulse-include],
AC_ARG_WITH(pulse-lib, [AS_HELP_STRING([--with-pulse-lib],
[specify directory for the pulseaudio library])])
-if test "x$with_pulse" != x; then
- PULSE_LIBS="-L$with_pulse/lib -lfreetype"
- PULSE_CFLAGS="-I$with_pulse/include"
+if test "x${with_pulse}" != x; then
+ PULSE_LIBS="-L${with_pulse}/lib -lfreetype"
+ PULSE_CFLAGS="-I${with_pulse}/include"
PULSE_FOUND=yes
fi
-if test "x$with_pulse-include" != x; then
- PULSE_CFLAGS="-I$with_pulse/include"
+if test "x${with_pulse_include}" != x; then
+ PULSE_CFLAGS="-I${with_pulse_include}"
PULSE_FOUND=yes
fi
-if test "x$with_pulse-lib" != x; then
- PULSE_LIBS="-L$with_pulse/lib -lfreetype"
+if test "x${with_pulse_lib}" != x; then
+ PULSE_LIBS="-L${with_pulse_lib} -lpulse"
PULSE_FOUND=yes
fi
if test "x$PULSE_FOUND" = xno; then
@@ -2123,7 +2173,7 @@ fi
if test "x$PULSE_FOUND" = xno && test "x$PULSE_NOT_NEEDED" != xyes; then
help_on_build_dependency pulse
- AC_ERROR([Could not find pulse audio libraries. $HELP_MSG ])
+ AC_MSG_ERROR([Could not find pulse audio libraries. $HELP_MSG ])
fi
AC_SUBST(PULSE_CFLAGS)
@@ -2170,9 +2220,9 @@ AC_SUBST(USE_EXTERNAL_LIBZ)
# Check if altzone exists in time.h
#
-AC_TRY_LINK([#include <time.h>], [return (int)altzone;],
- has_altzone=yes,
- has_altzone=no)
+AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <time.h>], [return (int)altzone;])],
+ [has_altzone=yes],
+ [has_altzone=no])
if test "x$has_altzone" = xyes; then
AC_DEFINE([HAVE_ALTZONE], 1, [Define if you have the external 'altzone' variable in time.h])
fi
@@ -2182,7 +2232,7 @@ fi
# Check the maths library
#
-AC_CHECK_LIB(m, main, [],
+AC_CHECK_LIB(m, cos, [],
[
AC_MSG_NOTICE([Maths library was not found])
])
@@ -2190,6 +2240,17 @@ AC_SUBST(LIBM)
###############################################################################
#
+# Check for libdl.so
+
+save_LIBS="$LIBS"
+LIBS=""
+AC_CHECK_LIB(dl,dlopen)
+LIBDL="$LIBS"
+AC_SUBST(LIBDL)
+LIBS="$save_LIBS"
+
+###############################################################################
+#
# Should we run the painfully slow javadoc tool?
#
AC_MSG_CHECKING([whether to build documentation])
@@ -2225,6 +2286,9 @@ AC_SUBST(DISABLE_NIMBUS)
# Setup the opt flags for different compilers
# and different operating systems.
#
+C_FLAG_DEPS="-MMD -MF"
+CXX_FLAG_DEPS="-MMD -MF"
+
case $COMPILER_TYPE in
CC )
D_FLAG="-g"
@@ -2234,9 +2298,9 @@ case $COMPILER_TYPE in
macosx )
# On MacOSX we optimize for size, something
# we should do for all platforms?
- C_O_FLAG_HI="-O3"
+ C_O_FLAG_HI="-Os"
C_O_FLAG_NORM="-Os"
- C_O_FLAG_NONE="-O0"
+ C_O_FLAG_NONE=""
;;
*)
C_O_FLAG_HI="-O3"
@@ -2249,19 +2313,61 @@ case $COMPILER_TYPE in
CXX_O_FLAG_NONE="$C_O_FLAG_NONE"
;;
ossc )
+ #
+ # Forte has different names for this with their C++ compiler...
+ #
+ CXX_FLAG_DEPS="-xMMD -xMF"
+
+# Extra options used with HIGHEST
+#
+# WARNING: Use of OPTIMIZATION_LEVEL=HIGHEST in your Makefile needs to be
+# done with care, there are some assumptions below that need to
+# be understood about the use of pointers, and IEEE behavior.
+#
+# Use non-standard floating point mode (not IEEE 754)
+CC_HIGHEST="$CC_HIGHEST -fns"
+# Do some simplification of floating point arithmetic (not IEEE 754)
+CC_HIGHEST="$CC_HIGHEST -fsimple"
+# Use single precision floating point with 'float'
+CC_HIGHEST="$CC_HIGHEST -fsingle"
+# Assume memory references via basic pointer types do not alias
+# (Source with excessing pointer casting and data access with mixed
+# pointer types are not recommended)
+CC_HIGHEST="$CC_HIGHEST -xalias_level=basic"
+# Use intrinsic or inline versions for math/std functions
+# (If you expect perfect errno behavior, do not use this)
+CC_HIGHEST="$CC_HIGHEST -xbuiltin=%all"
+# Loop data dependency optimizations (need -xO3 or higher)
+CC_HIGHEST="$CC_HIGHEST -xdepend"
+# Pointer parameters to functions do not overlap
+# (Similar to -xalias_level=basic usage, but less obvious sometimes.
+# If you pass in multiple pointers to the same data, do not use this)
+CC_HIGHEST="$CC_HIGHEST -xrestrict"
+# Inline some library routines
+# (If you expect perfect errno behavior, do not use this)
+CC_HIGHEST="$CC_HIGHEST -xlibmil"
+# Use optimized math routines
+# (If you expect perfect errno behavior, do not use this)
+# Can cause undefined external on Solaris 8 X86 on __sincos, removing for now
+#CC_HIGHEST="$CC_HIGHEST -xlibmopt"
+
case $LEGACY_HOST_CPU1 in
i586)
+ C_O_FLAG_HIGHEST="-xO4 -Wu,-O4~yz $CC_HIGHEST -xchip=pentium"
C_O_FLAG_HI="-xO4 -Wu,-O4~yz"
C_O_FLAG_NORM="-xO2 -Wu,-O2~yz"
C_O_FLAG_NONE=""
+ CXX_O_FLAG_HIGHEST="-xO4 -Qoption ube -O4~yz $CC_HIGHEST -xchip=pentium"
CXX_O_FLAG_HI="-xO4 -Qoption ube -O4~yz"
CXX_O_FLAG_NORM="-xO2 -Qoption ube -O2~yz"
CXX_O_FLAG_NONE=""
;;
sparc)
+ C_O_FLAG_HIGHEST="-xO4 -Wc,-Qrm-s -Wc,-Qiselect-T0 $CC_HIGHEST -xprefetch=auto,explicit -xchip=ultra"
C_O_FLAG_HI="-xO4 -Wc,-Qrm-s -Wc,-Qiselect-T0"
C_O_FLAG_NORM="-xO2 -Wc,-Qrm-s -Wc,-Qiselect-T0"
C_O_FLAG_NONE=""
+ CXX_O_FLAG_HIGHEST="-xO4 -Qoption cg -Qrm-s -Qoption cg -Qiselect-T0 $CC_HIGHEST -xprefetch=auto,explicit -xchip=ultra"
CXX_O_FLAG_HI="-xO4 -Qoption cg -Qrm-s -Qoption cg -Qiselect-T0"
CXX_O_FLAG_NORM="-xO2 -Qoption cg -Qrm-s -Qoption cg -Qiselect-T0"
CXX_O_FLAG_NONE=""
@@ -2280,12 +2386,24 @@ case $COMPILER_TYPE in
;;
esac
+if test -z "$C_O_FLAG_HIGHEST"; then
+ C_O_FLAG_HIGHEST="$C_O_FLAG_HI"
+fi
+
+if test -z "$CXX_O_FLAG_HIGHEST"; then
+ CXX_O_FLAG_HIGHEST="$CXX_O_FLAG_HI"
+fi
+
+AC_SUBST(C_O_FLAG_HIGHEST)
AC_SUBST(C_O_FLAG_HI)
AC_SUBST(C_O_FLAG_NORM)
AC_SUBST(C_O_FLAG_NONE)
+AC_SUBST(CXX_O_FLAG_HIGHEST)
AC_SUBST(CXX_O_FLAG_HI)
AC_SUBST(CXX_O_FLAG_NORM)
AC_SUBST(CXX_O_FLAG_NONE)
+AC_SUBST(C_FLAG_DEPS)
+AC_SUBST(CXX_FLAG_DEPS)
###############################################################################
#
@@ -2403,16 +2521,17 @@ AC_SUBST(IMAGES_MAKE_ARGS)
#
case $COMPILER_NAME in
gcc )
- CCXXFLAGS_JDK="$CCXXFLAGS_JDK -W -Wall -Wno-unused -Wno-parentheses -pipe -fno-omit-frame-pointer \
+ CCXXFLAGS_JDK="$CCXXFLAGS $CCXXFLAGS_JDK -W -Wall -Wno-unused -Wno-parentheses \
+ -pipe -fno-omit-frame-pointer \
-D_GNU_SOURCE -D_REENTRANT -D_LARGEFILE64_SOURCE"
CFLAGS_JDK="$CFLAGS_JDK -fno-strict-aliasing"
;;
ossc )
- CFLAGS_JDK="$CFLAGS_JDK -xc99=%none -xCC -errshort=tags -Xa REQUIRED -v -mt -norunpath -xnolib"
- CXXFLAGS_JDK="$CXXFLAGS_JDK -errtags=yes +w -mt REQUIRED -features=no%except -DCC_NOEX"
+ CFLAGS_JDK="$CFLAGS_JDK -xc99=%none -xCC -errshort=tags -Xa -v -mt -norunpath -xnolib"
+ CXXFLAGS_JDK="$CXXFLAGS_JDK -errtags=yes +w -mt -features=no%except -DCC_NOEX"
;;
cl )
- CCXXFLAGS_JDK="$CCXXFLAGS_JDK -Zi -MD -Zc:wchar_t- -W3 -wd4800 \
+ CCXXFLAGS_JDK="$CCXXFLAGS $CCXXFLAGS_JDK -Zi -MD -Zc:wchar_t- -W3 -wd4800 \
-D_STATIC_CPPLIB -D_DISABLE_DEPRECATE_STATIC_CPPLIB -DWIN32_LEAN_AND_MEAN \
-D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE \
-DWIN32 -DIAL"
@@ -2491,14 +2610,14 @@ CXXFLAGS_JDKEXE="$CCXXFLAGS_JDK $CXXFLAGS_JDK"
#
# Thus we offer the compiler to find libjvm.so first in server then in client. It works. Ugh.
if test "x$COMPILER_TYPE" = xCL; then
- LDFLAGS_JDKLIB="$LDFLAGS -libpath:${JDK_OUTPUTDIR}/lib jvm.lib java.lib"
+ LDFLAGS_JDKLIB="$LDFLAGS -dll -libpath:${JDK_OUTPUTDIR}/lib -libpath:${JDK_OUTPUTDIR}/objs"
LDFLAGS_JDKLIB_SUFFIX=""
- if test "x$HOST_CPU_BITS" = "x64"; then
- LDFLAGS_JDKEXE="$CFLAGS ${JDK_OUTPUTDIR}/tmp/java/jli/obj64/jli.lib"
+ if test "$HOST_CPU_BITS" == "64"; then
+ LDFLAGS_STACK_SIZE=1048576
else
- LDFLAGS_JDKEXE="$CFLAGS ${JDK_OUTPUTDIR}/tmp/java/jli/obj/jli.lib"
+ LDFLAGS_STACK_SIZE=327680
fi
- LDFLAGS_JDKEXE_SUFFIX=""
+ LDFLAGS_JDKEXE="$LDFLAGS /STACK:$LDFLAGS_STACK_SIZE"
else
# If this is a --hash-style=gnu system, use --hash-style=both, why?
HAS_GNU_HASH=`$CC -dumpspecs 2>/dev/null | $GREP 'hash-style=gnu'`
@@ -2513,9 +2632,11 @@ else
fi
fi
- LDFLAGS_JDKLIB="$LDFLAGS $SHARED_LIBRARY_FLAGS -L${JDK_OUTPUTDIR}/lib/${LIBARCHDIR}server \
+ LDFLAGS_JDKLIB="$LDFLAGS $SHARED_LIBRARY_FLAGS \
+ -L${JDK_OUTPUTDIR}/objs \
+ -L${JDK_OUTPUTDIR}/lib/${LIBARCHDIR}server \
-L${JDK_OUTPUTDIR}/lib/${LIBARCHDIR}client \
- -L${JDK_OUTPUTDIR}/lib/${LIBARCHDIR}"
+ -L${JDK_OUTPUTDIR}/lib/${LIBARCHDIR}"
LDFLAGS_JDKLIB_SUFFIX="-ljvm -ljava"
if test "x$COMPILER_NAME" = xossc; then
LDFLAGS_JDKLIB_SUFFIX="$LDFLAGS_JDKLIB_SUFFIX -lc"
@@ -2523,8 +2644,10 @@ else
# Only the jli library is explicitly linked when the launchers are built.
# The libjvm is then dynamically loaded/linked by the launcher.
- LDFLAGS_JDKEXE="$LDFLAGS -L${JDK_OUTPUTDIR}/lib/${LIBARCHDIR}jli"
- LDFLAGS_JDKEXE_SUFFIX="-ljli"
+ if test "x$HOST_OS" != "xmacosx"; then
+ LDFLAGS_JDKEXE="$LDFLAGS -L${JDK_OUTPUTDIR}/lib/${LIBARCHDIR}jli"
+ LDFLAGS_JDKEXE_SUFFIX="-ljli"
+ fi
fi
@@ -2557,9 +2680,9 @@ if test "x$HOST_OS" = xlinux; then
AC_LANG_PUSH(C++)
OLD_CXXFLAGS="$CXXFLAGS"
CXXFLAGS="$CXXFLAGS -lstdc++"
- AC_TRY_LINK([], [return 0;],
- has_dynamic_libstdcxx=yes,
- has_dynamic_libstdcxx=no)
+ AC_LINK_IFELSE([AC_LANG_PROGRAM([], [return 0;])],
+ [has_dynamic_libstdcxx=yes],
+ [has_dynamic_libstdcxx=no])
CXXFLAGS="$OLD_CXXFLAGS"
AC_LANG_POP(C++)
AC_MSG_RESULT([$has_dynamic_libstdcxx])
@@ -2572,16 +2695,16 @@ if test "x$HOST_OS" = xlinux; then
OLD_CXX="$CXX"
LIBS="$STATIC_STDCXX_FLAGS"
CXX="$CC"
- AC_TRY_LINK([], [return 0;],
- has_static_libstdcxx=yes,
- has_static_libstdcxx=no)
+ AC_LINK_IFELSE([AC_LANG_PROGRAM([], [return 0;])],
+ [has_static_libstdcxx=yes],
+ [has_static_libstdcxx=no])
LIBS="$OLD_LIBS"
CXX="$OLD_CXX"
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_ERROR([I cannot link to stdc++! Neither dynamically nor statically.])
+ AC_MSG_ERROR([I cannot link to stdc++! Neither dynamically nor statically.])
fi
if test "x$enable_static_link_stdc__" = xyes && test "x$has_static_libstdcxx" = xno; then
@@ -2611,17 +2734,39 @@ fi
# Could someone enlighten this configure script with a comment about libCrun?
# The LEGACY_HOST_CPU3 is the setting for ISA_DIR.
#
-if test "x$HOST_OS" = xsolaris; then
- LIBCXX="$LIBCXX /usr/lib${LEGACY_HOST_CPU3}/libCrun.so.1"
+if test "x$HOST_OS" = xsolaris && test "x$LIBCXX" = x; then
+ LIBCXX="/usr/lib${LEGACY_HOST_CPU3}/libCrun.so.1"
+fi
+
+# TODO better (platform agnostic) test
+if test "x$HOST_OS" = xmacosx && test "x$LIBCXX" = x && test "x$GCC" = xyes; then
+ LIBCXX="-lstdc++"
fi
AC_SUBST(LIBCXX)
###############################################################################
+
+OS_VERSION="`uname -r | ${SED} 's!\.! !g' | ${SED} 's!-! !g'`"
+OS_VERSION_MAJOR="`${ECHO} ${OS_VERSION} | ${CUT} -f 1 -d ' '`"
+OS_VERSION_MINOR="`${ECHO} ${OS_VERSION} | ${CUT} -f 2 -d ' '`"
+OS_VERSION_MICRO="`${ECHO} ${OS_VERSION} | ${CUT} -f 3 -d ' '`"
+AC_SUBST(OS_VERSION_MAJOR)
+AC_SUBST(OS_VERSION_MINOR)
+AC_SUBST(OS_VERSION_MICRO)
+
+###############################################################################
#
# Misc
#
+# The name of the Service Agent jar.
+SALIB_NAME="${LIBRARY_PREFIX}saproc${SHARED_LIBRARY_SUFFIX}"
+if test "x$HOST_OS" = "xwindows"; then
+ SALIB_NAME="${LIBRARY_PREFIX}sawindbg${SHARED_LIBRARY_SUFFIX}"
+fi
+AC_SUBST(SALIB_NAME)
+
# Control wether Hotspot runs Queens test after build.
AC_ARG_ENABLE([hotspot-test-in-build], [AS_HELP_STRING([--enable-hotspot-test-in-build],
[enable running of Queens test after Hotspot build (not yet available) @<:@disabled@:>@])],,
@@ -2635,17 +2780,99 @@ AC_SUBST(TEST_IN_BUILD)
###############################################################################
#
-# A helpful message at the end of the configure run.
+# Choose cacerts source file
#
-if test "x$CCACHE_FOUND" = x && test "x$GCC" = xyes; then
- help_on_build_dependency ccache
-
- printf "\nTip of the day:\nYou should really install ccache version 3.1.4 or newer.\n"
- printf "It gives a tremendous speedup for C++ recompilations with precompiled headers!\n"
-fi
+AC_ARG_WITH(cacerts-file, [AS_HELP_STRING([--with-cacerts-file],
+ [specify alternative cacerts file])])
+if test "x$with_cacerts_file" != x; then
+ CACERTS_FILE=$with_cacerts_file
+else
+ if test "x$OPENJDK" = "xtrue"; then
+ CACERTS_FILE=${SRC_ROOT}/jdk/src/share/lib/security/cacerts
+ else
+ CACERTS_FILE=${SRC_ROOT}/jdk/src/closed/share/lib/security/cacerts.internal
+ fi
+fi
+AC_SUBST(CACERTS_FILE)
+
+# Check if build directory is on local disk.
+# return 0 if it is on local disk, non-0 if on remote disk or failure
+function is_directory_on_local_disk {
+ # df -l lists only local disks; if the given directory is not found then
+ # a non-zero exit code is given
+ $DF -l $1 > /dev/null 2>&1
+}
-if test "x$CCACHE_FOUND" != x && test "x$HAS_GOOD_CCACHE" = x; then
- printf "You have a ccache installed, but it is a version prior to 3.1.4. Try upgrading.\n"
+AC_MSG_CHECKING([if build directory is on local disk])
+if is_directory_on_local_disk $OUTPUT_ROOT; then
+ OUTPUT_DIR_IS_LOCAL="yes"
+else
+ OUTPUT_DIR_IS_LOCAL="no"
fi
+AC_MSG_RESULT($OUTPUT_DIR_IS_LOCAL)
+
+# We're messing a bit with internal autoconf variables to put the config.status in the
+# output directory instead of the current directory.
+CONFIG_STATUS=$OUTPUT_ROOT/config.status
+# Now create the actual output files, after this, the main work of configure is done
AC_OUTPUT
+
+# Finally output some useful information to the user
+
+if test "x$CCACHE_FOUND" != x; then
+ if test "x$HAS_GOOD_CCACHE" = x; then
+ CCACHE_STATUS="installed, but disabled (version older than 3.1.4)"
+ CCACHE_HELP_MSG="You have ccache installed, but it is a version prior to 3.1.4. Try upgrading."
+ else
+ CCACHE_STATUS="installed and in use"
+ fi
+else
+ if test "x$GCC" = xyes; then
+ CCACHE_STATUS="not installed (consider installing)"
+ CCACHE_HELP_MSG="You do not have ccache installed. Try installing it."
+ else
+ CCACHE_STATUS="not available for your system"
+ fi
+fi
+
+printf "\n"
+printf "====================================================\n"
+printf "A new configuration has been successfully created in\n"
+printf "$OUTPUT_ROOT\n"
+if test "x$CONFIGURE_COMMAND_LINE" != x; then
+ printf "using configure arguments '$CONFIGURE_COMMAND_LINE'.\n"
+else
+ printf "using default settings.\n"
+fi
+
+printf "\n"
+printf "Configuration summary:\n"
+printf "* Debug level: $DEBUG_LEVEL\n"
+printf "* JDK variant: $JDK_VARIANT\n"
+printf "* JVM variants: $with_jvm_variants\n"
+printf "* Host info: OS: $HOST_OS, CPU architecture: $HOST_CPU_ARCH, address length: $HOST_CPU_BITS\n"
+printf "* Boot JDK: $BOOT_JDK\n"
+
+printf "\n"
+printf "Build performance summary:\n"
+printf "* Cores to use: $NUM_CORES\n"
+printf "* Memory limit: $MEMORY_SIZE MB\n"
+printf "* ccache status: $CCACHE_STATUS\n"
+
+if test "x$OUTPUT_DIR_IS_LOCAL" != "xyes"; then
+ printf "\n"
+ printf "WARNING: Your build output directory is not on a local disk.\n"
+ printf "This will severely degrade build performance!\n"
+ printf "It is recommended that you create an output directory on a local disk,\n"
+ printf "and run the configure script again from that directory.\n"
+fi
+
+if test "x$CCACHE_HELP_MSG" != x; then
+ printf "\n"
+ printf "Build performance tip: ccache gives a tremendous speedup for C++ recompilations.\n"
+ printf "$CCACHE_HELP_MSG\n"
+
+ help_on_build_dependency ccache
+ printf "$HELP_MSG\n"
+fi
diff --git a/common/autoconf/help.m4 b/common/autoconf/help.m4
index 16aef9f..6f74b5e 100644
--- a/common/autoconf/help.m4
+++ b/common/autoconf/help.m4
@@ -23,18 +23,20 @@
# questions.
#
+function prepare_help_system {
+ AC_CHECK_PROGS(PKGHANDLER, apt-get yum port pkgutil pkgadd)
+}
+
function help_on_build_dependency {
# Print a helpful message on how to acquire the necessary build dependency.
# $1 is the help tag: freetyp2, cups, pulse, alsa etc
MISSING_DEPENDENCY=$1
PKGHANDLER_COMMAND=
- AC_CHECK_PROGS(PKGHANDLER, apt-get yum port pkgutil pkgadd)
-
case $PKGHANDLER in
apt-get)
apt_help $MISSING_DEPENDENCY ;;
- yum)
+ yum)
yum_help $MISSING_DEPENDENCY ;;
port)
port_help $MISSING_DEPENDENCY ;;
@@ -47,7 +49,7 @@ function help_on_build_dependency {
esac
if test "x$PKGHANDLER_COMMAND" != x; then
- HELP_MSG="Try running '$PKGHANDLER_COMMAND'."
+ HELP_MSG="You might be able to fix this by running '$PKGHANDLER_COMMAND'."
fi
}
diff --git a/common/autoconf/platform.m4 b/common/autoconf/platform.m4
index 364b371..adfae47 100644
--- a/common/autoconf/platform.m4
+++ b/common/autoconf/platform.m4
@@ -48,7 +48,7 @@ AC_DEFUN([CHECK_FIND_DELETE],
AC_DEFUN([CHECK_NONEMPTY],
[
# Test that variable $1 is not empty.
- if test "" = "[$]$1"; then AC_ERROR(Could not find translit($1,A-Z,a-z) !); fi
+ if test "" = "[$]$1"; then AC_MSG_ERROR(Could not find translit($1,A-Z,a-z) !); fi
])
AC_DEFUN([ADD_JVM_ARG_IF_OK],
@@ -97,7 +97,7 @@ AC_DEFUN([SPACESAFE],
$1=`$CYGPATH -s -m -a "[$]$1"`
$1=`$CYGPATH -u "[$]$1"`
else
- AC_ERROR([You cannot have spaces in $2! "[$]$1"])
+ AC_MSG_ERROR([You cannot have spaces in $2! "[$]$1"])
fi
fi
])
@@ -215,7 +215,7 @@ AC_DEFUN([SETUP_CCACHE_USAGE],
AC_MSG_CHECKING([if C-compiler supports ccache precompiled headers])
PUSHED_FLAGS="$CXXFLAGS"
CXXFLAGS="-fpch-preprocess $CXXFLAGS"
- AC_TRY_COMPILE([], [], [CC_KNOWS_CCACHE_TRICK=yes], [CC_KNOWS_CCACHE_TRICK=no])
+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [])], [CC_KNOWS_CCACHE_TRICK=yes], [CC_KNOWS_CCACHE_TRICK=no])
CXXFLAGS="$PUSHED_FLAGS"
if test "x$CC_KNOWS_CCACHE_TRICK" = xyes; then
AC_MSG_RESULT([yes])
@@ -257,7 +257,7 @@ AC_DEFUN([EXTRACT_HOST_AND_BUILD_AND_LEGACY_VARS],
# The same values are setup for BUILD_...
#
# And the legacy variables, for controlling the old makefiles.
- # LEGACY_HOST_CPU1=i586,amd64,sparc,sparcv9,arm,arm64...
+ # LEGACY_HOST_CPU1=i586,amd64/x86_64,sparc,sparcv9,arm,arm64...
# LEGACY_HOST_CPU2=i386,amd64,sparc,sparcv9,arm,arm64...
# LEGACY_HOST_CPU3=sparcv9,amd64 (but only on solaris)
# LEGACY_HOST_OS_API=solaris,windows
@@ -276,7 +276,14 @@ AC_DEFUN([EXTRACT_HOST_AND_BUILD_AND_LEGACY_VARS],
if test "x$HOST_OS" != xsolaris; then
LEGACY_HOST_CPU3=""
LEGACY_BUILD_CPU3=""
- fi
+ fi
+
+ # On MacOSX and MacOSX only, we have a different name for the x64 CPU in ARCH (LEGACY_HOST_CPU1) ...
+ if test "x$HOST_OS" = xmacosx && test "x$HOST_CPU" = xx64; then
+ LEGACY_HOST_CPU1="x86_64"
+ fi
+
+ SET_RELEASE_FILE_OS_VALUES()
])
AC_DEFUN([EXTRACT_VARS_FROM_OS_TO],
@@ -427,7 +434,7 @@ AC_DEFUN([EXTRACT_VARS_FROM_CPU],
VAR_LEGACY_CPU=s390x
;;
*)
- AC_ERROR([unsupported cpu $1])
+ AC_MSG_ERROR([unsupported cpu $1])
;;
esac
@@ -515,3 +522,26 @@ AC_DEFUN([WIN_FIX_PATH],
$1="$tmp"
fi
])
+
+AC_DEFUN([SET_RELEASE_FILE_OS_VALUES],
+[
+ if test "x$HOST_OS" = "xsolaris"; then
+ REQUIRED_OS_NAME=SunOS
+ REQUIRED_OS_VERSION=5.10
+ fi
+ if test "x$HOST_OS" = "xlinux"; then
+ REQUIRED_OS_NAME=Linux
+ REQUIRED_OS_VERSION=2.6
+ fi
+ if test "x$HOST_OS" = "xwindows"; then
+ REQUIRED_OS_NAME=Windows
+ REQUIRED_OS_VERSION=5.1
+ fi
+ if test "x$HOST_OS" = "xmacosx"; then
+ REQUIRED_OS_NAME=Darwin
+ REQUIRED_OS_VERSION=11.2
+ fi
+
+ AC_SUBST(REQUIRED_OS_NAME)
+ AC_SUBST(REQUIRED_OS_VERSION)
+])
diff --git a/common/autoconf/spec.gmk.in b/common/autoconf/spec.gmk.in
index 4d5b841..28e248b 100644
--- a/common/autoconf/spec.gmk.in
+++ b/common/autoconf/spec.gmk.in
@@ -64,6 +64,9 @@ endif
# A self-referential reference to this file.
SPEC:=@SPEC@
+# The "human readable" name of this configuration
+CONF_NAME:=@CONF_NAME@
+
# The built jdk will run in this host system.
HOST:=@HOST@
HOST_OS:=@HOST_OS@
@@ -87,6 +90,10 @@ BUILD_CPU_ARCH:=@BUILD_CPU_ARCH@
BUILD_CPU_BITS:=@BUILD_CPU_BITS@
BUILD_CPU_ENDIAN:=@BUILD_CPU_ENDIAN@
+# Legacy OS values for use in release file.
+REQUIRED_OS_NAME:=@REQUIRED_OS_NAME@
+REQUIRED_OS_VERSION:=@REQUIRED_OS_VERSION@
+
# Old name for HOST_OS (aix,bsd,hpux,linux,macosx,solaris,windows etc)
PLATFORM:=@HOST_OS@
# Old name for HOST_CPU, uses i586 and amd64, instead of ia32 and x64.
@@ -105,6 +112,7 @@ ENDIAN:=@HOST_CPU_ENDIAN@
@SET_OPENJDK@
JIGSAW:=@JIGSAW@
LIBM:=-lm
+LIBDL:=@LIBDL@
# colon or semicolon
PATH_SEP:=@PATH_SEP@
@@ -287,8 +295,8 @@ CUPS_CFLAGS:=@CUPS_CFLAGS@
PACKAGE_PATH=@PACKAGE_PATH@
-CACERTS_FILE:=$(SRC_ROOT)/jdk/src/share/lib/security/cacerts
-#CACERTS_INT=$(CLOSED_SHARE_SRC)/lib/security/cacerts.internal
+# Source file for cacerts
+CACERTS_FILE=@CACERTS_FILE@
#MOZILLA_HEADERS_PATH:=
@@ -308,13 +316,18 @@ LD_OUT_OPTION:=@LD_OUT_OPTION@
AR_OUT_OPTION:=@AR_OUT_OPTION@
# Flags used for overriding the default opt setting for a C/C++ source file.
+C_O_FLAG_HIGHEST:=@C_O_FLAG_HIGHEST@
C_O_FLAG_HI:=@C_O_FLAG_HI@
C_O_FLAG_NORM:=@C_O_FLAG_NORM@
C_O_FLAG_NONE:=@C_O_FLAG_NONE@
+CXX_O_FLAG_HIGHEST:=@CXX_O_FLAG_HIGHEST@
CXX_O_FLAG_HI:=@CXX_O_FLAG_HI@
CXX_O_FLAG_NORM:=@CXX_O_FLAG_NORM@
CXX_O_FLAG_NONE:=@CXX_O_FLAG_NONE@
+C_FLAG_DEPS:=@C_FLAG_DEPS@
+CXX_FLAG_DEPS:=@CXX_FLAG_DEPS@
+
# Tools that potentially need to be cross compilation aware.
CC:=@UNCYGDRIVE@ @CCACHE@ @CC@
@@ -386,6 +399,11 @@ SHARED_LIBRARY_FLAGS:=@SHARED_LIBRARY_FLAGS@
# (Note absence of := assignment, because we do not want to evaluate the macro body here)
SET_SHARED_LIBRARY_MAPFILE=@SET_SHARED_LIBRARY_MAPFILE@
+# Options for C/CXX compiler to be used if linking is performed
+# using reorder file
+C_FLAG_REORDER:=@C_FLAG_REORDER@
+CXX_FLAG_REORDER:=@CXX_FLAG_REORDER@
+
# Options to linker to specify the library name.
# (Note absence of := assignment, because we do not want to evaluate the macro body here)
SET_SHARED_LIBRARY_NAME=@SET_SHARED_LIBRARY_NAME@
@@ -406,6 +424,9 @@ STATIC_LIBRARY_SUFFIX:=@STATIC_LIBRARY_SUFFIX@
EXE_SUFFIX:=@EXE_SUFFIX@
OBJ_SUFFIX:=@OBJ_SUFFIX@
+POST_STRIP_CMD:=@POST_STRIP_CMD@
+POST_MCS_CMD:=@POST_MCS_CMD@
+
JAVA_FLAGS:=@BOOT_JDK_JVMARGS@
JAVA=@UNCYGDRIVE@ @JAVA@ $(JAVA_FLAGS)
@@ -419,6 +440,8 @@ JAR:=@UNCYGDRIVE@ @JAR@
RMIC:=@UNCYGDRIVE@ @RMIC@
+NATIVE2ASCII:=@UNCYGDRIVE@ @NATIVE2ASCII@
+
BOOT_JAR_CMD:=@UNCYGDRIVE@ @JAR@
BOOT_JAR_JFLAGS:=
@@ -483,6 +506,7 @@ OTOOL:=@OTOOL@
READELF:=@READELF@
EXPR:=@EXPR@
FILE:=@FILE@
+HG:=@HG@
UNCYGDRIVE:=@UNCYGDRIVE@
@@ -584,5 +608,13 @@ INSTALL_SYSCONFDIR=@sysconfdir@
# Misc
#
+# Name of Service Agent library
+SALIB_NAME=@SALIB_NAME@
+
# Control wether Hotspot runs Queens test after building
TEST_IN_BUILD=@TEST_IN_BUILD@
+
+OS_VERSION_MAJOR:=@OS_VERSION_MAJOR@
+OS_VERSION_MINOR:=@OS_VERSION_MINOR@
+OS_VERSION_MICRO:=@OS_VERSION_MICRO@
+
diff --git a/common/bin/compareimage.sh b/common/bin/compareimage.sh
index 3687e41..2e9e805 100644
--- a/common/bin/compareimage.sh
+++ b/common/bin/compareimage.sh
@@ -45,7 +45,7 @@
#
if [ "x$1" = "x-h" ] || [ "x$1" = "x--help" ] || [ "x$1" == "x" ]; then
- echo "./common/bin/compareimages.sh old_jdk_image new_jdk_image"
+ echo "bash ./common/bin/compareimages.sh old_jdk_image new_jdk_image"
echo ""
echo "Compare the directory structure."
echo "Compare the filenames in the directories."
@@ -55,11 +55,11 @@ if [ "x$1" = "x-h" ] || [ "x$1" = "x--help" ] || [ "x$1" == "x" ]; then
echo "Compare the native executables"
echo "Compare the remaining files"
echo ""
- echo "./common/bin/compareimages.sh old_jdk_image new_jdk_image [zips jars libs execs other]"
+ echo "bash ./common/bin/compareimages.sh old_jdk_image new_jdk_image [zips jars libs execs other]"
echo ""
echo "Compare only the selected subset of the images."
echo ""
- echo "./common/bin/compareimages.sh old_jdk_image new_jdk_image CodePointIM.jar"
+ echo "bash ./common/bin/compareimages.sh old_jdk_image new_jdk_image CodePointIM.jar"
echo ""
echo "Compare only the CodePointIM.jar file"
echo "Can be used to compare zips, libraries and executables."
@@ -114,10 +114,10 @@ else
CMP_OTHER=true
fi
-DIFFJARZIP=`dirname $0`/diffjarzip.sh
-DIFFLIB=`dirname $0`/difflib.sh
-DIFFEXEC=`dirname $0`/diffexec.sh
-export COMPARE_ROOT=/tmp/cimages
+DIFFJARZIP="/bin/bash `dirname $0`/diffjarzip.sh"
+DIFFLIB="/bin/bash `dirname $0`/difflib.sh"
+DIFFEXEC="/bin/bash `dirname $0`/diffexec.sh"
+export COMPARE_ROOT=/tmp/cimages.$USER
mkdir -p $COMPARE_ROOT
# Load the correct exception list.
@@ -167,16 +167,64 @@ else
ONLY_OLD=$(diff $COMPARE_ROOT/from_files $COMPARE_ROOT/to_files | grep '<')
if [ "$ONLY_OLD" ]; then
echo Only in $OLD
- echo $ONLY_OLD | sed 's|< ./|\t|g' | sed 's/ /\n/g'
+ echo "$ONLY_OLD" | sed 's|< ./| |g'
fi
# Differences in directories found.
ONLY_NEW=$(diff $COMPARE_ROOT/from_files $COMPARE_ROOT/to_files | grep '>')
if [ "$ONLY_NEW" ]; then
echo Only in $NEW
- echo $ONLY_NEW | sed 's|> ./|\t|g' | sed 's/ /\n/g'
+ echo "$ONLY_NEW" | sed 's|> ./| |g'
fi
fi
+if [ "`uname`" == "SunOS" ]; then
+ PERM="gstat -c%a"
+elif [ $OSTYPE == "cygwin" ]; then
+ PERM=
+elif [ "`uname`" == "Darwin" ]; then
+ PERM="stat -f%p"
+elif [ "`uname`" == "Linux" ]; then
+ PERM="stat -c%A"
+else
+ PERM="stat -c%a"
+fi
+
+if [ "${PERM}" ]
+then
+ echo -n Permissions...
+ found=""
+ for f in `cd $OLD && find . -type f`
+ do
+ if [ ! -f ${OLD}/$f ]; then continue; fi
+ if [ ! -f ${NEW}/$f ]; then continue; fi
+ OP=`${PERM} ${OLD}/$f`
+ NP=`${PERM} ${NEW}/$f`
+ if [ "$OP" != "$NP" ]
+ then
+ if [ -z "$found" ]; then echo ; found="yes"; fi
+ printf "\told: ${OP} new: ${NP}\t$f\n"
+ fi
+ done
+ if [ -z "$found" ]; then echo ; found="yes"; fi
+fi
+
+GENERAL_FILES=$(cd $OLD && find . -type f ! -name "*.so" ! -name "*.jar" ! -name "*.zip" \
+ ! -name "*.debuginfo" ! -name "*.dylib" ! -name "jexec" \
+ ! -name "ct.sym" \
+ | grep -v "./bin/" | sort | $FILTER)
+echo General files...
+for f in $GENERAL_FILES
+do
+ if [ -e $NEW/$f ]; then
+ DIFF_OUT=$(diff $OLD/$f $NEW/$f 2>&1)
+ if [ -n "$DIFF_OUT" ]; then
+ echo $f
+ echo "$DIFF_OUT"
+ fi
+ fi
+done
+
+
if [ "x$CMP_ZIPS" == "xtrue" ]; then
ZIPS=$(cd $OLD && find . -type f -name "*.zip" | sort | $FILTER)
@@ -194,7 +242,7 @@ if [ "x$CMP_ZIPS" == "xtrue" ]; then
fi
if [ "x$CMP_JARS" == "xtrue" ]; then
- JARS=$(cd $OLD && find . -type f -name "*.jar" | sort | $FILTER)
+ JARS=$(cd $OLD && find . -type f -name "*.jar" -o -name "ct.sym" | sort | $FILTER)
if [ -n "$JARS" ]; then
echo Jar files...
diff --git a/common/bin/diffexec.sh b/common/bin/diffexec.sh
index e619c6f..8621e91 100644
--- a/common/bin/diffexec.sh
+++ b/common/bin/diffexec.sh
@@ -50,14 +50,21 @@ fi
if [ "`uname`" == "SunOS" ]; then
NM=gnm
- STAT=gstat
+ STAT="gstat -c%s"
+ LDD=ldd
elif [ $OSTYPE == "cygwin" ]; then
NM="$VS100COMNTOOLS/../../VC/bin/amd64/dumpbin.exe"
NM_ARGS=/exports
- STAT=stat
+ STAT="stat -c%s"
+ LDD=
+elif [ "`uname`" == "Darwin" ]; then
+ NM=nm
+ STAT="stat -f%z"
+ LDD="otool -L"
else
NM=nm
- STAT=stat
+ STAT="stat -c%s"
+ LDD=ldd
fi
# Should the differences be viewed?
@@ -72,8 +79,8 @@ fi
OLD=$(cd $(dirname $1) && pwd)/$(basename $1)
NEW=$(cd $(dirname $2) && pwd)/$(basename $2)
-OLD_SIZE=$($STAT -c%s "$OLD")
-NEW_SIZE=$($STAT -c%s "$NEW")
+OLD_SIZE=$($STAT "$OLD")
+NEW_SIZE=$($STAT "$NEW")
if [ $# -gt 3 ]
then
@@ -119,15 +126,41 @@ fi
DIFFS=$(LANG=C diff $OLD_SYMBOLS $NEW_SYMBOLS)
+if [ "${LDD}" ]
+then
+ NAME=`basename $OLD`
+ TMP=$COMPARE_ROOT/ldd/ldd.${NAME}
+ rm -rf "${TMP}"
+ mkdir -p "${TMP}"
+
+ (cd "${TMP}" && cp $OLD . && ${LDD} ${NAME} | awk '{ print $1;}' | sort | tee dep.old | uniq > dep.uniq.old)
+ (cd "${TMP}" && cp $NEW . && ${LDD} ${NAME} | awk '{ print $1;}' | sort | tee dep.new | uniq > dep.uniq.new)
+ (cd "${TMP}" && rm -f ${NAME})
+
+ DIFFS_DEP=$(LANG=C diff "${TMP}/dep.old" "${TMP}/dep.new")
+ DIFFS_UNIQ_DEP=$(LANG=C diff "${TMP}/dep.uniq.old" "${TMP}/dep.uniq.new")
+
+ DEP_MSG=
+ if [ -z "${DIFFS_UNIQ_DEP}" -a -z "${DIFFS_DEP}" ]; then
+ DEP_MSG="Identical dependencies"
+ elif [ -z "${DIFFS_UNIQ_DEP}" ]; then
+ DEP_MSG="Redundant duplicate dependencies added"
+ RES=1
+ else
+ DEP_MSG="DIFFERENT dependencies"
+ RES=1
+ fi
+fi
+
RESULT=0
if [ -n "$DIFFS" ]; then
if [ $OLD_SIZE -ne $NEW_SIZE ]
then
- echo Differences, content AND size : $OLD_NAME
+ echo Differences, content AND size : $DEP_MSG : $OLD_NAME
RESULT=4
else
- echo Differences, content BUT SAME size: $OLD_NAME
+ echo Differences, content BUT SAME size: $DEP_MSG : $OLD_NAME
RESULT=3
fi
if [ "x$VIEW" == "xview" ]; then
@@ -136,10 +169,10 @@ if [ -n "$DIFFS" ]; then
else
if [ $OLD_SIZE -ne $NEW_SIZE ]
then
- echo Identical symbols BUT NEW size : $OLD_NAME
+ echo Identical symbols BUT NEW size : $DEP_MSG : $OLD_NAME
RESULT=2
else
- echo Identical symbols AND size, BUT not bytewise identical: $OLD_NAME
+ echo Identical symbols AND size, BUT not bytewise identical: $DEP_MSG : $OLD_NAME
RESULT=1
fi
fi
diff --git a/common/bin/diffjarzip.sh b/common/bin/diffjarzip.sh
index 28220f7..3bd96b7 100644
--- a/common/bin/diffjarzip.sh
+++ b/common/bin/diffjarzip.sh
@@ -84,8 +84,8 @@ if [ "$OLD_SUFFIX" != "$NEW_SUFFIX" ]; then
exit 2
fi
-if [ "$OLD_SUFFIX" != "zip" ] && [ "$OLD_SUFFIX" != "jar" ]; then
- echo The files have to be zip or jar! They are $OLD_SUFFIX
+if [ "$OLD_SUFFIX" != "zip" ] && [ "$OLD_SUFFIX" != "jar" ] && [ "$OLD_SUFFIX" != "sym" ]; then
+ echo The files have to be zip, jar or sym! They are $OLD_SUFFIX
exit 2
fi
@@ -128,7 +128,7 @@ if [ -n "$ONLY2" ]; then
| sed "s|Only in $NEW_TEMPDIR| |"g | sed 's|: |/|g'
fi
-DIFFTEXT=`dirname $0`/difftext.sh
+DIFFTEXT="/bin/bash `dirname $0`/difftext.sh"
LANG=C $DIFF -rq $DIFF_FLAGS $OLD_TEMPDIR $NEW_TEMPDIR | grep differ | cut -f 2,4 -d ' ' | \
awk "{ print \"$DIFFTEXT \"\$1\" \"\$2 }" > $COMPARE_ROOT/diffing
diff --git a/common/bin/difflib.sh b/common/bin/difflib.sh
index 645005b..e6f8a20 100644
--- a/common/bin/difflib.sh
+++ b/common/bin/difflib.sh
@@ -54,14 +54,21 @@ fi
if [ "`uname`" == "SunOS" ]; then
NM=gnm
- STAT=gstat
+ STAT="gstat -c%s"
+ LDD=ldd
elif [ $OSTYPE == "cygwin" ]; then
NM="$VS100COMNTOOLS/../../VC/bin/amd64/dumpbin.exe"
NM_ARGS=/exports
- STAT=stat
+ STAT="stat -c%s"
+ LDD=
+elif [ "`uname`" == "Darwin" ]; then
+ NM=nm
+ STAT="stat -f%z"
+ LDD="otool -L"
else
NM=nm
- STAT=stat
+ STAT="stat -c%s"
+ LDD=ldd
fi
# Should the differences be viewed?
@@ -76,8 +83,8 @@ fi
OLD=$(cd $(dirname $1) && pwd)/$(basename $1)
NEW=$(cd $(dirname $2) && pwd)/$(basename $2)
-OLD_SIZE=$($STAT -c%s "$OLD")
-NEW_SIZE=$($STAT -c%s "$NEW")
+OLD_SIZE=$($STAT "$OLD")
+NEW_SIZE=$($STAT "$NEW")
if [ $# -gt 3 ]
then
@@ -139,13 +146,39 @@ DIFFS=$(LANG=C diff $OLD_SYMBOLS $NEW_SYMBOLS)
RESULT=0
+if [ "${LDD}" ]
+then
+ NAME=`basename $OLD`
+ TMP=$COMPARE_ROOT/ldd/ldd.${NAME}
+ rm -rf "${TMP}"
+ mkdir -p "${TMP}"
+
+ (cd "${TMP}" && cp $OLD . && ${LDD} ${NAME} | awk '{ print $1;}' | sort | tee dep.old | uniq > dep.uniq.old)
+ (cd "${TMP}" && cp $NEW . && ${LDD} ${NAME} | awk '{ print $1;}' | sort | tee dep.new | uniq > dep.uniq.new)
+ (cd "${TMP}" && rm -f ${NAME})
+
+ DIFFS_DEP=$(LANG=C diff "${TMP}/dep.old" "${TMP}/dep.new")
+ DIFFS_UNIQ_DEP=$(LANG=C diff "${TMP}/dep.uniq.old" "${TMP}/dep.uniq.new")
+
+ DEP_MSG=
+ if [ -z "${DIFFS_UNIQ_DEP}" -a -z "${DIFFS_DEP}" ]; then
+ DEP_MSG="Identical dependencies"
+ elif [ -z "${DIFFS_UNIQ_DEP}" ]; then
+ DEP_MSG="Redundant duplicate dependencies added"
+ RES=1
+ else
+ DEP_MSG="DIFFERENT dependencies"
+ RES=1
+ fi
+fi
+
if [ -n "$DIFFS" ]; then
if [ $OLD_SIZE -ne $NEW_SIZE ]
then
- echo Differences, content AND size : $OLD_NAME
+ echo Differences, content AND size : $DEP_MSG : $OLD_NAME
RESULT=4
else
- echo Differences, content BUT SAME size: $OLD_NAME
+ echo Differences, content BUT SAME size: $DEP_MSG : $OLD_NAME
RESULT=3
fi
if [ "x$VIEW" == "xview" ]; then
@@ -154,10 +187,10 @@ if [ -n "$DIFFS" ]; then
else
if [ $OLD_SIZE -ne $NEW_SIZE ]
then
- echo Identical symbols BUT NEW size : $OLD_NAME
+ echo Identical symbols BUT NEW size : $DEP_MSG : $OLD_NAME
RESULT=2
else
- echo Identical symbols AND size, BUT not bytewise identical: $OLD_NAME
+ echo Identical symbols AND size, BUT not bytewise identical: $DEP_MSG : $OLD_NAME
RESULT=1
fi
fi
diff --git a/common/bin/logger.sh b/common/bin/logger.sh
index 9f2d7a2..70c3dab 100644
--- a/common/bin/logger.sh
+++ b/common/bin/logger.sh
@@ -37,10 +37,9 @@
# Create a temporary directory to store the result code from
# the wrapped command.
-RCDIR=`mktemp -d tmp.XXXXXX` || exit $?
-trap "rm -rf '$RCDIR'" EXIT
+RCDIR=`mktemp -dt jdk-build-logger.tmp.XXXXXX` || exit $?
+trap "rm -rf \"$RCDIR\"" EXIT
LOGFILE=$1
shift
-(exec 3>&1 ; ("$@" 2>&1 1>&3; echo $? > $RCDIR/rc) | tee -a $LOGFILE 1>&2 ; exec 3>&-) | tee -a $LOGFILE
-exit `cat $RCDIR/rc`
-
+(exec 3>&1 ; ("$@" 2>&1 1>&3; echo $? > "$RCDIR/rc") | tee -a $LOGFILE 1>&2 ; exec 3>&-) | tee -a $LOGFILE
+exit `cat "$RCDIR/rc"`
diff --git a/common/makefiles/JavaCompilation.gmk b/common/makefiles/JavaCompilation.gmk
index 6795e4b..a9ddb11 100644
--- a/common/makefiles/JavaCompilation.gmk
+++ b/common/makefiles/JavaCompilation.gmk
@@ -126,8 +126,7 @@ define SetupArchive
# JAR:=Jar file to create
# MANIFEST:=Optional manifest file template.
# JARMAIN:=Optional main class to add to manifest
- # SETUP:=The Java(h) compiler setup, needed to run javah.
- # HEADERS:=Directory to put headers in
+ # JARINDEX :=
# SKIP_METAINF:=Set to prevent contents of an META-INF directory to be automatically
# added to the archive.
# EXTRA_MANIFEST_ATTR:=Extra attribute to add to manifest.
@@ -143,9 +142,8 @@ define SetupArchive
$(if $(12),$1_$(strip $(12)))
$(if $(13),$1_$(strip $(13)))
$(if $(14),$1_$(strip $(14)))
+ $(if $(15),$1_$(strip $(15)))
- $1_JVM := $$($$($1_SETUP)_JVM)
- $1_JAVAH := $$($$($1_SETUP)_JAVAH)
$1_JARMAIN:=$(strip $$($1_JARMAIN))
$1_JARNAME:=$$(notdir $$($1_JAR))
$1_MANIFEST_FILE:=$$(dir $$($1_JAR))_the.$$($1_JARNAME)_manifest
@@ -155,19 +153,46 @@ define SetupArchive
$1_NATIVEAPI_NOTIFICATIONS_FILE:=$$(dir $$($1_JAR))_the.$$($1_JARNAME)_native_notifications
$1_NATIVEAPI_FILE:=$$(dir $$($1_JAR))_the.$$($1_JARNAME)_native
$1_BIN:=$$(dir $$($1_JAR))
+
ifeq (,$$($1_SUFFIXES))
# No suffix was set, default to classes.
$1_SUFFIXES:=.class
endif
# Convert suffixes to a find expression
$1_FIND_PATTERNS:=$(FALSE_FIND_PATTERN) $$(patsubst %,$(SPACE)-o$(SPACE)-name$(SPACE)$(DQUOTE)*%$(DQUOTE),$$($1_SUFFIXES))
+ # On windows, a lot of includes/excludes risk making the command line too long, so
+ # writing the grep patterns to files.
ifneq (,$$($1_INCLUDES))
- $1_GREP_INCLUDES:=| $(GREP) $$(foreach src,$$($1_SRCS),$$(addprefix -e$(SPACE)$$(src)/,$$($1_INCLUDES)))
+ $1_GREP_INCLUDE_PATTERNS:=$$(foreach src,$$($1_SRCS),\
+ $$(addprefix $$(src)/,$$($1_INCLUDES)))
+ $$(eval $$(call ListPathsSafelyNow,$1_GREP_INCLUDE_PATTERNS,\n, \
+ >> $$($1_BIN)/_the.$$($1_JARNAME)_include))
+ $1_GREP_INCLUDES:=| $(GREP) -f $$($1_BIN)/_the.$$($1_JARNAME)_include
endif
ifneq (,$$($1_EXCLUDES)$$($1_EXCLUDE_FILES))
- $1_GREP_EXCLUDES:=| $(GREP) -v $$(foreach src,$$($1_SRCS),$$(addprefix -e$(SPACE)$$(src)/,$$($1_EXCLUDES) $$($1_EXCLUDE_FILES)))
+ $1_GREP_EXCLUDE_PATTERNS:=$$(foreach src,$$($1_SRCS),$$(addprefix $$(src)/,\
+ $$($1_EXCLUDES) $$($1_EXCLUDE_FILES)))
+ $$(eval $$(call ListPathsSafelyNow,$1_GREP_EXCLUDE_PATTERNS,\n, \
+ >> $$($1_BIN)/_the.$$($1_JARNAME)_exclude))
+ $1_GREP_EXCLUDES:=| $(GREP) -v -f $$($1_BIN)/_the.$$($1_JARNAME)_exclude
endif
+ ifneq (,$$($1_JARINDEX))
+ $1_JARINDEX = (cd $$(dir $$@) && $(JAR) -i $$(notdir $$@))
+ else
+ $1_JARINDEX = true
+ endif
+ # When this macro is run in the same makefile as the java compilation, dependencies are transfered
+ # in make variables. When the macro is run in a different makefile than the java compilation, the
+ # dependencies need to be found in the filesystem.
+ $1_ALL_SRCS:=$$(foreach src,$$($1_SRCS),$$(shell ($(FIND) $$(src) -type f \
+ -a \( $$($1_FIND_PATTERNS) \) $$($1_GREP_INCLUDES) \
+ $$($1_GREP_EXCLUDES) && $(ECHO) $$($1_EXTRA_FILES))))
+ ifeq (,$$($1_SKIP_METAINF))
+ $1_ALL_SRCS+=$$(foreach src,$$($1_SRCS),$$(shell $(FIND) $$(src)/META-INF -type f 2> /dev/null))
+ endif
+
+
# Utility macros, to make the shell script receipt somewhat easier to dechipher.
# The capture contents macro finds all files (matching the patterns, typically
@@ -187,15 +212,6 @@ define SetupArchive
(cd $$(src) && \
$(FIND) . -name _the.package.api.notify -exec dirname \{\} \; >> $$($1_PUBAPI_NOTIFICATIONS_FILE) ; \
true) &&)
- # The capture nativeapi macro scans for native api change notificiations. If such notifications are
- # found, then we will run javah on the changed classes. It also collects all classes with native methods
- # to be used to find out which classes no longer has native methods, to trigger deletion of those .h files.
- $1_CAPTURE_NATIVEAPI=$$(foreach src,$$($1_SRCS),\
- (cd $$(src) && \
- $(FIND) . -name _the.package.native.notify | $(SED) 's/package.native.notify/package.native/' | \
- $(XARGS) $(CAT) | $(GREP) '^TYPE ' | $(SED) 's/.*TYPE //' >> $$($1_NATIVEAPI_NOTIFICATIONS_FILE) ; \
- $(FIND) . -name _the.package.native -exec $(CAT) \{\} \; | $(SED) -n 's/^TYPE //p' >> $$($1_NATIVEAPI_FILE) ; \
- true) &&)
# The update contents macro updates the jar file with the previously capture contents.
$1_UPDATE_CONTENTS=$$(foreach src,$$($1_SRCS),\
(cd $$(src) && \
@@ -205,13 +221,18 @@ define SetupArchive
fi) &&)
# The s-variants of the above macros are used when the jar is created from scratch.
$1_SCAPTURE_CONTENTS=$$(foreach src,$$($1_SRCS),\
- (($(FIND) $$(src) -type f -a \( $$($1_FIND_PATTERNS) \) $$($1_GREP_INCLUDES) $$($1_GREP_EXCLUDES) && $(ECHO) $$($1_EXTRA_FILES)) | $(SED) 's|$$(src)/||g' > $$(src)/_the.$$($1_JARNAME)_contents) && )
+ (($(FIND) $$(src) -type f -a \( $$($1_FIND_PATTERNS) \) $$($1_GREP_INCLUDES) \
+ $$($1_GREP_EXCLUDES) && $(ECHO) $$($1_EXTRA_FILES)) | $(SED) 's|$$(src)/||g' > \
+ $$(src)/_the.$$($1_JARNAME)_contents) && )
+
ifeq (,$$($1_SKIP_METAINF))
$1_SCAPTURE_METAINF=$$(foreach src,$$($1_SRCS),\
- ($(FIND) $$(src)/META-INF -type f 2> /dev/null | $(SED) 's|$$(src)/||g' >> $$(src)/_the.$$($1_JARNAME)_contents) && )
+ ($(FIND) $$(src)/META-INF -type f 2> /dev/null | $(SED) 's|$$(src)/||g' >> \
+ $$(src)/_the.$$($1_JARNAME)_contents) && )
endif
$1_SUPDATE_CONTENTS=$$(foreach src,$$($1_SRCS),\
(cd $$(src) && $(JAR) uf $$@ @$$(src)/_the.$$($1_JARNAME)_contents) &&)
+
# The TOUCH macro is used to make sure all timestamps are identical for package files and the pubapi files.
# If we do not do this, we get random recompilations, the next time we run make, since the order of package building is random,
# ie independent of package --dependes on-> public api of another package. This is of course
@@ -223,7 +244,7 @@ define SetupArchive
# Use a slightly shorter name for logging, but with enough path to identify this jar.
$1_NAME:=$$(subst $$(OUTPUT_ROOT)/,,$$($1_JAR))
# Here is the rule that creates/updates the jar file.
- $$($1_JAR) : $2
+ $$($1_JAR) : $2 $$($1_ALL_SRC)
$(MKDIR) -p $$($1_BIN)
if [ -n "$$($1_MANIFEST)" ]; then \
$(SED) -e "s#@@RELEASE@@#$(RELEASE)#" \
@@ -231,9 +252,11 @@ define SetupArchive
else \
$(RM) $$($1_MANIFEST_FILE) && $(TOUCH) $$($1_MANIFEST_FILE); \
fi
- $(ECHO) "Main-Class: $$(strip $$($1_JARMAIN))" >> $$($1_MANIFEST_FILE)
+ if [ -n "$$(strip $$($1_JARMAIN))" ]; then \
+ $(ECHO) "Main-Class: $$(strip $$($1_JARMAIN))" >> $$($1_MANIFEST_FILE); \
+ fi
if [ -n "$$($1_EXTRA_MANIFEST_ATTR)" ]; then \
- $(ECHO) "$$($1_EXTRA_MANIFEST_ATTR)" >> $$($1_MANIFEST_FILE); \
+ $(PRINTF) "$$($1_EXTRA_MANIFEST_ATTR)\n" >> $$($1_MANIFEST_FILE); \
fi
+if [ -s $$@ ]; then \
$(RM) -r $$($1_PUBAPI_NOTIFICATIONS_FILE) && \
@@ -255,20 +278,8 @@ define SetupArchive
$(ZIP) -q -d $$@ `$(CAT) $$($1_DELETESS_FILE)` ; \
fi && \
$$($1_UPDATE_CONTENTS) true && \
+ $$($1_JARINDEX) && \
$$($1_TOUCH_API_FILES) true && \
- $(RM) -r $$($1_NATIVEAPI_NOTIFICATIONS_FILE) $$($1_NATIVEAPI_FILE) && \
- $$($1_CAPTURE_NATIVEAPI) true && \
- if [ "x$$($1_JAVAH)" != "x" ] && [ -s $$($1_NATIVEAPI_NOTIFICATIONS_FILE) ]; then \
- $(ECHO) Native api change detected in: && $(CAT) $$($1_NATIVEAPI_NOTIFICATIONS_FILE) && \
- $$($1_JVM) $$($1_JAVAH) "-Xbootclasspath/p:$$($1_JAR)" -d $$($1_HEADERS) @$$($1_NATIVEAPI_NOTIFICATIONS_FILE) ; \
- fi && \
- $(TOUCH) $$($1_NATIVEAPI_FILE)_prev ; \
- ($(GREP) -xvf $$($1_NATIVEAPI_FILE) $$($1_NATIVEAPI_FILE)_prev > $$($1_NATIVEAPI_FILE)_deleted; true) && \
- $(CP) $$($1_NATIVEAPI_FILE) $$($1_NATIVEAPI_FILE)_prev && \
- if [ -s $$($1_NATIVEAPI_FILE)_deleted ]; then \
- $(ECHO) Native methods dropped from classes: && $(CAT) $$($1_NATIVEAPI_FILE)_deleted && \
- $(RM) `$(CAT) $$($1_NATIVEAPI_FILE)_deleted | $(SED) -e 's|\.|_|g' -e 's|.*|$$($1_HEADERS)/&.h $$($1_HEADERS)/&_*|'` ; \
- fi && \
$$(foreach src,$$($1_SRCS),($(FIND) $$(src) -name _the.package.api.notify $(FIND_DELETE); true) &&) true ; \
fi ; \
else \
@@ -276,15 +287,9 @@ define SetupArchive
$$($1_SCAPTURE_CONTENTS) \
$$($1_SCAPTURE_METAINF) \
$$($1_SUPDATE_CONTENTS) \
+ $$($1_JARINDEX) && \
$$($1_TOUCH_API_FILES) true && \
$(RM) -r $$($1_NATIVEAPI_NOTIFICATIONS_FILE) $$($1_NATIVEAPI_FILE) && \
- $$($1_CAPTURE_NATIVEAPI) true && \
- if [ "x$$($1_JAVAH)" != "x" ] && [ -s $$($1_NATIVEAPI_FILE) ]; then \
- $(ECHO) Generating native api headers for `$(CAT) $$($1_NATIVEAPI_FILE) | $(WC) -l` classes && \
- $(RM) $$($1_HEADERS)/*.h && \
- $$($1_JVM) $$($1_JAVAH) "-Xbootclasspath/p:$$($1_JAR)" -d $$($1_HEADERS) @$$($1_NATIVEAPI_FILE) && \
- $(CP) $$($1_NATIVEAPI_FILE) $$($1_NATIVEAPI_FILE)_prev ; \
- fi && \
$$(foreach src,$$($1_SRCS),($(FIND) $$(src) -name "*.notify" $(FIND_DELETE); true) &&) true ; \
fi;
@@ -297,7 +302,7 @@ endef
define SetupZipArchive
# param 1 is for example ZIP_MYSOURCE
# param 2,3,4,5,6,7,8,9 are named args.
- # SRC,ZIP,INCLUDES,EXCLUDES,EXCLUDE_FILES
+ # SRC,ZIP,INCLUDES,EXCLUDES,EXCLUDE_FILES,SUFFIXES,EXTRA_DEPS
$(if $2,$1_$(strip $2))
$(if $3,$1_$(strip $3))
$(if $4,$1_$(strip $4))
@@ -308,11 +313,17 @@ define SetupZipArchive
$(if $9,$1_$(strip $9))
# Find all files in the source tree.
- $1_ALL_SRCS := $$(foreach i,$$($1_SRC), $$(shell $(FIND) $$i -type f -a ! -name "_the.*"))
+ $1_SUFFIX_FILTER := $$(patsubst %,-o -name $(DQUOTE)*%$(DQUOTE),$$($1_SUFFIXES))
+ $1_ALL_SRCS := $$(foreach i,$$($1_SRC), $$(shell $(FIND) $$i -type f -a ! -name "_the.*" \( -name FALSE_DUMMY $$($1_SUFFIX_FILTER) \) ))
ifneq ($$($1_INCLUDES),)
$1_SRC_INCLUDES := $$(foreach i,$$($1_SRC),$$(addprefix $$i/,$$(addsuffix /%,$$($1_INCLUDES))))
- $1_ZIP_INCLUDES := $$(addprefix -i$(SPACE)$(DQUOTE),$$(addsuffix /*$(DQUOTE),$$($1_INCLUDES)))
+ ifneq ($$($1_SUFFIXES),)
+ $1_ZIP_INCLUDES := $$(foreach s,$$($1_SUFFIXES),\
+ $$(addprefix -i$(SPACE)$(DQUOTE),$$(addsuffix /*$$s$(DQUOTE),$$($1_INCLUDES))))
+ else
+ $1_ZIP_INCLUDES := $$(addprefix -i$(SPACE)$(DQUOTE),$$(addsuffix /*$(DQUOTE),$$($1_INCLUDES)))
+ endif
$1_ALL_SRCS := $$(filter $$($1_SRC_INCLUDES),$$($1_ALL_SRCS))
endif
ifneq ($$($1_EXCLUDES),)
@@ -329,7 +340,7 @@ define SetupZipArchive
# Explicitly excluded files can be given with absolute path. The patsubst solution
# isn't perfect but the likelyhood of an absolute path to match something in a src
# dir is very small.
- $$($1_ZIP) : $$($1_ALL_SRCS)
+ $$($1_ZIP) : $$($1_ALL_SRCS) $$($1_EXTRA_DEPS)
$(MKDIR) -p $$(@D)
$(ECHO) Updating $$($1_NAME)
$$(foreach i,$$($1_SRC),(cd $$i && $(ZIP) -qru $$@ . $$($1_ZIP_INCLUDES) $$($1_ZIP_EXCLUDES) -x \*_the.\* $$(addprefix -x$(SPACE),$$(patsubst $$i/%,%,$$($1_EXCLUDE_FILES)))) ;) true
@@ -472,7 +483,7 @@ define add_file_to_copy_and_clean
| $(SED) -e '/^#/d' -e '/^$$$$/d' \
-e :a -e '/\\$$$$/N; s/\\\n//; ta' \
-e 's/^[ \t]*//;s/[ \t]*$$$$//' \
- -e 's/\\=/=/' | LANG=C sort > $$@
+ -e 's/\\=/=/' | LANG=C $(SORT) > $$@
$(CHMOD) -f ug+w $$@
# And do not forget this target
@@ -623,6 +634,7 @@ define SetupJavaCompilation
# JAVAC_SOURCE_PATH_UGLY_OVERRIDE:=Don't use this. This forces an explicit -sourcepath to javac.
# Its only here until we cleanup some nasty source code pasta in the jdk.
# HEADERS:=path to directory where all generated c-headers are written.
+ # DEPENDS:=Extra dependecy
$(if $2,$1_$(strip $2))
$(if $3,$1_$(strip $3))
$(if $4,$1_$(strip $4))
@@ -650,9 +662,6 @@ $1_JVM := $$($$($1_SETUP)_JVM)
$1_JAVAC := $$($$($1_SETUP)_JAVAC)
$1_JAVAH := $$($$($1_SETUP)_JAVAH)
$1_FLAGS := $$($$($1_SETUP)_FLAGS) $(JAVAC_FLAGS) $$($1_ADD_JAVAC_FLAGS)
-ifeq (,$$($1_HEADERS))
- $1_HEADERS := $$($1_BIN)
-endif
# Handle addons and overrides.
$1_SRC:=$$(call ADD_SRCS,$$($1_SRC))
@@ -776,24 +785,21 @@ ifeq ($$($1_MODE),SINGLE_THREADED_BATCH)
$$(eval $$(call replace_space_with_pathsep,$1_SRCROOTSC,$$($1_SRC)))
endif
+ ifneq (,$$($1_HEADERS))
+ $1_HEADERS_ARG := -h $$($1_HEADERS)
+ endif
+
# Create a sed expression to remove the source roots and to replace / with .
# and remove .java at the end.
$1_REWRITE_INTO_CLASSES:=$$(foreach i,$$($1_SRC),-e 's|$$i/||g') -e 's|/|.|g' -e 's|.java$$$$||g'
# Here is the batch rules that depends on all the sources.
- $$($1_BIN)/_the.batch: $$($1_SRCS)
+ $$($1_BIN)/_the.batch: $$($1_SRCS) $$($1_DEPENDS)
$(MKDIR) -p $$(@D)
$(RM) $$($1_BIN)/_the.batch $$($1_BIN)/_the.batch.tmp
$$(call ListPathsSafely,$1_SRCS,\n, >> $$($1_BIN)/_the.batch.tmp)
$(ECHO) Compiling `$(WC) $$($1_BIN)/_the.batch.tmp | $(TR) -s ' ' | $(CUT) -f 2 -d ' '` files in batch $1
- ($$($1_JVM) $$($1_JAVAC) $$($1_FLAGS) -implicit:none -sourcepath "$$($1_SRCROOTSC)" -d $$($1_BIN) @$$($1_BIN)/_the.batch.tmp && \
- $$(if $$($1_JAVAH),\
- $(CAT) $$($1_BIN)/_the.batch.tmp | $(XARGS) $(GREP) -E "[[:space:]]native[[:space:]]|@GenerateNativeHeader" |\
- $(GREP) -v '*' | $(GREP) -v '//' | $(CUT) -f 1 -d ':' | $(SORT) -u |\
- $(SED) $$($1_REWRITE_INTO_CLASSES) > $$($1_BIN)/_the.batch.natives && \
- if test -s $$($1_BIN)/_the.batch.natives; then \
- $$($1_JVM) $$($1_JAVAH) "-Xbootclasspath/p:$$($1_BIN)" -d $$($1_HEADERS) @$$($1_BIN)/_the.batch.natives ; \
- fi &&) \
+ ($$($1_JVM) $$($1_JAVAC) $$($1_FLAGS) -implicit:none -sourcepath "$$($1_SRCROOTSC)" -d $$($1_BIN) $$($1_HEADERS_ARG) @$$($1_BIN)/_the.batch.tmp && \
$(MV) $$($1_BIN)/_the.batch.tmp $$($1_BIN)/_the.batch)
else
# Ok, we have a modern javac server running!
@@ -868,6 +874,7 @@ ifneq (,$$($1_JAR))
JARMAIN:=$$($1_JARMAIN),\
MANIFEST:=$$($1_MANIFEST),\
EXTRA_MANIFEST_ATTR:=$$($1_EXTRA_MANIFEST_ATTR),\
+ JARINDEX:=$$($1_JARINDEX),\
HEADERS:=$$($1_HEADERS),\
SETUP:=$$($1_SETUP)))
endif
diff --git a/common/makefiles/MakeBase.gmk b/common/makefiles/MakeBase.gmk
index 71150ed..3018a41 100644
--- a/common/makefiles/MakeBase.gmk
+++ b/common/makefiles/MakeBase.gmk
@@ -91,6 +91,15 @@ $(ECHO) `$(CAT) $(BUILDTIMESDIR)/build_time_start_$1` `$(CAT) $(BUILDTIMESDIR)/b
> $(BUILDTIMESDIR)/build_time_diff_$1
endef
+# Check if the current target is the final target, as specified by
+# the user on the command line. If so, call PrintEndMessage.
+define CheckIfFinished
+$(if $(filter $@,$(MAKECMDGOALS)),$(call PrintEndMessage))
+# If no taget is given, "all" is default. Check for that, too.
+# At most one of the tests can be true.
+$(if $(MAKECMDGOALS),,$(if $(filter $@,all),$(call PrintEndMessage)))
+endef
+
# Indicate that we are done.
# Record ending time and print out the total time it took to build.
define MakeFinish
@@ -101,6 +110,7 @@ $(BUILD_LOG_WRAPPER) $(PRINTF) "%s\n##### %-60.60s #####\n%s\n##### %-60.60s ###
"########################################################################" \
$(if $(REPORT_BUILD_TIMES),"Build time `$(CAT) $(BUILDTIMESDIR)/build_time_diff_$1` for target(s) $2","") \
"########################################################################"
+$(call CheckIfFinished)
endef
# Find all build_time_* files and print their contents in a list sorted
@@ -126,6 +136,18 @@ define StopTimer
$(if $(REPORT_BUILD_TIMES),$(call RecordEndTime,TOTAL) && $(call ReportBuildTimes,$1),)
endef
+# Hook to be called as the very first thing when running a normal build
+define AtRootMakeStart
+ $(call PrintStartMessage)
+ $(call StartTimer)
+endef
+
+# Hook to be called as the very last thing for targets that are "top level" targets
+define AtRootMakeEnd
+ $(call StopTimer)
+ $(call CheckIfFinished)
+endef
+
# If the variable that you want to send to stdout for piping into a file or otherwise,
# is potentially long, for example the a list of file paths, eg a list of all package directories.
# Then you need to use ListPathsSafely, which optimistically splits the output into several shell
@@ -324,4 +346,51 @@ define ListPathsSafelyNow
endef
+# The source tips can come from the Mercurial repository, or in the files
+# $(HGTIP_FILENAME) which contains the tip but is also positioned in the same
+# directory as the original $(HGDIR) directory.
+# These should not be := assignments, only used from the root Makefile.
+HG_VERSION = $(shell $(HG) version 2> /dev/null)
+HG_DIRECTORY=.hg
+HGTIP_FILENAME=.hgtip
+HG_SEARCH = ./REPO ./*/REPO ./*/*/REPO ./*/*/*/REPO
+REPO_LIST = $(patsubst ./%,%,$(patsubst %/,%,$(sort $(dir \
+ $(shell $(CD) $(SRC_ROOT) ; ( $(LS) -d $(HG_SEARCH:%/REPO=%/$(HG_DIRECTORY)) ; \
+ $(LS) $(HG_SEARCH:%/REPO=%/$(HGTIP_FILENAME)) ) \
+ 2> /dev/null)))))
+
+# Emit the repo:tip pairs to $@
+define GetSourceTips
+$(CD) $(SRC_ROOT) ; \
+for i in $(REPO_LIST) IGNORE ; do \
+ if [ "$${i}" = "IGNORE" ] ; then \
+ continue; \
+ elif [ -d $${i}/$(HG_DIRECTORY) -a "$(HG_VERSION)" != "" ] ; then \
+ $(PRINTF) " %s:%s" \
+ "$${i}" `$(HG) tip --repository $${i} --template '{node|short}\n'` ; \
+ elif [ -f $${i}/$(HGTIP_FILENAME) ] ; then \
+ $(PRINTF) " %s:%s" \
+ "$${i}" `$(CAT) $${i}/$(HGTIP_FILENAME)` ; \
+ fi; \
+done >> $@
+$(PRINTF) "\n" >> $@
+endef
+
+# Create the HGTIP_FILENAME file. Called from jdk/make/closed/bundles.gmk
+define CreateHgTip
+$(HG) tip --repository $1 --template '{node|short}\n' > $1/$(HGTIP_FILENAME);\
+$(ECHO) $1/$(HGTIP_FILENAME)
+endef
+
+define SetupLogging
+ ifneq ($(findstring $(LOG),debug trace),)
+ # Shell redefinition trick inspired by http://www.cmcrossroads.com/ask-mr-make/6535-tracing-rule-execution-in-gnu-make
+ OLD_SHELL:=$$(SHELL)
+ SHELL = $$(warning Building $$@$$(if $$<, (from $$<))$(if $$?, ($$? newer)))$$(OLD_SHELL) -x
+ endif
+endef
+
+# Make sure logging is setup for everyone that includes MakeBase.gmk.
+$(eval $(call SetupLogging))
+
endif # _MAKEBASE_GMK
diff --git a/common/makefiles/Makefile b/common/makefiles/Makefile
index 815f3c0..77420a8 100644
--- a/common/makefiles/Makefile
+++ b/common/makefiles/Makefile
@@ -23,49 +23,144 @@
# questions.
#
-# Default to sane output from make.
-# Override with empty string to get insane amount of output.
-# Override with -d to get even more insane amount of debugging output.
-# Override with "-d -p" to get it all.
-VERBOSE=-s
+# This must be the first rule
+default: all
+
+# Find out which variables were passed explicitely on the make command line. These
+# will be passed on to sub-makes, overriding spec.gmk settings.
+MAKE_ARGS=$(foreach var,$(subst =command,,$(filter %=command,$(foreach var,$(.VARIABLES),$(var)=$(firstword $(origin $(var)))))),$(var)=$($(var)))
+
+define fatal-error
+ # If the user specificed a "global" target (e.g. 'help'), do not exit but continue running
+ $$(if $$(findstring help,$$(MAKECMDGOALS)),,$$(error Cannot continue))
+endef
+
+ifeq ($(origin VERBOSE),undefined)
+ # Setup logging according to LOG (but only if VERBOSE is not given)
+ ifeq ($(LOG),)
+ # Set LOG to "warn" as default if not set (and no VERBOSE given)
+ LOG=warn
+ endif
+ ifeq ($(LOG),warn)
+ VERBOSE=-s
+ else ifeq ($(LOG),info)
+ VERBOSE=
+ else ifeq ($(LOG),debug)
+ VERBOSE=
+ else ifeq ($(LOG),trace)
+ VERBOSE=-d -p
+ else
+ $(info Error: LOG must be one of: warn, info, debug or trace.)
+ $(eval $(call fatal-error))
+ endif
+else
+ ifneq ($(LOG),)
+ # We have both a VERBOSE and a LOG argument. This is OK only if this is a repeated call by ourselves,
+ # but complain if this is the top-level make call.
+ ifeq ($(MAKELEVEL),0)
+ $(info Cannot use LOG=$(LOG) and VERBOSE=$(VERBOSE) at the same time. Choose one.)
+ $(eval $(call fatal-error))
+ endif
+ endif
+endif
+
+# TODO: Fix duplication in MakeBase.gmk
+define SetupLogging
+ ifneq ($(findstring $(LOG),debug trace),)
+ # Shell redefinition trick inspired by http://www.cmcrossroads.com/ask-mr-make/6535-tracing-rule-execution-in-gnu-make
+ OLD_SHELL:=$$(SHELL)
+ SHELL = $$(warning Building $$@$$(if $$<, (from $$<))$(if $$?, ($$? newer)))$$(OLD_SHELL) -x
+ endif
+endef
+
+$(eval $(call SetupLogging))
# Find all environment or command line variables that begin with ALT.
list_alt_overrides_with_origins = $(filter ALT_%=environment ALT_%=command,$(foreach var,$(.VARIABLES),$(var)=$(firstword $(origin $(var)))))
list_alt_overrides=$(subst =command,,$(subst =environment,,$(list_alt_overrides_with_origins)))
-ifneq ($(list_alt_overrides),)
- $(info You have set the following ALT_ variables:)
- $(foreach var,$(list_alt_overrides), $(info $(var)=$($(var))))
- $(error Using ALT_ variables is deprecated! Please clean your environment!)
+
+ifeq ($(filter /%,$(lastword $(MAKEFILE_LIST))),)
+ makefile_path=$(CURDIR)/$(lastword $(MAKEFILE_LIST))
+else
+ makefile_path=$(lastword $(MAKEFILE_LIST))
endif
+root_dir=$(patsubst %/common/makefiles/Makefile,%,$(makefile_path))
+output_dir=$(root_dir)/build
-# The spec.gmk file contains the variables extracted by the configure script.
-# It is usually set with SPEC=....spec.gmk on the make command line.
-# However if you simply type make from the openjdk source root, it will go looking
-# for a spec file, if only one is found, use it. If more than one is found,
-# complain. If none is found, request the user to run configure!
-SPEC ?= $(wildcard $(CURDIR)/../../build/*/spec.gmk)
+ifneq ($(origin SPEC),undefined)
+ # We have been given a SPEC, check that it works out properly
+ ifeq ($(wildcard $(SPEC)),)
+ $(info Cannot locate spec.gmk, given by SPEC=$(SPEC))
+ $(eval $(call fatal-error))
+ endif
+ ifneq ($(origin CONF),undefined)
+ # We also have a CONF argument. This is OK only if this is a repeated call by ourselves,
+ # but complain if this is the top-level make call.
+ ifeq ($(MAKELEVEL),0)
+ $(info Cannot use CONF=$(CONF) and SPEC=$(SPEC) at the same time. Choose one.)
+ $(eval $(call fatal-error))
+ endif
+ endif
+ # ... OK, we're satisfied, we'll use this SPEC later on
+else
+ # Find all spec.gmk files in the build output directory
+ all_spec_files=$(wildcard $(output_dir)/*/spec.gmk)
+ ifeq ($(all_spec_files),)
+ $(info No configurations found for $(root_dir)! Please run configure to create a configuration.)
+ $(eval $(call fatal-error))
+ endif
+ # Extract the configuration names from the path
+ all_confs=$(patsubst %/spec.gmk,%,$(patsubst $(output_dir)/%,%,$(all_spec_files)))
-ifeq ($(words $(SPEC)),0)
- $(error You must run configure!)
-endif
+ ifneq ($(origin CONF),undefined)
+ # User have given a CONF= argument.
+ ifeq ($(CONF),)
+ # If given CONF=, match all configurations
+ matching_confs=$(strip $(all_confs))
+ else
+ # Otherwise select those that contain the given CONF string
+ matching_confs=$(strip $(foreach var,$(all_confs),$(if $(findstring $(CONF),$(var)),$(var))))
+ endif
+ ifeq ($(matching_confs),)
+ $(info No configurations found matching CONF=$(CONF))
+ $(info Available configurations:)
+ $(foreach var,$(all_confs),$(info * $(var)))
+ $(eval $(call fatal-error))
+ else
+ ifeq ($(words $(matching_confs)),1)
+ $(info Building '$(matching_confs)' (matching CONF=$(CONF)))
+ else
+ $(info Building the following configurations (matching CONF=$(CONF)):)
+ $(foreach var,$(matching_confs),$(info * $(var)))
+ endif
+ endif
-ifneq ($(words $(SPEC)),1)
- ifeq ($(MAKECMDGOALS),all-conf)
- SPECS:=$(shell echo $(SPEC) | sed -e 's|$(CURDIR)/build/||g' -e 's|/spec.gmk|\\n|g' -e 's| ||g')
- allconf:
- @echo Building configurations:
- @printf "$(SPECS)"
- @$(foreach s,$(SPEC),($(MAKE) SPEC=$s $(VERBOSE) VERBOSE=$(VERBOSE) images) &&) true
- @echo Done building configurations:
- @printf "$(SPECS)"
- .PHONY: all-conf
+ # Create a SPEC definition. This will contain the path to one or more spec.gmk files.
+ SPEC=$(addsuffix /spec.gmk,$(addprefix $(output_dir)/,$(matching_confs)))
else
- $(error Since you have more than one output dir configured under build, \
- you have to either run make from the output dir of your choice \
- or specify run "make SPEC=build/.../spec.gmk" or run all the build configurations \
- using "make all-conf")
+ # No CONF or SPEC given, check the available configurations
+ ifneq ($(words $(all_spec_files)),1)
+ $(info No CONF or SPEC given, but more than one spec.gmk found in $(output_dir).)
+ $(info Available configurations:)
+ $(foreach var,$(all_confs),$(info * $(var)))
+ $(info Please retry building with CONF=<config> or SPEC=<specfile>)
+ $(eval $(call fatal-error))
+ endif
+
+ # We found exactly one configuration, use it
+ SPEC=$(strip $(all_spec_files))
endif
+endif
+
+ifneq ($(words $(SPEC)),1)
+# We have multiple configurations to build, call make repeatedly
+all jdk hotspot jaxws jaxp corba langtools install images packages clean dist-clean:
+ @$(foreach spec,$(SPEC),($(MAKE) -f $(makefile_path) SPEC=$(spec) $(VERBOSE) VERBOSE=$(VERBOSE) $@ $(MAKE_ARGS)) &&) true
+
+.PHONY: all jdk hotspot jaxws jaxp corba langtools install images packages clean dist-clean
+
else
+# This is the main part of the Makefile, for the normal case with SPEC specifying a single existing spec.gmk file.
# Now load the spec
-include $(SPEC)
@@ -88,51 +183,101 @@ $(eval $(call ResetTimers))
# Clean out any notifications from the previous build.
$(shell find $(OUTPUT_ROOT) -name "_the.*.notify" $(FIND_DELETE))
+# If make was called explicitely with -j, don't add a -j ourself to sub-makes, since
+# this will be inherited automatically by make. Otherwise use our default for sub-makes.
+# The -j in MAKEFLAGS is only visible when executing a recipe, hence this macro.
+define GetMakeJobFlag
+ $(if $(findstring -j,$(MAKEFLAGS)),,-j$(NUM_CORES))
+endef
+
+define CheckEnvironment
+ $(if $(list_alt_overrides),
+ @$(PRINTF) "\nWARNING: You have the following ALT_ variables set:\n"
+ @$(PRINTF) "$(foreach var,$(list_alt_overrides),$(var)=$$$(var))\n"
+ @$(PRINTF) "ALT_ variables are deprecated and will be ignored. Please clean your environment.\n"
+ )
+endef
+
+define PrintStartMessage
+ $(if $(VERBOSE),,@$(ECHO) Running make as $(MAKE) $(MFLAGS) $(MAKE_ARGS))
+ $(call CheckEnvironment)
+ @$(ECHO) "Building OpenJDK for target $(if $(MAKECMDGOALS),'$(MAKECMDGOALS)','all') in configuration '$(CONF_NAME)'"
+endef
+
+define PrintEndMessage
+ @$(ECHO) "Finished building OpenJDK for target '$@'"
+ $(call CheckEnvironment)
+endef
+
all: jdk
- @$(call StopTimer)
@$(if $(JAVAC_SERVERS),rm -rf $(JAVAC_SERVERS)/*.port)
+ @$(call AtRootMakeEnd)
-langtools: start-timer
+langtools: start-make
@$(call MakeStart,langtools,all)
- @($(CD) $(LANGTOOLS_TOPDIR)/makefiles && $(BUILD_LOG_WRAPPER) $(MAKE) -j$(NUM_CORES) $(LANGTOOLS_MAKE_ARGS))
+ @($(CD) $(LANGTOOLS_TOPDIR)/makefiles && $(BUILD_LOG_WRAPPER) $(MAKE) $(call GetMakeJobFlag) $(LANGTOOLS_MAKE_ARGS) $(MAKE_ARGS))
@$(call MakeFinish,langtools,all)
corba: langtools
@$(call MakeStart,corba,all)
- @($(CD) $(CORBA_TOPDIR)/makefiles && $(BUILD_LOG_WRAPPER) $(MAKE) -j$(NUM_CORES) $(CORBA_MAKE_ARGS))
+ @($(CD) $(CORBA_TOPDIR)/makefiles && $(BUILD_LOG_WRAPPER) $(MAKE) $(call GetMakeJobFlag) $(CORBA_MAKE_ARGS) $(MAKE_ARGS))
@$(call MakeFinish,corba,all)
jaxp: langtools
@$(call MakeStart,jaxp,all)
- @($(CD) $(JAXP_TOPDIR)/makefiles && $(BUILD_LOG_WRAPPER) $(MAKE) -j$(NUM_CORES) $(CORBA_MAKE_ARGS))
+ @($(CD) $(JAXP_TOPDIR)/makefiles && $(BUILD_LOG_WRAPPER) $(MAKE) $(call GetMakeJobFlag) $(CORBA_MAKE_ARGS) $(MAKE_ARGS))
@$(call MakeFinish,jaxp,all)
jaxws: langtools jaxp
@$(call MakeStart,jaxws,all)
- @($(CD) $(JAXWS_TOPDIR)/makefiles && $(BUILD_LOG_WRAPPER) $(MAKE) -j$(NUM_CORES) $(CORBA_MAKE_ARGS))
+ @($(CD) $(JAXWS_TOPDIR)/makefiles && $(BUILD_LOG_WRAPPER) $(MAKE) $(call GetMakeJobFlag) $(CORBA_MAKE_ARGS) $(MAKE_ARGS))
@$(call MakeFinish,jaxws,all)
hotspot: langtools
@$(call MakeStart,hotspot,all)
- @($(CD) $(HOTSPOT_TOPDIR)/make && $(BUILD_LOG_WRAPPER) $(MAKE) -j1 $(HOTSPOT_MAKE_ARGS))
+ @($(CD) $(HOTSPOT_TOPDIR)/make && $(BUILD_LOG_WRAPPER) $(MAKE) -j1 $(HOTSPOT_MAKE_ARGS) $(MAKE_ARGS))
@$(call MakeFinish,hotspot,all)
jdk: langtools corba jaxp jaxws hotspot
@$(call MakeStart,jdk,all)
- @($(CD) $(JDK_TOPDIR)/makefiles && $(BUILD_LOG_WRAPPER) $(MAKE) -j$(NUM_CORES) $(JDK_MAKE_ARGS))
+ @($(CD) $(JDK_TOPDIR)/makefiles && $(BUILD_LOG_WRAPPER) $(MAKE) $(call GetMakeJobFlag) $(JDK_MAKE_ARGS) $(MAKE_ARGS))
@$(call MakeFinish,jdk,all)
-images install packages: start-timer jdk langtools corba jaxp jaxws hotspot
+images install packages: source-tips start-make jdk langtools corba jaxp jaxws hotspot
@$(call MakeStart,jdk-images,$@)
- @($(CD) $(JDK_TOPDIR)/makefiles && $(BUILD_LOG_WRAPPER) $(MAKE) -j$(NUM_CORES) $(JDK_MAKE_ARGS) $@)
+ @($(CD) $(JDK_TOPDIR)/makefiles && $(BUILD_LOG_WRAPPER) $(MAKE) $(call GetMakeJobFlag) $(JDK_MAKE_ARGS) $(MAKE_ARGS) $@)
@$(call MakeFinish,jdk-images,$@)
- @$(call StopTimer)
@$(if $(JAVAC_SERVERS),rm -rf $(JAVAC_SERVERS)/*.port)
+ @$(call AtRootMakeEnd)
+
+old-images: source-tips start-make jdk langtools corba jaxp jaxws hotspot
+ @$(call MakeStart,jdk-old-images,$@)
+ @($(CD) $(JDK_TOPDIR)/makefiles && $(BUILD_LOG_WRAPPER) $(MAKE) $(call GetMakeJobFlag) $(JDK_MAKE_ARGS) $(MAKE_ARGS) $@)
+ @$(call MakeFinish,old-jdk-images,$@)
+ @$(if $(JAVAC_SERVERS),rm -rf $(JAVAC_SERVERS)/*.port)
+ @$(call AtRootMakeEnd)
-start-timer:
- @$(call StartTimer)
+start-make:
+ @$(call AtRootMakeStart)
+
+.PHONY: jdk hotspot jaxws jaxp corba langtools install images packages start-make
+
+test: start-make
+ @$(call MakeStart,test,$(if $(TEST),$(TEST),all))
+ @($(CD) $(SRC_ROOT)/test && $(BUILD_LOG_WRAPPER) $(MAKE) MAKEFLAGS= -j1 PRODUCT_HOME=$(OUTPUT_ROOT)/jdk JPRT_JAVA_HOME=$(OUTPUT_ROOT)/jdk ALT_OUTPUTDIR=$(OUTPUT_ROOT) $(TEST)) || true
+ @$(call MakeFinish,test,$(if $(TEST),$(TEST),all))
+ @$(call AtRootMakeEnd)
+.PHONY: test
+
+
+# Stores the tips for each repository. This file is be used when constructing the jdk image and can be
+# used to track the exact sources used to build that image.
+source-tips: $(OUTPUT_ROOT)/source_tips
+$(OUTPUT_ROOT)/source_tips: FRC
+ @$(MKDIR) -p $(@D)
+ @$(RM) $@
+ @$(call GetSourceTips)
-.PHONY: jdk hotspot jaxws jaxp corba langtools install images packages start-timer
# Remove everything, except the output from configure.
clean:
@@ -152,25 +297,35 @@ clean-jdk:
@$(ECHO) "Cleaned jdk build artifacts (but not langtools,corba,jaxp,jaxws,hotspot nor the build configuration)"
.PHONY: clean
-help:
- $(info )
- $(info Typical make commands:)
- $(info make)
- $(info make VERBOSE= # print all commands)
- $(info make VERBOSE="-d -p" # debug make as well)
- $(info make all-conf # build images for all configurations)
- $(info make clean # remove build artifacts)
- $(info make dist-clean # you have to rerun configure)
-# $(info make test # run tests)
- $(info make images # create the jdk and jre images)
- $(info make install # install the jdk image)
-# $(info make modules # EXPERIMENTAL: Migrate JDK into a modularized form!)
- $(info make packages # create zips and other packages)
-
-# $(info make eclipse_workspace # Create an Eclipse workspace)
-# $(info make netbeans_workspace # Create a NetBeans workspace)
-# $(info make vs_workspace # Create a Visual Studio workspace)
+endif
-.PHONY: help
+# Here are "global" targets, i.e. targets that can be executed without specifying a single configuration.
+# If you addd more global targets, please update the fatal-error macro.
-endif
+help:
+ $(info )
+ $(info OpenJDK Makefile help)
+ $(info =====================)
+ $(info )
+ $(info Common make targets)
+ $(info . make [all] # Compile all code but do not create images)
+ $(info . make images # Create complete j2sdk and j2re images)
+ $(info . make install # Install the generated images locally)
+ $(info . make clean # Remove all files generated by make, but not those generated by configure)
+ $(info . make dist-clean # Remove all files generated by both make and configure)
+ $(info . make help # Give some help on using make)
+ $(info . make test # Run tests, default is all tests (see TEST below))
+ $(info )
+ $(info Useful make variables)
+ $(info . make CONF= # Build all configurations (note, assignment is empty))
+ $(info . make CONF=<substring> # Build the configuration(s) with a name matching the given substring)
+ $(info )
+ $(info . make LOG=<loglevel> # Change loglevel from warn (default) to the given loglevel)
+ $(info . # Available loglevels are: warn, info, debug and trace)
+ $(info . # To see executed command lines, use LOG=info)
+ $(info )
+ $(info . make test TEST=<test> # Only run the given test or tests, e.g.)
+ $(info . # make test TEST="jdk_lang jdk_net")
+ $(info )
+.PHONY: help
+FRC: # Force target
diff --git a/common/makefiles/NativeCompilation.gmk b/common/makefiles/NativeCompilation.gmk
index eedffe7..ee18f18 100644
--- a/common/makefiles/NativeCompilation.gmk
+++ b/common/makefiles/NativeCompilation.gmk
@@ -28,7 +28,7 @@
# desired whenever sort is used below!
ifeq (,$(_MAKEBASE_GMK))
- $(error You must include MakeBase.gmk prior to including JavaCompilation.gmk)
+ $(error You must include MakeBase.gmk prior to including NativeCompilation.gmk)
endif
ifeq ($(COMPILER_TYPE),CC)
@@ -54,15 +54,22 @@ define add_native_source
ifneq (,$$(filter %.c,$2))
# Compile as a C file
- $1_$2_FLAGS=$4
+ $1_$2_FLAGS=$4 $$($1_$(notdir $2)_CFLAGS)
$1_$2_COMP=$5
+ $1_$2_DEP_FLAG:=$(C_FLAG_DEPS)
+ else ifneq (,$$(filter %.m,$2))
+ # Compile as a objective-c file
+ $1_$2_FLAGS=-x objective-c $4 $$($1_$(notdir $2)_CFLAGS)
+ $1_$2_COMP=$5
+ $1_$2_DEP_FLAG:=$(C_FLAG_DEPS)
else
# Compile as a C++ file
- $1_$2_FLAGS=$6
+ $1_$2_FLAGS=$6 $$($1_$(notdir $2)_CXXFLAGS)
$1_$2_COMP=$7
+ $1_$2_DEP_FLAG:=$(CXX_FLAG_DEPS)
endif
# Generate the .o (.obj) file name and place it in the bin dir.
- $1_$2_OBJ:=$3/$$(patsubst %.cpp,%$(OBJ_SUFFIX),$$(patsubst %.c,%$(OBJ_SUFFIX),$$(notdir $2)))
+ $1_$2_OBJ:=$3/$$(patsubst %.cpp,%$(OBJ_SUFFIX),$$(patsubst %.c,%$(OBJ_SUFFIX),$$(patsubst %.m,%$(OBJ_SUFFIX),$$(notdir $2))))
# Only continue if this object file hasn't been processed already. This lets the first found
# source file override any other with the same name.
ifeq (,$$(findstring $$($1_$2_OBJ),$$($1_OBJS_SO_FAR)))
@@ -80,7 +87,7 @@ define add_native_source
$$($1_$2_OBJ) : $2
ifeq ($(COMPILER_TYPE),CC)
$$(call COMPILING_MSG,$$(notdir $2))
- $$($1_$2_COMP) $$($1_$2_FLAGS) -MMD -MF $$($1_$2_DEP) -c $(CC_OUT_OPTION)$$($1_$2_OBJ) $2
+ $$($1_$2_COMP) $$($1_$2_FLAGS) $$($1_$2_DEP_FLAG) $$($1_$2_DEP) -c $(CC_OUT_OPTION)$$($1_$2_OBJ) $2
endif
ifeq ($(COMPILER_TYPE),CL)
$$(call COMPILING_MSG,$$(notdir $2))
@@ -109,6 +116,8 @@ define SetupNativeCompilation
# EXCLUDE_FILES with these names
# VERSIONINFO_RESOURCE Input file for RC. Setting this implies that RC will be run
# RC_FLAGS flags for RC.
+ # MAPFILE mapfile
+ # REORDER reorder file
$(if $2,$1_$(strip $2))
$(if $3,$1_$(strip $3))
$(if $4,$1_$(strip $4))
@@ -154,7 +163,7 @@ define SetupNativeCompilation
ifneq ($$($1_EXCLUDE_FILES),)
$1_EXCLUDE_FILES:=$$(addprefix %,$$($1_EXCLUDE_FILES))
endif
- $1_SRCS := $$(filter-out $$($1_EXCLUDE_FILES),$$(filter %.c %.cpp,$$($1_ALL_SRCS)))
+ $1_SRCS := $$(filter-out $$($1_EXCLUDE_FILES),$$(filter %.c %.cpp %.m,$$($1_ALL_SRCS)))
ifneq (,$$(strip $$($1_INCLUDE_FILES)))
$1_SRCS := $$(filter $$($1_INCLUDE_FILES),$$($1_SRCS))
endif
@@ -178,7 +187,7 @@ define SetupNativeCompilation
# Calculate the expected output from compiling the sources (sort to remove duplicates. Also provides
# a reproducable order on the input files to the linker).
- $1_EXPECTED_OBJS:=$$(sort $$(addprefix $$($1_BIN)/,$$(patsubst %.cpp,%$(OBJ_SUFFIX),$$(patsubst %.c,%$(OBJ_SUFFIX),$$(notdir $$($1_SRCS))))))
+ $1_EXPECTED_OBJS:=$$(sort $$(addprefix $$($1_BIN)/,$$(patsubst %.cpp,%$(OBJ_SUFFIX),$$(patsubst %.c,%$(OBJ_SUFFIX),$$(patsubst %.m,%$(OBJ_SUFFIX),$$(notdir $$($1_SRCS)))))))
$1 := $$($1_EXPECTED_OBJS)
# Are there too many object files on disk? Perhaps because some source file was removed?
$1_SUPERFLOUS_OBJS:=$$(sort $$(filter-out $$($1_EXPECTED_OBJS),$$($1_BINS)))
@@ -218,6 +227,11 @@ define SetupNativeCompilation
$1_EXTRA_CXXFLAGS:=$$($1_EXTRA_CFLAGS)
endif
+ ifneq (,$$($1_REORDER))
+ $1_EXTRA_CFLAGS += $$(C_FLAG_REORDER)
+ $1_EXTRA_CXXFLAGS += $$(CXX_FLAG_REORDER)
+ endif
+
# Now create a list of the packages that are about to compile. Used when sending source
# in a batch to the compiler.
$$(shell $(RM) $$($1_BIN)/_the.list_of_sources)
@@ -233,29 +247,53 @@ define SetupNativeCompilation
ifeq ($(HOST_OS_API), winapi)
ifneq (,$$($1_VERSIONINFO_RESOURCE))
ifneq (,$$($1_LIB))
- ifeq (dynamic,$$(patsubst %$(SHARED_LIBRARY_SUFFIX),dynamic,$$($1_LIB)))
- $1_RES:=$$(patsubst %$(SHARED_LIBRARY_SUFFIX),%.res,$$($1_LIB))
- else
- $1_RES:=$$(patsubst %$(STATIC_LIBRARY_SUFFIX),%.res,$$($1_LIB))
- endif
+ $1_BASENAME:=$$(basename $$(notdir $$($1_LIB)))
endif
ifneq (,$$($1_EXE))
- $1_RES:=$$(patsubst %$(EXE_SUFFIX),%.res,$$($1_EXE))
+ $1_BASENAME:=$$(basename $$(notdir $$($1_EXE)))
endif
+ $1_RES:=$$($1_BIN)/$$($1_BASENAME).res
$$($1_RES): $$($1_VERSIONINFO_RESOURCE)
$(RC) $$($1_RC_FLAGS) $(CC_OUT_OPTION)$$@ $$($1_VERSIONINFO_RESOURCE)
endif
+ ifneq (,$$($1_MANIFEST))
+ $1_PROGRAM:=$$(basename $$(notdir $$($1_EXE)))
+ $1_GEN_MANIFEST:=$$($1_BIN)/$$($1_PROGRAM).manifest
+ IMVERSIONVALUE:=$(JDK_MINOR_VERSION).$(JDK_MICRO_VERSION).$(JDK_UPDATE_VERSION).$(COOKED_BUILD_NUMBER)
+ $$($1_GEN_MANIFEST): $$($1_MANIFEST)
+ $(SED) 's%IMVERSION%$$(IMVERSIONVALUE)%g;s%PROGRAM%$$($1_PROGRAM)%g' $$< > $$@
+ endif
+ endif
+
+ # mapfile doesnt seem to be implemented on macosx (yet??)
+ ifneq ($(HOST_OS),macosx)
+ ifneq ($(HOST_OS),windows)
+ $1_REAL_MAPFILE := $$($1_MAPFILE)
+ ifneq (,$$($1_REORDER))
+ $1_REAL_MAPFILE := $$($1_BIN)/mapfile
+
+ $$($1_REAL_MAPFILE) : $$($1_MAPFILE) $$($1_REORDER)
+ $$(MKDIR) -p $$(@D)
+ $$(CP) $$($1_MAPFILE) $$@.tmp
+ $$(SED) -e 's=OUTPUTDIR=$$($1_BIN)=' $$($1_REORDER) >> $$@.tmp
+ $$(MV) $$@.tmp $$@
+ endif
+ endif
endif
# Pickup extra HOST_OS_API dependent variables (posix or winapi) and
# (linux,solaris,windows,bsd) for LDFLAGS and LDFLAGS_SUFFIX
$1_EXTRA_LDFLAGS:=$$($1_LDFLAGS_$(HOST_OS_API)) $$($1_LDFLAGS_$(PLATFORM))
$1_EXTRA_LDFLAGS_SUFFIX:=$$($1_LDFLAGS_SUFFIX_$(HOST_OS_API)) $$($1_LDFLAGS_SUFFIX_$(PLATFORM))
+ ifneq (,$$($1_REAL_MAPFILE))
+ $1_EXTRA_LDFLAGS += $(call SET_SHARED_LIBRARY_MAPFILE,$$($1_REAL_MAPFILE))
+ endif
+
ifneq (,$$($1_LIB))
ifeq (dynamic,$$(patsubst %$(SHARED_LIBRARY_SUFFIX),dynamic,$$($1_LIB)))
# Generating a dynamic library.
$1_EXTRA_LDFLAGS+=$$(call SET_SHARED_LIBRARY_NAME,$$(notdir $$($1_LIB)))
- $$($1_LIB) : $$($1_EXPECTED_OBJS) $$($1_RES)
+ $$($1_LIB) : $$($1_EXPECTED_OBJS) $$($1_RES) $$($1_REAL_MAPFILE)
$$(call LINKING_MSG,$$(notdir $$($1_LIB)))
$$($1_LD) $$($1_LDFLAGS) $$($1_EXTRA_LDFLAGS) $(LD_OUT_OPTION)$$($1_LIB) \
$$($1_EXPECTED_OBJS) $$($1_RES) $$($1_LDFLAGS_SUFFIX) $$($1_EXTRA_LDFLAGS_SUFFIX)
@@ -269,9 +307,13 @@ define SetupNativeCompilation
endif
ifneq (,$$($1_EXE))
# A executable binary has been specified, setup the target for it.
- $$($1_EXE) : $$($1_EXPECTED_OBJS) $$($1_RES)
+ $$($1_EXE) : $$($1_EXPECTED_OBJS) $$($1_RES) $$($1_GEN_MANIFEST)
$$(call LINKING_EXE_MSG,$$(notdir $$($1_EXE)))
$$($1_LDEXE) $$($1_LDFLAGS) $$($1_EXTRA_LDFLAGS) $(EXE_OUT_OPTION)$$($1_EXE) \
- $$($1_EXPECTED_OBJS) $$($1_RES) $$($1_LDFLAGS_SUFFIX) $$($1_EXTRA_LDFLAGS_SUFFIX)
+ $$($1_EXPECTED_OBJS) $$($1_RES) $$($1_LDFLAGS_SUFFIX) \
+ $$($1_EXTRA_LDFLAGS_SUFFIX)
+ ifneq (,$$($1_GEN_MANIFEST))
+ $(MT) -nologo /manifest $$($1_GEN_MANIFEST) /outputresource:$$@;#1
+ endif
endif
endef
diff --git a/make/scripts/hgforest.sh b/make/scripts/hgforest.sh
index 515f1b5..aa67490 100644
--- a/make/scripts/hgforest.sh
+++ b/make/scripts/hgforest.sh
@@ -112,6 +112,9 @@ for i in ${repos} ; do
sleep 5
fi
done
+# Wait for all hg commands to complete
+wait
+
if [ "${repos_extra}" != "" ] ; then
for i in ${repos_extra} ; do
echo "Starting on ${i}"
@@ -127,11 +130,10 @@ if [ "${repos_extra}" != "" ] ; then
sleep 5
fi
done
+ # Wait for all hg commands to complete
+ wait
fi
-# Wait for all hg commands to complete
-wait
-
# Cleanup
rm -f -r ${tmp}