#!/bin/bash
#
# Copyright (c) 2012, 2020, Oracleand/or its affiliates. All rights reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILEHEADER.
#
# This code is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License version 2 only, as
# published by the Free Software Foundation.
#
# This code is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
# version 2for more details (a copy is included in the LICENSE file that
# accompanied this code).
#
# You should have received a copy of the GNU General Public License version
# 2 along with this work; if not, write to the Free Software Foundation,
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
#
# Please contact Oracle, 500Oracle Parkway, Redwood Shores, CA 94065 USA
# or visit www.oracle.com if you need additional information or have any
# questions.
#
if test "x$1" != xCHECKME; then
echo "ERROR: Calling this wrapper script directly is not supported."
echo "Use the 'configure' script in the top-level directory instead." exit1
fi
# The next argument is the absolute top-level directory path.
# The TOPDIR variable is passed on to configure.ac.
TOPDIR="$2"
# Remove these two arguments to get to the user supplied arguments
shift
shift
if test "x$BASH" = x; then
echo "Error: This script must be run using bash."1>&2 exit1
fi
# Force autoconf touse bash. This also means we must disable autoconf re-exec.
export CONFIG_SHELL=$BASH
export _as_can_reexec=no
# Make sure all shell commands are executed with the C locale
export LC_ALL=C
if test "x$CUSTOM_CONFIG_DIR" != x; then
custom_hook=$CUSTOM_CONFIG_DIR/custom-hook.m4 if test ! -e $custom_hook; then
echo "CUSTOM_CONFIG_DIR ($CUSTOM_CONFIG_DIR) not pointing to a proper custom config dir."
echo "Error: Cannot continue"1>&2 exit1
fi
fi
CURRENT_DIR=`pwd` if test "x$CURRENT_DIR" = "x$TOPDIR"; then
# We are running configure from the src root.
# Create '.configure-support' under $TOPDIR/build
build_support_dir="$TOPDIR/build/.configure-support"
elif test "x$CURRENT_DIR" = "x$CUSTOM_ROOT"; then
# We are running configure from the custom root.
# Create '.configure-support' under $CUSTOM_ROOT/build
build_support_dir="$CUSTOM_ROOT/build/.configure-support"
else
# We are running configure from outside of the src dir.
# Create 'build_support_dir' in the current directory.
build_support_dir="$CURRENT_DIR/configure-support"
fi
if test "x$ZYPPER" != x; then
PKGHANDLER_COMMAND="sudo zypper install autoconf"
elif test "x$APT_GET" != x; then
PKGHANDLER_COMMAND="sudo apt-get install autoconf"
elif test "x$YUM" != x; then
PKGHANDLER_COMMAND="sudo yum install autoconf"
elif test "x$BREW" != x; then
PKGHANDLER_COMMAND="brew install autoconf"
elif test "x$UNAMEOUT" == xAIX; then
echo "You might be able to fix this by installing autoconf from the 'AIX Toolbox for Linux Applications' (or compile it from the sources)."
elif test "x$CYGWIN" != x; then
PKGHANDLER_COMMAND="( cd <location of cygwin setup.exe> && cmd /c setup -q -P autoconf )"
fi
if test "x$PKGHANDLER_COMMAND" != x; then
echo "You might be able to fix this by running '$PKGHANDLER_COMMAND'."
fi
}
generate_configure_script() { if test "x$AUTOCONF" != x; then if test ! -x "$AUTOCONF"; then
echo
echo "The specified AUTOCONF variable does not point to a valid autoconf executable:"
echo "AUTOCONF=$AUTOCONF"
echo "Error: Cannot continue"1>&2 exit1
fi
else
AUTOCONF="`type -p autoconf 2> /dev/null`" if test "x$AUTOCONF" = x; then
echo
echo "Autoconf is not found on the PATH ($PATH), and AUTOCONF is not set."
echo "You need autoconf to be able to generate a runnable configure script."
autoconf_missing_help
echo "Error: Cannot find autoconf"1>&2 exit1
fi
fi
autoconf_version=`$AUTOCONF --version | head -1`
echo "Using autoconf at ${AUTOCONF} [$autoconf_version]"
if test "x$CUSTOM_CONFIG_DIR" != x; then
# Generate configure script with custom hooks compiled in.
custom_patcher='sed -e "s|#CUSTOM_AUTOCONF_INCLUDE|m4_include([$custom_hook])|"'
custom_script_dir_include="-I$CUSTOM_CONFIG_DIR"
else
custom_patcher='cat'
custom_script_dir_include=""
fi
mkdir -p $build_support_dir
# Call autoconf but replace the "magic" variable in configure.ac if requested.
# Sanity check if test ! -s $generated_script; then
echo "Error: Failed to generate runnable configure script"1>&2
rm -f $generated_script exit1
fi
}
test_generated_up_to_date() {
conf_source_files="$conf_script_dir/configure.ac $conf_script_dir/*.m4" if test "x$CUSTOM_CONFIG_DIR" != x; then
conf_custom_source_files="$CUSTOM_CONFIG_DIR/*.m4"
else
conf_custom_source_files=""
fi
forfilein $conf_source_files $conf_custom_source_files ; do if test $file -nt $generated_script; then
return 0
fi done
return 1
}
run_autoconf=false if test "x$1" = xautogen; then
# User called us as "configure autogen", so force regeneration
run_autoconf=true
shift
fi
if test ! -s $generated_script; then
# Generated script is missing, so we need to create it
echo "Runnable configure script is not present"
run_autoconf=true
else
# Fileis present, but is it up to date? if test_generated_up_to_date; then
echo "Runnable configure script is not up to date"
run_autoconf=true
fi
fi
if test "x$run_autoconf" = xtrue; then
echo "Generating runnable configure script at $generated_script"
generate_configure_script
fi
# Autoconf calls the configure script recursively sometimes.
# Don't start logging twice in that case if test "x$conf_debug_configure" = xtrue; then
conf_debug_configure=recursive
fi
###
### Process command-line arguments
###
# Returns a shell-escaped version of the argument given. function shell_quote() { if [[ -n "$1" ]]; then
# Uses only shell-safe characters? No quoting needed.
# '=' is a zsh meta-character, but only in word-initial position. if echo "$1" | grep '^[ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\.:,%/+=_-]\{1,\}$' > /dev/null java.lang.NullPointerException
&& ! echo "$1" | grep '^=' > /dev/null; then
quoted="$1"
else if echo "$1" | grep "[\'!]" > /dev/null; then
# csh does history expansion within single quotes, but not
# when backslash-escaped! local quoted_quote="'\\''" quoted_exclam="'\\!'"
word="${1//\'/${quoted_quote}}"
word="${1//\!/${quoted_exclam}}"
fi
quoted="'$1'"
fi
echo "$quoted"
fi
}
# Process (and remove) our own extensions that will not be passed to autoconf case $conf_option in
--openjdk-target=*)
conf_openjdk_target=`expr "X$conf_option" : '[^=]*=\(.*\)'`
;;
--debug-configure) if test "x$conf_debug_configure" != xrecursive; then
conf_debug_configure=true
export conf_debug_configure
fi
;;
*)
conf_processed_arguments=("${conf_processed_arguments[@]}""$conf_option")
;;
esac
# Store all variables overridden on the command line case $conf_option in
[^-]*=*)
# Add name of variable to CONFIGURE_OVERRIDDEN_VARIABLES list inside !...!.
conf_env_var=`expr "x$conf_option" : 'x\([^=]*\)='`
CONFIGURE_OVERRIDDEN_VARIABLES="$CONFIGURE_OVERRIDDEN_VARIABLES!$conf_env_var!"
;;
esac
# Save the arguments, intelligently quoted for CONFIGURE_COMMAND_LINE. case $conf_option in
*=*)
conf_option_name=`expr "x$conf_option" : 'x\([^=]*\)='`
conf_option_name=$(shell_quote "$conf_option_name")
conf_option_value=`expr "x$conf_option" : 'x[^=]*=\(.*\)'`
conf_option_value=$(shell_quote "$conf_option_value")
conf_quoted_arguments=("${conf_quoted_arguments[@]}""$conf_option_name=$conf_option_value")
;;
*)
conf_quoted_arguments=("${conf_quoted_arguments[@]}""$(shell_quote "$conf_option")")
;;
esac
# Save the quoted command line
CONFIGURE_COMMAND_LINE="${conf_quoted_arguments[@]}"
if test "x$conf_incompatible_crosscompile" != "x"; then if test "x$conf_openjdk_target" != "x"; then
echo "Error: --openjdk-target was specified together with"
echo "incompatible autoconf cross-compilation flags."
echo "You specified: --openjdk-target=$conf_openjdk_target and $conf_incompatible_crosscompile."
echo "It is recommended that you only use --openjdk-target." exit1
else
echo "Warning: You are using misleading autoconf cross-compilation flag(s)."
echo "This is not encouraged as use of such flags during building can"
echo "quickly become confusing."
echo "It is highly recommended that you use --openjdk-target instead."
echo ""
fi
fi
if test "x$conf_openjdk_target" != "x"; then
conf_processed_arguments=("--host=$conf_openjdk_target""--target=$conf_openjdk_target""${conf_processed_arguments[@]}")
# If --build has been explicitly set don't override that flag with our own if test "x$conf_build_set" != xtrue; then
conf_build_platform=`sh $conf_script_dir/build-aux/config.guess`
conf_processed_arguments=("--build=$conf_build_platform""${conf_processed_arguments[@]}")
fi
fi
# Make configure exitwith error on invalid options as default.
# Can be overridden by --disable-option-checking, since we prepend our argument
# and later options override earlier.
conf_processed_arguments=("--enable-option-checking=fatal""${conf_processed_arguments[@]}")
###
### Call the configure script
### if test "x$conf_debug_configure" != x; then
# Turn on shell debug outputif requested (initial or recursive)
set -x
fi
# Now transfer control to the script generated by autoconf. This iswhere the
# main work isdone.
RCDIR=`mktemp -dt jdk-build-configure.tmp.XXXXXX` || exit $?
trap "rm -rf \"$RCDIR\""EXIT
conf_logfile=./configure.log
(exec 3>&1 ; ((. $generated_script "${conf_processed_arguments[@]}"2>&11>&3 ) java.lang.NullPointerException
; echo $? > "$RCDIR/rc" ) java.lang.NullPointerException
| tee -a $conf_logfile 1>&2 ; exec 3>&-) | tee -a $conf_logfile
if test $conf_result_code -eq 0; then if test "x$conf_print_help" = xtrue; then
cat <<EOT
Additional (non-autoconf) OpenJDK Options:
--openjdk-target=TARGET cross-compile with TARGET as target platform
(i.e. the one you will run the resulting binary on).
Equivalent to --host=TARGET --target=TARGET
--build=<current platform>, or the platform you have provided if you have explicitly passed
--build to configure
--debug-configure Run the configure script with additional debug
logging enabled.
EOT
# Print additional help, e.g. a list of toolchains and JVM features.
# This must be doneby the autoconf script.
( CONFIGURE_PRINT_ADDITIONAL_HELP=true . $generated_script PRINTF=printf )
cat <<EOT
Please be aware that, when cross-compiling, the OpenJDK configure script will
generally use 'target' where autoconf traditionally uses 'host'.
Alsonote that variables must be passed on the command line. Variables in the
environment will generally be ignored, unlike traditional autoconf scripts.
EOT
fi
else
echo configure exiting with result code $conf_result_code
fi
exit $conf_result_code
Messung V0.5 in Prozent
¤ Dauer der Verarbeitung: 0.12 Sekunden
(vorverarbeitet am 2026-09-28)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.